about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTeetime <TeetimeTW@yahoo.de>2013-01-05 06:46:44 +0100
committerTeetime <TeetimeTW@yahoo.de>2013-01-05 06:46:44 +0100
commit198122516365d17a489cc86f205d44cc0008f99d (patch)
tree056e4c4ef25e691b723d87104b93ffb50704f297
parentff8f832ba0f48f40274a761526e79d5453d63806 (diff)
downloadzcatch-198122516365d17a489cc86f205d44cc0008f99d.tar.gz
zcatch-198122516365d17a489cc86f205d44cc0008f99d.zip
Removed banmaster
-rw-r--r--bam.lua4
-rw-r--r--banmasters.cfg4
-rw-r--r--bans.cfg1
-rw-r--r--src/banmaster/banmaster.cpp351
-rw-r--r--src/banmaster/banmaster.h12
-rw-r--r--src/engine/server/server.cpp105
-rw-r--r--src/engine/server/server.h4
-rw-r--r--src/engine/shared/network.h25
-rw-r--r--src/engine/shared/network_server.cpp96
9 files changed, 2 insertions, 600 deletions
diff --git a/bam.lua b/bam.lua
index e59e88eb..016ba7b6 100644
--- a/bam.lua
+++ b/bam.lua
@@ -232,7 +232,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)
@@ -273,8 +272,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)
@@ -283,7 +280,6 @@ 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)
diff --git a/banmasters.cfg b/banmasters.cfg
deleted file mode 100644
index c5397497..00000000
--- a/banmasters.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-clear_banmasters
-add_banmaster banmaster.kottnet.net
-add_banmaster banmaster.heinrich5991.de
-add_banmaster banmaster.teetw.de
diff --git a/bans.cfg b/bans.cfg
deleted file mode 100644
index a32469c6..00000000
--- a/bans.cfg
+++ /dev/null
@@ -1 +0,0 @@
-unban_all
diff --git a/src/banmaster/banmaster.cpp b/src/banmaster/banmaster.cpp
deleted file mode 100644
index a8a5ad02..00000000
--- a/src/banmaster/banmaster.cpp
+++ /dev/null
@@ -1,351 +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 <base/system.h>
-#include <cstdlib> /* atexit() */
-
-#include <engine/console.h>
-#include <engine/storage.h>
-#include <engine/config.h>
-
-#include <engine/shared/config.h>
-#include <engine/shared/netban.h>
-#include <engine/shared/network.h>
-#include <engine/shared/econ.h>
-#include <engine/shared/packer.h>
-
-#include "banmaster.h"
-
-enum 
-{
-	BAN_REREAD_TIME=300,
-	MAX_BAN_ENTRIES = 10,
-	MAX_REASON_LENGTH = 128,
-};
-
-static const char BANMASTER_BANFILE[] = "bans.cfg";
-static const char BANMASTER_BANSSAVEFILE[] = "saved_bans.cfg";
-
-class CBanmasterBan : public CNetBan
-{
-public:
-	//returns true if address is banned
-
-	bool GetBanInfo(const NETADDR *pAddr, char *pReason, int BufferSize, int *pExpires)
-	{
-		CNetHash aHash[17];
-		int Length = CNetHash::MakeHashArray(pAddr, aHash);
-
-		// check ban adresses
-		CBanAddr *pBan = m_BanAddrPool.Find(pAddr, &aHash[Length]);
-		if(pBan)
-		{
-			str_format(pReason, BufferSize, "%s", pBan->m_Info.m_aReason);
-			*pExpires = pBan->m_Info.m_Expires;
-			return true;
-		}
-		// check ban ranges
-		for(int i = Length-1; i >= 0; --i)
-		{
-			for(CBanRange *pBan = m_BanRangePool.First(&aHash[i]); pBan; pBan = pBan->m_pHashNext)
-			{
-				if(NetMatch(&pBan->m_Data, pAddr, i, Length))
-				{
-					str_format(pReason, BufferSize, "%s", pBan->m_Info.m_aReason);
-					*pExpires = pBan->m_Info.m_Expires;
-					return true;
-				}
-			}
-		}
-
-		return false;
-	}
-};
-
-struct CBanInfo {
-	char m_aName[16];
-	char m_aReason[MAX_REASON_LENGTH];
-	NETADDR m_Addr;
-	int m_RecvTime;
-};
-
-struct CStats {
-	unsigned int m_StartTime;
-	int m_HitsBannedPlayers;
-	int m_NumRecvBans;
-	int m_NumRequests;
-};
-
-CEcon m_Econ;
-CNetClient m_Net;
-CBanmasterBan m_NetBan;
-CBanInfo m_RecvBans[MAX_BAN_ENTRIES];
-CStats m_Stats;
-
-IConsole *m_pConsole;
-IStorage *m_pStorage;
-IKernel *m_pKernel;
-IConfig *m_pConfig;
-
-void CleanUp()
-{
-	// Better: RAII?
-	m_Econ.Shutdown();
-
-	delete m_pConsole;
-	delete m_pConfig;
-	delete m_pKernel;
-	delete m_pStorage;
-}
-
-int SendResponse(NETADDR *pAddr, NETADDR *pCheck, const char *pToken)
-{
-	CNetChunk p;
-
-	p.m_ClientID = -1;
-	p.m_Address = *pAddr;
-	p.m_Flags = NETSENDFLAG_CONNLESS;
-
-	int Expires;
-	char aReason[128];
-
-	if(m_NetBan.GetBanInfo(pCheck, aReason, sizeof(aReason), &Expires))
-	{
-		char aCheckAddr[NETADDR_MAXSTRSIZE];
-		net_addr_str(pCheck, aCheckAddr, NETADDR_MAXSTRSIZE, false);
-
-		CPacker P;
-		P.Reset();
-		P.AddRaw(BANMASTER_IPBAN, sizeof(BANMASTER_IPBAN));
-		P.AddString(aCheckAddr, -1);
-		P.AddString(aReason, -1);
-		P.AddString(pToken, -1);
-		
-		p.m_pData = P.Data();
-		p.m_DataSize = P.Size();
-		if(!P.Error())
-			m_Net.Send(&p);
-		return 1;
-	}
-
-	return 0;
-}
-
-void AddRecvBan(NETADDR *pFromAddr, unsigned char *pData, int Size)
-{
-	CUnpacker Up;
-	const char *pIP, *pName, *pReason;
-
-	Up.Reset(pData + sizeof(BANMASTER_IPREPORT), Size - sizeof(BANMASTER_IPREPORT));
-
-	pName = Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES);
-	pIP = Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES);
-	pReason = Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES);
-
-	NETADDR ReportAddr;
-	if(!Up.Error() && net_addr_from_str(&ReportAddr, pIP) == 0 && pName[0] && pReason[0])
-	{
-		for(int i = MAX_BAN_ENTRIES-1; i > 0; i--)
-			mem_copy(&m_RecvBans[i], &m_RecvBans[i-1], sizeof(m_RecvBans[i]));
-
-		m_RecvBans[0].m_Addr = ReportAddr;
-		str_copy(m_RecvBans[0].m_aName, pName, sizeof(m_RecvBans[0].m_aName));
-		str_copy(m_RecvBans[0].m_aReason, pReason, sizeof(m_RecvBans[0].m_aReason));
-		m_RecvBans[0].m_RecvTime = time_timestamp();
-
-		char aAddr[NETADDR_MAXSTRSIZE];
-		char aBuf[256];
-		net_addr_str(pFromAddr, aAddr, sizeof(aAddr), false);
-		str_format(aBuf, sizeof(aBuf), "Received ban from '%s', Name: %s, IP: %s, Reason: %s", aAddr, pName, pIP, pReason);
-		m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "banmaster", aBuf);
-		m_Stats.m_NumRecvBans++;
-	}
-	else
-		m_pConsole->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "banmaster", "dropped weird ban message");
-}
-
-void ReloadBans()
-{
-	char aBuf[64];
-	str_format(aBuf, sizeof(aBuf), "bans_save %s", BANMASTER_BANSSAVEFILE);
-	m_pConsole->ExecuteLine(aBuf);
-}
-
-void ConRecvBans(IConsole::IResult *pResult, void *pUser)
-{
-	int Count = 0;
-	char aBuf[256];
-	for(int i = MAX_BAN_ENTRIES-1; i >= 0; i--)
-	{
-		if(!m_RecvBans[i].m_aName[0])
-			continue;
-
-		char aIP[NETADDR_MAXSTRSIZE];
-		net_addr_str(&m_RecvBans[i].m_Addr, aIP, sizeof(aIP), false);
-		int RecvTime = time_timestamp() - m_RecvBans[i].m_RecvTime;
-		str_format(aBuf, sizeof(aBuf), "#%d - Name: %s | Reason: %s | IP: %s | Received %d min and %d sec. ago", i, m_RecvBans[i].m_aName, m_RecvBans[i].m_aReason, aIP, RecvTime/60, RecvTime%60);
-		m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "banmaster", aBuf);
-		Count++;
-	}
-	str_format(aBuf, sizeof(aBuf), "%d Ban(s)", Count);
-	m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "banmaster", aBuf);
-}
-
-void ConAddBan(IConsole::IResult *pResult, void *pUser)
-{
-	int Index = pResult->GetInteger(0);
-	if(Index >= 0 && Index < MAX_BAN_ENTRIES && m_RecvBans[Index].m_aName[0])
-	{
-		m_NetBan.BanAddr(&m_RecvBans[Index].m_Addr, pResult->GetInteger(1)*60, pResult->GetString(2));
-	}
-	else
-		m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "banmaster", "Invalid index");
-}
-
-void ConStatus(IConsole::IResult *pResult, void *pUser)
-{
-	unsigned int Running = time_timestamp() - m_Stats.m_StartTime;
-	int Hours = Running / 3600;
-	char aBuf[512];
-	str_format(aBuf, sizeof(aBuf), "Running since %d hours %d min and %d sec. Total received requests: %d (%d hits). %d received bans (%.3f/hour).",
-			Hours, (Running-Hours*3600) / 60, Running % 60, m_Stats.m_NumRequests, m_Stats.m_HitsBannedPlayers, m_Stats.m_NumRecvBans, (Hours != 0) ? (float)m_Stats.m_NumRecvBans/Hours : m_Stats.m_NumRecvBans);
-	m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "banmaster", aBuf);
-}
-
-int main(int argc, const char **argv) // ignore_convention
-{
-	atexit(CleanUp);
-	int64 LastUpdate = time_get();
-
-	dbg_logger_stdout();
-	net_init();
-
-	m_pKernel = IKernel::Create();
-	m_pStorage = CreateStorage("Teeworlds", IStorage::STORAGETYPE_BASIC, argc, argv); // ignore_convention
-	m_pConfig = CreateConfig();
-
-	m_pConsole = CreateConsole(CFGFLAG_BANMASTER|CFGFLAG_ECON);
-
-	{
-		bool RegisterFail = false;
-
-		RegisterFail = RegisterFail || !m_pKernel->RegisterInterface(m_pConsole);
-		RegisterFail = RegisterFail || !m_pKernel->RegisterInterface(m_pStorage);
-		RegisterFail = RegisterFail || !m_pKernel->RegisterInterface(m_pConfig);
-		
-		if(RegisterFail)
-			return -1;
-	}
-
-	//Reset strings
-	m_pConfig->Init();
-
-	// Register Commands
-	m_pConsole->Register("recvbans", "", CFGFLAG_BANMASTER, ConRecvBans, 0, "Show the last received bans");
-	m_pConsole->Register("addban", "iir", CFGFLAG_BANMASTER, ConAddBan, 0, "Ban IP by index");
-	m_pConsole->Register("status", "", CFGFLAG_BANMASTER, ConStatus, 0, "Show some statistics");
-
-
-	m_NetBan.Init(m_pConsole, m_pStorage);
-	m_pConsole->ExecuteFile(BANMASTER_BANFILE);
-	m_Econ.Init(m_pConsole, &m_NetBan);
-
-	m_pConsole->ExecuteFile(BANMASTER_BANSSAVEFILE);
-
-	m_pConsole->StoreCommands(false);
-
-	mem_zero(&m_RecvBans, sizeof(CBanInfo)*MAX_BAN_ENTRIES);
-	mem_zero(&m_Stats, sizeof(CStats));
-	m_Stats.m_StartTime = time_timestamp();
-
-	NETADDR BindAddr;
-	if(g_Config.m_Bindaddr[0] && net_host_lookup(g_Config.m_Bindaddr, &BindAddr, NETTYPE_ALL) == 0)
-		BindAddr.port = BANMASTER_PORT;
-	else
-	{
-		mem_zero(&BindAddr, sizeof(BindAddr));
-		BindAddr.type = NETTYPE_ALL;
-		BindAddr.port = BANMASTER_PORT;
-	}
-
-	if(!m_Net.Open(BindAddr, 0))
-	{
-		dbg_msg("banmaster", "couldn't start network");
-		return -1;
-	}
-
-	dbg_msg("banmaster", "started");
-	
-	while(1)
-	{
-		m_Net.Update();
-
-		// process m_Packets
-		CNetChunk Packet;
-		while(m_Net.Recv(&Packet))
-		{
-			char aAddressStr[NETADDR_MAXSTRSIZE];
-			net_addr_str(&Packet.m_Address, aAddressStr, sizeof(aAddressStr), false);
-
-			if(Packet.m_DataSize >= (int)sizeof(BANMASTER_IPCHECK) && mem_comp(Packet.m_pData, BANMASTER_IPCHECK, sizeof(BANMASTER_IPCHECK)) == 0)
-			{
-				CUnpacker Up;
-				Up.Reset((unsigned char*) Packet.m_pData + sizeof(BANMASTER_IPCHECK), Packet.m_DataSize - sizeof(BANMASTER_IPCHECK));
-				const char *pAddr = Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES);
-				const char *pToken = Up.GetString(CUnpacker::SANITIZE_CC);
-
-				NETADDR CheckAddr;
-				if(net_addr_from_str(&CheckAddr, pAddr) || Up.Error())
-				{
-					char aBuf[128];
-					str_format(aBuf, sizeof(aBuf), "dropped weird message, ip='%s' checkaddr='%s'", aAddressStr, pAddr);
-					m_pConsole->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "banmaster", aBuf);
-				}
-				else
-				{
-					CheckAddr.port = 0;
-
-					int Banned = SendResponse(&Packet.m_Address, &CheckAddr, pToken);
-
-					char aIP[NETADDR_MAXSTRSIZE];
-					char aBuf[256];
-					net_addr_str(&CheckAddr, aIP, sizeof(aIP), false);
-					str_format(aBuf, sizeof(aBuf), "responded to checkmsg, ip='%s' checkaddr='%s' result=%s", aAddressStr, aIP, (Banned) ? "ban" : "ok");
-					if(Banned)
-					{
-						m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "banmaster", aBuf);
-						m_Stats.m_HitsBannedPlayers++;
-					}
-					else
-						m_pConsole->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "banmaster", aBuf);
-
-					m_Stats.m_NumRequests++;
-				}
-			}
-			else if(Packet.m_DataSize >= (int)sizeof(BANMASTER_IPREPORT) && mem_comp(Packet.m_pData, BANMASTER_IPREPORT, sizeof(BANMASTER_IPREPORT)) == 0)
-			{
-				//info of a banned client
-				AddRecvBan(&Packet.m_Address, (unsigned char*)Packet.m_pData, Packet.m_DataSize);
-			}
-			else
-			{
-				char aBuf[128];
-				str_format(aBuf, sizeof(aBuf), "dropped weird packet, ip='%s'", aAddressStr, (char *)Packet.m_pData);
-				m_pConsole->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "banmaster", aBuf);
-			}
-		}
-
-		if(time_get() - LastUpdate > time_freq() * BAN_REREAD_TIME)
-		{
-			ReloadBans();
-			LastUpdate = time_get();
-		}
-
-		m_NetBan.Update();
-		m_Econ.Update();
-		
-		// 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 fb89e3c0..00000000
--- 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_IPBAN[] = {255, 255, 255, 255, 'i', 'p', 'b', 'a'};
-static const char BANMASTER_IPCHECK[] = {255, 255, 255, 255, 'i', 'p', 'c', 'h'};
-static const char BANMASTER_IPREPORT[] = {255, 255, 255, 255, 'i', 'p', 'r', 'e'};
-
-#endif
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index 4a03be16..577c040f 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -27,8 +27,6 @@
 
 #include <mastersrv/mastersrv.h>
 
