removed passpod
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
* ----------------------------------------------
|
* ----------------------------------------------
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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 );
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user