User ID support (compile with -DUID)
authordiv0 <div0@f962a42d-fe04-0410-a3ab-8c8b0445ebaa>
Sat, 16 Jan 2010 18:04:00 +0000 (18:04 +0000)
committerdiv0 <div0@f962a42d-fe04-0410-a3ab-8c8b0445ebaa>
Sat, 16 Jan 2010 18:04:00 +0000 (18:04 +0000)
git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8505 f962a42d-fe04-0410-a3ab-8c8b0445ebaa

data/defaultNexuiz.cfg
data/qcsrc/server/cl_client.qc
data/qcsrc/server/clientcommands.qc
data/qcsrc/server/ipban.qc

index ef37b17..c736639 100644 (file)
@@ -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)
index 528cb0f..a9b580c 100644 (file)
@@ -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).
index 305a9f0..a8fa0cd 100644 (file)
@@ -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
index fba20b5..ebc58ce 100644 (file)
@@ -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