]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/server/command/banning.qc
Remove useless comments
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / command / banning.qc
1 // =====================================================
2 //  Banning and kicking command code, written by Samual
3 //  Last updated: December 29th, 2011
4 // =====================================================
5
6 void BanCommand_ban(float request, float argc)
7 {
8         switch(request)
9         {
10                 case CMD_REQUEST_COMMAND:
11                 {
12                         
13                         return;
14                 }
15                         
16                 default:
17                 case CMD_REQUEST_USAGE:
18                 {
19                         print("\nUsage:^3 sv_cmd ");
20                         print("  No arguments required.\n");
21                         return;
22                 }
23         }
24 }
25
26 void BanCommand_banlist(float request)
27 {
28         switch(request)
29         {
30                 case CMD_REQUEST_COMMAND:
31                 {
32                         
33                         return;
34                 }
35                         
36                 default:
37                 case CMD_REQUEST_USAGE:
38                 {
39                         print("\nUsage:^3 sv_cmd ");
40                         print("  No arguments required.\n");
41                         return;
42                 }
43         }
44 }
45
46 void BanCommand_kickban(float request, float argc)
47 {
48         switch(request)
49         {
50                 case CMD_REQUEST_COMMAND:
51                 {
52                         
53                         return;
54                 }
55                         
56                 default:
57                 case CMD_REQUEST_USAGE:
58                 {
59                         print("\nUsage:^3 sv_cmd ");
60                         print("  No arguments required.\n");
61                         return;
62                 }
63         }
64 }
65
66 void BanCommand_unban(float request, float argc)
67 {
68         switch(request)
69         {
70                 case CMD_REQUEST_COMMAND:
71                 {
72                         
73                         return;
74                 }
75                         
76                 default:
77                 case CMD_REQUEST_USAGE:
78                 {
79                         print("\nUsage:^3 sv_cmd ");
80                         print("  No arguments required.\n");
81                         return;
82                 }
83         }
84 }
85
86 /* use this when creating a new command, making sure to place it in alphabetical order... also,
87 ** ADD ALL NEW COMMANDS TO commands.cfg WITH PROPER ALIASES IN THE SAME FASHION!
88 void BanCommand_(float request)
89 {
90         switch(request)
91         {
92                 case CMD_REQUEST_COMMAND:
93                 {
94                         
95                         return;
96                 }
97                         
98                 default:
99                 case CMD_REQUEST_USAGE:
100                 {
101                         print("\nUsage:^3 sv_cmd ");
102                         print("  No arguments required.\n");
103                         return;
104                 }
105         }
106 }
107 */
108
109
110 // ==================================
111 //  Macro system for server commands
112 // ==================================
113
114 // Do not hard code aliases for these, instead create them in commands.cfg... also: keep in alphabetical order, please ;)
115 #define BAN_COMMANDS(request,arguments,command) \
116         BAN_COMMAND("ban", BanCommand_ban(request, arguments), "Ban an IP address or a range of addresses (like 1.2.3)") \
117         BAN_COMMAND("banlist", BanCommand_banlist(request), "List all existing bans") \
118         BAN_COMMAND("kickban", BanCommand_kickban(request, arguments), "Disconnect a client and ban it at the same time") \
119         BAN_COMMAND("unban", BanCommand_unban(request, arguments), "Remove an existing ban") \
120         /* nothing */
121
122 void BanCommand_macro_help()
123 {
124         #define BAN_COMMAND(name,function,description) \
125                 { print("  ^2", name, "^7: ", description, "\n"); }
126                 
127         BAN_COMMANDS(0, 0, "")
128         #undef BAN_COMMAND
129         
130         return;
131 }
132
133 float BanCommand_macro_command(float argc, string command)
134 {
135         #define BAN_COMMAND(name,function,description) \
136                 { if(name == strtolower(argv(0))) { function; return TRUE; } }
137                 
138         BAN_COMMANDS(CMD_REQUEST_COMMAND, argc, command)
139         #undef BAN_COMMAND
140         
141         return FALSE;
142 }
143
144 float BanCommand_macro_usage(float argc)
145 {
146         #define BAN_COMMAND(name,function,description) \
147                 { if(name == strtolower(argv(1))) { function; return TRUE; } }
148                 
149         BAN_COMMANDS(CMD_REQUEST_USAGE, argc, "")
150         #undef BAN_COMMAND
151         
152         return FALSE;
153 }
154
155 void BanCommand_macro_write_aliases(float fh)
156 {
157         #define BAN_COMMAND(name,function,description) \
158                 { CMD_Write_Alias("qc_cmd_sv", name, description); }
159         
160         BAN_COMMANDS(0, 0, "")
161         #undef BAN_COMMAND
162         
163         return;
164 }
165
166 float BanCommand(string command)
167 {
168         float argc;
169         float bantime;
170         entity client;
171         float entno;
172         float masksize;
173         string reason;
174         float reasonarg;
175
176         argc = tokenize_console(command);
177         if(argv(0) == "help")
178         {
179                 print("  kickban # n m p reason - kickban player n for m seconds, using mask size p (1 to 4)\n");
180                 print("  ban ip m reason - ban an IP or range (incomplete IP, like 1.2.3) for m seconds\n");
181                 print("  bans - list all existing bans\n");
182                 print("  unban n - delete the entry #n from the bans list\n");
183                 return TRUE;
184         }
185         if(argv(0) == "kickban")
186         {
187 #define INITARG(c) reasonarg = c
188 #define GETARG(v,d) if((argc > reasonarg) && ((v = stof(argv(reasonarg))) != 0)) ++reasonarg; else v = d
189 #define RESTARG(v) if(argc > reasonarg) v = substring(command, argv_start_index(reasonarg), strlen(command) - argv_start_index(reasonarg)); else v = ""
190                 if(argc >= 3)
191                 {
192                         entno = stof(argv(2));
193                         if(entno > maxclients || entno < 1)
194                                 return TRUE;
195                         client = edict_num(entno);
196
197                         INITARG(3);
198                         GETARG(bantime, autocvar_g_ban_default_bantime);
199                         GETARG(masksize, autocvar_g_ban_default_masksize);
200                         RESTARG(reason);
201
202                         Ban_KickBanClient(client, bantime, masksize, reason);
203                         return TRUE;
204                 }
205         }
206         else if(argv(0) == "ban")
207         {
208                 if(argc >= 2)
209                 {
210                         string ip;
211                         ip = argv(1);
212
213                         INITARG(2);
214                         GETARG(bantime, autocvar_g_ban_default_bantime);
215                         RESTARG(reason);
216
217                         Ban_Insert(ip, bantime, reason, 1);
218                         return TRUE;
219                 }
220 #undef INITARG
221 #undef GETARG
222 #undef RESTARG
223         }
224         else if(argv(0) == "bans")
225         {
226                 Ban_View();
227                 return TRUE;
228         }
229         else if(argv(0) == "unban")
230         {
231                 if(argc >= 2)
232                 {
233                         float who;
234                         who = stof(argv(1));
235                         Ban_Delete(who);
236                         return TRUE;
237                 }
238         }
239         return FALSE;
240 }