text: /*
  	Author: Aaron Clark - EpochMod.com
  
      Contributors:
  
  	Description:
  	Epoch Server side securty checks config
  
      Licence:
      Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
  
      Github:
      https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settngs/configs/securty/security_checks.h
  */
  class CfgSecConf
  {
      debug = "false";
  
      class vehicles {
          safeVehicles[] = {"I_UAV_01_F","B_Heli_Transport_01_F","Steerable_Parachute_F","NonSteerable_Parachute_F","Land_Camping_Light_F","container_epoch"};
      };
  
      class remoteExecClient{
          functions[] = {"bankBalance", "resetGroup", "groupUpdate", "groupUidUpdate", "healPlayer","tradeComplete","resetTempGroup","tempGroupUpdate","tempGroupUidUpdate"};
          // code
          bankBalance = "EPOCH_bankBalance = _this;";
          resetGroup = "Epoch_my_Group = []; Epoch_my_GroupUID = '';";
          groupUpdate = "Epoch_my_Group = _this; call EPOCH_Group_update;";
          groupUidUpdate = "Epoch_my_GroupUID = _this;";
  		resetTempGroup = "Epoch_my_tempGroup = []; Epoch_my_tempGroupUID = '';";
          tempGroupUpdate = "Epoch_my_tempGroup = _this; call EPOCH_tempGroup_update;";
          tempGroupUidUpdate = "Epoch_my_tempGroupUID = _this;";
          healPlayer = "{[_x,(EPOCH_defaultVars select(EPOCH_customVars find _x)) - (missionnamespace getvariable format ['EPOCH_player%1',_x])] call Epoch_GiveAttributes;} foreach ['Temp','Hunger','Thirst','Toxicity','Stamina','BloodP','Alcohol','Radiation'];";
          tradeComplete = "EPOCH_TRADE_COMPLETE = _this;";
      };
  
      class learning {
          mode = "false"; // true = only trust uids below, false = trust everyone (use only with a passworded server and trusted players)
          trustedUsers[] = {};
      };
  
      class blacklist {
          badDisplays[] = {-1337,17,19,30,32,45,59,69,71,125,132,155,156,157,162,165,166,167,312,1320,1321,2727,2928,2929,316000};
          animations[] = {"AmovPercMstpSnonWnonDnon_exerciseKata","AmovPercMstpSnonWnonDnon_exercisePushup","GestureSpasm1","GestureSpasm4","GestureNod"};
      };
  
      class forcedQuality {
          // Configs for forced viewdistances via AH matching A3 presets
          class Standard
          {
              viewDistance = 1600; // Standard Preset = 1600
              viewDistanceObects = 1300; // Standard Preset = 1300
              terrainGrid = 10; // Standard Preset = 25
          };
          class High
          {
              viewDistance = 2200; // High Preset = 2200
              viewDistanceObects = 1800; // High Preset = 1800
  			terrainGrid = 10; // High Preset = 12.5
          };
          class VeryHigh
          {
              viewDistance = 3000; // Very High Preset = 3000
              viewDistanceObects = 2600; // Very High Preset = 2600
  			terrainGrid = 10; // Very High Preset = 6.25
          };
          class Ultra
          {
              viewDistance = 3800; // Ultra Preset = 3800
              viewDistanceObects = 3200; // Ultra Preset = 3200
  			terrainGrid = 10; // Ultra Preset = 3.125
          };
          class Custom
          {
              viewDistance = 2500; // High+
              viewDistanceObects = 2000; // High+
  			terrainGrid = 10; // Default in MP: 10
          };
          mode = "Standard";
      };
  
      class addEventHandler {
          checks[] = {"Fired","InventoryClosed","InventoryOpened","Killed","HandleDamage","HandleHeal","Dammaged","Hit","HitPart"};
      };
  
      class variables {
          class whitelist {
              #include "data\custom_vars.h" // whitelisted variables
          };
          badVars[] = {"EPOCH_GMODE","ESP_map","ESP_mainMap","ESP_adminMap","AntiAntiAntiAntiHax","fnc_usec_damageHandler","fnc_usec_unconscious","VAGINA_secret","yolo","VERSION","life_fnc_handleDamage","EPOCH_spawnVehicle_PVS","CLASS911_Menu","nuke_vars","JJMMEE_INIT_MENU","PLAYERON","PLAYERNEXT2","ALTISLIFEON","LY_Menu","PLAY","LY_SwaggerLikeUs","BIS_fnc_dbg_reminder_value","BIS_fnc_dbg_reminder"};
          nilVars[] = {"EPOCH_antiWallCount","EPOCH_playerEnergy","EPOCH_playerHunger","EPOCH_playerStamina","EPOCH_playerCrypto","EPOCH_target","EPOCH_ESP_TARGETS","EPOCH_ESPMAP_TARGETS","EPOCH_taxRate","EPOCH_ESP_VEHICLEPLAYER","EPOCH_ESP_PLAYER","EPOCH_ESP_VEHICLES"};
      };
  
      class commandMenu {
          menus[] = {"","RscSelectTeam","RscTeam","RscMenuTeam","RscMoveHigh","#GETIN","#RscStatus","#WATCH0","RscCombatMode","RscMenuReply","RscCallSupport","#CUSTOM_RADIO","#User:BIS_fnc_addCommMenuItem_menu","RscRadio","RscReply","#ACTION","RscMenuFormations","#WATCH","RscGroupRootMenu","RscMainMenu","RscMenuMove","RscWatchDir","RscWatchMoveDir","#User:BIS_Menu_GroupCommunication","RscMenuStatus","RscFormations"};
      };
  
      // RscDisplay (onload, unload) scanning is automatic and will ensure data matches the server.
      // Using the extra whitelist arrays this check can be extended to allow modifications client side that do not exist server side.
      class displayOnload {
          // Format: {rscDisplayConfigname, extra whitelisted onload data (array of string), extra whitelisted unload data (array of string)}
          // The extra onload whitelist for RscDisplayConfigure is for CBA
          checkDisplays[] = {
              {"RscDisplayMainMap", {}, {}},
              {"RscDisplayGetReady", {}, {}},
              {"RscDisplayInventory", {}, {}},
              {"RscDisplayLoadMission", {}, {}},
              {"RscDisplayInterrupt", {}, {}},
              {"RscDisplayOptionsVideo", {}, {}},
              {"RscDisplayOptions", {}, {}},
              {"RscDisplayAVTerminal", {}, {}},
              {"RscDisplayConfigure", {"{""onLoad"",_this,""RscDisplayConfigure"",'GUI'} call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf""; _this call compile preprocessfilelinenumbers ""\x\cba\addons\keybinding\gui\initDisplay.sqf"""}, {}},
              {"RscDisplayConfigureAction", {}, {}},
              {"RscDisplayConfigureControllers", {}, {}},
              {"RscDisplayControlSchemes", {}, {}},
              {"RscDisplayCustomizeController", {}, {}},
              {"RscDisplayDebriefing", {}, {}},
              {"RscDisplayDiary", {}, {}},
              {"RscDisplayGameOptions", {}, {}},
              {"RscDisplayJoystickSchemes", {}, {}},
              {"RscDisplayLoading", {}, {}},
              {"RscDisplayMicSensitivityOptions", {}, {}},
              {"RscDisplayOptionsAudio", {}, {}},
              {"RscDisplayOptionsLayout", {}, {}},
              {"RscDisplayStart", {}, {}},
              {"RscDisplayVehicleMsgBox", {}, {}},
              {"RscDisplayInsertMarker", {}, {}}
          };
      };
  
  	class DebugActive
      {
          systemChat1 = "systemChat str _type;";
          systemChat2 = "systemChat format['SPAWN %1',_spawn];";
          systemChat3 = "systemChat format['Debug-Vehicle: send: 108,%1', _veh];";
          systemChat4 = "systemChat format['Debug-Vehicle: _veh: %1', _veh];";
          systemChat5 = "systemChat format['Debug-Vehicle: _this: %1', _this];";
      };
  };
  