Example #1
0
        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);
        }
Example #2
0
 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;
 }
Example #3
0
 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();
         }
     }
 }
Example #4
0
 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);
 }
Example #5
0
        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);
        }
Example #6
0
 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);
 }
Example #7
0
        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>();
            }
        }
Example #8
0
 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);
 }