From 77b46e7e53fc6b7ba3880e49175e1b0b8b8c217a Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Mon, 4 Jan 2021 19:04:52 -0500 Subject: [PATCH] dtBanSystem Update (Minutes) --- Classic/scripts/autoexec/dtBanSystem.cs | 173 ++++++++++++++---------- Classic/scripts/serverDefaults.cs | 10 +- 2 files changed, 106 insertions(+), 77 deletions(-) diff --git a/Classic/scripts/autoexec/dtBanSystem.cs b/Classic/scripts/autoexec/dtBanSystem.cs index d77420e..62f0a70 100644 --- a/Classic/scripts/autoexec/dtBanSystem.cs +++ b/Classic/scripts/autoexec/dtBanSystem.cs @@ -1,9 +1,14 @@ -//$dtBanList::IP192_168_0_133 = "336\t2020\t365"; -//336 day of the year banned Dec1 -//2020 year banned -//365 How long to ban (365 days = 1 year) - //$Host::dtBanlist = "prefs/dtBanlist.cs"; +//$Host::KickBanTime = 20; is 20 Minutes +//$Host::BanTime = 43200; is One Month +//$Host::BanTime = 129600; is Three Months +//$Host::BanTime = 259200; is Six Months +//$Host::BanTime = 518400; is 1 year +//$Host::BanTime = 1000000; is Until you unban them (Forever) +//$Host::BanTime = BAN; is Until you unban them (Forever) + +//$dtBanList::GUID3555379 = "DAY OF THE YEAR BANNED \t YEAR BANNED \t HOUR BANNED \t MINUTE BANNED \t TIME TO BE BANNED"; +//$dtBanList::GUID3555379 = "4\t2021\t18\t31\t518400"; package dtBan { @@ -16,76 +21,97 @@ function ClassicLoadBanlist() $ClassicWhitelists = 0; exec($Host::ClassicWhitelist); } - -function BanList::add(%guid, %ipAddress, %days) -{ - if (%guid > 0) - $dtBanList::GUID[%guid] = dtBanDay() TAB getBanYear() TAB %days; - - if (getSubStr(%ipAddress, 0, 3) $= "IP:") - { - // add IP ban - %bareIP = getSubStr(%ipAddress, 3, strLen(%ipAddress)); - %bareIP = getSubStr(%bareIP, 0, strstr(%bareIP, ":")); - %bareIP = strReplace(%bareIP, ".", "_"); // variable access bug workaround - $dtBanList::IP[%bareIP] = dtBanDay() TAB getBanYear() TAB %days; - //error("ban" SPC %bareIP SPC $dtBanList::IP[%bareIP]); - } +function BanList::add(%guid, %ipAddress, %time){ + if(%time > 999999){ + %time = "BAN"; + } + if (%guid > 0){ + $dtBanList::GUID[%guid] = dtBanMark() TAB %time; + } + if (getSubStr(%ipAddress, 0, 3) $= "IP:"){ + // add IP ban + %bareIP = getSubStr(%ipAddress, 3, strLen(%ipAddress)); + %bareIP = getSubStr(%bareIP, 0, strstr(%bareIP, ":")); + %bareIP = strReplace(%bareIP, ".", "_"); // variable access bug workaround - // write out the updated bans to the file - export("$dtBanList*", $Host::dtBanlist); + $dtBanList::IP[%bareIP] = dtBanMark() TAB %time; + //error("ban" SPC %bareIP SPC $dtBanList::IP[%bareIP]); + } + + // write out the updated bans to the file + export("$dtBanList*", $Host::dtBanlist); } - -function banList_checkIP(%client) -{ - %ip = %client.getAddress(); - %ip = getSubStr(%ip, 3, strLen(%ip)); - %ip = getSubStr(%ip, 0, strstr(%ip, ":")); - %ip = strReplace(%ip, ".", "_"); - %time = $dtBanList::IP[%ip]; - if (%time !$= "" && %time !$= "UNBAN") - { - %delta = getBanCount(getField(%time,0), getField(%time,1)); - if (%delta < getField(%time,2)) - return 1; - else - $dtBanList::IP[%ip] = "UNBAN"; - } - return 0; +function banList_checkIP(%client){ + %ip = %client.getAddress(); + %ip = getSubStr(%ip, 3, strLen(%ip)); + %ip = getSubStr(%ip, 0, strstr(%ip, ":")); + %ip = strReplace(%ip, ".", "_"); + + %time = $dtBanList::IP[%ip]; + if(%time $= "BAN") + return 1; + if (%time !$= "" && %time != 0){ + %delta = getBanCount(getField(%time,0), getField(%time,1),getField(%time,2),getField(%time,3)); + if (%delta < getField(%time,4)) + return 1; + else{ + $dtBanList::IP[%ip] = ""; + schedule(1000,0,"export","$dtBanList*", $Host::dtBanlist); + //export("$dtBanList*", "prefs/dtBanlist.cs"); + } + } + return 0; } - -function banList_checkGUID(%guid) -{ - %time = $dtBanList::GUID[%guid]; - if (%time !$= "" && %time !$= "UNBAN") - { - %delta = getBanCount(getField(%time,0), getField(%time,1)); - if (%delta < getField(%time,2)) - return 1; - else - $dtBanList::GUID[%guid] = "UNBAN"; - } - return 0; + +function banList_checkGUID(%guid){ + %time = $dtBanList::GUID[%guid]; + if(%time $= "BAN") + return 1; + if (%time !$= "" && %time != 0){ + %delta = getBanCount(getField(%time,0), getField(%time,1),getField(%time,2),getField(%time,3)); + if (%delta < getField(%time,4)) + return 1; + else{ + $dtBanList::GUID[%guid] = ""; + schedule(500,0,"export","$dtBanList*", $Host::dtBanlist); + //export("$dtBanList*", "prefs/dtBanlist.cs"); + } + } + return 0; } }; -if (!isActivePackage(dtBan)) +if (!isActivePackage(dtBan)) activatePackage(dtBan); - -function getBanCount(%d, %year) -{ - %dif = getBanYear() - %year; + +function getBanCount(%d, %year, %h, %n){ + %dif = formattimestring("yy") - %year; %days += 365 * (%dif-1); %days += 365 - %d; %days += dtBanDay(); - return %days; + %ht = %nt = 0; + if(formattimestring("H") > %h){ + %ht = formattimestring("H") - %h; + } + else if(formattimestring("H") < %h){ + %ht = 24 - %h; + %ht = formattimestring("H")+ %ht; + } + if(formattimestring("n") > %n){ + %nt = formattimestring("n") - %n; + } + else if(formattimestring("n") < %n){ + %nt = 60 - %n; + %nt = formattimestring("n") + %nt; + } + return mfloor((%days * 1440) + (%ht*60) + %nt); + //return mfloor((%days * 1440) + (%ht*60) + %nt) TAB (%days * 1440) TAB (%ht*60) TAB %nt; } - -function dtBanDay() -{ + +function dtBanMark(){ %date = formattimestring("mm dd yy"); %m = getWord(%date,0);%d = getWord(%date,1);%y = getWord(%date,2); %count = 0; @@ -94,17 +120,20 @@ function dtBanDay() %days[4] = "30"; %days[5] = "31"; %days[6] = "30"; %days[7] = "31"; %days[8] = "31"; %days[9] = "30"; %days[10] = "31"; %days[11] = "30"; %days[12] = "31"; - - for(%i = 1; %i <= %m-1; %i++) - { + for(%i = 1; %i <= %m-1; %i++){ %count += %days[%i]; } - - return %count + %d; -} - -function getBanYear() -{ - return formattimestring("yy"); + return %count + %d TAB formattimestring("yy") TAB formattimestring("H") TAB formattimestring("n"); +} + +function unban(%guid,%ip){ + if($dtBanList::GUID[%guid] !$= ""){ + $dtBanList::GUID[%guid] = ""; + error("GUID" SPC %guid SPC "UNBANNED"); + } + if($dtBanList::IP[%ip] !$= ""){ + $dtBanList::IP[%ip] = ""; + error("IP" SPC %ip SPC "UNBANNED"); + } + export("$dtBanList*", $Host::dtBanlist); } - \ No newline at end of file diff --git a/Classic/scripts/serverDefaults.cs b/Classic/scripts/serverDefaults.cs index fbbd9dd..c70b52f 100644 --- a/Classic/scripts/serverDefaults.cs +++ b/Classic/scripts/serverDefaults.cs @@ -27,7 +27,7 @@ $Host::holoName[6] = "Harbinger"; // ----------------------------------------- // z0dd - ZOD, 9/29/02. Removed T2 demo code $Host::GameName = "Tribes 2 Test"; -$Host::Info = " "; +$Host::Info = "This is a Tribes 2 Classic server. More information in Discord. playt2.com/discord"; $Host::Map = "VaubanLak"; $Host::MaxPlayers = 30; $Host::MissionType = "LakRabbit"; @@ -81,8 +81,8 @@ $Host::ClassicLoadVRamChanges = 0; // Vehicles take damage wh // ------------------------------------------------ $Host::AdminList = ""; // all players that will be automatically an admin upon joining server -$Host::SuperAdminList = ""; // all players that will be automatically a super admin upon joining server -$Host::BindAddress = ""; // set to an ip address if the server wants to specify which NIC/IP to use +$Host::SuperAdminList = ""; // all players that will be automatically a super admin upon joining server +$Host::BindAddress = ""; // set to an ip address if the server wants to specify which NIC/IP to use $Host::Port = 28000; $Host::Password = ""; $Host::PureServer = 0; @@ -95,8 +95,8 @@ $Host::MaxBotDifficulty = 0.75; $Host::NoSmurfs = 1; $Host::VoteTime = 30; // amount of time before votes are calculated $Host::VotePassPercent = 60; // percent needed to pass a vote -$Host::KickBanTime = 1; // specified in days -$Host::BanTime = 30; // specified in days +$Host::KickBanTime = 20; // specified in minutes +$Host::BanTime = 43200; // specified in minutes (43200 is one month) $Host::PlayerRespawnTimeout = 60; // time before a dead player is forced into observer mode $Host::warmupTime = 20; $Host::TournamentMode = 0;