2018-07-06 14:11:38 +00:00
|
|
|
#ifndef ENGINE_SERVER_NAME_BAN_H
|
|
|
|
#define ENGINE_SERVER_NAME_BAN_H
|
2018-03-14 01:35:31 +00:00
|
|
|
|
2023-11-25 16:09:14 +00:00
|
|
|
#include <engine/console.h>
|
2018-03-14 01:35:31 +00:00
|
|
|
#include <engine/shared/protocol.h>
|
|
|
|
|
2022-05-23 20:55:04 +00:00
|
|
|
#include <vector>
|
2022-03-30 13:16:19 +00:00
|
|
|
|
2018-03-14 01:35:31 +00:00
|
|
|
enum
|
|
|
|
{
|
2020-09-26 19:41:58 +00:00
|
|
|
MAX_NAME_SKELETON_LENGTH = MAX_NAME_LENGTH * 4,
|
|
|
|
MAX_NAMEBAN_REASON_LENGTH = 64
|
2018-03-14 01:35:31 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CNameBan
|
|
|
|
{
|
|
|
|
public:
|
2023-11-25 16:09:14 +00:00
|
|
|
CNameBan(const char *pName, const char *pReason, int Distance, bool IsSubstring);
|
|
|
|
|
2018-03-14 01:35:31 +00:00
|
|
|
char m_aName[MAX_NAME_LENGTH];
|
|
|
|
char m_aReason[MAX_NAMEBAN_REASON_LENGTH];
|
|
|
|
int m_aSkeleton[MAX_NAME_SKELETON_LENGTH];
|
|
|
|
int m_SkeletonLength;
|
|
|
|
int m_Distance;
|
2023-11-25 16:09:14 +00:00
|
|
|
bool m_IsSubstring;
|
2018-03-14 01:35:31 +00:00
|
|
|
};
|
|
|
|
|
2023-11-25 16:09:14 +00:00
|
|
|
class CNameBans
|
|
|
|
{
|
|
|
|
IConsole *m_pConsole = nullptr;
|
|
|
|
std::vector<CNameBan> m_vNameBans;
|
|
|
|
|
|
|
|
static void ConNameBan(IConsole::IResult *pResult, void *pUser);
|
|
|
|
static void ConNameUnban(IConsole::IResult *pResult, void *pUser);
|
|
|
|
static void ConNameBans(IConsole::IResult *pResult, void *pUser);
|
|
|
|
|
|
|
|
public:
|
|
|
|
void InitConsole(IConsole *pConsole);
|
|
|
|
void Ban(const char *pName, const char *pReason, const int Distance, const bool IsSubstring);
|
|
|
|
void Unban(const char *pName);
|
|
|
|
void Dump() const;
|
|
|
|
const CNameBan *IsBanned(const char *pName) const;
|
|
|
|
};
|
2018-03-14 01:35:31 +00:00
|
|
|
|
2018-07-06 14:11:38 +00:00
|
|
|
#endif // ENGINE_SERVER_NAME_BAN_H
|