Exemplo n.º 1
0
 private void queuePlayerForBanCheck(AdKat_Player player)
 {
     if (this.isEnabled)
     {
         this.DebugWrite("Preparing to queue player for ban check", 6);
         lock (banEnforcerMutex)
         {
             this.banEnforcerCheckingQueue.Enqueue(player);
             this.DebugWrite("Player queued for checking", 6);
             this.banEnforcerHandle.Set();
         }
     }
 }
Exemplo n.º 2
0
 //TODO
 private Boolean isAdminAssistant(AdKat_Player player)
 {
     DebugWrite("fetchAdminAssistants starting!", 6);
     try
     {
         using (MySqlConnection connection = this.getDatabaseConnection())
         {
             using (MySqlCommand command = connection.CreateCommand())
             {
                 command.CommandText = @"
             SELECT
                 'isAdminAssistant'
             FROM
                 `" + this.mySqlDatabaseName + @"`.`adkats_records`
             WHERE (
                 SELECT count(`command_action`)
                 FROM `adkats_records`
                 WHERE `command_action` = 'ConfirmReport'
                 AND `source_name` = '" + player.player_name + @"'
                 AND (`adkats_records`.`record_time` BETWEEN date_sub(now(),INTERVAL 7 DAY) AND now())
             ) >= " + this.minimumRequiredWeeklyReports + " LIMIT 1";
                 using (MySqlDataReader reader = command.ExecuteReader())
                 {
                     return reader.Read();
                 }
             }
         }
     }
     catch (Exception e)
     {
         this.ConsoleException(e.ToString());
     }
     DebugWrite("fetchAdminAssistants finished!", 6);
     return false;
 }
