📄 drservermanager.cpp
字号:
// -----------------------------
// Wrote by chan78 at 2001/03/16
// -----------------------------
#include "DrServerManager.h"
#ifdef __IS_PROXY_SERVER
bool AnswerToManager( LP_MANAGER_PACKET pPacket, DWORD dwLength )
{
pPacket->h.bPTCL = PTCL_MANAGER_ANSWER;
return g_pUserTable->SendToUser( pPacket->h.uTarget.dwTargetManagerID, (char *)pPacket, dwLength );
}
#else
bool AnswerToManager( LP_MANAGER_PACKET pPacket, DWORD dwLength )
{
pPacket->h.bPTCL = PTCL_MANAGER_ANSWER;
// 泅犁肺急 橇遏矫 辑滚啊 窍唱挥捞骨肺.
return g_pServerTable->SendToProxyServer( (char*)pPacket, dwLength );
}
#endif
// -------------------------------------------------------------------
// PROXY SERVER 侩
// -------------------------------------------------------------------
#ifdef __IS_PROXY_SERVER
bool OnRecvAuthMsgFromManager( USERINFO *pUserInfo, LP_MANAGER_PACKET pPacket, DWORD dwLength )
{
if( dwLength != sizeof( MGR_REQUEST_AUTH_PACKET ) )
{
return false;
}
if( pPacket->h.bPTCL != PTCL_MANAGER_QUERY )
{
return false;
}
if( pPacket->h.wCMD != MANAGER_CMD_AUTH )
{
return false;
}
if( pPacket->h.uTarget.wTargetServerID != g_pServerTable->GetOwnServerData()->wPort )
{
return false;
}
if( strcmp(pPacket->b.myMgrRequestAuthPacket.szID, MANAGER_ID) )
{
return false;
}
if( strcmp(pPacket->b.myMgrRequestAuthPacket.szPasswd, MANAGER_PASSWD) )
{
return false;
}
return true ;
}
bool OnRecvMsgFromManager( USERINFO *pUserInfo, LP_MANAGER_PACKET pPacket, DWORD dwLength )
{
char szSendMsg[MM_MAX_PACKET_SIZE];
LP_MANAGER_PACKET pSendPacket = (LP_MANAGER_PACKET)szSendMsg;
// 固府 盲况敌促. Answer 侩.
pSendPacket->h.bPTCL = PTCL_MANAGER_ANSWER;
pSendPacket->h.uTarget.dwTargetManagerID = pUserInfo->dwID;
// PROXY SERVER 牢 版快浚 捞 窃荐肺 逞败柳 菩哦狼 鸥百捞 郴啊 酒匆荐档 乐促.
// 促弗 辑滚肺 府促捞泛记.
if( pPacket->h.uTarget.wTargetServerID != g_pServerTable->GetOwnServerData()->wPort )
{
// 郴啊 贸府且 菩哦捞 酒聪促. Redirection.
LP_SERVER_DATA pServerData = g_pServerTable->GetServerData( pPacket->h.uTarget.wTargetServerID );
// 鸥百 辑滚啊 绝芭唱 立加登绢乐瘤 臼促.
if( !pServerData || !pServerData->dwConnectionIndex )
{
if( !AnswerToManager( pSendPacket, sizeof(MANAGER_PACKET_HEADER) ) )
{
MyLog( LOG_IMPORTANT, "MANAGER_CMD_TARGET_NOT_AVAILABLE :: Failed To Answer(dwID: %d, TargetServer:%d)", pUserInfo->dwID, pPacket->h.uTarget );
return true;
}
}
if( !g_pServerTable->Send( pServerData->dwConnectionIndex, (char *)pPacket, dwLength ) )
{
MyLog( LOG_IMPORTANT, "Failed To Send 'PTCL_MANAGER_QUERY' to (%d/Port:%d)", pServerData->dwConnectionIndex, pServerData->wPort );
}
return true;
}
// PROXY啊 流立 贸府且 巴甸.
switch( pPacket->h.wCMD )
{
case MANAGER_CMD_REQUEST_SERVER_STATUS:
{
pSendPacket->b.myMgrServerStatusPacket.dwNumOfUsers = g_pUserTable->GetUserNum();
pSendPacket->b.myMgrServerStatusPacket.dwTotalServerConnections = g_pServerTable->GetNumOfConnectedServers();
pSendPacket->b.myMgrServerStatusPacket.dwStatus = g_pServerTable->GetOwnServerData()->dwStatus;
sprintf( pSendPacket->b.myMgrServerStatusPacket.szServerName, "PROXY SERVER(%d)", g_pServerTable->GetOwnServerData()->wPort );
if( !AnswerToManager( pSendPacket, (sizeof(MANAGER_PACKET_HEADER) + sizeof(MGR_SERVER_STATUS_PACKET)) ) )
{
MyLog( LOG_NORMAL, "MANAGER_CMD_REQUEST_SERVER_STATUS :: Failed To Answer" );
break;
}
}
break;
default:
{
return false;
}
}
return true;
}
#endif
// -------------------------------------------------------------------
// Agent SERVER 侩
// -------------------------------------------------------------------
#ifdef __IS_AGENT_SERVER
bool OnRecvMsgFromManager( LP_MANAGER_PACKET pPacket, DWORD dwLength )
{
char szSendMsg[MM_MAX_PACKET_SIZE];
LP_MANAGER_PACKET pSendPacket = (LP_MANAGER_PACKET)szSendMsg;
// 固府 盲况敌促. Answer 侩.
pSendPacket->h.bPTCL = PTCL_MANAGER_ANSWER;
pSendPacket->h.uTarget.dwTargetManagerID = pPacket->h.uTarget.dwTargetManagerID;
switch( pPacket->h.wCMD )
{
case MANAGER_CMD_REQUEST_SERVER_STATUS:
{
pSendPacket->b.myMgrServerStatusPacket.dwNumOfUsers = g_pUserTable->GetUserNum();
pSendPacket->b.myMgrServerStatusPacket.dwTotalServerConnections = g_pServerTable->GetNumOfConnectedServers();
pSendPacket->b.myMgrServerStatusPacket.dwStatus = g_pServerTable->GetOwnServerData()->dwStatus;
sprintf( pSendPacket->b.myMgrServerStatusPacket.szServerName, "AGENT SERVER(%d)", g_pServerTable->GetOwnServerData()->wPort );
if( !AnswerToManager( pSendPacket, (sizeof(MANAGER_PACKET_HEADER) + sizeof(MGR_SERVER_STATUS_PACKET)) ) )
{
MyLog( LOG_NORMAL, "MANAGER_CMD_REQUEST_SERVER_STATUS :: Failed To Answer" );
break;
}
}
break;
default:
{
return false;
}
}
return true;
}
#endif
// -------------------------------------------------------------------
// Map SERVER 侩
// -------------------------------------------------------------------
#ifdef __IS_MAP_SERVER
extern char MapName[ MAX_PATH];
bool OnRecvMsgFromManager( LP_MANAGER_PACKET pPacket, DWORD dwLength )
{
char szSendMsg[MM_MAX_PACKET_SIZE];
LP_MANAGER_PACKET pSendPacket = (LP_MANAGER_PACKET)szSendMsg;
// 固府 盲况敌促. Answer 侩.
pSendPacket->h.bPTCL = PTCL_MANAGER_ANSWER;
pSendPacket->h.uTarget.dwTargetManagerID = pPacket->h.uTarget.dwTargetManagerID;
switch( pPacket->h.wCMD )
{
case MANAGER_CMD_REQUEST_SERVER_STATUS:
{
pSendPacket->b.myMgrServerStatusPacket.dwNumOfUsers = g_pServerTable->GetNumOfUsers();
pSendPacket->b.myMgrServerStatusPacket.dwTotalServerConnections = g_pServerTable->GetNumOfConnectedServers();
pSendPacket->b.myMgrServerStatusPacket.dwStatus = g_pServerTable->GetOwnServerData()->dwStatus;
sprintf( pSendPacket->b.myMgrServerStatusPacket.szServerName, "MAP SERVER(%d/%s)", g_pServerTable->GetOwnServerData()->wPort, MapName );
if( !AnswerToManager( pSendPacket, (sizeof(MANAGER_PACKET_HEADER) + sizeof(MGR_SERVER_STATUS_PACKET)) ) )
{
MyLog( LOG_NORMAL, "MANAGER_CMD_REQUEST_SERVER_STATUS :: Failed To Answer" );
break;
}
}
break;
default:
{
return false;
}
}
return true;
}
#endif
// -------------------------------------------------------------------
// DB Demon 侩
// -------------------------------------------------------------------
#ifdef __IS_DB_DEMON
bool OnRecvMsgFromManager( LP_MANAGER_PACKET pPacket, DWORD dwLength )
{
char szSendMsg[MM_MAX_PACKET_SIZE];
LP_MANAGER_PACKET pSendPacket = (LP_MANAGER_PACKET)szSendMsg;
// 固府 盲况敌促. Answer 侩.
pSendPacket->h.bPTCL = PTCL_MANAGER_ANSWER;
pSendPacket->h.uTarget.dwTargetManagerID = pPacket->h.uTarget.dwTargetManagerID;
switch( pPacket->h.wCMD )
{
case MANAGER_CMD_REQUEST_SERVER_STATUS:
{
pSendPacket->b.myMgrServerStatusPacket.dwNumOfUsers = g_pServerTable->GetNumOfUsers();
pSendPacket->b.myMgrServerStatusPacket.dwTotalServerConnections = g_pServerTable->GetNumOfConnectedServers();
pSendPacket->b.myMgrServerStatusPacket.dwStatus = g_pServerTable->GetOwnServerData()->dwStatus;
sprintf( pSendPacket->b.myMgrServerStatusPacket.szServerName, "DB DEMON(%d)", g_pServerTable->GetOwnServerData()->wPort );
if( !AnswerToManager( pSendPacket, (sizeof(MANAGER_PACKET_HEADER) + sizeof(MGR_SERVER_STATUS_PACKET)) ) )
{
MyLog( LOG_NORMAL, "MANAGER_CMD_REQUEST_SERVER_STATUS :: Failed To Answer" );
break;
}
}
break;
default:
{
return false;
}
}
return true;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -