From 0dd343d36a943e214229c8ec86b3832188b4bd15 Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 16 Jan 2010 18:04:00 +0000 Subject: [PATCH] User ID support (compile with -DUID) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8505 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 2 +- data/qcsrc/server/cl_client.qc | 1 + data/qcsrc/server/clientcommands.qc | 3 ++- data/qcsrc/server/ipban.qc | 15 +++++++++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index ef37b17df..c73663931 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -1225,7 +1225,7 @@ set g_keyhunt_teams 0 set cl_gravity 800 "but ignored anyway" set g_ban_default_bantime 5400 "90 minutes" -set g_ban_default_masksize 3 "whole 255.255.255.0 networks (set to 4 for single IPs)" +set g_ban_default_masksize 3 "whole 255.255.255.0 networks (set to 4 for single IPs); when UID support is compiled in, masksize 0 means banning by UID" set g_banned_list "" "format: IP remainingtime IP remainingtime ..." alias bans "sv_cmd bans" alias ban "sv_cmd ban $*" // usage: ban address(maybe incomplete, like 1.2.3) bantime(seconds) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 528cb0f9a..a9b580c2f 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -2956,6 +2956,7 @@ void PlayerPostThink (void) return; } #endif + if(sv_maxidle && frametime) { // WORKAROUND: only use dropclient in server frames (frametime set). Never use it in cl_movement frames (frametime zero). diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index 305a9f0bf..a8fa0cd5b 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -222,12 +222,13 @@ void SV_ParseClientCommand(string s) { } GetCvars(1); #ifdef UID - } else if (cmd == "uid") { + } else if(cmd == "uid") { if not(self.uid) { self.uid = strzone(argv(1)); self.uid_kicktime = 0; print("Client ", etos(self), " has UID ", self.uid, "\n"); + Ban_MaybeEnforceBan(self); } #endif } else if(cmd == "sentcvar") { // new system diff --git a/data/qcsrc/server/ipban.qc b/data/qcsrc/server/ipban.qc index fba20b58f..ebc58cea7 100644 --- a/data/qcsrc/server/ipban.qc +++ b/data/qcsrc/server/ipban.qc @@ -243,6 +243,9 @@ string ban_ip1; string ban_ip2; string ban_ip3; string ban_ip4; +#ifdef UID +string ban_uid; +#endif void Ban_SaveBans() { @@ -351,6 +354,9 @@ float Ban_GetClientIP(entity client) ban_ip2 = substring(s, 0, i2); ban_ip3 = substring(s, 0, i3); ban_ip4 = strcat1(s); +#ifdef UID + ban_uid = client.uid; +#endif return TRUE; } @@ -382,6 +388,9 @@ float Ban_IsClientBanned(entity client, float idx) if(ban_ip2 == s) return TRUE; if(ban_ip3 == s) return TRUE; if(ban_ip4 == s) return TRUE; +#ifdef UID + if(ban_uid == s) return TRUE; +#endif } return FALSE; } @@ -522,9 +531,15 @@ void Ban_KickBanClient(entity client, float bantime, float masksize, string reas case 3: Ban_Insert(ban_ip3, bantime, reason, 1); break; + case 4: default: Ban_Insert(ban_ip4, bantime, reason, 1); break; +#ifdef UID + case 0: + Ban_Insert(ban_uid, bantime, reason, 1); + break; +#endif } /* * not needed, as we enforce the ban in Ban_Insert anyway -- 2.39.2