removed passpod

This commit is contained in:
savis
2025-09-01 21:33:09 +02:00
parent 4a943ed998
commit 530466fb17
15 changed files with 1 additions and 416 deletions

View File

@@ -67,8 +67,6 @@ enum EMisc
//LIMIT_GOLD //LIMIT_GOLD
GOLD_MAX = 2000000000, GOLD_MAX = 2000000000,
MAX_PASSPOD = 8 ,
//END_LIMIT_GOLD //END_LIMIT_GOLD

View File

@@ -271,36 +271,8 @@ enum
HEADER_DG_MAP_LOCATIONS = 0xfe, HEADER_DG_MAP_LOCATIONS = 0xfe,
HEADER_DG_P2P = 0xff, HEADER_DG_P2P = 0xff,
HEADER_GP_CONFIRM_PASSPOD = 1,
HEADER_PG_CONFIRM_PASSPOD = 2,
}; };
enum E_PASSPOD
{
E_PASSPOD_SUCCESS = 0,
E_PASSPOD_FAILED_PASSPOD_ERROR,
E_PASSPOD_FAILED_USER_NOT_FOUND,
E_PASSPOD_FAILED_SYSTEM_NOT_FOUND,
E_PASSPOD_FAILED_TOKEN_DISABLED,
E_PASSPOD_FAILED_EMPTY,
};
typedef struct SRequestConfirmPasspod
{
int32_t pid;
char passpod[MAX_PASSPOD + 1];
char login[LOGIN_MAX_LEN + 1];
} RequestConfirmPasspod;
typedef struct SResultConfirmPasspod
{
int32_t pid;
int32_t ret_code;
char login[LOGIN_MAX_LEN + 1];
} ResultConfirmPasspod;
/* ---------------------------------------------- /* ----------------------------------------------
* table * table
* ---------------------------------------------- * ----------------------------------------------

View File

@@ -32,7 +32,6 @@ int save_event_second_cycle = passes_per_sec * 120; // 3분
int ping_event_second_cycle = passes_per_sec * 60; int ping_event_second_cycle = passes_per_sec * 60;
bool g_bNoMoreClient = false; bool g_bNoMoreClient = false;
bool g_bNoRegen = false; bool g_bNoRegen = false;
bool g_bNoPasspod = false;
// TRAFFIC_PROFILER // TRAFFIC_PROFILER
bool g_bTrafficProfileOn = false; bool g_bTrafficProfileOn = false;

View File

@@ -17,9 +17,6 @@ extern WORD p2p_port;
extern char db_addr[ADDRESS_MAX_LEN + 1]; extern char db_addr[ADDRESS_MAX_LEN + 1];
extern WORD db_port; extern WORD db_port;
extern char passpod_addr[ADDRESS_MAX_LEN + 1];
extern WORD passpod_port;
extern int passes_per_sec; extern int passes_per_sec;
extern int save_event_second_cycle; extern int save_event_second_cycle;
extern int ping_event_second_cycle; extern int ping_event_second_cycle;

View File

@@ -19,40 +19,8 @@
#include "spam.h" #include "spam.h"
#include "auth_brazil.h" #include "auth_brazil.h"
extern bool g_bNoPasspod;
extern std::string g_stBlockDate; extern std::string g_stBlockDate;
//중국 passpod 전용 함수
bool CheckPasspod(const char * account)
{
char szQuery[1024];
snprintf(szQuery, sizeof(szQuery), "SELECT ID FROM passpod WHERE Login='%s'", account);
SQLMsg * pMsg = DBManager::instance().DirectQuery(szQuery);
if (!pMsg)
{
//fprintf(stderr, "cannot get the MATRIX\n");
sys_log(0, "cannot get the PASSPOD");
delete pMsg;
return false;
}
if (pMsg->Get()->uiNumRows == 0)
{
puts(szQuery);
sys_log(0, "[PASSPOD]DirectQuery failed(%s)", szQuery);
delete pMsg;
return false;
}
delete pMsg;
return true;
}
DBManager::DBManager() : m_bIsConnect(false) DBManager::DBManager() : m_bIsConnect(false)
{ {
} }
@@ -285,32 +253,8 @@ void DBManager::LoginPrepare(LPDESC d, uint32_t * pdwClientKey, int * paiPremium
MATRIX_CARD_COL(cols, 3) + 1, MATRIX_CARD_COL(cols, 3) + 1,
d->GetMatrixCode()); d->GetMatrixCode());
} }
else
{
if (LC_IsNewCIBN())
{
if (!g_bNoPasspod)
{
if (CheckPasspod(r.login))
{
BYTE id = HEADER_GC_REQUEST_PASSPOD;
d->Packet(&id, sizeof(BYTE));
sys_log(0, "%s request passpod", r.login);
}
else
{
SendAuthLogin(d);
} SendAuthLogin(d);
}
else
{
SendAuthLogin(d);
}
}
else
SendAuthLogin(d);
}
} }
void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg)

View File

@@ -17,7 +17,6 @@ extern LPFDWATCH main_fdw;
LPCLIENT_DESC db_clientdesc = NULL; LPCLIENT_DESC db_clientdesc = NULL;
LPCLIENT_DESC g_pkAuthMasterDesc = NULL; LPCLIENT_DESC g_pkAuthMasterDesc = NULL;
LPCLIENT_DESC g_NetmarbleDBDesc = NULL; LPCLIENT_DESC g_NetmarbleDBDesc = NULL;
LPCLIENT_DESC g_PasspodDesc = NULL;
static const char* GetKnownClientDescName(LPCLIENT_DESC desc) { static const char* GetKnownClientDescName(LPCLIENT_DESC desc) {
if (desc == db_clientdesc) { if (desc == db_clientdesc) {
@@ -26,8 +25,6 @@ static const char* GetKnownClientDescName(LPCLIENT_DESC desc) {
return "g_pkAuthMasterDesc"; return "g_pkAuthMasterDesc";
} else if (desc == g_NetmarbleDBDesc) { } else if (desc == g_NetmarbleDBDesc) {
return "g_NetmarbleDBDesc"; return "g_NetmarbleDBDesc";
} else if (desc == g_PasspodDesc) {
return "g_PasspodDesc";
} }
return "unknown"; return "unknown";
} }

View File

@@ -46,6 +46,5 @@ class CLIENT_DESC : public DESC
extern LPCLIENT_DESC db_clientdesc; extern LPCLIENT_DESC db_clientdesc;
extern LPCLIENT_DESC g_pkAuthMasterDesc; extern LPCLIENT_DESC g_pkAuthMasterDesc;
extern LPCLIENT_DESC g_NetmarbleDBDesc; extern LPCLIENT_DESC g_NetmarbleDBDesc;
extern LPCLIENT_DESC g_PasspodDesc;
#endif #endif

View File

@@ -23,7 +23,6 @@
#endif #endif
extern time_t get_global_time(); extern time_t get_global_time();
extern bool g_bNoPasspod;
bool IsEmptyAdminPage() bool IsEmptyAdminPage()
{ {
@@ -271,13 +270,6 @@ int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
else else
stResult = "YES"; stResult = "YES";
} }
else if (!stBuf.compare("IS_PASSPOD_UP"))
{
if (g_bNoPasspod)
stResult = "NO";
else
stResult = "YES";
}
//else if (!stBuf.compare("SHOWMETHEMONEY")) //else if (!stBuf.compare("SHOWMETHEMONEY"))
else if (stBuf == g_stAdminPagePassword) else if (stBuf == g_stAdminPagePassword)
{ {
@@ -381,16 +373,6 @@ int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
LogManager::instance().CharLog(0, 0, 0, 1, "NOTICE", msg.c_str(), d->GetHostName()); LogManager::instance().CharLog(0, 0, 0, 1, "NOTICE", msg.c_str(), d->GetHostName());
BroadcastNotice(msg.c_str()); BroadcastNotice(msg.c_str());
} }
else if (!stBuf.compare("CLOSE_PASSPOD"))
{
g_bNoPasspod = true;
stResult += "CLOSE_PASSPOD";
}
else if (!stBuf.compare("OPEN_PASSPOD"))
{
g_bNoPasspod = false;
stResult += "OPEN_PASSPOD";
}
else if (!stBuf.compare("SHUTDOWN")) else if (!stBuf.compare("SHUTDOWN"))
{ {
LogManager::instance().CharLog(0, 0, 0, 2, "SHUTDOWN", "", d->GetHostName()); LogManager::instance().CharLog(0, 0, 0, 2, "SHUTDOWN", "", d->GetHostName());

View File

@@ -362,7 +362,6 @@ class CInputAuth : public CInputProcessor
public: public:
void Login(LPDESC d, const char * c_pData); void Login(LPDESC d, const char * c_pData);
void PasspodAnswer(LPDESC d, const char * c_pData );
}; };

View File

@@ -6,7 +6,6 @@
#include "desc_manager.h" #include "desc_manager.h"
#include "protocol.h" #include "protocol.h"
#include "matrix_card.h" #include "matrix_card.h"
#include "passpod.h"
#include "locale_service.h" #include "locale_service.h"
#include "auth_brazil.h" #include "auth_brazil.h"
#include "db.h" #include "db.h"
@@ -263,10 +262,6 @@ int CInputAuth::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
Login(d, c_pData); Login(d, c_pData);
break; break;
case HEADER_CG_PASSPOD_ANSWER:
PasspodAnswer(d, c_pData);
break;
case HEADER_CG_HANDSHAKE: case HEADER_CG_HANDSHAKE:
break; break;
@@ -277,54 +272,3 @@ int CInputAuth::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
return iExtraLen; return iExtraLen;
} }
void CInputAuth::PasspodAnswer(LPDESC d, const char * c_pData)
{
if (!g_bAuthServer)
{
sys_err ("CInputAuth class is not for game server. IP %s might be a hacker.",
inet_ntoa(d->GetAddr().sin_addr));
d->DelayedDisconnect(5);
return;
}
TPacketCGPasspod * packet = (TPacketCGPasspod*)c_pData;
RequestConfirmPasspod Confirm;
memcpy(Confirm.passpod, packet->szAnswer, MAX_PASSPOD + 1);
memcpy(Confirm.login, d->GetAccountTable().login, LOGIN_MAX_LEN + 1);
if (!d->GetAccountTable().id)
{
sys_err("HEADER_CG_PASSPOD_ANSWER received to desc with no account table binded");
return;
}
int ret_code = 1;
sys_log(0, "Passpod start %s %s", d->GetAccountTable().login, packet->szAnswer);
ret_code = CPasspod::instance().ConfirmPasspod(d->GetAccountTable().login, packet->szAnswer);
if (ret_code != 0)
{
sys_log(0, "PASSPOD: wrong answer: %s ret_code %d", d->GetAccountTable().login, ret_code);
LoginFailure(d, ERR_MESSAGE[ret_code]);
if (!d->CheckMatrixTryCount())
{
LoginFailure(d, "QUIT");
d->SetPhase(PHASE_CLOSE);
}
}
else
{
sys_log(0, "PASSPOD: success: %s", d->GetAccountTable().login);
DBManager::instance().SendAuthLogin(d);
}
// g_PasspodDesc->DBPacket(HEADER_GP_CONFIRM_PASSPOD, 0, &Confirm, sizeof(Confirm));
// sys_log(0, "PASSPOD %s %d", Confirm.login, Confirm.passpod);
}

View File

@@ -46,7 +46,6 @@
#include "polymorph.h" #include "polymorph.h"
#include "blend_item.h" #include "blend_item.h"
#include "castle.h" #include "castle.h"
#include "passpod.h"
#include "ani.h" #include "ani.h"
#include "BattleArena.h" #include "BattleArena.h"
#include "over9refine.h" #include "over9refine.h"
@@ -484,7 +483,6 @@ int main(int argc, char **argv)
CTableBySkill SkillPowerByLevel; CTableBySkill SkillPowerByLevel;
CPolymorphUtils polymorph_utils; CPolymorphUtils polymorph_utils;
CProfiler profiler; CProfiler profiler;
CPasspod passpod;
CBattleArena ba; CBattleArena ba;
COver9RefineManager o9r; COver9RefineManager o9r;
SpamManager spam_mgr; SpamManager spam_mgr;

View File

@@ -94,9 +94,6 @@ enum
// HEADER_CG_ROULETTE = 200, // HEADER_CG_ROULETTE = 200,
// HEADER_CG_RUNUP_MATRIX_ANSWER = 201, // HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
//
HEADER_CG_PASSPOD_ANSWER = 202,
//NOTE : 이런 개XXX 정말 이거 Packet설계한 사람은 누구냐. 이렇게 코딩하고 밥이 넘어가나. //NOTE : 이런 개XXX 정말 이거 Packet설계한 사람은 누구냐. 이렇게 코딩하고 밥이 넘어가나.
//enum을 별도로 구별을 하던가. 아님 namepsace로 구별을 하던가.. //enum을 별도로 구별을 하던가. 아님 namepsace로 구별을 하던가..
//정말 packet generator까지는 바라지도 않는다. 이런 씨XX //정말 packet generator까지는 바라지도 않는다. 이런 씨XX
@@ -277,9 +274,6 @@ enum
// ROULETTE // ROULETTE
HEADER_GC_ROULETTE = 200, HEADER_GC_ROULETTE = 200,
// END_ROULETTE // END_ROULETTE
//
HEADER_GC_REQUEST_PASSPOD = 202,
HEADER_GC_REQUEST_PASSPOD_FAILED = 203,
HEADER_GC_SPECIFIC_EFFECT = 208, HEADER_GC_SPECIFIC_EFFECT = 208,
@@ -843,7 +837,6 @@ enum EPhase
PHASE_DBCLIENT, PHASE_DBCLIENT,
PHASE_P2P, PHASE_P2P,
PHASE_AUTH, PHASE_AUTH,
PHASE_PASSPOD,
}; };
typedef struct packet_phase typedef struct packet_phase
@@ -2127,18 +2120,6 @@ typedef struct command_runup_matrix_answer
char szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1]; char szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1];
} TPacketCGRunupMatrixAnswer; } TPacketCGRunupMatrixAnswer;
typedef struct packet_passpod
{
uint8_t bHeader;
char szAnswer[8+1];
} TPacketCGPasspod;
typedef struct packet_passpod_failed
{
uint8_t bHeader;
char szMessage[128];
} TPacketCGPasspodFailed;
typedef struct tag_GGSiege typedef struct tag_GGSiege
{ {
uint8_t bHeader; uint8_t bHeader;

View File

@@ -219,7 +219,6 @@ CPacketInfoCG::CPacketInfoCG()
Set(HEADER_CG_MALL_CHECKOUT, sizeof(TPacketCGSafeboxCheckout), "MallCheckout", true); Set(HEADER_CG_MALL_CHECKOUT, sizeof(TPacketCGSafeboxCheckout), "MallCheckout", true);
Set(HEADER_CG_SCRIPT_SELECT_ITEM, sizeof(TPacketCGScriptSelectItem), "ScriptSelectItem", true); Set(HEADER_CG_SCRIPT_SELECT_ITEM, sizeof(TPacketCGScriptSelectItem), "ScriptSelectItem", true);
Set(HEADER_CG_PASSPOD_ANSWER, sizeof(TPacketCGPasspod), "PasspodAnswer", true);
Set(HEADER_CG_DRAGON_SOUL_REFINE, sizeof(TPacketCGDragonSoulRefine), "DragonSoulRefine", false); Set(HEADER_CG_DRAGON_SOUL_REFINE, sizeof(TPacketCGDragonSoulRefine), "DragonSoulRefine", false);
Set(HEADER_CG_STATE_CHECKER, sizeof(BYTE), "ServerStateCheck", false); Set(HEADER_CG_STATE_CHECKER, sizeof(BYTE), "ServerStateCheck", false);

View File

@@ -1,196 +0,0 @@
#include "stdafx.h"
#include "constants.h"
#include "passpod.h"
extern BOOL g_test_server;
extern int test_server;
const char ERR_STRINGS[6][32] =
{
"AUTH_SUCCESS" ,
"AUTH_FAILURE:PASSPOD_ERROR" ,
"AUTH_FAILURE:USER_NOT_FOUND" ,
"AUTH_FAILURE:SYSTEM_NOT_FOUND" ,
"AUTH_FAILURE:TOKEN_DISABLED" ,
"AUTH_FAILURE:EMPTY",
};
const char ERR_MESSAGE[6][64] =
{
"SUCCESS",
"PASERR1",
"PASERR2",
"PASERR3",
"PASERR4",
"PASERR5"
};
CPasspod::CPasspod()
: m_sock(INVALID_SOCKET), m_lpFDW(NULL)
{
}
CPasspod::~CPasspod()
{
}
int CPasspod::ConfirmPasspod( const char * account, const char * passpod )
{
const char * servername = "1001";
const char * algname = "plaintext";
const char * posspod_server = "/passpod-server";
const char * auth = "/auth.s";
char szRequest[1024];
char szResult[1024];
char szTmp[128];
int ret_code = 1; // 0 이 성공
snprintf( szRequest, sizeof(szRequest), "username=%s&systemname=%s&passpod=%s&algname=%s", account, servername, passpod, algname );
snprintf( szResult, sizeof(szResult), "POST %s%s HTTP/1.0\r\n", posspod_server, auth );
snprintf( szTmp, sizeof(szTmp), "Host: %s\r\n", "218.99.6.103" );
strlcat( szResult, szTmp, sizeof(szResult) );
strlcat( szResult, "Content-type: application/x-www-form-urlencoded\r\n", sizeof(szResult) );
snprintf( szTmp, sizeof(szTmp), "Content-length: %d\r\n", strlen(szRequest));
strlcat( szResult, szTmp, sizeof(szResult) );
strlcat( szResult, "Connection: Close\r\n\r\n", sizeof(szResult) );
strlcat( szResult, szRequest, sizeof(szResult) );
if ( !Connect( NULL ) )
{
sys_log( 0, "PASSPOD : Can not connect to passpod server" );
Disconnect();
return ret_code;
}
int ret = socket_write( m_sock, (const char *)szResult, strlen(szResult));
sys_log( 0, "PASSPOD : Write End %s %s", account, passpod );
if ( test_server )
{
sys_log( 0, "PASSPOD : %s", szResult );
}
char Read[1024];
int nCount = 5;
while (--nCount)
{
ret = recv(m_sock, Read, 1024, 0);
if ( ret > 0 )
{
if ( test_server )
{
sys_log( 0, "PASSPOD : %d", ret );
}
break;
}
else
{
if ( test_server )
{
sys_log( 0, "PASSPOD : %d", ret );
}
Disconnect();
return ret_code;
}
}
sys_log( 0, "PASSPOD : Read End %s %s \n %s\n", account, passpod, Read );
char * pos = Read;
nCount = 15;
while ( --nCount )
{
int n = 0;
//라인넘기기
for (; pos[n]!='\n'; ++n ) {}
//\n에서 멈추기 하나더 남겨주자
pos = pos+n+1;
//Return Value 를 비교
if ( 0 == strncmp( pos, "AUTH_SUCCESS", strlen(ERR_STRINGS[0]) ) )
{
ret_code = E_PASSPOD_SUCCESS;
break;
}
if ( 0 == strncmp( pos, "AUTH_FAILURE:PASSPOD_ERROR", strlen(ERR_STRINGS[1]) ) )
{
ret_code = E_PASSPOD_FAILED_PASSPOD_ERROR;
break;
}
if ( 0 == strncmp( pos, "AUTH_FAILURE:USER_NOT_FOUND", strlen(ERR_STRINGS[2] ) ) )
{
ret_code = E_PASSPOD_FAILED_USER_NOT_FOUND;
break;
}
if ( 0 == strncmp( pos, "AUTH_FAILURE:SYSTEM_NOT_FOUND", strlen(ERR_STRINGS[3] ) ) )
{
ret_code = E_PASSPOD_FAILED_SYSTEM_NOT_FOUND;
break;
}
if ( 0 == strncmp( pos, "AUTH_FAILURE:TOKEN_DISABLED", strlen(ERR_STRINGS[4] ) ) )
{
ret_code = E_PASSPOD_FAILED_TOKEN_DISABLED;
break;
}
if ( 0 == strncmp( pos, "AUTH_FAILURE:EMPTY", strlen(ERR_STRINGS[5] ) ) )
{
ret_code = E_PASSPOD_FAILED_EMPTY;
break;
}
}
sys_log(0, "PASSPOD Ret Value = %s ", ERR_STRINGS[ret_code] );
this->Disconnect();
return ret_code;
}
bool CPasspod::Connect( LPFDWATCH fdw )
{
// m_lpFDW = fdw;
if ( m_sock != INVALID_SOCKET )
{
sys_err( "Sock != INVALID_SOCKET " );
return false;
}
m_sock = socket_connect( "218.99.6.103", 8080 );
if ( m_sock == INVALID_SOCKET )
{
sys_err( "Sock == INVALID_SOCKET " );
return false;
}
//fdwatch_add_fd( m_lpFDW, m_sock, this, FDW_READ, false );
//fdwatch_add_fd( m_lpFDW, m_sock, this, FDW_WRITE, false );
return true;
}
bool CPasspod::Disconnect()
{
//fdwatch_del_fd( m_lpFDW, m_sock );
socket_close(m_sock);
m_sock = INVALID_SOCKET;
return true;
}
bool CPasspod::IConv( const char * src, char * desc )
{
return true;
}

View File

@@ -1,28 +0,0 @@
#ifndef PASSPOD_H
#define PASSPOD_H
class CPasspod : public singleton<CPasspod>
{
public:
CPasspod();
~CPasspod();
int ConfirmPasspod( const char * account,const char* passpod );
bool Connect( LPFDWATCH fdw );
bool Disconnect();
private:
bool IConv( const char * src, char * desc );
private:
socket_t m_sock;
LPFDWATCH m_lpFDW;
};
extern const char ERR_STRINGS[6][32];
extern const char ERR_MESSAGE[6][64];
#endif