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); }
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) { 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(); }
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()) { 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); }
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) { 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); }
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() || !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); }
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); }
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); }