-#include <banmaster/banmaster.h>
-
 #include "register.h"
 #include "server.h"
 
@@ -38,8 +36,6 @@
 	#include <windows.h>
 #endif
 
-static const char SERVER_BANMASTERFILE[] = "banmasters.cfg";
-
 static const char *StrUTF8Ltrim(const char *pStr)
 {
 	while(*pStr)
@@ -281,30 +277,6 @@ void CServerBan::ConBanExt(IConsole::IResult *pResult, void *pUser)
 				}
 	}
 
-	if(g_Config.m_SvGlobalBantime && CID >= 0 && CID < MAX_CLIENTS && pThis->Server()->m_aClients[CID].m_State == CServer::CClient::STATE_INGAME)
-	{
-		char aIP[NETADDR_MAXSTRSIZE];
-		net_addr_str(pThis->Server()->m_NetServer.ClientAddr(CID), aIP, sizeof(aIP), 0);
-
-		CPacker P;
-		P.Reset();
-		P.AddRaw(BANMASTER_IPREPORT, sizeof(BANMASTER_IPREPORT));
-		P.AddString(pThis->Server()->ClientName(CID), -1);
-		P.AddString(aIP, -1);
-		P.AddString(pReason, -1);
-
-		if(!P.Error())
-		{
-			CNetChunk Packet;
-			Packet.m_ClientID = -1;
-			Packet.m_Flags = NETSENDFLAG_CONNLESS;
-			Packet.m_pData = P.Data();
-			Packet.m_DataSize = P.Size();
-			pThis->Server()->m_NetServer.m_Banmaster.SendToAll(&Packet);
-			pThis->Console()->Print(IConsole::OUTPUT_LEVEL_DEBUG, "banmaster", "Reported ban to banmasters");
-		}
-	}
-
 	if(StrAllnum(pStr))
 	{
 		int ClientID = str_toint(pStr);
@@ -1221,36 +1193,6 @@ void CServer::PumpNetwork()
 				{
 					SendServerInfo(&Packet.m_Address, ((unsigned char *)Packet.m_pData)[sizeof(SERVERBROWSE_GETINFO)]);
 				}
-				else if(Packet.m_DataSize >= sizeof(BANMASTER_IPBAN) &&
-				  mem_comp(Packet.m_pData, BANMASTER_IPBAN, sizeof(BANMASTER_IPBAN)) == 0)
-				{
-					if(!g_Config.m_SvGlobalBantime)
-						return;
-
-					//Unpack packet
-					CUnpacker Up;
-					const char *pIP, *pReason, *pToken;
-					Up.Reset((unsigned char*)Packet.m_pData + sizeof(BANMASTER_IPBAN), Packet.m_DataSize - sizeof(BANMASTER_IPBAN));
-					pIP = Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES);
-					pReason = Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES);
-					pToken = Up.GetString(CUnpacker::SANITIZE_CC);
-
-					//check if it's a valid packet
-					if(Up.Error() || m_NetServer.m_Banmaster.CheckValidity(&Packet.m_Address, pToken) == -1)
-						return;
-
-					NETADDR Addr;
-					if(net_addr_from_str(&Addr, pIP))
-					{
-						Console()->Print(IConsole::OUTPUT_LEVEL_DEBUG, "globalbans", "dropped weird message from banmaster");
-						return;
-					}
-
-					m_ServerBan.BanAddr(&Addr, g_Config.m_SvGlobalBantime * 60, pReason);
-					char aBuf[256];
-					str_format(aBuf, sizeof(aBuf), "added ban, ip=%s, reason='%s'", pIP, pReason);
-					Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "globalbans", aBuf);
-				}
 			}
 		}
 		else
