From 6ff80403bc94ae2099404c5d208e2597ff9e0d21 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Sun, 6 Nov 2022 10:22:00 -0500 Subject: [PATCH] Clean timed out bans at startup --- Classic/scripts/autoexec/dtBanSystem.cs | 31 ++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/Classic/scripts/autoexec/dtBanSystem.cs b/Classic/scripts/autoexec/dtBanSystem.cs index 66e9999..3bf4e51 100644 --- a/Classic/scripts/autoexec/dtBanSystem.cs +++ b/Classic/scripts/autoexec/dtBanSystem.cs @@ -55,7 +55,7 @@ function BanList::add(%guid, %ipAddress, %time){ } } else if(%eIndex == -1){ - %eIndex = %i; + %eIndex = %i; } } if(!%found){ @@ -122,6 +122,14 @@ function banList_checkGUID(%guid){ return 0; } +function CreateServer(%mission, %missionType) +{ + parent::CreateServer(%mission, %missionType); + + //Clean timed out bans at startup + schedule(10000,0,"banListClean",0); +} + }; if (!isActivePackage(dtBan)){ @@ -273,4 +281,25 @@ function unbanold(%guid,%ip){ error("IP" SPC %ip SPC "UNBANNED"); } saveBanList(); +} + +//Clean timed out bans at startup +function banListClean(){ + %found = 0; + for (%i = 0; %i < 100; %i++){ + %fieldList = $dtBanList::NameList[%i]; + if($dtBanList::NameList[%i] !$= ""){ + %guid = getField($dtBanList::NameList[%i], 1); + %ip = getField($dtBanList::NameList[%i], 2); + %time = $dtBanList::GUID[%guid]; + %delta = getBanCount(getField(%time,0), getField(%time,1),getField(%time,2),getField(%time,3)); + if (%delta > getField(%time,4)){ + $dtBanList::NameList[%i] = ""; + $dtBanList::GUID[%guid] = ""; + $dtBanList::IP[%ip] = ""; + error("GUID" SPC %guid SPC "IP" SPC %ip SPC "UNBANNED"); + } + } + } + saveBanList(); } \ No newline at end of file