Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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.";
        }
Exemple #3
0
        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;
                }
            }
        }
Exemple #4
0
        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;
            }
        }
Exemple #5
0
        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).");
                }
            }
        }