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); }
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); }
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); }
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); }
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); }
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); }
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); }