r5182 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Wed Dec 10 03:26:37 EST 2008
Author: div0
Date: 2008-12-10 03:26:31 -0500 (Wed, 10 Dec 2008)
New Revision: 5182
Modified:
trunk/data/qcsrc/server/ipban.qc
trunk/data/qcsrc/server/vote.qc
Log:
add (currently unused) reason to the kickban command; add hooks for online ban list syncing (not implemented)
Modified: trunk/data/qcsrc/server/ipban.qc
===================================================================
--- trunk/data/qcsrc/server/ipban.qc 2008-12-09 10:03:29 UTC (rev 5181)
+++ trunk/data/qcsrc/server/ipban.qc 2008-12-10 08:26:31 UTC (rev 5182)
@@ -1,3 +1,17 @@
+float Ban_Insert(string ip, float bantime, string reason);
+
+void OnlineBanList_SendBan(string ip, float bantime, string reason)
+{
+ // a stub
+ // fill in your ban list syncing here
+}
+
+void OnlineBanList_Think()
+{
+ // a stub
+ // fill in your ban list syncing here
+}
+
#define BAN_MAX 64
float ban_loaded;
string ban_ip[BAN_MAX];
@@ -65,6 +79,12 @@
ban_expire[i] = time + stof(argv(2*i+2));
}
}
+
+ entity e;
+ e = spawn();
+ e.classname = "bansyncer";
+ e.think = OnlineBanList_Think;
+ e.nextthink = time + 1;
}
void Ban_View()
@@ -129,15 +149,25 @@
return FALSE;
}
-float Ban_Insert(string ip, float bantime)
+float Ban_Insert(string ip, float bantime, string reason)
{
float i;
float j;
float bestscore;
+
+ if(reason != "")
+ OnlineBanList_SendBan(ip, bantime, reason);
+
// already banned?
for(i = 0; i < ban_count; ++i)
if(ban_ip[i] == ip)
+ {
+ // prolong the ban
+ if(time + bantime > ban_expire[i])
+ ban_expire[i] = time + bantime;
+ // and abort
return FALSE;
+ }
// do we have a free slot?
for(i = 0; i < ban_count; ++i)
if(time > ban_expire[i])
@@ -172,7 +202,7 @@
return TRUE;
}
-void Ban_KickBanClient(entity client, float bantime, float masksize)
+void Ban_KickBanClient(entity client, float bantime, float masksize, string reason)
{
if(!Ban_GetClientIP(client))
{
@@ -183,16 +213,16 @@
switch(masksize)
{
case 1:
- Ban_Insert(ban_ip1, bantime);
+ Ban_Insert(ban_ip1, bantime, reason);
break;
case 2:
- Ban_Insert(ban_ip2, bantime);
+ Ban_Insert(ban_ip2, bantime, reason);
break;
case 3:
- Ban_Insert(ban_ip3, bantime);
+ Ban_Insert(ban_ip3, bantime, reason);
break;
default:
- Ban_Insert(ban_ip4, bantime);
+ Ban_Insert(ban_ip4, bantime, reason);
break;
}
// and kick him
@@ -206,6 +236,7 @@
entity client;
float entno;
float masksize;
+ string reason;
argc = tokenize_sane(command);
if(argv(0) == "help")
@@ -232,7 +263,11 @@
masksize = stof(argv(4));
else
masksize = cvar("g_ban_default_masksize");
- Ban_KickBanClient(client, bantime, masksize);
+ if(argc >= 6)
+ reason = substring(command, argv_start_index(5), strlen(command) - argv_start_index(5));
+ else
+ reason = "";
+ Ban_KickBanClient(client, bantime, masksize, reason);
return TRUE;
}
}
@@ -246,7 +281,11 @@
bantime = stof(argv(2));
else
bantime = cvar("g_ban_default_bantime");
- Ban_Insert(ip, bantime);
+ if(argc >= 4)
+ reason = substring(command, argv_start_index(3), strlen(command) - argv_start_index(3));
+ else
+ reason = "";
+ Ban_Insert(ip, bantime, reason);
return TRUE;
}
}
Modified: trunk/data/qcsrc/server/vote.qc
===================================================================
--- trunk/data/qcsrc/server/vote.qc 2008-12-09 10:03:29 UTC (rev 5181)
+++ trunk/data/qcsrc/server/vote.qc 2008-12-10 08:26:31 UTC (rev 5182)
@@ -17,6 +17,7 @@
float n, t;
string ns;
entity e;
+ string reason;
tokens = tokenize_sane(vote);
ns = "";
@@ -42,6 +43,16 @@
else
GetKickVoteVictim_reason = "";
+ if(caller)
+ reason = strcat("player ", caller.netname);
+ else
+ reason = "console vote";
+ if(!cvar_value_issafe(reason))
+ reason = "some player";
+ if(GetKickVoteVictim_reason != "")
+ if(cvar_value_issafe(GetKickVoteVictim_reason))
+ reason = strcat(reason, ": ", GetKickVoteVictim_reason);
+
n = stof(ns);
if(ns == ftos(n)) if(n >= 1) if(n <= maxclients)
{
@@ -49,6 +60,14 @@
if(clienttype(e) == CLIENTTYPE_REAL)
{
GetKickVoteVictim_newcommand = strcat(argv(0), " # ", ns);
+ if(argv(0) == "kickban")
+ {
+ GetKickVoteVictim_newcommand = strcat(GetKickVoteVictim_newcommand, " ", cvar_string("g_ban_default_bantime"), " ", cvar_string("g_ban_default_masksize"), reason);
+ }
+ else if(argv(0) == "kick")
+ {
+ GetKickVoteVictim_newcommand = strcat(GetKickVoteVictim_newcommand, reason);
+ }
return e;
}
}
More information about the nexuiz-commits
mailing list