@@ -1367,8 +1309,6 @@ int CServer::Run()
 	m_ServerBan.Init(Console(), Storage(), this);
 	m_Econ.Init(Console(), &m_ServerBan);
 
-	Console()->ExecuteFile(SERVER_BANMASTERFILE);
-
 	char aBuf[256];
 	str_format(aBuf, sizeof(aBuf), "server name is '%s'", g_Config.m_SvName);
 	Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server", aBuf);
@@ -1611,47 +1551,6 @@ void CServer::ConMapReload(IConsole::IResult *pResult, void *pUser)
 	((CServer *)pUser)->m_MapReload = 1;
 }
 
-void CServer::ConAddBanmaster(IConsole::IResult *pResult, void *pUser)
-{
-	CServer *pServer = (CServer *)pUser;
-	
-	int Result = pServer->m_NetServer.m_Banmaster.Add(pResult->GetString(0));
-	
-	if(Result == 0)
-		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "succesfully added banmaster");
-	else if(Result == 1)
-		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "invalid address for banmaster / net lookup failed");
-	else if(Result == 2)
-		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "too many banmasters");
-	else
-		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "banmaster already exists");
-}
-
-void CServer::ConBanmasters(IConsole::IResult *pResult, void *pUser)
-{
-	CServer *pServer = (CServer *)pUser;
-	int NumBanmasters = pServer->m_NetServer.m_Banmaster.Num();
-	
-	char aBuf[128];
-	char aIpString[64];
-	
-	for(int i = 0; i < NumBanmasters; i++)
-	{
-		NETADDR *pBanmaster = pServer->m_NetServer.m_Banmaster.Get(i);
-		net_addr_str(pBanmaster, aIpString, sizeof(aIpString), 0);
-		str_format(aBuf, sizeof(aBuf), "%d: %s", i, aIpString);
-		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", aBuf);
-	}
-}
-
-void CServer::ConClearBanmasters(IConsole::IResult *pResult, void *pUser)
-{
-	CServer *pServer = (CServer *)pUser;
-	
-	pServer->m_NetServer.m_Banmaster.Clear();
-	pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "cleared banmaster list");
-}
-
 void CServer::ConLogout(IConsole::IResult *pResult, void *pUser)
 {
 	CServer *pServer = (CServer *)pUser;
@@ -1738,10 +1637,6 @@ void CServer::RegisterCommands()
 	Console()->Register("record", "?s", CFGFLAG_SERVER|CFGFLAG_STORE, ConRecord, this, "Record to a file");
 	Console()->Register("stoprecord", "", CFGFLAG_SERVER, ConStopRecord, this, "Stop recording");
 
-	Console()->Register("add_banmaster", "s", CFGFLAG_SERVER, ConAddBanmaster, this, "");
-	Console()->Register("banmasters", "", CFGFLAG_SERVER, ConBanmasters, this, "");
-	Console()->Register("clear_banmasters",	"", CFGFLAG_SERVER, ConClearBanmasters, this, "");
-
 	Console()->Register("reload", "", CFGFLAG_SERVER, ConMapReload, this, "");
 
 	Console()->Chain("sv_name", ConchainSpecialInfoupdate, this);
diff --git a/src/engine/server/server.h b/src/engine/server/server.h
index 9f62ab37..27991746 100644
--- a/src/engine/server/server.h
+++ b/src/engine/server/server.h
@@ -230,10 +230,6 @@ public:
 	static void ConchainModCommandUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
 	static void ConchainConsoleOutputLevelUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
 
-	static void ConAddBanmaster(IConsole::IResult *pResult, void *pUser);
-	static void ConBanmasters(IConsole::IResult *pResult, void *pUser);
-	static void ConClearBanmasters(IConsole::IResult *pResult, void *pUser);
-
 	void RegisterCommands();
 
 
diff --git a/src/engine/shared/network.h b/src/engine/shared/network.h
index b607b4d4..dd43389e 100644
--- a/src/engine/shared/network.h
+++ b/src/engine/shared/network.h
@@ -261,7 +261,6 @@ class CNetServer
 	CNetRecvUnpacker m_RecvUnpacker;
 
 public:
-	CNetServer();
 	int SetCallbacks(NETFUNC_NEWCLIENT pfnNewClient, NETFUNC_DELCLIENT pfnDelClient, void *pUser);
 
 	//
@@ -285,30 +284,6 @@ public:
 
 	//
 	void SetMaxClientsPerIP(int Max);
-
-	class CBanmaster
-	{
-	public:
-		enum
-		{
-			MAX_BANMASTERS = 16,
-			MAX_TOKEN_LENGTH = 16,
-		};
-
-		CNetServer *m_pNet;
-		NETADDR m_aBanmasters[MAX_BANMASTERS];
-		char m_aBanmasterToken[MAX_TOKEN_LENGTH];
-		int m_NumBanmasters;
-
-		int Add(const char *pAddrStr);
-		int Num() const;
-		NETADDR* Get(int Index);
-		int CheckValidity(NETADDR *pAddr, const char* pToken);
-		void Clear();
-		void SendToAll(CNetChunk *pP);
-		void GenerateToken();
-	};
-	CBanmaster m_Banmaster;
 };
 
 class CNetConsole
