From 546302b7ecef87fd6e7c531742987bbc139297e6 Mon Sep 17 00:00:00 2001 From: Ricky Thomson Date: Sun, 19 Dec 2021 06:43:57 +0000 Subject: [PATCH 1/3] add listbans command --- src/game/client.cpp | 17 +++++++++++++++++ src/game/game.h | 2 ++ src/game/server.cpp | 25 +++++++++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/src/game/client.cpp b/src/game/client.cpp index 6c2aa305e..05f180ea8 100644 --- a/src/game/client.cpp +++ b/src/game/client.cpp @@ -1249,6 +1249,8 @@ namespace client ICOMMAND(IDF_NAMECOMPLETE, limit, "ss", (char *s, char *m), addcontrol(s, ipinfo::LIMIT, m)); ICOMMAND(IDF_NAMECOMPLETE, except, "ss", (char *s, char *m), addcontrol(s, ipinfo::EXCEPT, m)); + ICOMMAND(0, listbans, "", (), addmsg(N_LISTBANS, "r")); + ICOMMAND(0, clearallows, "", (), addmsg(N_CLRCONTROL, "ri", ipinfo::ALLOW)); ICOMMAND(0, clearbans, "", (), addmsg(N_CLRCONTROL, "ri", ipinfo::BAN)); ICOMMAND(0, clearmutes, "", (), addmsg(N_CLRCONTROL, "ri", ipinfo::MUTE)); @@ -3249,6 +3251,21 @@ namespace client break; } + case N_SENDBANLIST: + { + string ip = ""; + int bans = getint(p); + if(bans <= 0) conoutft(CON_EVENT, "\fyBan list is empty"); + else loopi(bans) + { + getstring(ip, p); + getstring(text, p); + if(p.overread()) break; + conoutft(CON_EVENT, "\fr%i: %s (reason: %s)", i+1, ip, text); + } + break; + } + case N_DEMOPLAYBACK: { bool wasdemopb = demoplayback; diff --git a/src/game/game.h b/src/game/game.h index 47d6e4bba..89588bd55 100644 --- a/src/game/game.h +++ b/src/game/game.h @@ -398,6 +398,7 @@ enum N_CLIENT, N_RELOAD, N_REGEN, N_INITAI, N_MAPCRC, N_SETPLAYERINFO, N_SWITCHTEAM, N_AUTHTRY, N_AUTHCHAL, N_AUTHANS, N_QUEUEPOS, N_STEAMCHAL, N_STEAMANS, N_STEAMFAIL, + N_LISTBANS, N_SENDBANLIST, NUMMSG }; @@ -430,6 +431,7 @@ char msgsizelookup(int msg) N_CLIENT, 0, N_RELOAD, 0, N_REGEN, 0, N_INITAI, 0, N_MAPCRC, 0, N_SETPLAYERINFO, 0, N_SWITCHTEAM, 0, N_AUTHTRY, 0, N_AUTHCHAL, 0, N_AUTHANS, 0, N_QUEUEPOS, 0, N_STEAMCHAL, 0, N_STEAMANS, 0, N_STEAMFAIL, 0, + N_LISTBANS, 1, N_SENDBANLIST, -1 }; static int sizetable[NUMMSG] = { -1 }; diff --git a/src/game/server.cpp b/src/game/server.cpp index b825853d6..4a63f7fe7 100644 --- a/src/game/server.cpp +++ b/src/game/server.cpp @@ -2399,6 +2399,26 @@ namespace server sendpacket(cn, 1, p.finalize()); } + void listbans(int cn) + { + packetbuf p(MAXTRANS, ENET_PACKET_FLAG_RELIABLE); + string ip = ""; + int len = 0; + loopv(control) { if(control[i].type == ipinfo::BAN) len++; } + putint(p, N_SENDBANLIST); + putint(p, len); + loopv(control) + { + if(control[i].type == ipinfo::BAN) + { + printipinfo(control[i], ip); + sendstring(ip, p); + sendstring(control[i].reason, p); + } + } + sendpacket(cn, 1, p.finalize()); + } + void cleardemos(int n) { if(!n) @@ -7323,6 +7343,11 @@ namespace server listdemos(sender); break; + case N_LISTBANS: + if(!haspriv(ci, G(banlock), "list bans")) break; + listbans(sender); + break; + case N_GETDEMO: { int n = getint(p); From 4e308d00c4cf835717a1a4785ab4922e5be116fe Mon Sep 17 00:00:00 2001 From: Ricky Thomson Date: Sun, 19 Dec 2021 11:45:58 +0000 Subject: [PATCH 2/3] add getname() to end of ban reason --- src/game/client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/client.cpp b/src/game/client.cpp index 05f180ea8..365b00340 100644 --- a/src/game/client.cpp +++ b/src/game/client.cpp @@ -1244,7 +1244,7 @@ namespace client } ICOMMAND(IDF_NAMECOMPLETE, kick, "ss", (char *s, char *m), addcontrol(s, -1, m)); ICOMMAND(IDF_NAMECOMPLETE, allow, "ss", (char *s, char *m), addcontrol(s, ipinfo::ALLOW, m)); - ICOMMAND(IDF_NAMECOMPLETE, ban, "ss", (char *s, char *m), addcontrol(s, ipinfo::BAN, m)); + ICOMMAND(IDF_NAMECOMPLETE, ban, "ss", (char *s, char *m), addcontrol(s, ipinfo::BAN, tempformatstring("%s (%s)", m, getname()))); ICOMMAND(IDF_NAMECOMPLETE, mute, "ss", (char *s, char *m), addcontrol(s, ipinfo::MUTE, m)); ICOMMAND(IDF_NAMECOMPLETE, limit, "ss", (char *s, char *m), addcontrol(s, ipinfo::LIMIT, m)); ICOMMAND(IDF_NAMECOMPLETE, except, "ss", (char *s, char *m), addcontrol(s, ipinfo::EXCEPT, m)); From d5d0e3c06a0b3bebf56bfb4df1a22efbbb6cd0f6 Mon Sep 17 00:00:00 2001 From: Ricky Thomson Date: Sun, 19 Dec 2021 11:48:34 +0000 Subject: [PATCH 3/3] formatting --- src/game/client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/client.cpp b/src/game/client.cpp index 365b00340..550a7cdb9 100644 --- a/src/game/client.cpp +++ b/src/game/client.cpp @@ -1244,7 +1244,7 @@ namespace client } ICOMMAND(IDF_NAMECOMPLETE, kick, "ss", (char *s, char *m), addcontrol(s, -1, m)); ICOMMAND(IDF_NAMECOMPLETE, allow, "ss", (char *s, char *m), addcontrol(s, ipinfo::ALLOW, m)); - ICOMMAND(IDF_NAMECOMPLETE, ban, "ss", (char *s, char *m), addcontrol(s, ipinfo::BAN, tempformatstring("%s (%s)", m, getname()))); + ICOMMAND(IDF_NAMECOMPLETE, ban, "ss", (char *s, char *m), addcontrol(s, ipinfo::BAN, tempformatstring("%s [%s]", m, getname()))); ICOMMAND(IDF_NAMECOMPLETE, mute, "ss", (char *s, char *m), addcontrol(s, ipinfo::MUTE, m)); ICOMMAND(IDF_NAMECOMPLETE, limit, "ss", (char *s, char *m), addcontrol(s, ipinfo::LIMIT, m)); ICOMMAND(IDF_NAMECOMPLETE, except, "ss", (char *s, char *m), addcontrol(s, ipinfo::EXCEPT, m));