1#ifndef ENGINE_SERVER_AUTHMANAGER_H
2#define ENGINE_SERVER_AUTHMANAGER_H
7#include <generated/protocol.h>
11#include <unordered_map>
18 inline const char *
const ADMIN =
"admin";
20 inline const char *
const HELPER =
"helper";
25 static constexpr int ADMIN = AUTHED_ADMIN;
27 static constexpr int HELPER = AUTHED_HELPER;
28 static constexpr int NONE = AUTHED_NO;
70 std::unordered_map<std::string, CRconRole>
m_Roles;
79 typedef void (*
FListCallback)(
const char *pIdent,
const char *pRoleName,
void *pUser);
84 int AddKeyHash(
const char *pIdent,
MD5_DIGEST Hash,
const unsigned char *pSalt,
const char *pRoleName);
85 int AddKey(
const char *pIdent,
const char *pPw,
const char *pRoleName);
87 int FindKey(
const char *pIdent)
const;
88 bool CheckKey(
int Slot,
const char *pPw)
const;
96 const char *
KeyIdent(
int Slot)
const;
99 void UpdateKey(
int Slot,
const char *pPw,
const char *pRoleName);
105 bool AddRole(
const char *pName,
int Rank);
#define SALT_BYTES
Definition authmanager.h:14
Definition authmanager.h:62
unsigned char m_aSalt[8]
Definition authmanager.h:66
MD5_DIGEST m_Pw
Definition authmanager.h:65
char m_aIdent[64]
Definition authmanager.h:64
CRconRole * m_pRole
Definition authmanager.h:67
static const char * AuthLevelToRoleName(int AuthLevel)
Definition authmanager.cpp:19
void(*) FListCallback(const char *pIdent, const char *pRoleName, void *pUser)
Definition authmanager.h:79
const char * KeyIdent(int Slot) const
Definition authmanager.cpp:170
bool IsGenerated() const
Definition authmanager.cpp:222
int m_aDefault[3]
Definition authmanager.h:72
int DefaultIndex(int AuthLevel) const
Definition authmanager.cpp:147
CRconRole * FindRole(const char *pName)
Definition authmanager.cpp:235
int KeyLevel(int Slot) const
Definition authmanager.cpp:163
int AddKey(const char *pIdent, const char *pPw, const char *pRoleName)
Definition authmanager.cpp:106
void RemoveKey(int Slot)
Definition authmanager.cpp:114
bool IsValidIdent(const char *pIdent) const
Definition authmanager.cpp:177
static std::optional< int > RoleNameToAuthLevel(const char *pRoleName)
Definition authmanager.cpp:34
CAuthManager()
Definition authmanager.cpp:56
void Init()
Definition authmanager.cpp:68
bool AddRole(const char *pName, int Rank)
Definition authmanager.cpp:243
void UpdateKey(int Slot, const char *pPw, const char *pRoleName)
Definition authmanager.cpp:193
int DefaultKey(const char *pRoleName) const
Definition authmanager.cpp:152
void AddDefaultKey(const char *pRoleName, const char *pPw)
Definition authmanager.cpp:210
std::unordered_map< std::string, CRconRole > m_Roles
Definition authmanager.h:70
std::vector< CKey > m_vKeys
Definition authmanager.h:69
int NumNonDefaultKeys() const
Definition authmanager.cpp:227
void ListKeys(FListCallback pfnListCallback, void *pUser)
Definition authmanager.cpp:204
bool m_Generated
Definition authmanager.h:73
int AddKeyHash(const char *pIdent, MD5_DIGEST Hash, const unsigned char *pSalt, const char *pRoleName)
Definition authmanager.cpp:90
bool CheckKey(int Slot, const char *pPw) const
Definition authmanager.cpp:140
void UpdateKeyHash(int Slot, MD5_DIGEST Hash, const unsigned char *pSalt, const char *pRoleName)
Definition authmanager.cpp:182
int FindKey(const char *pIdent) const
Definition authmanager.cpp:131
Definition authmanager.h:32
const char * Name() const
Definition authmanager.h:38
int Rank() const
Definition authmanager.h:46
bool IsAdmin() const
Definition authmanager.h:49
char m_aName[64]
Definition authmanager.h:33
CRconRole(const char *pName, int Rank)
Definition authmanager.h:51
int m_Rank
Definition authmanager.h:34
int str_copy(char *dst, const char *src, int dst_size)
Definition str.cpp:18
Definition authmanager.h:17
const char *const ADMIN
Definition authmanager.h:18
const char *const MODERATOR
Definition authmanager.h:19
const char *const HELPER
Definition authmanager.h:20
Definition authmanager.h:24
static constexpr int HELPER
Definition authmanager.h:27
static constexpr int ADMIN
Definition authmanager.h:25
static constexpr int NONE
Definition authmanager.h:28
static constexpr int MODERATOR
Definition authmanager.h:26