Beispiel #1
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth() || !context.IsAdmin())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length <= 0 || pp[0] != "DELUSER")
            {
                return(false);
            }
            if (pp.Length != 2)
            {
                JRobbot.Send(msg.From, "command must be: DELUSER login");
            }
            else
            {
                var fileName = UserCfgName.ConfigName();
                var userList = fileName.LoadFromFile <UserList>();
                var ui       = userList.FirstOrDefault(x => x.Login.ToUpper() == pp[1].ToUpper());
                if (ui == null)
                {
                    JRobbot.Send(msg.From, "error: user '{0}' not found".Fmt(pp[1]));
                }
                else
                {
                    userList.Remove(ui);
                    userList.SaveToFile(UserCfgName.ConfigName());
                    JRobbot.Send(msg.From, "user '{0}' removed".Fmt(pp[1]));
                }
            }
            return(true);
        }
Beispiel #2
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth() || !context.IsAdmin())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length <= 0 || pp[0] != "DELCOMP")
            {
                return(false);
            }
            if (pp.Length != 2)
            {
                JRobbot.Send(msg.From, "command must be: DELCOMP name");
            }
            else
            {
                var fileName     = CompCfgName.ConfigName();
                var computerList = fileName.LoadFromFile <ComputerList>();
                var ci           = computerList.FirstOrDefault(x => x.Name.ToUpper() == pp[1].ToUpper());
                if (ci == null)
                {
                    JRobbot.Send(msg.From, "error: computer '{0}' not found".Fmt(pp[1]));
                }
                else
                {
                    computerList.Remove(ci);
                    computerList.SaveToFile(CompCfgName.ConfigName());
                    JRobbot.Send(msg.From, "computer '{0}' removed".Fmt(pp[1]));
                }
            }
            return(true);
        }
Beispiel #3
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth())
            {
                return(false);
            }
            if (msg.Body.ToLower() != "list")
            {
                return(false);
            }

            var ping         = new Ping();
            var fileName     = CompCfgName.ConfigName();
            var computerList = fileName.LoadFromFile <ComputerList>();

            foreach (var comp in computerList)
            {
                if (string.IsNullOrEmpty(comp.Ip))
                {
                    continue;
                }
                var pi  = ping.Send(comp.Ip, 500);
                var txt = string.Format("{0} ({1}): {2}\r\n", comp.Name,
                                        comp.Ip, pi.Status == IPStatus.Success ? "online" : "offline");
                JRobbot.Send(msg.From, txt);
            }
            return(true);
        }
Beispiel #4
0
        public override bool Exec(Message msg)
        {
            var pp = GetCmdParts(msg);

            if (pp.Length == 0 || (pp[0] != "EXIT" && pp[0] != "QUIT" && pp[0] != "Q!"))
            {
                return(false);
            }
            JRobbot.Send(msg.From, "see you!");
            context.Clear();
            throw new ClientStopException();
        }
Beispiel #5
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth() || !context.IsAdmin())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length == 0 || pp[0] != "UPDCOMP")
            {
                return(false);
            }
            var ok = pp.Length == 4;

            if (ok)
            {
                pp[2] = pp[2].ToUpper();
                ok    = pp[2] == "IP" || pp[2] == "NAME" || pp[2] == "MAC";
            }
            if (!ok)
            {
                JRobbot.Send(msg.From, "command must be: UPDCOMP name (NAME|IP|MAC) value");
                return(true);
            }

            var fileName     = CompCfgName.ConfigName();
            var computerList = fileName.LoadFromFile <ComputerList>();
            var ci           = computerList.FirstOrDefault(x => x.Name.ToUpper() == pp[1].ToUpper());

            if (ci == null)
            {
                JRobbot.Send(msg.From, "error: computer '{0}' not found".Fmt(pp[1]));
                return(true);
            }

            if (pp[2] == "IP")
            {
                ci.Ip = pp[3];
            }
            if (pp[2] == "MAC")
            {
                ci.Mac = pp[3];
            }
            if (pp[2] == "NAME")
            {
                ci.Name = pp[3];
            }

            computerList.SaveToFile(CompCfgName.ConfigName());
            JRobbot.Send(msg.From, "computer '{0}' updated".Fmt(pp[1]));
            return(true);
        }
