private void uploadSetting(CPluginVariable var) { DebugWrite("uploadSetting starting!", 7); //List<CPluginVariable> vars = this.GetPluginVariables(); try { using (MySqlConnection connection = this.getDatabaseConnection()) { using (MySqlCommand command = connection.CreateCommand()) { string value = var.Value.Replace("'", "*").Replace('"', '*'); //Check for length too great if (value.Length > 1499) { this.ConsoleError("Unable to upload setting. Length of setting too great. Really dude? It's 1500 chars. This is battlefield, not a book club."); return; } this.DebugWrite(value, 7); //Set the insert command structure command.CommandText = @" INSERT INTO `" + this.mySqlDatabaseName + @"`.`adkats_settings` ( `server_id`, `setting_name`, `setting_type`, `setting_value` ) VALUES ( " + this.server_id + @", '" + var.Name + @"', '" + var.Type + @"', '" + value + @"' ) ON DUPLICATE KEY UPDATE `setting_value` = '" + value + @"'"; //Attempt to execute the query if (command.ExecuteNonQuery() > 0) { this.DebugWrite("Setting " + var.Name + " pushed to database", 7); } } } } catch (Exception e) { ConsoleException(e.ToString()); } DebugWrite("uploadSetting finished!", 7); }
private Boolean fetchSettings(Int64 server_id) { DebugWrite("fetchSettings starting!", 6); Boolean success = false; try { //Success fetching settings using (MySqlConnection connection = this.getDatabaseConnection()) { using (MySqlCommand command = connection.CreateCommand()) { String sql = @" SELECT `setting_name`, `setting_type`, `setting_value` FROM `" + this.mySqlDatabaseName + @"`.`adkats_settings` WHERE `server_id` = " + server_id; command.CommandText = sql; using (MySqlDataReader reader = command.ExecuteReader()) { //Grab the settings CPluginVariable var = null; while (reader.Read()) { success = true; //Create as variable in case needed later var = new CPluginVariable(reader.GetString("setting_name"), reader.GetString("setting_type"), reader.GetString("setting_value")); this.SetPluginVariable(var.Name, var.Value); } if (success) { this.lastDBSettingFetch = DateTime.Now; this.updateSettingPage(); } else { this.ConsoleError("Settings could not be loaded. Server " + server_id + " invalid."); } this.settingImportID = this.server_id; } } } } catch (Exception e) { ConsoleException(e.ToString()); } this.DebugWrite("fetchSettings finished!", 6); return success; }
private void queueSettingForUpload(CPluginVariable setting) { if (this.isEnabled) { this.DebugWrite("Preparing to queue setting " + setting.Name + " for upload", 6); lock (this.settingUploadQueue) { this.settingUploadQueue.Enqueue(setting); this.dbCommHandle.Set(); } } }
private void FetchSettings(long serverID, Boolean verbose) { this.DebugWrite("fetchSettings starting!", 6); Boolean success = false; //Make sure database connection active if (this.HandlePossibleDisconnect()) { return; } try { //Success fetching settings using (MySqlConnection connection = this.GetDatabaseConnection()) { using (MySqlCommand command = connection.CreateCommand()) { String sql = @" SELECT `setting_name`, `setting_type`, `setting_value` FROM `" + this._MySqlDatabaseName + @"`.`adkats_settings` WHERE `server_id` = " + serverID; command.CommandText = sql; using (MySqlDataReader reader = command.ExecuteReader()) { //Grab the settings while (reader.Read()) { success = true; //Create as variable in case needed later CPluginVariable var = new CPluginVariable(reader.GetString("setting_name"), reader.GetString("setting_type"), reader.GetString("setting_value")); this.SetPluginVariable(var.Name, var.Value); } if (success) { this._LastDbSettingFetch = DateTime.UtcNow; this.UpdateSettingPage(); } else if(verbose){ this.ConsoleError("Settings could not be loaded. Server " + serverID + " invalid."); } this._SettingImportID = this._ServerID; } } } } catch (Exception e) { this.HandleException(new AdKatsException("Error while fetching settings from database.", e)); } this.DebugWrite("fetchSettings finished!", 6); }
private void UploadSetting(CPluginVariable var) { this.DebugWrite("uploadSetting starting!", 7); //Make sure database connection active if (this.HandlePossibleDisconnect()) { return; } try { using (MySqlConnection connection = this.GetDatabaseConnection()) { using (MySqlCommand command = connection.CreateCommand()) { //Check for length too great if (var.Value.Length > 1499) { this.ConsoleError("Unable to upload setting, length of setting too great. Really dude? It's 1500+ chars. This is battlefield, not a book club."); return; } this.DebugWrite(var.Value, 7); //Set the insert command structure command.CommandText = @" INSERT INTO `" + this._MySqlDatabaseName + @"`.`adkats_settings` ( `server_id`, `setting_name`, `setting_type`, `setting_value` ) VALUES ( @server_id, @setting_name, @setting_type, @setting_value ) ON DUPLICATE KEY UPDATE `setting_value` = @setting_value"; command.Parameters.AddWithValue("@server_id", this._ServerID); command.Parameters.AddWithValue("@setting_name", var.Name); command.Parameters.AddWithValue("@setting_type", var.Type); command.Parameters.AddWithValue("@setting_value", var.Value); //Attempt to execute the query if (command.ExecuteNonQuery() > 0) { this.DebugWrite("Setting " + var.Name + " pushed to database", 7); } } } } catch (Exception e) { this.HandleException(new AdKatsException("Error while uploading setting to database.", e)); } DebugWrite("uploadSetting finished!", 7); }
private void QueueSettingForUpload(CPluginVariable setting) { this.DebugWrite("Entering queueSettingForUpload", 7); try { if (this._IsEnabled) { this.DebugWrite("Preparing to queue setting " + setting.Name + " for upload", 6); lock (this._SettingUploadQueue) { this._SettingUploadQueue.Enqueue(setting); this._DbCommunicationWaitHandle.Set(); } } } catch (Exception e) { this.HandleException(new AdKatsException("Error while queueing setting for upload.", e)); } this.DebugWrite("Exiting queueSettingForUpload", 7); }
public List<CPluginVariable> GetDisplayPluginVariables() { try { var lstReturn = new List<CPluginVariable>(); const string separator = " | "; if (_settingsLocked) { lstReturn.Add(new CPluginVariable("1. Server Settings|Unlock Settings", typeof (String), "")); } else { lstReturn.Add(new CPluginVariable(String.IsNullOrEmpty(_settingsPassword) ? ("1. Server Settings|Lock Settings - Create Password") : ("1. Server Settings|Lock Settings"), typeof (String), "")); } //Only fetch the following settings when plugin disabled if (!_threadsReady) { if (!_settingsLocked) { if (_useKeepAlive) { lstReturn.Add(new CPluginVariable("0. Instance Settings|Auto-Enable/Keep-Alive", typeof (Boolean), true)); } lstReturn.Add(new CPluginVariable("Complete these settings before enabling.", typeof (String), "Once enabled, more settings will appear.")); //SQL Settings lstReturn.Add(new CPluginVariable("1. MySQL Settings|MySQL Hostname", typeof (String), _mySqlHostname)); lstReturn.Add(new CPluginVariable("1. MySQL Settings|MySQL Port", typeof (String), _mySqlPort)); lstReturn.Add(new CPluginVariable("1. MySQL Settings|MySQL Database", typeof (String), _mySqlDatabaseName)); lstReturn.Add(new CPluginVariable("1. MySQL Settings|MySQL Username", typeof (String), _mySqlUsername)); lstReturn.Add(new CPluginVariable("1. MySQL Settings|MySQL Password", typeof (String), _mySqlPassword)); } //Debugging Settings lstReturn.Add(new CPluginVariable("2. Debugging|Debug level", typeof (Int32), _debugLevel)); } else { if (_settingsLocked) { lstReturn.Add(new CPluginVariable("1. Server Settings|Server ID (Display)", typeof (int), _serverID)); lstReturn.Add(new CPluginVariable("1. Server Settings|Server IP (Display)", typeof (String), _serverIP)); if (_UseBanEnforcer) { const string banManagementPrefix = "A13-3. Mini Ban Management|"; lstReturn.Add(new CPluginVariable(banManagementPrefix + "NAME Ban Count", typeof (int), _NameBanCount)); lstReturn.Add(new CPluginVariable(banManagementPrefix + "GUID Ban Count", typeof (int), _GUIDBanCount)); lstReturn.Add(new CPluginVariable(banManagementPrefix + "IP Ban Count", typeof (int), _IPBanCount)); lstReturn.Add(new CPluginVariable(banManagementPrefix + "Ban Search", typeof (String), "")); lstReturn.AddRange(_BanEnforcerSearchResults.Select(aBan => new CPluginVariable(banManagementPrefix + "BAN" + aBan.ban_id + separator + aBan.ban_record.target_player.player_name + separator + aBan.ban_record.source_name + separator + aBan.ban_record.record_message, "enum.commandActiveEnum(Active|Disabled|Expired)", aBan.ban_status))); } lstReturn.Add(new CPluginVariable("D99. Debugging|Debug level", typeof (int), _debugLevel)); lstReturn.Add(new CPluginVariable("D99. Debugging|Debug Soldier Name", typeof (String), _debugSoldierName)); lstReturn.Add(new CPluginVariable("D99. Debugging|Command Entry", typeof (String), "")); return lstReturn; } //Auto-Enable Settings lstReturn.Add(new CPluginVariable("0. Instance Settings|Auto-Enable/Keep-Alive", typeof (Boolean), _useKeepAlive)); //SQL Settings lstReturn.Add(new CPluginVariable("2. MySQL Settings|MySQL Hostname", typeof (String), _mySqlHostname)); lstReturn.Add(new CPluginVariable("2. MySQL Settings|MySQL Port", typeof (String), _mySqlPort)); lstReturn.Add(new CPluginVariable("2. MySQL Settings|MySQL Database", typeof (String), _mySqlDatabaseName)); lstReturn.Add(new CPluginVariable("2. MySQL Settings|MySQL Username", typeof (String), _mySqlUsername)); lstReturn.Add(new CPluginVariable("2. MySQL Settings|MySQL Password", typeof (String), _mySqlPassword)); //Punishment Settings lstReturn.Add(new CPluginVariable("7. Punishment Settings|Punishment Hierarchy", typeof (String[]), _PunishmentHierarchy)); lstReturn.Add(new CPluginVariable("7. Punishment Settings|Combine Server Punishments", typeof (Boolean), _CombineServerPunishments)); lstReturn.Add(new CPluginVariable("7. Punishment Settings|Only Kill Players when Server in low population", typeof (Boolean), _OnlyKillOnLowPop)); lstReturn.Add(new CPluginVariable("7. Punishment Settings|Use IRO Punishment", typeof (Boolean), _IROActive)); if (_IROActive) { lstReturn.Add(new CPluginVariable("7. Punishment Settings|IRO Timeout Minutes", typeof (Int32), _IROTimeout)); lstReturn.Add(new CPluginVariable("7. Punishment Settings|IRO Punishment Overrides Low Pop", typeof (Boolean), _IROOverridesLowPop)); } //Email Settings lstReturn.Add(new CPluginVariable("8. Email Settings|Send Emails", typeof (bool), _UseEmail)); if (_UseEmail) { lstReturn.Add(new CPluginVariable("8. Email Settings|Use SSL?", typeof (Boolean), _EmailHandler.UseSSL)); lstReturn.Add(new CPluginVariable("8. Email Settings|SMTP-Server address", typeof (String), _EmailHandler.SMTPServer)); lstReturn.Add(new CPluginVariable("8. Email Settings|SMTP-Server port", typeof (int), _EmailHandler.SMTPPort)); lstReturn.Add(new CPluginVariable("8. Email Settings|Sender address", typeof (String), _EmailHandler.SenderEmail)); lstReturn.Add(new CPluginVariable("8. Email Settings|SMTP-Server username", typeof (String), _EmailHandler.SMTPUser)); lstReturn.Add(new CPluginVariable("8. Email Settings|SMTP-Server password", typeof (String), _EmailHandler.SMTPPassword)); lstReturn.Add(new CPluginVariable("8. Email Settings|Custom HTML Addition", typeof (String), _EmailHandler.CustomHTMLAddition)); lstReturn.Add(new CPluginVariable("8. Email Settings|Extra Recipient Email Addresses", typeof (String[]), _EmailHandler.RecipientEmails.ToArray())); } //TeamSwap Settings lstReturn.Add(new CPluginVariable("9. TeamSwap Settings|Ticket Window High", typeof (int), _TeamSwapTicketWindowHigh)); lstReturn.Add(new CPluginVariable("9. TeamSwap Settings|Ticket Window Low", typeof (int), _TeamSwapTicketWindowLow)); //Admin Assistant Settings lstReturn.Add(new CPluginVariable("A10. Admin Assistant Settings|Enable Admin Assistants", typeof (Boolean), _EnableAdminAssistants)); if (_EnableAdminAssistants) { lstReturn.Add(new CPluginVariable("A10. Admin Assistant Settings|Minimum Confirmed Reports Per Month", typeof (int), _MinimumRequiredMonthlyReports)); lstReturn.Add(new CPluginVariable("A10. Admin Assistant Settings|Enable Admin Assistant Perk", typeof (Boolean), _EnableAdminAssistantPerk)); lstReturn.Add(new CPluginVariable("A10. Admin Assistant Settings|Use AA Report Auto Handler", typeof (Boolean), _UseAAReportAutoHandler)); if (_UseAAReportAutoHandler) { lstReturn.Add(new CPluginVariable("A10. Admin Assistant Settings|Auto-Report-Handler Strings", typeof (String[]), _AutoReportHandleStrings)); } } //Muting Settings lstReturn.Add(new CPluginVariable("A11. Player Mute Settings|On-Player-Muted Message", typeof (String), _MutedPlayerMuteMessage)); lstReturn.Add(new CPluginVariable("A11. Player Mute Settings|On-Player-Killed Message", typeof (String), _MutedPlayerKillMessage)); lstReturn.Add(new CPluginVariable("A11. Player Mute Settings|On-Player-Kicked Message", typeof (String), _MutedPlayerKickMessage)); lstReturn.Add(new CPluginVariable("A11. Player Mute Settings|# Chances to give player before kicking", typeof(int), _MutedPlayerChances)); lstReturn.Add(new CPluginVariable("A11. Player Mute Settings|Ignore commands for mute enforcement", typeof(Boolean), _MutedPlayerIgnoreCommands)); //Message Settings lstReturn.Add(new CPluginVariable("A12. Messaging Settings|Display Admin Name in Kick and Ban Announcement", typeof (Boolean), _ShowAdminNameInSay)); lstReturn.Add(new CPluginVariable("A12. Messaging Settings|Inform players of reports against them", typeof (Boolean), _InformReportedPlayers)); if (_InformReportedPlayers) { lstReturn.Add(new CPluginVariable("A12. Messaging Settings|Player Inform Exclusion Strings", typeof (String[]), _PlayerInformExclusionStrings)); } lstReturn.Add(new CPluginVariable("A12. Messaging Settings|Yell display time seconds", typeof (int), _YellDuration)); lstReturn.Add(new CPluginVariable("A12. Messaging Settings|Pre-Message List", typeof(String[]), _PreMessageList.ToArray())); lstReturn.Add(new CPluginVariable("A12. Messaging Settings|Require Use of Pre-Messages", typeof(Boolean), _RequirePreMessageUse)); lstReturn.Add(new CPluginVariable("A12. Messaging Settings|Use first spawn message", typeof(Boolean), _UseFirstSpawnMessage)); if (_UseFirstSpawnMessage) { lstReturn.Add(new CPluginVariable("A12. Messaging Settings|First spawn message text", typeof(String), _FirstSpawnMessage)); } //Ban Settings lstReturn.Add(new CPluginVariable("A13. Banning Settings|Use Additional Ban Message", typeof (Boolean), _UseBanAppend)); if (_UseBanAppend) { lstReturn.Add(new CPluginVariable("A13. Banning Settings|Additional Ban Message", typeof (String), _BanAppend)); } lstReturn.Add(new CPluginVariable("A13. Banning Settings|Procon Ban Admin Name", typeof (String), _CBanAdminName)); const string banEnforcerPrefix = "A13-2. Ban Enforcer Settings|"; if (!_UsingAwa) { lstReturn.Add(new CPluginVariable(banEnforcerPrefix + "Use Ban Enforcer", typeof (Boolean), _UseBanEnforcer)); } if (_UseBanEnforcer) { lstReturn.Add(new CPluginVariable(banEnforcerPrefix + "Enforce New Bans by NAME", typeof (Boolean), _DefaultEnforceName)); lstReturn.Add(new CPluginVariable(banEnforcerPrefix + "Enforce New Bans by GUID", typeof (Boolean), _DefaultEnforceGUID)); lstReturn.Add(new CPluginVariable(banEnforcerPrefix + "Enforce New Bans by IP", typeof (Boolean), _DefaultEnforceIP)); //Metabans Settings lstReturn.Add(new CPluginVariable(banEnforcerPrefix + "Use Metabans?", typeof (bool), _useMetabans)); if (_useMetabans) { lstReturn.Add(new CPluginVariable(banEnforcerPrefix + "Metabans Username", typeof (String), _metabansUsername)); lstReturn.Add(new CPluginVariable(banEnforcerPrefix + "Metabans API Key", typeof (String), _metabansAPIKey)); } } //External Command Settings lstReturn.Add(new CPluginVariable("A14. External Command Settings|HTTP External Access Key", typeof (String), _ExternalCommandAccessKey)); if (!_UseBanEnforcer && !_UsingAwa) { lstReturn.Add(new CPluginVariable("A14. External Command Settings|Fetch Actions from Database", typeof (Boolean), _fetchActionsFromDb)); } lstReturn.Add(new CPluginVariable("A15. VOIP Settings|Server VOIP Address", typeof (String), _ServerVoipAddress)); lstReturn.Add(new CPluginVariable("A16. Orchestration Settings|Feed MULTIBalancer Whitelist", typeof (Boolean), _FeedMultiBalancerWhitelist)); if (_FeedMultiBalancerWhitelist) { lstReturn.Add(new CPluginVariable("A16. Orchestration Settings|Automatic MULTIBalancer Whitelist for Admins", typeof (Boolean), _FeedMultiBalancerWhitelist_UserCache)); } lstReturn.Add(new CPluginVariable("A16. Orchestration Settings|Feed MULTIBalancer Even Dispersion List", typeof (Boolean), _FeedMultiBalancerDisperseList)); lstReturn.Add(new CPluginVariable("A16. Orchestration Settings|Feed Server Reserved Slots", typeof (Boolean), _FeedServerReservedSlots)); if (_FeedServerReservedSlots) { lstReturn.Add(new CPluginVariable("A16. Orchestration Settings|Automatic Reserved Slot for User Cache", typeof (Boolean), _FeedServerReservedSlots_UserCache)); } lstReturn.Add(new CPluginVariable("A16. Orchestration Settings|Feed Server Spectator List", typeof (Boolean), _FeedServerSpectatorList)); if (_FeedServerSpectatorList) { lstReturn.Add(new CPluginVariable("A16. Orchestration Settings|Automatic Spectator Slot for User Cache", typeof (Boolean), _FeedServerReservedSlots_UserCache)); } lstReturn.Add(new CPluginVariable("A16. Orchestration Settings|Feed Stat Logger Settings", typeof (Boolean), _FeedStatLoggerSettings)); lstReturn.Add(new CPluginVariable("A17. Round Settings|Round Timer: Enable", typeof (Boolean), _useRoundTimer)); if (_useRoundTimer) { lstReturn.Add(new CPluginVariable("A17. Round Settings|Round Timer: Round Duration Minutes", typeof (Double), _maxRoundTimeMinutes)); } lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: Enable", typeof (Boolean), _UseHackerChecker)); if (_UseHackerChecker) { if (_isTestingAuthorized) { lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|Hacker-Check Player", typeof (String), "")); } //lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: Whitelist", typeof (String[]), _HackerCheckerWhitelist)); lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: DPS Checker: Enable", typeof (Boolean), _UseDpsChecker)); if (_UseDpsChecker) { lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: DPS Checker: Trigger Level", typeof (Double), _DpsTriggerLevel)); lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: DPS Checker: Ban Message", typeof (String), _HackerCheckerDPSBanMessage)); } lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: HSK Checker: Enable", typeof (Boolean), _UseHskChecker)); if (_UseHskChecker) { lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: HSK Checker: Trigger Level", typeof (Double), _HskTriggerLevel)); lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: HSK Checker: Ban Message", typeof (String), _HackerCheckerHSKBanMessage)); } lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: KPM Checker: Enable", typeof (Boolean), _UseKpmChecker)); if (_UseKpmChecker) { lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: KPM Checker: Trigger Level", typeof (Double), _KpmTriggerLevel)); lstReturn.Add(new CPluginVariable("A18. Internal Hacker-Checker Settings|HackerChecker: KPM Checker: Ban Message", typeof (String), _HackerCheckerKPMBanMessage)); } } //Server rules Settings lstReturn.Add(new CPluginVariable("A19. Server Rules Settings|Rule Print Delay", typeof(Double), _ServerRulesDelay)); lstReturn.Add(new CPluginVariable("A19. Server Rules Settings|Rule Print Interval", typeof(Double), _ServerRulesInterval)); lstReturn.Add(new CPluginVariable("A19. Server Rules Settings|Server Rule List", typeof(String[]), _ServerRulesList)); lstReturn.Add(new CPluginVariable("A19. Server Rules Settings|Server Rule Numbers", typeof(Boolean), _ServerRulesNumbers)); //AFK Settings lstReturn.Add(new CPluginVariable("B20. AFK Settings|AFK System Enable", typeof(Boolean), _AFKSystemEnable)); if (_AFKSystemEnable) { lstReturn.Add(new CPluginVariable("B20. AFK Settings|AFK Ignore Chat", typeof(Boolean), _AFKIgnoreChat)); lstReturn.Add(new CPluginVariable("B20. AFK Settings|AFK Auto-Kick Enable", typeof(Boolean), _AFKAutoKickEnable)); lstReturn.Add(new CPluginVariable("B20. AFK Settings|AFK Trigger Minutes", typeof(Double), _AFKTriggerDurationMinutes)); lstReturn.Add(new CPluginVariable("B20. AFK Settings|AFK Minimum Players", typeof(Int32), _AFKTriggerMinimumPlayers)); lstReturn.Add(new CPluginVariable("B20. AFK Settings|AFK Ignore User List", typeof(Boolean), _AFKIgnoreUserList)); if (!_AFKIgnoreUserList) { lstReturn.Add(new CPluginVariable("B20. AFK Settings|AFK Ignore Roles", typeof(String[]), _AFKIgnoreRoles)); } } //Debug settings lstReturn.Add(new CPluginVariable("D99. Debugging|Debug level", typeof (int), _debugLevel)); lstReturn.Add(new CPluginVariable("D99. Debugging|Debug Soldier Name", typeof (String), _debugSoldierName)); lstReturn.Add(new CPluginVariable("D99. Debugging|Command Entry", typeof (String), "")); //Experimental tools if (_isTestingAuthorized) { lstReturn.Add(new CPluginVariable("X99. Experimental|Use Experimental Tools", typeof (Boolean), _useExperimentalTools)); if (_useExperimentalTools) { lstReturn.Add(new CPluginVariable("X99. Experimental|Send Query", typeof (String), "")); lstReturn.Add(new CPluginVariable("X99. Experimental|Send Non-Query", typeof (String), "")); lstReturn.Add(new CPluginVariable("X99. Experimental|Use NO EXPLOSIVES Limiter", typeof (Boolean), _UseWeaponLimiter)); if (_UseWeaponLimiter) { lstReturn.Add(new CPluginVariable("X99. Experimental|NO EXPLOSIVES Weapon String", typeof (String), _WeaponLimiterString)); lstReturn.Add(new CPluginVariable("X99. Experimental|NO EXPLOSIVES Exception String", typeof (String), _WeaponLimiterExceptionString)); } lstReturn.Add(new CPluginVariable("X99. Experimental|Use Grenade Cook Catcher", typeof (Boolean), _UseGrenadeCookCatcher)); } } //Server Settings lstReturn.Add(new CPluginVariable("1. Server Settings|Setting Import", typeof (String), _serverID)); lstReturn.Add(new CPluginVariable("1. Server Settings|Server ID (Display)", typeof (int), _serverID)); lstReturn.Add(new CPluginVariable("1. Server Settings|Server IP (Display)", typeof (String), _serverIP)); lstReturn.Add(new CPluginVariable("1. Server Settings|Low Population Value", typeof (int), _lowPopulationPlayerCount)); if (!_UsingAwa) { const string userSettingsPrefix = "3. User Settings|"; //User Settings lstReturn.Add(new CPluginVariable(userSettingsPrefix + "Add User", typeof (String), "")); if (_userCache.Count > 0) { //Sort access list by access level, then by id List<AdKatsUser> tempAccess = _userCache.Values.ToList(); tempAccess.Sort((a1, a2) => (a1.user_role.role_id == a2.user_role.role_id) ? (System.String.CompareOrdinal(a1.user_name, a2.user_name)) : ((a1.user_role.role_id < a2.user_role.role_id) ? (-1) : (1))); String roleEnum = String.Empty; if (_RoleKeyDictionary.Count > 0) { var random = new Random(); foreach (AdKatsRole role in _RoleKeyDictionary.Values) { if (String.IsNullOrEmpty(roleEnum)) { roleEnum += "enum.RoleEnum_" + random.Next(100000, 999999) + "("; } else { roleEnum += "|"; } roleEnum += role.role_name; } roleEnum += ")"; } foreach (AdKatsUser user in tempAccess) { String userPrefix = userSettingsPrefix + "USR" + user.user_id + separator + user.user_name + separator; if (_UseEmail) { lstReturn.Add(new CPluginVariable(userPrefix + "User Email", typeof (String), user.user_email)); } lstReturn.Add(new CPluginVariable(userPrefix + "User Expiration", typeof(String), user.user_expiration.ToShortDateString())); lstReturn.Add(new CPluginVariable(userPrefix + "User Notes", typeof(String), user.user_notes)); //Do not display phone input until that operation is available for use //lstReturn.Add(new CPluginVariable(userPrefix + "User Phone", typeof(String), user.user_phone)); lstReturn.Add(new CPluginVariable(userPrefix + "User Role", roleEnum, user.user_role.role_name)); lstReturn.Add(new CPluginVariable(userPrefix + "Delete User?", typeof (String), "")); lstReturn.Add(new CPluginVariable(userPrefix + "Add Soldier?", typeof (String), "")); String soldierPrefix = userPrefix + "Soldiers" + separator; lstReturn.AddRange(user.soldierDictionary.Values.Select(aPlayer => new CPluginVariable(soldierPrefix + aPlayer.player_id + separator + (_gameIDDictionary.ContainsKey(aPlayer.game_id) ? (_gameIDDictionary[aPlayer.game_id].ToString()) : ("INVALID GAME ID [" + aPlayer.game_id + "]")) + separator + aPlayer.player_name + separator + "Delete Soldier?", typeof (String), ""))); } } else { lstReturn.Add(new CPluginVariable(userSettingsPrefix + "No Users in User List", typeof (String), "Add Users with 'Add User'.")); } lstReturn.Add(new CPluginVariable("5. Command Settings|Minimum Required Reason Length", typeof(int), _RequiredReasonLength)); lstReturn.Add(new CPluginVariable("5. Command Settings|Minimum Report Handle Seconds", typeof(int), _MinimumReportHandleSeconds)); lstReturn.Add(new CPluginVariable("5. Command Settings|Maximum Temp-Ban Duration Minutes", typeof(Double), _MaxTempBanDuration.TotalMinutes)); lstReturn.Add(new CPluginVariable("5. Command Settings|Allow Commands from Admin Say", typeof(Boolean), _AllowAdminSayCommands)); lstReturn.Add(new CPluginVariable("5. Command Settings|External plugin player commands", typeof (String[]), _ExternalPlayerCommands.ToArray())); lstReturn.Add(new CPluginVariable("5. Command Settings|External plugin admin commands", typeof(String[]), _ExternalAdminCommands.ToArray())); //Role Settings const string roleListPrefix = "4. Role Settings|"; lstReturn.Add(new CPluginVariable(roleListPrefix + "Add Role", typeof (String), "")); if (_RoleKeyDictionary.Count > 0) { if (_isTestingAuthorized) PushThreadDebug(DateTime.Now.Ticks, (String.IsNullOrEmpty(Thread.CurrentThread.Name) ? ("mainthread") : (Thread.CurrentThread.Name)), Thread.CurrentThread.ManagedThreadId, new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileLineNumber(), ""); lock (_RoleIDDictionary) { foreach (AdKatsRole aRole in _RoleKeyDictionary.Values) { if (_isTestingAuthorized) PushThreadDebug(DateTime.Now.Ticks, (String.IsNullOrEmpty(Thread.CurrentThread.Name) ? ("mainthread") : (Thread.CurrentThread.Name)), Thread.CurrentThread.ManagedThreadId, new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileLineNumber(), ""); lock (_CommandNameDictionary) { String rolePrefix = roleListPrefix + "RLE" + aRole.role_id + separator + ((RoleIsAdmin(aRole)) ? ("[A]") : ("")) + aRole.role_name + separator; foreach (AdKatsCommand aCommand in _CommandNameDictionary.Values) { if (aCommand.command_active == AdKatsCommand.CommandActive.Active) { String allowEnum = "enum.roleAllowCommandEnum(Allow|Deny)"; Boolean allowed = aRole.RoleAllowedCommands.ContainsKey(aCommand.command_key); String display = rolePrefix + "CDE" + aCommand.command_id + separator + aCommand.command_name + ((allowed && aCommand.command_playerInteraction)?(" [ADMIN]"):("")); var cVar = new CPluginVariable(display , allowEnum, allowed ? ("Allow") : ("Deny")); lstReturn.Add(cVar); } } //Do not display the delete option for default guest if (aRole.role_key != "guest_default") { lstReturn.Add(new CPluginVariable(rolePrefix + "Delete Role? (All assignments will be removed)", typeof (String), "")); } } } } } else { lstReturn.Add(new CPluginVariable(roleListPrefix + "Role List Empty", typeof (String), "No valid roles found in database.")); } //Command Settings const string commandListPrefix = "6. Command List|"; if (_CommandNameDictionary.Count > 0) { if (_isTestingAuthorized) PushThreadDebug(DateTime.Now.Ticks, (String.IsNullOrEmpty(Thread.CurrentThread.Name) ? ("mainthread") : (Thread.CurrentThread.Name)), Thread.CurrentThread.ManagedThreadId, new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileLineNumber(), ""); lock (_CommandIDDictionary) { foreach (AdKatsCommand command in _CommandIDDictionary.Values) { if (command.command_active != AdKatsCommand.CommandActive.Invisible) { String commandPrefix = commandListPrefix + "CDE" + command.command_id + separator + command.command_name + separator; lstReturn.Add(new CPluginVariable(commandPrefix + "Active", "enum.commandActiveEnum(Active|Disabled)", command.command_active.ToString())); if (command.command_active != AdKatsCommand.CommandActive.Disabled) { if (command.command_logging != AdKatsCommand.CommandLogging.Mandatory && command.command_logging != AdKatsCommand.CommandLogging.Unable) { lstReturn.Add(new CPluginVariable(commandPrefix + "Logging", "enum.commandLoggingEnum(Log|Ignore)", command.command_logging.ToString())); } lstReturn.Add(new CPluginVariable(commandPrefix + "Text", typeof (String), command.command_text)); } } } } } else { lstReturn.Add(new CPluginVariable(commandListPrefix + "Command List Empty", typeof (String), "No valid commands found in database.")); } } else { lstReturn.Add(new CPluginVariable("3. Player Access Settings|You are using AdKats WebAdmin", typeof (String), "Manage admin settings there.")); } if (_UseBanEnforcer) { const string banManagementPrefix = "A13-3. Mini Ban Management|"; lstReturn.Add(new CPluginVariable(banManagementPrefix + "NAME Ban Count", typeof (int), _NameBanCount)); lstReturn.Add(new CPluginVariable(banManagementPrefix + "GUID Ban Count", typeof (int), _GUIDBanCount)); lstReturn.Add(new CPluginVariable(banManagementPrefix + "IP Ban Count", typeof (int), _IPBanCount)); lstReturn.Add(new CPluginVariable(banManagementPrefix + "Ban Search", typeof (String), "")); lstReturn.AddRange(_BanEnforcerSearchResults.Select(aBan => new CPluginVariable(banManagementPrefix + "BAN" + aBan.ban_id + separator + aBan.ban_record.target_player.player_name + separator + aBan.ban_record.source_name + separator + aBan.ban_record.record_message, "enum.commandActiveEnum(Active|Disabled|Expired)", aBan.ban_status))); } } return lstReturn; } catch (Exception e) { HandleException(new AdKatsException("Error while fetching display vars.", e)); return new List<CPluginVariable>(); } }
private void QueueSettingForUpload(CPluginVariable setting) { DebugWrite("Entering queueSettingForUpload", 7); if (!_settingsFetched) { return; } try { if (_pluginEnabled) { DebugWrite("Preparing to queue setting " + setting.Name + " for upload", 6); if (_isTestingAuthorized) PushThreadDebug(DateTime.Now.Ticks, (String.IsNullOrEmpty(Thread.CurrentThread.Name) ? ("mainthread") : (Thread.CurrentThread.Name)), Thread.CurrentThread.ManagedThreadId, new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileLineNumber(), ""); lock (_SettingUploadQueue) { _SettingUploadQueue.Enqueue(setting); _DbCommunicationWaitHandle.Set(); } } } catch (Exception e) { HandleException(new AdKatsException("Error while queueing setting for upload.", e)); } DebugWrite("Exiting queueSettingForUpload", 7); }