Exemplo n.º 1
0
void CustomQuest2ReqUser(PMSG_QUEST2_REQ_USER* lpMsg,int aIndex)
{
	char szName[MAX_IDSTRING+1];
	szName[MAX_IDSTRING] = '\0';

	memcpy(szName,lpMsg->szName,MAX_IDSTRING);

	PMSG_QUEST2_ANS_USER pMsg = {0};

	PHeadSubSetB((LPBYTE)&pMsg,0x65,0x11,sizeof(pMsg));

	pMsg.aIndex = lpMsg->aIndex;
	strcpy(pMsg.szName,szName);

	char szQuery[256];
	sprintf(szQuery,"SELECT QUEST_DATA FROM T_CustomQuest2 WHERE CHAR_NAME = '%s'",szName);

	switch( g_MyEventDB.ReadBlob(szQuery,&pMsg.m_UserData) )
	{
	case 0:
		sprintf(szQuery,"INSERT INTO T_CustomQuest2 (CHAR_NAME,QUEST_DATA) VALUES ('%s',?)",szName);
		g_MyEventDB.WriteBlob(szQuery,&pMsg.m_UserData,sizeof(pMsg.m_UserData));
		break;
	case sizeof(pMsg.m_UserData):
		break;
	default:
		return;
	}

	DataSend(aIndex,(LPBYTE)&pMsg,sizeof(pMsg));
}
int IsUser(char *szId, char *pass, char * JoominNumber, char & Block, int & DBNumber)
{
	char szQuery[512];

	sprintf(szQuery,"SELECT memb_guid, memb___id, sno__numb, bloc_code from MEMB_INFO WHERE memb___id='%s'",
		szId);

	if(g_JoinServerDB.Exec(szQuery) == FALSE)
	{
		g_Window.ServerLogAdd(ST_JOINSERVER,"error-L3 : ID:'%s' PASS:'******'",szId, pass);
		g_JoinServerDB.Clear();
		return 2;
	}
	
	if(g_JoinServerDB.Fetch() == SQL_NO_DATA)
	{
		g_JoinServerDB.Clear();

		if( g_JSInfo.bAutoreg == TRUE && strlen(szId) >= g_JSInfo.AutoRegMinLength && strlen(pass) >= g_JSInfo.AutoRegMinLength )
		{
			if( g_JSInfo.bMD5 == TRUE )
			{
				sprintf(szQuery,"INSERT INTO MEMB_INFO (memb___id,memb__pwd,bloc_code,ctl1_code) VALUES ('%s',dbo.fn_md5('%s','%s'),0,0)",
					szId,pass,szId);
			}
			else
			{
				sprintf(szQuery,"INSERT INTO MEMB_INFO (memb___id,memb__pwd,bloc_code,ctl1_code) VALUES ('%s','%s',0,0)",
					szId,pass);
			}

			if( g_JoinServerDB.Exec(szQuery) == FALSE )
			{
				g_Window.ServerLogAdd(ST_JOINSERVER,"error-L3 : ID:'%s' PASS:'******'",szId, pass);
				g_JoinServerDB.Clear();
				return 2;
			}

			g_JoinServerDB.Clear();
	
			sprintf(szQuery,"SELECT memb_guid, memb___id, sno__numb, bloc_code from MEMB_INFO WHERE memb___id='%s'",szId);
	
			if(g_JoinServerDB.Exec(szQuery) == FALSE)
			{
				g_Window.ServerLogAdd(ST_JOINSERVER,"error-L3 : ID:'%s' PASS:'******'",szId, pass);
				g_JoinServerDB.Clear();
				return 2;
			}

			if(g_JoinServerDB.Fetch() == SQL_NO_DATA)
			{
				g_JoinServerDB.Clear();
				return 2;
			}
		}
		else
		{
			return 2;
		}
	}

	DBNumber = g_JoinServerDB.GetInt("memb_guid");

	char szBlock[2]="";

	g_JoinServerDB.GetStr("sno__numb", JoominNumber);
	g_JoinServerDB.GetStr("bloc_code", szBlock);

	Block = szBlock[0];	

	if(g_JSInfo.bMD5 == TRUE)
	{
		BYTE btPass[16]={0};
		g_JoinServerDB.Clear();

		sprintf(szQuery,"SELECT memb__pwd FROM MEMB_INFO WHERE memb___id = '%s'",szId);
		if(g_JoinServerDB.ReadBlob(szQuery,btPass) <= 0)
		{
			g_JoinServerDB.Clear();
			return 0;
		}

		DWORD dwAccKey = MakeAccountKey(szId);
		MD5 pMD5Hash;

		if( pMD5Hash.MD5_CheckValue(pass, (char*)btPass, dwAccKey) == FALSE )
		{
			g_JoinServerDB.Clear();
			return 0;
		}
	}
	else
	{
		char szPass[MAX_IDSTRING+1] = {0};
		g_JoinServerDB.Clear();

		sprintf(szQuery,"SELECT memb__pwd FROM MEMB_INFO WHERE memb___id = '%s'",szId);

		if(g_JoinServerDB.Exec(szQuery) == FALSE || g_JoinServerDB.Fetch() == SQL_NO_DATA)
		{
			g_JoinServerDB.Clear();
			return 0;
		}

		g_JoinServerDB.GetStr("memb__pwd",szPass);
		g_JoinServerDB.Clear();

		if(strlen(szPass) < 1)
		{
			return 0;
		}

		if(strcmp(szPass,pass) != NULL)
		{
			return 0;
		}
	}

	g_JoinServerDB.Clear();
	return TRUE;
}