Beispiel #6
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth() || !context.IsAdmin())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length <= 0 || pp[0] != "ADDUSER")
            {
                return(false);
            }
            if (pp.Length != 5)
            {
                JRobbot.Send(msg.From, "command must be: ADDUSER login password isadmin comp");
            }
            else
            {
                var fileName = UserCfgName.ConfigName();
                var userList = fileName.LoadFromFile <UserList>();
                if (userList.Any(x => x.Login.ToUpper() == pp[1].ToUpper()))
                {
                    JRobbot.Send(msg.From, "error: user '{0}' already exists".Fmt(pp[1]));
                }
                else
                {
                    bool isAdmin;
                    var  computerList = CompCfgName.ConfigName().LoadFromFile <ComputerList>();
                    if (!bool.TryParse(pp[3], out isAdmin))
                    {
                        JRobbot.Send(msg.From, "error: isadmin must be true or false");
                    }
                    else if (computerList.All(x => x.Name.ToUpper() != pp[4].ToUpper()))
                    {
                        JRobbot.Send(msg.From, "error: comp '{0}' not found".Fmt(pp[4]));
                    }
                    else
                    {
                        userList.Add(new User(pp[1], pp[2], isAdmin, pp[4]));
                        userList.SaveToFile(UserCfgName.ConfigName());
                        JRobbot.Send(msg.From, "user '{0}' added to list".Fmt(pp[1]));
                    }
                }
            }
            return(true);
        }
Beispiel #7
0
        public override bool Exec(Message msg)
        {
            if (context.IsAuth())
            {
                return(false);
            }
            //var auth = context.GetAs<bool>("isAuth", false);
            //if (auth) return false;

            var pp      = GetCmdParts(msg);
            var fromJid = msg.From;

            if (pp.Length == 0 || pp.Length != 3 || pp[0] != "USER")
            {
                JRobbot.Send(fromJid, "command must be: USER login password");
            }
            else
            {
                var login    = pp[1].ToLower();
                var password = pp[2];

                var ok       = false;
                var userList = UserCfgName.ConfigName().LoadFromFile <UserList>();
                foreach (var ui in userList)
                {
                    if (ui.Login.ToLower() != login || ui.Password != password)
                    {
                        continue;
                    }
                    ok = true;
                    context["isAuth"] = true;
                    context["level"]  = ui.IsAdmin ? 2 : 1;
                    context["user"]   = ui.Login;
                    context["comp"]   = ui.CompName;
                    JRobbot.Send(fromJid, "welcome, " + ui.Login + "!\r\n");
                    break;
                }
                if (!ok)
                {
                    JRobbot.Send(fromJid, "bad login-password pair" + pp[1]);
                }
            }
            return(true);
        }
Beispiel #8
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth() || !context.IsAdmin())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length <= 0 || pp[0] != "ADDCOMP")
            {
                return(false);
            }
            if (pp.Length != 4)
            {
                JRobbot.Send(msg.From, "command must be: ADDCOMP name ip mac");
            }
            else
            {
                var fileName     = CompCfgName.ConfigName();
                var computerList = fileName.LoadFromFile <ComputerList>();
                if (computerList.Any(x => x.Name.ToUpper() == pp[1].ToUpper()))
                {
                    JRobbot.Send(msg.From, "error: computer '{0}' already exists".Fmt(pp[1]));
                }
                else
                {
                    if (!Regex.IsMatch(pp[2], @"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"))
                    {
                        JRobbot.Send(msg.From, "error: ip '{0}' must be in form 'N.N.N.N'".Fmt(pp[2]));
                    }
                    else if (!Regex.IsMatch(pp[3], @"^[a-zA-Z0-9]{12}$"))
                    {
                        JRobbot.Send(msg.From, "error: mac '{0}' must be in form '1a2b3c4d5e6f'".Fmt(pp[3]));
                    }
                    else
                    {
                        computerList.Add(new Computer(pp[1], pp[2], pp[3]));
                        computerList.SaveToFile(CompCfgName.ConfigName());
                        JRobbot.Send(msg.From, "computer '{0}' added to list".Fmt(pp[1]));
                    }
                }
            }
            return(true);
        }
Beispiel #9
0
        public override bool Exec(Message msg)
        {
            var pp = GetCmdParts(msg);

            if (pp.Length == 0 || pp[0] != "HELP")
            {
                return(false);
            }
            var sb = new StringBuilder();

            sb.AppendLine("Availabale commands:");
            sb.AppendLine("HELP - this text");
            if (!context.IsAuth())
            {
                sb.AppendLine("USER login password - login to system");
            }
            else
            {
                sb.AppendLine("LIST - show list of online computers");
                sb.AppendLine("UP - wake up computer, connected to user");
                sb.AppendLine("QUIT - logout from system");
                if (context.IsAdmin())
                {
                    sb.AppendLine("");
                    sb.AppendLine("admin commands:");
                    sb.AppendLine("");
                    sb.AppendLine("LISTCOMP - show list of computers");
                    sb.AppendLine("ADDCOMP name ip mac - add computer to list");
                    sb.AppendLine("DELCOMP name - remove computer from list");
                    sb.AppendLine("UPDCOMP name (NAME|IP|MAC) value - update computer data");
                    sb.AppendLine("");
                    sb.AppendLine("LISTUSER - show list of users");
                    sb.AppendLine("ADDUSER login password admin comp - add user to list");
                    sb.AppendLine("DELUSER login - remove user from list");
                    sb.AppendLine("UPDUSER login (LOGIN|PASSWORD|ISADMIN|COMP) value - update user data");
                }
            }
            JRobbot.Send(msg.From, sb.ToString());
            return(true);
        }
