public static void Try(string[] parameters) { if (!string.IsNullOrEmpty(parameters[3])) { string name = Player.GetPlayerName(parameters[1]); string password = SiusUtil.Collate(3, parameters); if (password.Contains(":")) { Message.Send = "MSG:" + parameters[1] + ":0:Your password may not contain colons."; SiusLog.Log(SiusLog.DEBUG, "password", "Unable to change [" + name + "]'s password. Password contains a colon."); return; } //Check the password length if (password.Length < 1 || password.Length > 23) { Message.Send = "MSG:" + parameters[1] + ":0:The length of you password is invalid."; SiusLog.Log(SiusLog.DEBUG, "password", "Unable to change [" + name + "]'s password. Password length is invalid."); return; } password = SiusEncrypt.Encrypt(password, name, "players"); /* Begin Database Connection */ DataTable dt = new DataTable(); SQLiteConnection SConnection = new SQLiteConnection(); SConnection.ConnectionString = SQLite.ConnectionString; SConnection.Open(); SQLiteCommand cmd = new SQLiteCommand(SConnection); cmd.CommandText = @"UPDATE 'players' SET password = @ppassword WHERE name = @pname"; SQLiteParameter ppassword = new SQLiteParameter("@ppassword"); SQLiteParameter pname = new SQLiteParameter("@pname"); cmd.Parameters.Add(ppassword); cmd.Parameters.Add(pname); ppassword.Value = password; pname.Value = name; cmd.ExecuteNonQuery(); SConnection.Close(); SConnection.Dispose(); /* End Database Connection */ Message.Send = "MSG:" + parameters[1] + ":0:Your password has been successfully changed."; SiusLog.Log(SiusLog.INFORMATION, "?password", "Successfully changed " + name + "'s password."); SiusLog.Log(SiusLog.DEBUG, "password", "Player [" + name + "] changed password to: " + password); } }
public static void Try(string[] parameters) { Player.PlayerStruct p = Player.GetPlayer(parameters[1]); if (!string.IsNullOrEmpty(p.Squad)) { /* Begin Database Connection */ DataTable dt = new DataTable(); SQLiteConnection SConnection = new SQLiteConnection(); SConnection.ConnectionString = SQLite.ConnectionString; SConnection.Open(); SQLiteCommand cmd = new SQLiteCommand(SConnection); cmd.CommandText = @"SELECT owner FROM squads WHERE name = @nsquad"; SQLiteParameter nsquad = new SQLiteParameter("@nsquad"); SQLiteParameter pname = new SQLiteParameter("@pname"); cmd.Parameters.Add(nsquad); cmd.Parameters.Add(pname); nsquad.Value = p.Squad; pname.Value = p.name; SQLiteDataReader Reader = cmd.ExecuteReader(); dt.Load(Reader); Reader.Close(); SConnection.Close(); /* End Database Connection */ if (dt.Rows.Count > 0) { if (dt.Rows[0][0].ToString().ToLower() == p.name.ToLower()) //if owner { string password = SiusUtil.Collate(3, parameters); if (string.IsNullOrEmpty(password)) { Message.Send = "MSG:" + parameters[1] + ":0:Please specify a password."; return; } if (password.Length > 23) { Message.Send = "MSG:" + parameters[1] + ":0:Password is too long."; return; } password = SiusEncrypt.Encrypt(password, p.Squad, "squads"); /* Begin Database Connection */ SConnection.Open(); cmd.CommandText = @"UPDATE squads SET password = @spass WHERE name = @nsquad"; SQLiteParameter spass = new SQLiteParameter("@spass"); cmd.Parameters.Add(spass); spass.Value = password; cmd.ExecuteNonQuery(); SConnection.Close(); /* End Database Connection */ Message.Send = "MSG:" + parameters[1] + ":0:Squad password successfully changed."; SiusLog.Log(SiusLog.INFORMATION, "?squadpassword", p.name + " successfully changed the password to squad <" + p.Squad + ">"); return; } else { Message.Send = "MSG:" + parameters[1] + ":0:You do not own this squad."; SiusLog.Log(SiusLog.INFORMATION, "?squadpassword", p.name + " attempted to change the password of <" + p.Squad + ">, but is not owner."); return; } } } Message.Send = "MSG:" + parameters[1] + ":0:You are not on a squad."; }
public static void Try(string[] parameters) { if (!string.IsNullOrEmpty(parameters[3])) { string squad = parameters[3]; string password = SiusUtil.Collate(4, parameters); string name = Player.GetPlayerName(parameters[1]); /* Begin Database Connection */ DataTable dt = new DataTable(); SQLiteConnection SConnection = new SQLiteConnection(); SConnection.ConnectionString = SQLite.ConnectionString; SConnection.Open(); SQLiteCommand cmd = new SQLiteCommand(SConnection); cmd.CommandText = @"SELECT * FROM squads WHERE name = @nsquad"; SQLiteParameter nsquad = new SQLiteParameter("@nsquad"); cmd.Parameters.Add(nsquad); nsquad.Value = squad; SQLiteDataReader Reader = cmd.ExecuteReader(); dt.Load(Reader); Reader.Close(); SConnection.Close(); /* End Database Connection */ //The squad exists if (dt.Rows.Count > 0) { Message.Send = "MSG:" + parameters[1] + ":0:Sorry, this squad already exists."; SiusLog.Log(SiusLog.DEBUG, "?squadcreate", "Unable to create squad <" + squad + "> for " + name + ", but squad already exists."); SConnection.Dispose(); return; } else { SConnection.Open(); cmd.CommandText = @"INSERT INTO squads (name, owner, lastact) values (@nsquad, @pname, @last)"; SQLiteParameter last = new SQLiteParameter("@last"); SQLiteParameter pname = new SQLiteParameter("@pname"); cmd.Parameters.Add(last); cmd.Parameters.Add(pname); last.Value = System.DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"); pname.Value = name; cmd.ExecuteNonQuery(); cmd.CommandText = @"UPDATE squads SET password = @spass WHERE name = @nsquad"; SQLiteParameter spass = new SQLiteParameter("@spass"); cmd.Parameters.Add(spass); spass.Value = SiusEncrypt.Encrypt(password, squad, "squads"); cmd.ExecuteNonQuery(); cmd.CommandText = @"UPDATE players SET squad = @nsquad WHERE name = @pname"; cmd.ExecuteNonQuery(); SConnection.Close(); SConnection.Dispose(); Message.Send = "MSG:" + parameters[1] + ":0:Squad successfully created. Please exit" + " your current zone and log back in for the change to take effect."; SiusLog.Log(SiusLog.INFORMATION, "?squadcreate", "Successfully created squad <" + squad + "> for " + name); return; } } }
public static void Try(string[] parameters) { //PLOGIN:pid:flag:name:pw:ip:macid:contid // We are expecting 8 parameters (or seven occurences of ':') if (parameters.Length != 8) { Message.Send = "PBAD:" + parameters[1] + ":Invalid player connection protocol."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : Invalid connection protocol"); return; } //Check username length if (parameters[3].Length < 1) { Message.Send = "PBAD:" + parameters[1] + ":Username is too short."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : Username is too short."); return; } //Check username length if (parameters[3].Length > 23) { Message.Send = "PBAD:" + parameters[1] + ":Username is too long."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : Username is too long."); return; } //Check password length if (parameters[4].Length < 1) { Message.Send = "PBAD:" + parameters[1] + ":Password is too short."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : Password is too short."); return; } //Check password length if (parameters[4].Length > 23) { Message.Send = "PBAD:" + parameters[1] + ":Password is too long."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : Password is too long."); return; } int newplayers = SiusConf.GetSetting.Integer("newplayers"); if (newplayers > 0) { //Check if the player already exists /* Begin Database Connection */ DataTable dt = new DataTable(); SQLiteConnection SConnection = new SQLiteConnection(); SConnection.ConnectionString = SQLite.ConnectionString; SConnection.Open(); SQLiteCommand cmd = new SQLiteCommand(SConnection); cmd.CommandText = @"SELECT * FROM players WHERE name = @pname"; SQLiteParameter pname = new SQLiteParameter("@pname"); cmd.Parameters.Add(pname); pname.Value = parameters[3]; SQLiteDataReader Reader = cmd.ExecuteReader(); dt.Load(Reader); Reader.Close(); SConnection.Close(); /* End Database Connection */ //The player exists if (dt.Rows.Count > 0) { //Check if the password is correct if (SiusEncrypt.Encrypt(parameters[4], parameters[3], "players") == dt.Rows[0][2].ToString()) { if (newplayers != 3) { //POK:pid:rtext:name:squad:billerid:usage:firstused Message.Send = "POK:" + parameters[1] + "::" + parameters[3] + ":" + dt.Rows[0][4].ToString() + ":" + dt.Rows[0][0].ToString() + ":" + dt.Rows[0][5].ToString() + ":" + dt.Rows[0][6].ToString(); SiusLog.Log(SiusLog.INFORMATION, "login", parameters[3] + " successfully logged in to " + Zone.ZoneName); Player.AddPlayer(parameters[3], parameters[1], dt.Rows[0][4].ToString()); return; } else { Message.Send = "PBAD:" + parameters[1] + ":0:The biller is currently not accepting any existing player connections."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : The biller is currently not accepting any existing player connections."); return; } } else { Message.Send = "PBAD:" + parameters[1] + ":0:Invalid password for the specified user."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : Invalid password for the specified user."); return; } } else { //Create a new player if (newplayers != 2) { /* Begin Database Connection */ SConnection.Open(); //Create row cmd.CommandText = @"INSERT INTO players (name,created) values (@pname, @created)"; SQLiteParameter created = new SQLiteParameter("@created"); cmd.Parameters.Add(created); cmd.Parameters.Add(pname); created.Value = System.DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"); pname.Value = parameters[3]; cmd.ExecuteNonQuery(); //Update password cmd.CommandText = @"UPDATE players SET password = @password where name = @pname"; SQLiteParameter password = new SQLiteParameter("@password"); cmd.Parameters.Add(password); cmd.Parameters.Add(pname); password.Value = SiusEncrypt.Encrypt(parameters[4], parameters[3], "players"); pname.Value = parameters[3]; cmd.ExecuteNonQuery(); //Retrieve information cmd.CommandText = @"SELECT * FROM players WHERE name = @pname"; cmd.Parameters.Add(pname); pname.Value = parameters[3]; Reader = cmd.ExecuteReader(); dt.Load(Reader); Reader.Close(); SConnection.Close(); SConnection.Dispose(); /* End Database Connection */ SiusLog.Log(SiusLog.INFORMATION, "user", "Succesfully created new user: "******"POK:" + parameters[1] + "::" + parameters[3] + ":" + dt.Rows[0][4].ToString() + ":" + dt.Rows[0][0].ToString() + ":" + dt.Rows[0][5].ToString() + ":" + dt.Rows[0][6].ToString(); SiusLog.Log(SiusLog.INFORMATION, "login", parameters[3] + " successfully logged in to " + Zone.ZoneName); Player.AddPlayer(parameters[3], parameters[1], dt.Rows[0][4].ToString()); return; } else { Message.Send = "PBAD:" + parameters[1] + ":0:An error occured when attempting to log in. Please try again in a few seconds."; SiusLog.Log(SiusLog.ERROR, "login", "Disconnected player (" + parameters[3] + ") : Database appears to be unreachable."); return; } } else { Message.Send = "PBAD:" + parameters[1] + ":0:The biller is currently not accepting any new player connections."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : The biller is currently not accepting any new player connections."); return; } } } else { Message.Send = "PBAD:" + parameters[1] + ":0:The biller is currently not accepting any player connections."; SiusLog.Log(SiusLog.WARNING, "login", "Disconnected player (" + parameters[3] + ") : The biller is currently not accepting any player connections."); return; } }
public static void Try(string[] parameters) { if (!string.IsNullOrEmpty(parameters[3])) { string squad = parameters[3]; string password = SiusUtil.Collate(4, parameters); /* Begin Database Connection */ DataTable dt = new DataTable(); SQLiteConnection SConnection = new SQLiteConnection(); SConnection.ConnectionString = SQLite.ConnectionString; SConnection.Open(); SQLiteCommand cmd = new SQLiteCommand(SConnection); cmd.CommandText = @"SELECT * FROM squads WHERE name = @nsquad"; SQLiteParameter nsquad = new SQLiteParameter("@nsquad"); cmd.Parameters.Add(nsquad); nsquad.Value = squad; SQLiteDataReader Reader = cmd.ExecuteReader(); dt.Load(Reader); Reader.Close(); SConnection.Close(); /* End Database Connection */ //The squad exists if (dt.Rows.Count > 0) { //Check if the password is correct if (SiusEncrypt.Encrypt(password, squad, "squads") == dt.Rows[0][1].ToString()) { SConnection.Open(); cmd.CommandText = @"UPDATE players SET squad = @nsquad WHERE name = @pname"; SQLiteParameter pname = new SQLiteParameter("@pname"); cmd.Parameters.Add(pname); pname.Value = Player.GetPlayerName(parameters[1]); cmd.ExecuteNonQuery(); SConnection.Close(); SConnection.Dispose(); Message.Send = "MSG:" + parameters[1] + ":0:Your squad has been successfully changed." + " Please log back in for the change to take effect."; SiusLog.Log(SiusLog.INFORMATION, "?squadjoin", Player.GetPlayerName(parameters[1]) + " successfully joined squad <" + squad + ">."); return; } else { Message.Send = "MSG:" + parameters[1] + ":0:Invalid password for the specified squad."; SiusLog.Log(SiusLog.DEBUG, "?squadjoin", Player.GetPlayerName(parameters[1]) + " was unable to join squad <" + squad + "> (invalid password)."); } } else { Message.Send = "MSG:" + parameters[1] + ":0:This squad does not exist."; SiusLog.Log(SiusLog.DEBUG, "?squadjoin", Player.GetPlayerName(parameters[1]) + " was unable to join squad <" + squad + "> (squad does not exist)."); } } }