Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
156
Server/RylServerProject/RylChatServer/ChatServerConfig.cpp
Normal file
156
Server/RylServerProject/RylChatServer/ChatServerConfig.cpp
Normal file
@@ -0,0 +1,156 @@
|
||||
#include "stdafx.h"
|
||||
#include "ChatServerConfig.h"
|
||||
#include <Utility/Setup/ServerSetup.h>
|
||||
|
||||
const char* CChatServerConfig::ms_szDefaultSetupFileName = "./Script/Server/ChatServerConfig.txt";
|
||||
|
||||
CChatServerConfig& CChatServerConfig::GetInstance()
|
||||
{
|
||||
static CChatServerConfig chatServerConfig;
|
||||
return chatServerConfig;
|
||||
}
|
||||
|
||||
CChatServerConfig::CChatServerConfig()
|
||||
: m_lpLimitUserByIP(new CLimitUserByIP(0))
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
CChatServerConfig::~CChatServerConfig()
|
||||
{
|
||||
if(m_lpLimitUserByIP)
|
||||
{
|
||||
delete m_lpLimitUserByIP;
|
||||
m_lpLimitUserByIP = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//! <20><><EFBFBD>Ϸκ<CFB7><CEBA><EFBFBD> <20>¾<EFBFBD><C2BE><EFBFBD> <20>ε<EFBFBD><CEB5>Ѵ<EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.)
|
||||
bool CChatServerConfig::LoadSetup(const char* szFileName)
|
||||
{
|
||||
if(0 != m_lpLimitUserByIP)
|
||||
{
|
||||
m_lpLimitUserByIP->ClearIPList();
|
||||
m_lpLimitUserByIP->OperateMode(CLimitUserByIP::DENY_ALL);
|
||||
m_lpLimitUserByIP->ReserveAllowIP(256);
|
||||
m_ChatToolAuthMap.clear();
|
||||
|
||||
FILE* lpFile = fopen(szFileName, "rt");
|
||||
|
||||
if(lpFile)
|
||||
{
|
||||
const int MAX_BUFFER = 4096;
|
||||
char szBuffer[MAX_BUFFER];
|
||||
char* szToken = 0;
|
||||
|
||||
enum SetupMode
|
||||
{
|
||||
NONE,
|
||||
USER_PASSWORD,
|
||||
ALLOW_IP
|
||||
};
|
||||
|
||||
SetupMode eSetupMode = NONE;
|
||||
unsigned long dwAddress = 0;
|
||||
|
||||
std::string szUserID;
|
||||
std::string szPassword;
|
||||
|
||||
while(fgets(szBuffer, MAX_BUFFER - 1, lpFile))
|
||||
{
|
||||
szBuffer[MAX_BUFFER - 1] = 0;
|
||||
|
||||
szToken = strtok(szBuffer, "\r\n\t= ");
|
||||
if(0 != szToken)
|
||||
{
|
||||
char szTokenBuffer[MAX_BUFFER];
|
||||
strcpy(szTokenBuffer, szToken);
|
||||
|
||||
_strupr(szTokenBuffer);
|
||||
if(0 == strcmp(szTokenBuffer, "//"))
|
||||
{
|
||||
// <20>ּ<EFBFBD>ó<EFBFBD><C3B3>...
|
||||
continue;
|
||||
}
|
||||
else if(0 == strcmp(szTokenBuffer, "[USER]"))
|
||||
{
|
||||
eSetupMode = USER_PASSWORD;
|
||||
}
|
||||
else if(0 == strcmp(szTokenBuffer, "[ALLOW_IP]"))
|
||||
{
|
||||
eSetupMode = ALLOW_IP;
|
||||
|
||||
if (true == CServerSetup::GetInstance().GetChatToolIPCheck())
|
||||
{
|
||||
// <20>㰡<EFBFBD><E3B0A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>鸸 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֵ<EFBFBD><D6B5><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
m_lpLimitUserByIP->OperateMode(CLimitUserByIP::ALLOW_SOME);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_lpLimitUserByIP->OperateMode(CLimitUserByIP::ALLOW_ALL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(eSetupMode)
|
||||
{
|
||||
case USER_PASSWORD:
|
||||
szUserID.assign(szToken);
|
||||
szToken = strtok(0, "\r\n\t= ");
|
||||
if(0 != szToken)
|
||||
{
|
||||
szPassword.assign(szToken);
|
||||
m_ChatToolAuthMap.insert(
|
||||
std::make_pair(szUserID, std::make_pair(szPassword, 0)));
|
||||
}
|
||||
break;
|
||||
|
||||
case ALLOW_IP:
|
||||
dwAddress = inet_addr(szToken);
|
||||
if(0 != dwAddress)
|
||||
{
|
||||
m_lpLimitUserByIP->AddAllowIP(dwAddress);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
fclose(lpFile);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//! <20><><EFBFBD><EFBFBD> ID<49><44> <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD>带 <20>Ƽ<DEBE>, <20>¾<EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>ID/Password<72><64><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD>Ѵ<EFBFBD>.
|
||||
bool CChatServerConfig::Authorize(const char* szUserID, const char* szPassword)
|
||||
{
|
||||
ChatToolAuthMap::iterator pos = m_ChatToolAuthMap.find(szUserID);
|
||||
ChatToolAuthMap::iterator end = m_ChatToolAuthMap.end();
|
||||
|
||||
if (pos != end && 0 == pos->second.second &&
|
||||
0 == pos->second.first.compare(szPassword))
|
||||
{
|
||||
// <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD>·<EFBFBD> <20><>ȯ
|
||||
pos->second.second = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void CChatServerConfig::Logout(const char* szUserID)
|
||||
{
|
||||
ChatToolAuthMap::iterator pos = m_ChatToolAuthMap.find(szUserID);
|
||||
ChatToolAuthMap::iterator end = m_ChatToolAuthMap.end();
|
||||
|
||||
if (pos != end && 0 != pos->second.second)
|
||||
{
|
||||
// <20>αƿ<D7BE> <20><><EFBFBD>·<EFBFBD> <20><>ȯ
|
||||
pos->second.second = 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user