Beispiel #10
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth() || !context.IsAdmin())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length <= 0 || pp[0] != "LISTCOMP")
            {
                return(false);
            }
            var fileName     = CompCfgName.ConfigName();
            var computerList = fileName.LoadFromFile <ComputerList>();

            JRobbot.Send(msg.From, "Computers are:");
            foreach (var ci in computerList)
            {
                JRobbot.Send(msg.From, "{0} {1} {2}".Fmt(ci.Name, ci.Ip, ci.Mac));
            }
            return(true);
        }
Beispiel #11
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth() || !context.IsAdmin())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length <= 0 || pp[0] != "LISTUSER")
            {
                return(false);
            }
            var fileName = UserCfgName.ConfigName();
            var userList = fileName.LoadFromFile <UserList>();

            JRobbot.Send(msg.From, "Users are:");
            foreach (var ui in userList)
            {
                JRobbot.Send(msg.From, "{0} *** {1} {2}".Fmt(ui.Login, ui.IsAdmin, ui.CompName));
            }
            return(true);
        }
Beispiel #12
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth() || !context.IsAdmin())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length == 0 || pp[0] != "UPDUSER")
            {
                return(false);
            }
            var ok = pp.Length == 4;

            if (ok)
            {
                pp[2] = pp[2].ToUpper();
                ok    = pp[2] == "LOGIN" || pp[2] == "PASSWORD" || pp[2] == "ISADMIN" || pp[2] == "COMP";
            }
            if (!ok)
            {
                JRobbot.Send(msg.From, "command must be: UPDUSER login (LOGIN|PASSWORD|ISADMIN|COMP) value");
                return(true);
            }

            var fileName = UserCfgName.ConfigName();
            var userList = fileName.LoadFromFile <UserList>();
            var ui       = userList.FirstOrDefault(x => x.Login.ToUpper() == pp[1].ToUpper());

            if (ui == null)
            {
                JRobbot.Send(msg.From, "error: user '{0}' not found".Fmt(pp[1]));
                return(true);
            }

            if (pp[2] == "LOGIN")
            {
                ui.Login = pp[3];
            }
            if (pp[2] == "PASSWORD")
            {
                ui.Password = pp[3];
            }
            if (pp[2] == "ISADMIN")
            {
                bool isAdmin;
                if (bool.TryParse(pp[3], out isAdmin))
                {
                    JRobbot.Send(msg.From, "error: value '{0}' is not boolean".Fmt(pp[3]));
                    return(true);
                }
                ui.IsAdmin = isAdmin;
            }
            if (pp[2] == "COMP")
            {
                ui.CompName = pp[3];
            }

            userList.SaveToFile(UserCfgName.ConfigName());
            JRobbot.Send(msg.From, "user '{0}' updated".Fmt(pp[1]));
            return(true);
        }
Beispiel #13
0
        public override bool Exec(Message msg)
        {
            if (!context.IsAuth())
            {
                return(false);
            }
            var pp = GetCmdParts(msg);

            if (pp.Length == 0 || pp[0] != "UP")
            {
                return(false);
            }

            var fromJid = msg.From;
            var comp    = context.IsAdmin() && pp.Length > 1 ? pp[1] : context.GetAs("comp", "");

            if (string.IsNullOrEmpty(comp))
            {
                JRobbot.Send(fromJid, "computer name is not set");
                return(true);
            }

            var ok           = false;
            var fileName     = CompCfgName.ConfigName();
            var computerList = fileName.LoadFromFile <ComputerList>();

            foreach (var ci in computerList)
            {
                if (ci.Name.ToLower() != comp.ToLower())
                {
                    continue;
                }
                ok = true;
                var macAddress = ci.Mac.Trim().ToUpper();
                if (string.IsNullOrEmpty(macAddress))
                {
                    JRobbot.Send(fromJid, "the MAC address not set for computer <" + comp + ">");
                    break;
                }
                if (macAddress.Length != 12)
                {
                    JRobbot.Send(fromJid, "the MAC address must be 12 chars");
                    break;
                }
                //
                var corr = macAddress.All(ch => ((ch >= '0') && (ch <= '9')) || ((ch >= 'A') && (ch <= 'F')));
                if (!corr)
                {
                    JRobbot.Send(fromJid, "the MAC address must be hex humber");
                    break;
                }
                WakeFunction(macAddress);
                JRobbot.Send(fromJid, "wake up packed sended to <" + comp + ">");
            }

            if (!ok)
            {
                JRobbot.Send(fromJid, "computer with name <" + comp + "> not in list");
            }
            return(true);
        }