Exemplo n.º 3
0
        //DONE
        private AdKat_Ban fetchPlayerBan(AdKat_Player player)
        {
            DebugWrite("fetchPlayerBan starting!", 6);

            AdKat_Ban aBan = null;
            try
            {
                using (MySqlConnection connection = this.getDatabaseConnection())
                {
                    using (MySqlCommand command = connection.CreateCommand())
                    {
                        //Build the query
                        string query = @"
                        SELECT
                            `adkats_banlist`.`ban_id`,
                            `adkats_banlist`.`player_id`,
                            `adkats_banlist`.`latest_record_id`,
                            `adkats_banlist`.`ban_status`,
                            `adkats_banlist`.`ban_notes`,
                            `adkats_banlist`.`ban_startTime`,
                            `adkats_banlist`.`ban_endTime`,
                            `adkats_banlist`.`ban_enforceName`,
                            `adkats_banlist`.`ban_enforceGUID`,
                            `adkats_banlist`.`ban_enforceIP`,
                            `adkats_banlist`.`ban_sync`
                        FROM
                            `adkats_banlist`
                        INNER JOIN
                            `tbl_playerdata`
                        ON
                            `tbl_playerdata`.`PlayerID` = `adkats_banlist`.`player_id`
                        WHERE
                            `adkats_banlist`.`ban_status` = 'Active'
                        AND
                        (";
                        Boolean started = false;
                        if (!String.IsNullOrEmpty(player.player_name))
                        {
                            started = true;
                            query += "(`tbl_playerdata`.`SoldierName` = '" + player.player_name + @"' AND `adkats_banlist`.`ban_enforceName` = 'Y')";
                        }
                        if (!String.IsNullOrEmpty(player.player_guid))
                        {
                            if (started)
                            {
                                query += " OR ";
                            }
                            started = true;
                            query += "(`tbl_playerdata`.`EAGUID` = '" + player.player_guid + "' AND `adkats_banlist`.`ban_enforceGUID` = 'Y')";
                        }
                        if (!String.IsNullOrEmpty(player.player_ip))
                        {
                            if (started)
                            {
                                query += " OR ";
                            }
                            started = true;
                            query += "(`tbl_playerdata`.`IP_Address` = '" + player.player_ip + "' AND `adkats_banlist`.`ban_enforceIP` = 'Y')";
                        }
                        if (!started)
                        {
                            this.ConsoleException("No data to fetch ban with, this should never happen.");
                            return null;
                        }
                        query += ")";

                        //Assign the query
                        command.CommandText = query;

                        using (MySqlDataReader reader = command.ExecuteReader())
                        {
                            Boolean fetchedFirstBan = false;
                            if (reader.Read())
                            {
                                fetchedFirstBan = true;
                                //Create the ban element
                                aBan = new AdKat_Ban();
                                aBan.ban_id = reader.GetInt64("ban_id");
                                aBan.ban_status = reader.GetString("ban_status");
                                aBan.ban_notes = reader.GetString("ban_notes");
                                aBan.ban_sync = reader.GetString("ban_sync");
                                aBan.ban_startTime = reader.GetDateTime("ban_startTime");
                                aBan.ban_endTime = reader.GetDateTime("ban_endTime");

                                if (reader.GetString("ban_enforceName").Equals("Y"))
                                    aBan.ban_enforceName = true;
                                else
                                    aBan.ban_enforceName = false;

                                if (reader.GetString("ban_enforceGUID").Equals("Y"))
                                    aBan.ban_enforceGUID = true;
                                else
                                    aBan.ban_enforceGUID = false;

                                if (reader.GetString("ban_enforceIP").Equals("Y"))
                                    aBan.ban_enforceIP = true;
                                else
                                    aBan.ban_enforceIP = false;

                                //Get the record information
                                aBan.ban_record = this.fetchRecordByID(reader.GetInt64("latest_record_id"));
                            }
                            if (reader.Read() && fetchedFirstBan)
                            {
                                this.ConsoleWarn("Multiple banned players matched ban information, possible duplicate account");
                            }
                        }
                    }
                    //If bans were fetched successfully, update the ban lists and sync back
                    if (aBan != null)
                    {
                        long totalSeconds = (long)this.convertToProconTime(aBan.ban_endTime).Subtract(DateTime.Now).TotalSeconds;
                        if (totalSeconds < 0)
                        {
                            aBan.ban_status = "Expired";
                            //Update the sync for this ban
                            this.updateBanStatus(aBan);
                            return null;
                        }
                        else
                        {
                            //Update the sync for this ban
                            this.updateBanStatus(aBan);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                ConsoleException(e.ToString());
            }
            return aBan;
        }
Exemplo n.º 4
0
        //DONE
        private int fetchPoints(AdKat_Player player)
        {
            DebugWrite("fetchPoints starting!", 6);

            int returnVal = -1;

            try
            {
                using (MySqlConnection connection = this.getDatabaseConnection())
                {
                    using (MySqlCommand command = connection.CreateCommand())
                    {
                        if (this.combineServerPunishments)
                        {
                            command.CommandText = @"SELECT `total_points` FROM `" + this.mySqlDatabaseName + @"`.`adkats_globalPlayerPoints` WHERE `player_id` = @player_id";
                            command.Parameters.AddWithValue("@player_id", player.player_id);
                        }
                        else
                        {
                            command.CommandText = @"SELECT `total_points` FROM `" + this.mySqlDatabaseName + @"`.`adkats_serverPlayerPoints` WHERE `player_id` = @player_id and `server_id` = @server_id";
                            command.Parameters.AddWithValue("@player_id", player.player_id);
                            command.Parameters.AddWithValue("@server_id", this.server_id);
                        }
                        using (MySqlDataReader reader = command.ExecuteReader())
                        {
                            if (reader.Read())
                            {
                                returnVal = reader.GetInt32("total_points");
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                DebugWrite(e.ToString(), 3);
            }

            DebugWrite("fetchPoints finished!", 6);

            return returnVal;
        }
Exemplo n.º 5
0
        //DONE
        private AdKat_Player fetchPlayer(Int64 player_id, String player_name, String player_guid, String player_ip)
        {
            DebugWrite("fetchPlayer starting!", 6);
            //Create return list
            AdKat_Player player = null;
            if (player_id < 0 && String.IsNullOrEmpty(player_name) && String.IsNullOrEmpty(player_guid) && String.IsNullOrEmpty(player_ip))
            {
                this.ConsoleError("invalid inputs to getPlayerID");
            }
            else
            {
                try
                {
                    using (MySqlConnection connection = this.getDatabaseConnection())
                    {
                        using (MySqlCommand command = connection.CreateCommand())
                        {
                            String sql = @"
                            SELECT
                                `PlayerID` as `player_id`,
                                `SoldierName` as `player_name`,
                                `EAGUID` as `player_guid`,
                                `PBGUID` as `player_pbguid`,
                                `IP_Address` as `player_ip`
                            FROM `" + this.mySqlDatabaseName + @"`.`tbl_playerdata` ";
                            bool sqlender = true;
                            if (player_id >= 0)
                            {
                                if (sqlender)
                                {
                                    sql += " WHERE (";
                                    sqlender = false;
                                }
                                sql += " `PlayerID` LIKE '" + player_id + "'";
                            }
                            if (!String.IsNullOrEmpty(player_guid))
                            {
                                if (sqlender)
                                {
                                    sql += " WHERE (";
                                    sqlender = false;
                                }
                                else
                                {
                                    sql += " OR ";
                                }
                                sql += " `EAGUID` LIKE '" + player_guid + "'";
                            }
                            if (String.IsNullOrEmpty(player_guid) && !String.IsNullOrEmpty(player_name))
                            {
                                if (sqlender)
                                {
                                    sql += " WHERE (";
                                    sqlender = false;
                                }
                                else
                                {
                                    sql += " OR ";
                                }
                                sql += " `SoldierName` LIKE '" + player_name + "'";
                            }
                            if (String.IsNullOrEmpty(player_guid) && !String.IsNullOrEmpty(player_ip))
                            {
                                if (sqlender)
                                {
                                    sql += " WHERE (";
                                    sqlender = false;
                                }
                                else
                                {
                                    sql += " OR ";
                                }
                                sql += " `IP_Address` LIKE '" + player_ip + "'";
                            }
                            if (!sqlender)
                            {
                                sql += ")";
                            }
                            command.CommandText = sql;
                            using (MySqlDataReader reader = command.ExecuteReader())
                            {
                                if (reader.Read())
                                {
                                    player = new AdKat_Player();
                                    //Player ID will never be null
                                    player.player_id = reader.GetInt64("player_id");
                                    if (!reader.IsDBNull(1))
                                        player.player_name = reader.GetString("player_name");
                                    if (!reader.IsDBNull(2))
                                        player.player_guid = reader.GetString("player_guid");
                                    if (!reader.IsDBNull(3))
                                        player.player_pbguid = reader.GetString("player_pbguid");
                                    if (!reader.IsDBNull(4))
                                        player.player_ip = reader.GetString("player_ip");
                                }
                                else
                                {
                                    this.DebugWrite("No player matching search information.", 5);
                                }
                            }
                        }
                        if (player == null)
                        {
                            using (MySqlCommand command = connection.CreateCommand())
                            {
                                //Set the insert command structure
                                command.CommandText = @"
                                INSERT INTO `" + this.mySqlDatabaseName + @"`.`tbl_playerdata`
                                (
                                    `SoldierName`,
                                    `EAGUID`,
                                    `IP_Address`
                                )
                                VALUES
                                (
                                    @player_name,
                                    @player_guid,
                                    @player_ip
                                )";
                                //Set values
                                command.Parameters.AddWithValue("@player_name", player_name);
                                command.Parameters.AddWithValue("@player_guid", player_guid);
                                command.Parameters.AddWithValue("@player_ip", player_ip);
                                //Attempt to execute the query
                                if (command.ExecuteNonQuery() > 0)
                                {
                                    player = new AdKat_Player();
                                    player.player_id = command.LastInsertedId;
                                    player.player_name = player_name;
                                    player.player_guid = player_guid;
                                    player.player_ip = player_ip;
                                }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    ConsoleException(e.ToString());
                }

            }
            DebugWrite("fetchPlayer finished!", 6);
            return player;
        }