1#ifndef ENGINE_SHARED_NETBAN_H
2#define ENGINE_SHARED_NETBAN_H
35 return NetComp(pAddr1, pAddr2) == 0;
53 str_format(pBuffer, BufferSize,
"<{'%s'}>", aAddrStr);
62 str_format(pBuffer, BufferSize,
"<{'%s' - '%s'}>", aAddrStr1, aAddrStr2);
107 template<
class T,
int HashCount>
127 if(
NetComp(&pBan->m_Data, pData) == 0)
158 int Ban(T *pBanPool,
const typename T::CDataType *pData,
int Seconds,
const char *pReason,
bool VerbatimReason);
160 int Unban(T *pBanPool,
const typename T::CDataType *pData);
184 virtual int BanAddr(
const NETADDR *pAddr,
int Seconds,
const char *pReason,
bool VerbatimReason);
190 bool IsBanned(
const NETADDR *pOrigAddr,
char *pBuf,
unsigned BufferSize)
const;
205 if(pBan ==
nullptr || pBuf ==
nullptr)
215 str_copy(aBuf,
"You have been banned");
CBan< CDataType > * Add(const CDataType *pData, const CBanInfo *pInfo, const CNetHash *pNetHash)
Definition netban.cpp:85
@ MAX_BANS
Definition netban.h:138
CBan< CDataType > * First() const
Definition netban.h:121
CBan< CDataType > * m_pFirstFree
Definition netban.h:143
CBan< CDataType > * First(const CNetHash *pNetHash) const
Definition netban.h:122
T CDataType
Definition netban.h:111
CBan< CDataType > m_aBans[MAX_BANS]
Definition netban.h:142
void Reset()
Definition netban.cpp:178
CBan< CDataType > * Find(const CDataType *pData, const CNetHash *pNetHash) const
Definition netban.h:123
int Remove(CBan< CDataType > *pBan)
Definition netban.cpp:119
CBan< CDataType > * Get(int Index) const
Definition netban.cpp:197
int m_CountUsed
Definition netban.h:145
void InsertUsed(CBan< CDataType > *pBan)
Definition netban.cpp:48
bool IsFull() const
Definition netban.h:119
CBan< CDataType > * m_pFirstUsed
Definition netban.h:144
void Update(CBan< CDataType > *pBan, const CBanInfo *pInfo)
Definition netban.cpp:155
CBan< CDataType > * m_aapHashList[HashCount][256]
Definition netban.h:141
int Num() const
Definition netban.h:118
int m_HashIndex
Definition netban.h:70
int m_Hash
Definition netban.h:69
static int MakeHashArray(const NETADDR *pAddr, CNetHash aHash[17])
Definition netban.cpp:33
void UnbanAll()
Definition netban.cpp:171
class IConsole * m_pConsole
Definition netban.h:162
virtual int BanAddr(const NETADDR *pAddr, int Seconds, const char *pReason, bool VerbatimReason)
Definition netban.cpp:314
CBanPool< NETADDR, 1 > CBanAddrPool
Definition netban.h:150
bool IsBanned(const NETADDR *pOrigAddr, char *pBuf, unsigned BufferSize) const
Definition netban.cpp:373
bool NetMatch(const CNetRange *pRange, const NETADDR *pAddr) const
Definition netban.h:44
static void ConBan(class IConsole::IResult *pResult, void *pUser)
Definition netban.cpp:416
void MakeBanInfo(const CBan< T > *pBan, char *pBuf, unsigned BuffSize, int Type) const
Definition netban.h:203
CBanRangePool m_BanRangePool
Definition netban.h:165
static void ConUnbanRange(class IConsole::IResult *pResult, void *pUser)
Definition netban.cpp:464
bool NetMatch(const NETADDR *pAddr1, const NETADDR *pAddr2) const
Definition netban.h:33
virtual ~CNetBan()=default
class IStorage * Storage() const
Definition netban.h:178
const char * NetToString(const NETADDR *pData, char *pBuffer, unsigned BufferSize) const
Definition netban.h:49
CBanAddrPool m_BanAddrPool
Definition netban.h:164
CBanPool< CNetRange, 16 > CBanRangePool
Definition netban.h:151
void Update()
Definition netban.cpp:294
static void ConUnban(class IConsole::IResult *pResult, void *pUser)
Definition netban.cpp:447
bool NetMatch(const CNetRange *pRange, const NETADDR *pAddr, int Start, int Length) const
Definition netban.h:38
CBan< CNetRange > CBanRange
Definition netban.h:153
int UnbanByIndex(int Index)
Definition netban.cpp:342
int Ban(T *pBanPool, const typename T::CDataType *pData, int Seconds, const char *pReason, bool VerbatimReason)
Definition netban.cpp:212
int UnbanByRange(const CNetRange *pRange)
Definition netban.cpp:333
@ MSGTYPE_BANADD
Definition netban.h:173
@ MSGTYPE_PLAYER
Definition netban.h:171
@ MSGTYPE_LIST
Definition netban.h:172
@ MSGTYPE_BANREM
Definition netban.h:174
static void ConBansFind(class IConsole::IResult *pResult, void *pUser)
Definition netban.cpp:544
CBan< NETADDR > CBanAddr
Definition netban.h:152
static void ConBans(class IConsole::IResult *pResult, void *pUser)
Definition netban.cpp:486
int Unban(T *pBanPool, const typename T::CDataType *pData)
Definition netban.cpp:257
NETADDR m_LocalhostIpV6
Definition netban.h:166
static void ConBansSave(class IConsole::IResult *pResult, void *pUser)
Definition netban.cpp:593
class IStorage * m_pStorage
Definition netban.h:163
NETADDR m_LocalhostIpV4
Definition netban.h:166
const char * NetToString(const CNetRange *pData, char *pBuffer, unsigned BufferSize) const
Definition netban.h:57
virtual int BanRange(const CNetRange *pRange, int Seconds, const char *pReason)
Definition netban.cpp:319
static void ConBanRange(class IConsole::IResult *pResult, void *pUser)
Definition netban.cpp:431
void Init(class IConsole *pConsole, class IStorage *pStorage)
Definition netban.cpp:274
int UnbanByAddr(const NETADDR *pAddr)
Definition netban.cpp:328
class IConsole * Console() const
Definition netban.h:177
static void ConUnbanAll(class IConsole::IResult *pResult, void *pUser)
Definition netban.cpp:478
NETADDR m_UB
Definition netban.h:20
bool IsValid() const
Definition netban.h:22
NETADDR m_LB
Definition netban.h:19
int mem_comp(const void *a, const void *b, size_t size)
Definition mem.cpp:16
constexpr auto NETADDR_MAXSTRSIZE
Definition types.h:108
void net_addr_str(const NETADDR *addr, char *string, int max_length, bool add_port)
Definition net.cpp:275
constexpr auto NETTYPE_IPV4
Definition types.h:66
int str_copy(char *dst, const char *src, int dst_size)
Definition str.cpp:18
int64_t time_timestamp()
Definition time.cpp:53
int NetComp(const NETADDR *pAddr1, const NETADDR *pAddr2)
Definition netban.h:11
#define str_format
Definition str.cpp:89
bool m_VerbatimReason
Definition netban.h:88
int64_t m_Expires
Definition netban.h:86
char m_aReason[REASON_LENGTH]
Definition netban.h:87
@ EXPIRES_NEVER
Definition netban.h:83
@ REASON_LENGTH
Definition netban.h:84
NETADDR m_Data
Definition netban.h:94
CBan * m_pHashNext
Definition netban.h:99
CBanInfo m_Info
Definition netban.h:95
CBan * m_pNext
Definition netban.h:103
CNetHash m_NetHash
Definition netban.h:96
CBan * m_pPrev
Definition netban.h:104
CBan * m_pHashPrev
Definition netban.h:100
unsigned char ip[16]
Definition types.h:116
unsigned int type
Definition types.h:115