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>
207 lines
4.8 KiB
C++
207 lines
4.8 KiB
C++
// Admin.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "GameDBTool.h"
|
|
#include "Admin.h"
|
|
|
|
#include "GameDBTool.h"
|
|
#include "GameDBToolDlg.h"
|
|
#include ".\admin.h"
|
|
|
|
// CAdmin 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CAdmin, CDialog)
|
|
CAdmin::CAdmin(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CAdmin::IDD, pParent)
|
|
, m_UserID(_T(""))
|
|
, m_SIP(_T(""))
|
|
, m_EIP(_T(""))
|
|
{
|
|
}
|
|
|
|
CAdmin::~CAdmin()
|
|
{
|
|
}
|
|
|
|
void CAdmin::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Text(pDX, IDC_UID, m_UserID);
|
|
DDX_Control(pDX, IDC_LEVEL, m_Level);
|
|
DDX_Text(pDX, IDC_S_IP, m_SIP);
|
|
DDX_Text(pDX, IDC_E_IP, m_EIP);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CAdmin, CDialog)
|
|
ON_BN_CLICKED(IDC_MODIFY, OnBnClickedModify)
|
|
ON_EN_CHANGE(IDC_S_IP, OnEnChangeSIp)
|
|
ON_WM_CTLCOLOR()
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CAdmin 메시지 처리기입니다.
|
|
BOOL CAdmin::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
|
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
|
|
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
|
|
|
|
ADMIN Admin = {0,};
|
|
|
|
char Query[256] = "";
|
|
sprintf(Query, "SELECT * FROM AdminList WHERE UID='%d'", m_UID);
|
|
|
|
int Rows = 0;
|
|
if(!CDBSingleObject::GetInstance().Select( Query, (void **)&Admin, sizeof(ADMIN), 0, 1, &Rows))
|
|
{
|
|
pDlgWnd->m_Log.LogPrint("[영자] 영자 정보 읽기중에 오류가 발생. %s", CDBSingleObject::GetInstance().GetErrorString());
|
|
}
|
|
|
|
if(0 == Rows)
|
|
{
|
|
pDlgWnd->m_Log.LogPrint("[영자] 영자 정보 읽기중에 오류가 발생. %s", CDBSingleObject::GetInstance().GetErrorString());
|
|
}
|
|
|
|
m_UserID.Format("%d", m_UID);
|
|
|
|
m_Level.InsertString(0, "None");
|
|
m_Level.InsertString(1, "Admin LV1");
|
|
m_Level.InsertString(2, "Admin LV2");
|
|
m_Level.InsertString(3, "Admin LV3");
|
|
|
|
|
|
// 운영자 정보 창 띄었을때 현재 레벨 표시
|
|
switch(Admin.Level)
|
|
{
|
|
case 0: m_Level.SetCurSel(0); break;
|
|
case 1: m_Level.SetCurSel(1); break;
|
|
case 2: m_Level.SetCurSel(2); break;
|
|
case 3: m_Level.SetCurSel(3); break;
|
|
}
|
|
// 운영자 정보 창 띄었을때 현재 아이피 셋팅 표시
|
|
m_SIP = Admin.IP_S;
|
|
m_EIP = Admin.IP_E;
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
|
}
|
|
|
|
void CAdmin::OnBnClickedModify()
|
|
{
|
|
UpdateData();
|
|
|
|
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
|
|
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
|
|
|
|
IN_ADDR SAddr = {0,};
|
|
IN_ADDR EAddr = {0,};
|
|
|
|
SAddr.S_un.S_addr = inet_addr(m_SIP.GetBuffer(0));
|
|
EAddr.S_un.S_addr = inet_addr(m_EIP.GetBuffer(0));
|
|
|
|
if((SAddr.S_un.S_un_b.s_b1 != EAddr.S_un.S_un_b.s_b1) || (SAddr.S_un.S_un_b.s_b2 != EAddr.S_un.S_un_b.s_b2) ||
|
|
(SAddr.S_un.S_un_b.s_b3 != EAddr.S_un.S_un_b.s_b3))
|
|
{
|
|
MessageBox("IP 대역이 잘못 되었습니다.");
|
|
return;
|
|
}
|
|
|
|
char Query[256] = "";
|
|
switch(m_Level.GetCurSel())
|
|
{
|
|
case 0: // 일반
|
|
{
|
|
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
|
|
0, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
|
|
}break;
|
|
|
|
case 1: // 운영자 LV1
|
|
{
|
|
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
|
|
1, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
|
|
}break;
|
|
|
|
case 2: // 운영자 LV2
|
|
{
|
|
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
|
|
2, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
|
|
}break;
|
|
case 3: // 운영자 LV3
|
|
{
|
|
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
|
|
3, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
|
|
}break;
|
|
}
|
|
|
|
int Rows = 0;
|
|
if(!CDBSingleObject::GetInstance().ExecuteQuery(Query))
|
|
{
|
|
pDlgWnd->m_Log.LogPrint("[영자] 레벨 변환중에 오류가 발생. %s", CDBSingleObject::GetInstance().GetErrorString());
|
|
}
|
|
|
|
CAdmin::OnOK();
|
|
}
|
|
|
|
void CAdmin::OnEnChangeSIp()
|
|
{
|
|
UpdateData();
|
|
m_EIP = m_SIP;
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
bool CAdminDB::Initialize(void)
|
|
{
|
|
char Query[256] = "";
|
|
|
|
memset(&m_AdminList, 0, sizeof(unsigned long) * MaxList);
|
|
|
|
sprintf(Query, "SELECT UID FROM AdminList");
|
|
if(!CDBSingleObject::GetInstance().Select( Query, (void **)m_AdminList, sizeof(DWORD), 0, MaxList, &m_AdminNum))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
unsigned short CAdminDB::GetAdminLevel(unsigned long UID)
|
|
{
|
|
for(int Count = 0; Count < m_AdminNum; ++Count)
|
|
if(m_AdminList[Count] == UID)
|
|
{
|
|
return Level::L1;
|
|
}
|
|
|
|
return Level::None;
|
|
}
|
|
HBRUSH CAdmin::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
|
{
|
|
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
|
|
|
|
// TODO: 여기서 DC의 특성을 변경합니다.
|
|
|
|
HBRUSH m_hBrush;
|
|
|
|
m_hBrush = CreateSolidBrush(RGB( 255, 169, 128));
|
|
|
|
switch( nCtlColor ){
|
|
case CTLCOLOR_DLG:
|
|
pDC->SetBkColor(RGB( 255, 255, 255));
|
|
pDC->SetTextColor(RGB( 0, 0, 0));
|
|
return m_hBrush;
|
|
break;
|
|
case CTLCOLOR_STATIC:
|
|
pDC->SetBkColor(RGB( 255, 169, 128));
|
|
pDC->SetTextColor(RGB( 0, 0, 0));
|
|
return m_hBrush;
|
|
break;
|
|
default:
|
|
return hbr;
|
|
break;
|
|
}
|
|
}
|