diff --git a/src/engine/shared/network_server.cpp b/src/engine/shared/network_server.cpp
index f1190223..b693b667 100644
--- a/src/engine/shared/network_server.cpp
+++ b/src/engine/shared/network_server.cpp
@@ -1,26 +1,17 @@
 /* (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 <base/system.h>
-#include <banmaster/banmaster.h>
 
 #include <engine/console.h>
-#include <engine/shared/packer.h>
 
 #include "netban.h"
 #include "network.h"
 
-CNetServer::CNetServer()
-{
-	mem_zero(this, sizeof(*this));
-	init_rand();
-	m_Banmaster.m_pNet = this;
-	m_Banmaster.GenerateToken();
-}
 
 bool CNetServer::Open(NETADDR BindAddr, CNetBan *pNetBan, int MaxClients, int MaxClientsPerIP, int Flags)
 {
 	// zero out the whole structure
-	//mem_zero(this, sizeof(*this));
+	mem_zero(this, sizeof(*this));
 
 	// open socket
 	m_Socket = net_udp_create(BindAddr);
@@ -149,21 +140,6 @@ int CNetServer::Recv(CNetChunk *pChunk)
 					// client that wants to connect
 					if(!Found)
 					{
-						char aIP[NETADDR_MAXSTRSIZE];
-						net_addr_str(&Addr, aIP, sizeof(aIP), 0);
-						CPacker P;
-						P.Reset();
-						P.AddRaw(BANMASTER_IPCHECK, sizeof(BANMASTER_IPCHECK));
-						P.AddString(aIP, NETADDR_MAXSTRSIZE);
-						P.AddString(m_Banmaster.m_aBanmasterToken, CBanmaster::MAX_TOKEN_LENGTH);
-
-						CNetChunk Packet;
-						Packet.m_ClientID = -1;
-						Packet.m_Flags = NETSENDFLAG_CONNLESS;
-						Packet.m_DataSize = P.Size();
-						Packet.m_pData = P.Data();
-
-						m_Banmaster.SendToAll(&Packet);
 
 						// only allow a specific number of players with the same ip
 						NETADDR ThisAddr = Addr, OtherAddr;
@@ -196,7 +172,7 @@ int CNetServer::Recv(CNetChunk *pChunk)
 								m_aSlots[i].m_Connection.Feed(&m_RecvUnpacker.m_Data, &Addr);
 								if(m_pfnNewClient)
 									m_pfnNewClient(i, m_UserPtr);
-								
+
 								break;
 							}
 						}
@@ -274,71 +250,3 @@ void CNetServer::SetMaxClientsPerIP(int Max)
 
 	m_MaxClientsPerIP = Max;
 }
-
-int CNetServer::CBanmaster::Add(const char *pAddrStr)
-{
-	if(m_NumBanmasters >= MAX_BANMASTERS)
-		return 2;
-
-	NETADDR Addr;
-	if(net_host_lookup(pAddrStr, &Addr, NETTYPE_ALL))
-		return 1;
-
-	if(Addr.port == 0)
-		Addr.port = BANMASTER_PORT;
-
-	for(int i = 0; i < m_NumBanmasters; i++)
-		if(mem_comp(&Addr, &m_aBanmasters[i], sizeof(NETADDR)) == 0)
-			return 3;
-
-	m_aBanmasters[m_NumBanmasters] = Addr;
-	m_NumBanmasters++;
-	return 0;
-}
-
-int CNetServer::CBanmaster::Num() const
-{
-	return m_NumBanmasters;
-}
-
-NETADDR *CNetServer::CBanmaster::Get(int Index)
-{
-	if(Index < 0 || Index >= m_NumBanmasters)
-		return 0;
-	
-	return &m_aBanmasters[Index];
-}
-
-int CNetServer::CBanmaster::CheckValidity(NETADDR *pAddr, const char* pToken)
-{
-	if(str_comp(m_aBanmasterToken, pToken) == 0)
-		for(int i = 0; i < m_NumBanmasters; i++)
-			if(net_addr_comp(&m_aBanmasters[i], pAddr) == 0)
-				return i;
-
-	return -1;
-}
-
-void CNetServer::CBanmaster::Clear()
-{
-	m_NumBanmasters = 0;
-}
-
-void CNetServer::CBanmaster::SendToAll(CNetChunk *pP)
-{
-	for(int i = 0; i < m_NumBanmasters; i++)
-	{
-		pP->m_Address = m_aBanmasters[i];
-		m_pNet->Send(pP);
-	}
-}
-
-void CNetServer::CBanmaster::GenerateToken()
-{
-	for(int i = 0; i < MAX_TOKEN_LENGTH-1; i++)
-	{
-		// 32 - 128
-		m_aBanmasterToken[i] = irand() % 97 + 32;
-	}
-	m_aBanmasterToken[MAX_TOKEN_LENGTH-1] = 0;
-}