Files
Client/Server/ToolProject/AuthGama/AuthGamaDlg.cpp
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

319 lines
8.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// AuthGamaDlg.cpp : ±¸Çö ÆÄÀÏ
//
#include "stdafx.h"
#include "AuthGama.h"
#include "AuthGamaDlg.h"
#include <Utility/Setup/ServerSetup.h>
#include <Log/ServerLog.h>
#include <DB/DBComponent.h>
#include <DB/AuthDBComponent.h>
extern "C"
{
#include <MD5/global.h>
#include <MD5/md5.h>
#include ".\authgamadlg.h"
}
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CAuthGamaDlg ´ëÈ­ »óÀÚ
static void MD5Print (unsigned char digest[16], char *szOutput)
{
for (unsigned int i = 0; i < 16; i++)
{
sprintf (szOutput + i * 2, "%02x", digest[i]);
}
}
static void MD5String (char *szString, char* szOutput)
{
MD5_CTX context;
unsigned char digest[16];
unsigned int len = static_cast<unsigned int>(strlen(szString));
MD5Init (&context);
MD5Update (&context, reinterpret_cast<unsigned char*>(szString), len);
MD5Final (digest, &context);
MD5Print (digest, szOutput);
}
CAuthGamaDlg::CAuthGamaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAuthGamaDlg::IDD, pParent)
, m_szAuthAccount(_T(""))
, m_szAuthPassword(_T(""))
, m_szAuthResult(_T(""))
, m_szMD5Password(_T(""))
, m_szMD5HashVal(_T(""))
, m_szFindUID(_T(""))
, m_szFindAccount(_T(""))
, m_szFoundUID(_T(""))
, m_szFoundAccount(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CAuthGamaDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_AUTH_USER, m_szAuthAccount);
DDX_Text(pDX, IDC_AUTH_PASSWD, m_szAuthPassword);
DDX_Text(pDX, IDC_AUTH_RESULT, m_szAuthResult);
DDX_Text(pDX, IDC_MD5_PASSWORD, m_szMD5Password);
DDX_Text(pDX, IDC_MD5_HASHVAL, m_szMD5HashVal);
DDX_Text(pDX, IDC_UID_IN, m_szFindUID);
DDX_Text(pDX, IDC_ACCOUNT_IN, m_szFindAccount);
DDX_Text(pDX, IDC_UID_OUT, m_szFoundUID);
DDX_Text(pDX, IDC_ACCOUNT_OUT, m_szFoundAccount);
DDX_Control(pDX, IDC_AUTH_BTN, m_btnAuth);
DDX_Control(pDX, IDC_MD5_CONVERT_BTN, m_btnMD5);
DDX_Control(pDX, IDC_FIND_BTN, m_btnFind);
}
BEGIN_MESSAGE_MAP(CAuthGamaDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_DB_CONNECT, OnBnClickedDbConnect)
ON_BN_CLICKED(IDC_AUTH_BTN, OnBnClickedAuthBtn)
ON_BN_CLICKED(IDC_MD5_CONVERT_BTN, OnBnClickedMd5ConvertBtn)
ON_BN_CLICKED(IDC_FIND_BTN, OnBnClickedFindBtn)
ON_EN_CHANGE(IDC_ACCOUNT_IN, OnEnChangeAccountIn)
ON_EN_CHANGE(IDC_UID_IN, OnEnChangeUidIn)
END_MESSAGE_MAP()
// CAuthGamaDlg ¸Þ½ÃÁö 󸮱â
BOOL CAuthGamaDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// ÀÌ ´ëÈ­ »óÀÚÀÇ ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢ÀÌ ´ëÈ­ »óÀÚ°¡ ¾Æ´Ò °æ¿ì¿¡´Â
// ÇÁ·¹ÀÓ¿öÅ©°¡ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù.
SetIcon(m_hIcon, TRUE); // Å« ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù.
SetIcon(m_hIcon, FALSE); // ÀÛÀº ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù.
// DB¿¡ ¿¬°áµÇ±â Àü±îÁö ¹öưÀ» ´©¸¦ ¼ö ¾øµµ·Ï ÇÕ´Ï´Ù.
m_btnAuth.EnableWindow(FALSE);
//m_btnMD5.EnableWindow(FALSE); // MD5 º¯È¯±â´ÉÀº DB¿¬°á¿¡ »ó°ü¾øÀÌ »ç¿ë°¡´ÉÇϵµ·Ï º¯°æ(by zun!)
m_btnFind.EnableWindow(FALSE);
// ·Î±×¸¦ ³²±âÁö ¾Ê½À´Ï´Ù.
g_Log.Disable(0xFFFFFFFF);
g_SessionLog.Disable(0xFFFFFFFF);
return TRUE; // ÄÁÆ®·Ñ¿¡ ´ëÇÑ Æ÷Ä¿½º¸¦ ¼³Á¤ÇÏÁö ¾ÊÀ» °æ¿ì TRUE¸¦ ¹ÝȯÇÕ´Ï´Ù.
}
// ´ëÈ­ »óÀÚ¿¡ ÃÖ¼ÒÈ­ ´ÜÃ߸¦ Ãß°¡ÇÒ °æ¿ì ¾ÆÀÌÄÜÀ» ±×¸®·Á¸é
// ¾Æ·¡ Äڵ尡 ÇÊ¿äÇÕ´Ï´Ù. ¹®¼­/ºä ¸ðµ¨À» »ç¿ëÇÏ´Â MFC ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °æ¿ì¿¡´Â
// ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù.
void CAuthGamaDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // ±×¸®±â¸¦ À§ÇÑ µð¹ÙÀ̽º ÄÁÅØ½ºÆ®
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Ŭ¶óÀÌ¾ðÆ® »ç°¢Çü¿¡¼­ ¾ÆÀÌÄÜÀ» °¡¿îµ¥¿¡ ¸ÂÃä´Ï´Ù.
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// ¾ÆÀÌÄÜÀ» ±×¸³´Ï´Ù.
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// »ç¿ëÀÚ°¡ ÃÖ¼ÒÈ­µÈ âÀ» ²ô´Â µ¿¾È¿¡ Ä¿¼­°¡ Ç¥½ÃµÇµµ·Ï ½Ã½ºÅÛ¿¡¼­
// ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
HCURSOR CAuthGamaDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CAuthGamaDlg::OnBnClickedDbConnect()
{
// ¼­¹ö¼Â¾÷¿¡¼­ ¼Â¾÷À» Àоî¿À°í, ÀÎÁõDB·Î ¿¬°áÀ» ÇÕ´Ï´Ù.
CString szError;
CDBComponent& DBComponent = CDBSingleObject::GetInstance();
if (!CServerSetup::GetInstance().Initialize(CServerSetup::AuthServer))
{
// ÀÎÁõ¼­¹ö Á¤º¸¸¦ Àд µ¥ ½ÇÆÐÇß½À´Ï´Ù.
szError.Format("Read AuthServer info failed");
}
else if (!DBComponent.Connect(CDBComponent::Class_AuthDB))
{
// ¿¬°á¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.
szError.Format("Connect DB failed : %s ", DBComponent.GetErrorString());
}
else
{
// ¿¬°á¿¡ ¼º°øÇÏ¿´½À´Ï´Ù.
m_btnAuth.EnableWindow(TRUE);
m_btnMD5.EnableWindow(TRUE);
m_btnFind.EnableWindow(TRUE);
SetWindowText(_T("AuthGama : AuthDB Connect Succeeded"));
}
if (!szError.IsEmpty())
{
AfxMessageBox(szError, MB_OK | MB_ICONERROR);
}
}
void CAuthGamaDlg::OnBnClickedAuthBtn()
{
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
UpdateData(TRUE);
DWORD dwUID = 0;
CDBComponent& DBComponent = CDBSingleObject::GetInstance();
char szPassword[33];
char szMD5String[33];
_snprintf(szPassword, 33, m_szAuthPassword);
szPassword[32] = 0;
MD5String(szPassword, szMD5String);
szMD5String[32] = 0;
if (!DBComponent::AuthDB::LoginAuthGama(DBComponent,
m_szAuthAccount, szMD5String, dwUID))
{
m_szAuthResult.Format(_T("DB Error : %s"), DBComponent.GetErrorString());
}
else if (dwUID < 100)
{
switch(dwUID)
{
case 1: m_szAuthResult.Format(_T("Invalid password")); break;
case 2: m_szAuthResult.Format(_T("Unknown Account")); break;
case 5: m_szAuthResult.Format(_T("Password failed more than 3")); break;
default: m_szAuthResult.Format(_T("Unknown Error")); break;
}
}
else
{
m_szAuthResult.Format(_T("%d"), dwUID);
}
UpdateData(FALSE);
}
void CAuthGamaDlg::OnBnClickedMd5ConvertBtn()
{
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
UpdateData(TRUE);
char szPassword[33];
char szMD5String[33];
_snprintf(szPassword, 33, m_szMD5Password);
szPassword[32] = 0;
MD5String(szPassword, szMD5String);
szMD5String[32] = 0;
m_szMD5HashVal.SetString(szMD5String);
UpdateData(FALSE);
}
void CAuthGamaDlg::OnBnClickedFindBtn()
{
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
UpdateData(TRUE);
const int MAX_BUFFER = 64;
CString szError;
CDBComponent& DBComponent = CDBSingleObject::GetInstance();
unsigned long dwUID = 0;
if (!m_szFindUID.IsEmpty() && (0 != (dwUID = atol(m_szFindUID))))
{
char szAccount[MAX_BUFFER];
if (DBComponent::AuthDB::GetGamaAccountByUID(DBComponent, dwUID, szAccount, MAX_BUFFER))
{
m_szFoundUID.Format(_T("%d"), dwUID);
m_szFoundAccount.SetString(szAccount);
}
else
{
szError.Format(_T("DB Error : %s"), DBComponent.GetErrorString());
}
}
else if (!m_szFindAccount.IsEmpty())
{
if (DBComponent::AuthDB::GetGamaUIDByAccount(DBComponent, m_szFindAccount, dwUID))
{
m_szFoundUID.Format(_T("%d"), dwUID);
m_szFoundAccount.SetString(m_szFindAccount);
}
else
{
szError.Format(_T("DB Error : %s"), DBComponent.GetErrorString());
}
}
if (!szError.IsEmpty())
{
AfxMessageBox(szError, MB_OK | MB_ICONERROR);
}
UpdateData(FALSE);
}
void CAuthGamaDlg::OnOK()
{
// TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù.
// CDialog::OnOK();
}
void CAuthGamaDlg::OnEnChangeAccountIn()
{
// TODO: RICHEDIT ÄÁÆ®·ÑÀÎ °æ¿ì ÀÌ ÄÁÆ®·ÑÀº
// CDialog::¸¶½ºÅ©¿¡ OR ¿¬»êÇÏ¿© ¼³Á¤µÈ ENM_CHANGE Ç÷¡±×¸¦ ÁöÁ¤ÇÏ¿©
// CRichEditCtrl().SetEventMask()¸¦ È£ÃâÇϵµ·Ï OnInitDialog() ÇÔ¼ö¸¦ ÀçÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é
// ÀÌ ¾Ë¸²À» º¸³»Áö ¾Ê½À´Ï´Ù.
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
UpdateData(TRUE);
m_szFindUID.Empty();
UpdateData(FALSE);
}
void CAuthGamaDlg::OnEnChangeUidIn()
{
// TODO: RICHEDIT ÄÁÆ®·ÑÀÎ °æ¿ì ÀÌ ÄÁÆ®·ÑÀº
// CDialog::¸¶½ºÅ©¿¡ OR ¿¬»êÇÏ¿© ¼³Á¤µÈ ENM_CHANGE Ç÷¡±×¸¦ ÁöÁ¤ÇÏ¿©
// CRichEditCtrl().SetEventMask()¸¦ È£ÃâÇϵµ·Ï OnInitDialog() ÇÔ¼ö¸¦ ÀçÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é
// ÀÌ ¾Ë¸²À» º¸³»Áö ¾Ê½À´Ï´Ù.
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
UpdateData(TRUE);
m_szFindAccount.Empty();
UpdateData(FALSE);
}