Exemple #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] != "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);
        }
Exemple #2
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);
        }
Exemple #3
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);
        }
Exemple #4
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);
        }
Exemple #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] != "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);
        }
Exemple #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] != "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);
        }
Exemple #7
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);
        }