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