]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Re-write ban command system
authorSamual <samual@xonotic.org>
Thu, 29 Dec 2011 03:29:20 +0000 (22:29 -0500)
committerSamual <samual@xonotic.org>
Thu, 29 Dec 2011 03:29:20 +0000 (22:29 -0500)
qcsrc/common/command/generic.qc
qcsrc/server/command/ipban.qc
qcsrc/server/command/ipban.qh
qcsrc/server/command/sv_cmd.qc
qcsrc/server/ipban.qh

index 2fa166e978b5f879dfcbbc774f5cdec6a2f4acfc..5d6398c68e2464c4e8e0ce343d5a7df6434ff7ff 100644 (file)
@@ -17,6 +17,11 @@ string GetProgramCommandPrefix(void)
        #endif
 }
 
+
+// =======================
+//  Command Sub-Functions
+// =======================
+
 void GenericCommand_addtolist(float request, float argc)
 {
        switch(request)
@@ -72,7 +77,6 @@ void GenericCommand_dumpcommands(float request)
                        if(fh >= 0)
                        {
                                #ifdef SVQC
-                                       
                                        CMD_Write("dump of server console commands:\n");
                                        GameCommand_macro_write_aliases(fh);
                                        
@@ -83,15 +87,12 @@ void GenericCommand_dumpcommands(float request)
                                        CommonCommand_macro_write_aliases(fh);
 
                                        CMD_Write("\ndump of ban commands:\n");
-                                       // todo
-                                       
+                                       BanCommand_macro_write_aliases(fh);
                                #endif
                                                                
                                #ifdef CSQC
-                                       
                                        CMD_Write("dump of client commands:\n");
                                        LocalCommand_macro_write_aliases(fh);
-                                       
                                #endif
                                
                                CMD_Write("\ndump of generic commands:\n");
index 45b7f219727a875720d33431c5c501fb55999fcf..1d142bff8d6ec395709c5f6e31c726d102d987d1 100644 (file)
@@ -1,4 +1,174 @@
-float GameCommand_Ban(string command)
+// =====================================================
+//  Banning and kicking command code, written by Samual
+//  Last updated: December 29th, 2011
+// =====================================================
+
+
+// =======================
+//  Command Sub-Functions
+// =======================
+
+void BanCommand_ban(float request, float argc)
+{
+       switch(request)
+       {
+               case CMD_REQUEST_COMMAND:
+               {
+                       
+                       return;
+               }
+                       
+               default:
+               case CMD_REQUEST_USAGE:
+               {
+                       print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " "));
+                       print("  No arguments required.\n");
+                       return;
+               }
+       }
+}
+
+void BanCommand_banlist(float request)
+{
+       switch(request)
+       {
+               case CMD_REQUEST_COMMAND:
+               {
+                       
+                       return;
+               }
+                       
+               default:
+               case CMD_REQUEST_USAGE:
+               {
+                       print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " "));
+                       print("  No arguments required.\n");
+                       return;
+               }
+       }
+}
+
+void BanCommand_kickban(float request, float argc)
+{
+       switch(request)
+       {
+               case CMD_REQUEST_COMMAND:
+               {
+                       
+                       return;
+               }
+                       
+               default:
+               case CMD_REQUEST_USAGE:
+               {
+                       print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " "));
+                       print("  No arguments required.\n");
+                       return;
+               }
+       }
+}
+
+void BanCommand_unban(float request, float argc)
+{
+       switch(request)
+       {
+               case CMD_REQUEST_COMMAND:
+               {
+                       
+                       return;
+               }
+                       
+               default:
+               case CMD_REQUEST_USAGE:
+               {
+                       print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " "));
+                       print("  No arguments required.\n");
+                       return;
+               }
+       }
+}
+
+/* use this when creating a new command, making sure to place it in alphabetical order... also,
+** ADD ALL NEW COMMANDS TO commands.cfg WITH PROPER ALIASES IN THE SAME FASHION!
+void BanCommand_(float request)
+{
+       switch(request)
+       {
+               case CMD_REQUEST_COMMAND:
+               {
+                       
+                       return;
+               }
+                       
+               default:
+               case CMD_REQUEST_USAGE:
+               {
+                       print(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " "));
+                       print("  No arguments required.\n");
+                       return;
+               }
+       }
+}
+*/
+
+
+// ==================================
+//  Macro system for server commands
+// ==================================
+
+// Do not hard code aliases for these, instead create them in commands.cfg... also: keep in alphabetical order, please ;)
+#define BAN_COMMANDS(request,arguments,command) \
+       BAN_COMMAND("ban", BanCommand_ban(request, arguments), "Ban an IP address or a range of addresses (like 1.2.3)") \
+       BAN_COMMAND("banlist", BanCommand_banlist(request), "List all existing bans") \
+       BAN_COMMAND("kickban", BanCommand_kickban(request, arguments), "Disconnect a client and ban it at the same time") \
+       BAN_COMMAND("unban", BanCommand_unban(request, arguments), "Remove an existing ban") \
+       /* nothing */
+
+void BanCommand_macro_help()
+{
+       #define BAN_COMMAND(name,function,description) \
+               { print("  ^2", name, "^7: ", description, "\n"); }
+               
+       BAN_COMMANDS(0, 0, "")
+       #undef BAN_COMMAND
+       
+       return;
+}
+
+float BanCommand_macro_command(float argc, string command)
+{
+       #define BAN_COMMAND(name,function,description) \
+               { if(name == strtolower(argv(0))) { function; return TRUE; } }
+               
+       BAN_COMMANDS(CMD_REQUEST_COMMAND, argc, command)
+       #undef BAN_COMMAND
+       
+       return FALSE;
+}
+
+float BanCommand_macro_usage(float argc)
+{
+       #define BAN_COMMAND(name,function,description) \
+               { if(name == strtolower(argv(1))) { function; return TRUE; } }
+               
+       BAN_COMMANDS(CMD_REQUEST_USAGE, argc, "")
+       #undef BAN_COMMAND
+       
+       return FALSE;
+}
+
+void BanCommand_macro_write_aliases(float fh)
+{
+       #define BAN_COMMAND(name,function,description) \
+               { CMD_Write_Alias("qc_cmd_sv", name, description); }
+       
+       BAN_COMMANDS(0, 0, "")
+       #undef BAN_COMMAND
+       
+       return;
+}
+
+float BanCommand(string command)
 {
        float argc;
        float bantime;
index 056d5ca6d2acbb0266cb15322e05bd6ce1f67748..30b0099448d6af0c640f07b7aec456d8eb388782 100644 (file)
@@ -6,4 +6,7 @@
 void Ban_KickBanClient(entity client, float bantime, float masksize, string reason);
 void Ban_View();
 float Ban_Insert(string ip, float bantime, string reason, float dosync);
-float Ban_Delete(float i);
\ No newline at end of file
+float Ban_Delete(float i);
+
+// used by common/command/generic.qc:GenericCommand_dumpcommands to list all commands into a .txt file
+void BanCommand_macro_write_aliases(float fh)
\ No newline at end of file
index 6385a78cc027c0d903a304df59aee51e73d2ba1a..36bea434233038afba4c71a779de9207b9a25b1c 100644 (file)
@@ -1746,7 +1746,7 @@ void GameCommand(string command)
                        GameCommand_macro_help();
                        
                        print("\nBanning commands:\n");
-                       GameCommand_Ban("help");
+                       BanCommand("help");
                        
                        print("\nCommon networked commands:\n");
                        CommonCommand_macro_help(world);
@@ -1772,7 +1772,7 @@ void GameCommand(string command)
                        return;
                }
        } 
-       else if(GameCommand_Ban(command)) 
+       else if(BanCommand(command)) 
        {
                return; // handled by server/command/ipban.qc
        }
index 961ca05a809ad1581c3f7d7e6cc5b44a6dfd769b..15939464e00a8579053039af9336e4c814377f3c 100644 (file)
@@ -1,6 +1,6 @@
 void Ban_SaveBans();
 void Ban_LoadBans();
 float Ban_MaybeEnforceBan(entity client);
-float GameCommand_Ban(string command);
+float BanCommand(string command);
 
 void OnlineBanList_URI_Get_Callback(float id, float status, string data);