diff --git a/.gitignore b/.gitignore
index 010140976..e56142b1e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,6 +48,5 @@ bam.exe
*.cmd
.settings
*.opensdf
-banmaster*
DDRace*
diff --git a/bam.lua b/bam.lua
index edaec32af..1001493bd 100644
--- a/bam.lua
+++ b/bam.lua
@@ -261,7 +261,6 @@ function build(settings)
versionserver = Compile(settings, Collect("src/versionsrv/*.cpp"))
masterserver = Compile(settings, Collect("src/mastersrv/*.cpp"))
- banmaster = Compile(settings, Collect("src/banmaster/*.cpp"))
game_shared = Compile(settings, Collect("src/game/*.cpp"), nethash, network_source)
game_client = Compile(settings, CollectRecursive("src/game/client/*.cpp"), client_content_source)
game_server = Compile(settings, CollectRecursive("src/game/server/*.cpp"), server_content_source)
@@ -302,9 +301,6 @@ function build(settings)
masterserver_exe = Link(server_settings, "mastersrv", masterserver,
engine, zlib)
- banmaster_exe = Link(server_settings, "banmaster", banmaster,
- engine, zlib)
-
-- make targets
c = PseudoTarget("client".."_"..settings.config_name, client_exe, client_depends)
if string.find(settings.config_name, "sql") then
@@ -316,10 +312,9 @@ function build(settings)
v = PseudoTarget("versionserver".."_"..settings.config_name, versionserver_exe)
m = PseudoTarget("masterserver".."_"..settings.config_name, masterserver_exe)
- b = PseudoTarget("banmaster".."_"..settings.config_name, banmaster_exe)
t = PseudoTarget("tools".."_"..settings.config_name, tools)
- all = PseudoTarget(settings.config_name, c, s, v, m, b, t)
+ all = PseudoTarget(settings.config_name, c, s, v, m, t)
return all
end
diff --git a/banmasters.cfg b/banmasters.cfg
deleted file mode 100644
index 30f3075ce..000000000
--- a/banmasters.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-clear_banmasters
-add_banmaster banmaster.kottnet.net
-
diff --git a/bans.cfg b/bans.cfg
deleted file mode 100644
index bc3e1d656..000000000
--- a/bans.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-unban_all
-bind 127.0.0.1:8302
diff --git a/scripts/make_release.py b/scripts/make_release.py
index acebe680d..c521fd3e3 100644
--- a/scripts/make_release.py
+++ b/scripts/make_release.py
@@ -115,9 +115,6 @@ shutil.copy("storage.cfg", package_dir)
shutil.copy("announcement.txt", package_dir)
shutil.copy("license_DDRace.txt", package_dir)
-# banmaster
-shutil.copy("banmasters.cfg", package_dir)
-
if include_data and not use_bundle:
os.mkdir(os.path.join(package_dir, "data"))
copydir("data", package_dir)
diff --git a/src/banmaster/banmaster.cpp b/src/banmaster/banmaster.cpp
deleted file mode 100644
index 3fac59697..000000000
--- a/src/banmaster/banmaster.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
-/* If you are missing that file, acquire a complete release at teeworlds.com. */
-#include
-#include
-#include
-#include
-
-#include "banmaster.h"
-
-enum
-{
- MAX_BANS=1024,
- BAN_REREAD_TIME=300,
- CFGFLAG_BANMASTER=32
-};
-
-static const char BANMASTER_BANFILE[] = "bans.cfg";
-
-struct CBan
-{
- NETADDR m_Address;
- char m_aReason[256];
- int64 m_Expire;
-};
-
-static CBan m_aBans[MAX_BANS];
-static int m_NumBans = 0;
-static CNetClient m_Net;
-static IConsole *m_pConsole;
-static char m_aBindAddr[64] = "";
-
-CBan* CheckBan(NETADDR *pCheck)
-{
- for(int i = 0; i < m_NumBans; i++)
- if(net_addr_comp(&m_aBans[i].m_Address, pCheck) == 0)
- return &m_aBans[i];
-
- return 0;
-}
-
-int SendResponse(NETADDR *pAddr, NETADDR *pCheck)
-{
- static char aIpBan[sizeof(BANMASTER_IPBAN) + NETADDR_MAXSTRSIZE + 256] = { 0 };
- static char *pIpBanContent = aIpBan + sizeof(BANMASTER_IPBAN);
- if (!aIpBan[0])
- mem_copy(aIpBan, BANMASTER_IPBAN, sizeof(BANMASTER_IPBAN));
-
- static CNetChunk p;
-
- p.m_ClientID = -1;
- p.m_Address = *pAddr;
- p.m_Flags = NETSENDFLAG_CONNLESS;
-
- CBan* pBan = CheckBan(pCheck);
- if(pBan)
- {
- net_addr_str(pCheck, pIpBanContent, NETADDR_MAXSTRSIZE, false);
- char *pIpBanReason = pIpBanContent + (str_length(pIpBanContent) + 1);
- str_copy(pIpBanReason, pBan->m_aReason, 256);
-
- p.m_pData = aIpBan;
- p.m_DataSize = sizeof(BANMASTER_IPBAN) + str_length(pIpBanContent) + 1 + str_length(pIpBanReason) + 1;
- m_Net.Send(&p);
- return 1;
- }
-
- return 0;
- /*else
- {
- p.m_DataSize = sizeof(BANMASTER_IPOK);
- p.m_pData = BANMASTER_IPOK;
- m_Net.Send(&p);
- return 0;
- }*/
-}
-
-void AddBan(NETADDR *pAddr, const char *pReason)
-{
- pAddr->port = 0;
-
- CBan *pBan = CheckBan(pAddr);
- char aAddressStr[NETADDR_MAXSTRSIZE];
- net_addr_str(pAddr, aAddressStr, sizeof(aAddressStr), false);
-
- if(pBan)
- {
- char aAddressStr[NETADDR_MAXSTRSIZE];
- net_addr_str(pAddr, aAddressStr, sizeof(aAddressStr), false);
- dbg_msg("banmaster", "updated ban, ip=%s oldreason='%s' reason='%s'", aAddressStr, pBan->m_aReason, pReason);
-
- str_copy(pBan->m_aReason, pReason, sizeof(m_aBans[m_NumBans].m_aReason));
- pBan->m_Expire = -1;
- }
- else
- {
- if(m_NumBans == MAX_BANS)
- {
- dbg_msg("banmaster", "error: banmaster is full");
- return;
- }
-
- m_aBans[m_NumBans].m_Address = *pAddr;
- str_copy(m_aBans[m_NumBans].m_aReason, pReason, sizeof(m_aBans[m_NumBans].m_aReason));
- m_aBans[m_NumBans].m_Expire = -1;
-
- dbg_msg("banmaster", "added ban, ip=%s reason='%s'", aAddressStr, m_aBans[m_NumBans].m_aReason);
-
- m_NumBans++;
- }
-}
-
-void ClearBans()
-{
- m_NumBans = 0;
-}
-
-void PurgeBans()
-{
- int64 Now = time_get();
- int i = 0;
- while(i < m_NumBans)
- {
- if(m_aBans[i].m_Expire != -1 && m_aBans[i].m_Expire < Now)
- {
- // remove ban
- char aBuf[NETADDR_MAXSTRSIZE];
- net_addr_str(&m_aBans[i].m_Address, aBuf, sizeof(aBuf), false);
- dbg_msg("banmaster", "ban expired, ip=%s reason='%s'", aBuf, m_aBans[i].m_aReason);
- m_aBans[i] = m_aBans[m_NumBans - 1];
- m_NumBans--;
- }
- else
- i++;
- }
-}
-
-void ConBan(IConsole::IResult *pResult, void *pUser)
-{
- NETADDR Addr;
- const char *pStr = pResult->GetString(0);
- const char *pReason = "";
-
- if(pResult->NumArguments() > 1)
- pReason = pResult->GetString(1);
-
- if(!net_addr_from_str(&Addr, pStr))
- AddBan(&Addr, pReason);
- else
- dbg_msg("banmaster", "invalid network address to ban, str='%s'", pStr);
-}
-
-void ConUnbanAll(IConsole::IResult *pResult, void *pUser)
-{
- ClearBans();
-}
-
-void ConSetBindAddr(IConsole::IResult *pResult, void *pUser)
-{
- if(m_aBindAddr[0])
- return;
- str_copy(m_aBindAddr, pResult->GetString(0), sizeof(m_aBindAddr));
- dbg_msg("banmaster/network", "bound to %s", m_aBindAddr);
-}
-
-void StandardOutput(const char *pLine, void *pUser)
-{
-}
-
-int main(int argc, const char **argv) // ignore_convention
-{
- int64 LastUpdate = time_get();
-
- dbg_logger_stdout();
- net_init();
-
- IKernel *pKernel = IKernel::Create();
- IStorage *pStorage = CreateStorage("Teeworlds", argc, argv); // ignore_convention
-
- m_pConsole = CreateConsole(CFGFLAG_BANMASTER);
- m_pConsole->RegisterPrintCallback(2, StandardOutput, 0);
- m_pConsole->Register("ban", "s?r", CFGFLAG_BANMASTER, ConBan, 0, "Bans the specified ip");
- m_pConsole->Register("unban_all", "", CFGFLAG_BANMASTER, ConUnbanAll, 0, "Unbans all ips");
- m_pConsole->Register("bind", "s", CFGFLAG_BANMASTER, ConSetBindAddr, 0, "Binds to the specified address");
-
- {
- bool RegisterFail = false;
-
- RegisterFail = RegisterFail || !pKernel->RegisterInterface(m_pConsole);
- RegisterFail = RegisterFail || !pKernel->RegisterInterface(pStorage);
-
- if(RegisterFail)
- return -1;
- }
-
- m_pConsole->ExecuteFile(BANMASTER_BANFILE);
-
- NETADDR BindAddr;
- if(m_aBindAddr[0] && net_host_lookup(m_aBindAddr, &BindAddr, NETTYPE_IPV4) == 0)
- {
- if(BindAddr.port == 0)
- BindAddr.port = BANMASTER_PORT;
- }
- else
- {
- mem_zero(&BindAddr, sizeof(BindAddr));
- BindAddr.port = BANMASTER_PORT;
- }
-
- m_Net.Open(BindAddr, 0);
- // TODO: check socket for errors
-
- dbg_msg("banmaster", "started");
-
- while(1)
- {
- m_Net.Update();
-
- // process m_aPackets
- CNetChunk Packet;
- while(m_Net.Recv(&Packet))
- {
- char aAddressStr[NETADDR_MAXSTRSIZE];
- net_addr_str(&Packet.m_Address, aAddressStr, sizeof(aAddressStr), false);
-
- if((unsigned)Packet.m_DataSize >= sizeof(BANMASTER_IPCHECK) && mem_comp(Packet.m_pData, BANMASTER_IPCHECK, sizeof(BANMASTER_IPCHECK)) == 0)
- {
- char *pAddr = (char *)Packet.m_pData + sizeof(BANMASTER_IPCHECK);
- NETADDR CheckAddr;
- if(net_addr_from_str(&CheckAddr, pAddr))
- {
- dbg_msg("banmaster", "dropped weird message, ip=%s checkaddr='%s'", aAddressStr, pAddr);
- }
- else
- {
- CheckAddr.port = 0;
-
- int Banned = SendResponse(&Packet.m_Address, &CheckAddr);
-
- char aBuf[NETADDR_MAXSTRSIZE];
- net_addr_str(&CheckAddr, aBuf, sizeof(aBuf), false);
- dbg_msg("banmaster", "responded to checkmsg, ip=%s checkaddr=%s result=%s", aAddressStr, aBuf, (Banned) ? "ban" : "ok");
- }
- }
- else
- dbg_msg("banmaster", "dropped weird packet, ip=%s", aAddressStr, (char *)Packet.m_pData);
- }
-
- if(time_get() - LastUpdate > time_freq() * BAN_REREAD_TIME)
- {
- ClearBans();
- LastUpdate = time_get();
- m_pConsole->ExecuteFile(BANMASTER_BANFILE);
- }
-
- // be nice to the CPU
- thread_sleep(1);
- }
-
- return 0;
-}
-
diff --git a/src/banmaster/banmaster.h b/src/banmaster/banmaster.h
deleted file mode 100644
index f7c645f77..000000000
--- a/src/banmaster/banmaster.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
-/* If you are missing that file, acquire a complete release at teeworlds.com. */
-#ifndef BANMASTER_BANMASTER_H
-#define BANMASTER_BANMASTER_H
-
-static const int BANMASTER_PORT = 8302;
-
-//static const char BANMASTER_IPOK[] = {255, 255, 255, 255, 'i', 'p', 'o', 'k'};
-static const char BANMASTER_IPBAN[] = {255, 255, 255, 255, 'i', 'p', 'b', 'a'};
-static const char BANMASTER_IPCHECK[] = {255, 255, 255, 255, 'i', 'p', 'c', 'h'};
-
-#endif