⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drservermanager.cpp

📁 Agent in c++ for DragonRaja
💻 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 + -