230 lines
6.1 KiB
C
230 lines
6.1 KiB
C
|
|
#pragma once
|
|
|
|
#include "SNetMessage.h"
|
|
// { Auth Server <-> Client
|
|
|
|
const unsigned short TM_AC_RESULT = 10000;
|
|
const unsigned short TM_CA_VERSION = 10001;
|
|
const unsigned short TM_AC_RESULT_WITH_STRING = 10002; /// 2011.05.20 GNE 방식 인증 - prodongi
|
|
const unsigned short TM_CA_ACCOUNT = 10010;
|
|
const unsigned short TM_CA_OTP_ACCOUNT = 10011;
|
|
const unsigned short TM_CA_IMBC_ACCOUNT = 10012; ///< floyd 3.11.1 iMBC 채널링 구현
|
|
const unsigned short TM_CA_RUSSIA_SID = 10013;
|
|
const unsigned short TM_AC_ACCOUNT_INFO = 10014;
|
|
|
|
const unsigned short TM_CA_SERVER_LIST = 10021;
|
|
const unsigned short TM_AC_SERVER_LIST = 10022;
|
|
const unsigned short TM_CA_SELECT_SERVER = 10023;
|
|
const unsigned short TM_AC_SELECT_SERVER = 10024;
|
|
const unsigned short TM_AC_UPDATE_PENDING_TIME = 10025;
|
|
// }
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// 업로드서버
|
|
const unsigned short TM_CU_LOGIN = 50005;
|
|
const unsigned short TM_UC_LOGIN_RESULT = 50006;
|
|
const unsigned short TM_CU_UPLOAD = 50007;
|
|
const unsigned short TM_UC_UPLOAD = 50008;
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#pragma pack( 1 )
|
|
|
|
struct TS_AC_RESULT : TS_MESSAGE
|
|
{
|
|
TS_AC_RESULT( unsigned short _request_msg_id, unsigned short _result, int _value ) : request_msg_id( _request_msg_id ), result( _result ), value( _value )
|
|
{
|
|
size = sizeof( *this );
|
|
id = TM_AC_RESULT;
|
|
set_check_sum();
|
|
}
|
|
|
|
unsigned short request_msg_id;
|
|
unsigned short result;
|
|
/** 1: 1이면 eula accept 함. 0이면 eula창 띄워야 함.
|
|
2: 1이면 경고창 띄움. 0이면 안 띄움. */
|
|
int value;
|
|
};
|
|
|
|
/// 2011.05.20 GNE 방식 인증 - prodongi
|
|
struct TS_AC_RESULT_WITH_STRING : TS_MESSAGE
|
|
{
|
|
TS_AC_RESULT_WITH_STRING( unsigned short _request_msg_id, unsigned short _result, int _value )
|
|
: request_msg_id( _request_msg_id ), result( _result ), value( _value ), strSize( 0 )
|
|
{
|
|
size = sizeof( *this );
|
|
id = TM_AC_RESULT_WITH_STRING;
|
|
set_check_sum();
|
|
}
|
|
|
|
unsigned short request_msg_id;
|
|
unsigned short result;
|
|
int value;
|
|
int strSize;
|
|
// 이하해당스트링날아옴
|
|
};
|
|
|
|
struct TS_CA_VERSION : TS_MESSAGE
|
|
{
|
|
TS_CA_VERSION() _INIT( TM_CA_VERSION )
|
|
char szVersion[20];
|
|
};
|
|
|
|
struct TS_CA_ACCOUNT : TS_MESSAGE
|
|
{
|
|
TS_CA_ACCOUNT() _INIT( TM_CA_ACCOUNT )
|
|
|
|
char account[GameRule::MAX_ACCOUNT_LEN + 1];
|
|
size_t password_en_len;
|
|
char password[GameRule::MAX_ACCOUNT_LEN + GameRule::MAX_CRYPTO_BLOCK_LEN + 1];
|
|
|
|
// 이후 아래와 같은 struct들이 줄줄이 따라 붙음
|
|
struct AdditionalInfo {
|
|
char type; // AdditionalInfoType enum이들어감
|
|
unsigned short size;
|
|
// 뒤로 data[size]가 붙어 날아 옴
|
|
};
|
|
|
|
enum AdditionalInfoType {
|
|
BLACKBOX,
|
|
MACADDRESS,
|
|
};
|
|
};
|
|
|
|
/// 대만 OTP 사용 한 웹 로그인
|
|
struct TS_CA_OTP_ACCOUNT : TS_MESSAGE
|
|
{
|
|
TS_CA_OTP_ACCOUNT() _INIT( TM_CA_OTP_ACCOUNT )
|
|
|
|
char account[ GameRule::MAX_ACCOUNT_LEN + 1 ]; // #2.1.12
|
|
size_t otp_en_len;
|
|
char OTP[48 + GameRule::MAX_CRYPTO_BLOCK_LEN];
|
|
};
|
|
|
|
/// floyd 3.11.1 iMBC 채널링 구현
|
|
struct TS_CA_IMBC_ACCOUNT : TS_MESSAGE
|
|
{
|
|
TS_CA_IMBC_ACCOUNT() _INIT( TM_CA_IMBC_ACCOUNT )
|
|
|
|
char account[ GameRule::MAX_ACCOUNT_LEN + 1 ]; ///< #2.1.12 // 실제 계정 이름 뒤에 5바이트 여유 필요(최대 MAX_ACCOUNT_LEN - 5 길이 사용 가능)
|
|
size_t password_en_len;
|
|
char password[48 + GameRule::MAX_CRYPTO_BLOCK_LEN];
|
|
};
|
|
|
|
|
|
struct TS_CA_RUSSIA_SID : TS_MESSAGE
|
|
{
|
|
TS_CA_RUSSIA_SID() _INIT( TM_CA_RUSSIA_SID )
|
|
|
|
size_t sid_en_len;
|
|
char sid[ GameRule::MAX_ACCOUNT_LEN + GameRule::MAX_CRYPTO_BLOCK_LEN];
|
|
};
|
|
|
|
struct TS_AC_ACCOUNT_INFO : TS_MESSAGE
|
|
{
|
|
TS_AC_ACCOUNT_INFO() _INIT( TM_AC_ACCOUNT_INFO )
|
|
|
|
char account[GameRule::MAX_ACCOUNT_LEN + 1];
|
|
int user_no;
|
|
};
|
|
|
|
struct TS_CA_SERVER_LIST : TS_MESSAGE
|
|
{
|
|
TS_CA_SERVER_LIST() _INIT( TM_CA_SERVER_LIST )
|
|
};
|
|
|
|
struct TS_CA_SELECT_SERVER : TS_MESSAGE
|
|
{
|
|
TS_CA_SELECT_SERVER() _INIT( TM_CA_SELECT_SERVER )
|
|
unsigned short server_idx;
|
|
};
|
|
|
|
|
|
|
|
struct TS_AC_SELECT_SERVER : TS_MESSAGE
|
|
{
|
|
TS_AC_SELECT_SERVER() _INIT( TM_AC_SELECT_SERVER )
|
|
|
|
unsigned short result;
|
|
size_t one_time_key_en_len;
|
|
unsigned char one_time_key[sizeof( __int64 ) + GameRule::MAX_CRYPTO_BLOCK_LEN];
|
|
AR_TIME pending_time;
|
|
};
|
|
|
|
const unsigned short TM_CS_ACCOUNT_WITH_AUTH = 2005;
|
|
|
|
struct TS_CS_ACCOUNT_WITH_AUTH : TS_MESSAGE
|
|
{
|
|
TS_CS_ACCOUNT_WITH_AUTH() _INIT( TM_CS_ACCOUNT_WITH_AUTH )
|
|
|
|
char account[ GameRule::MAX_ACCOUNT_LEN + 1 ]; // #2.1.12
|
|
__int64 one_time_key;
|
|
};
|
|
|
|
struct TS_SERVER_INFO
|
|
{
|
|
unsigned short server_idx;
|
|
char server_name[21];
|
|
bool is_adult_server;
|
|
char server_screenshot_url[256];
|
|
char server_ip[16];
|
|
int server_port;
|
|
unsigned short user_ratio;
|
|
};
|
|
|
|
struct TS_AC_SERVER_LIST : TS_MESSAGE
|
|
{
|
|
TS_AC_SERVER_LIST() _INIT( TM_AC_SERVER_LIST )
|
|
|
|
unsigned short last_login_server_idx;
|
|
unsigned short count;
|
|
// 이 아래로 TS_SERVER_INFO 들이 붙게 됨
|
|
};
|
|
|
|
struct TS_AC_UPDATE_PENDING_TIME : TS_MESSAGE
|
|
{
|
|
TS_AC_UPDATE_PENDING_TIME() _INIT( TM_AC_UPDATE_PENDING_TIME )
|
|
|
|
AR_TIME pending_time;
|
|
};
|
|
|
|
|
|
|
|
struct TS_CU_LOGIN : TS_MESSAGE
|
|
{
|
|
TS_CU_LOGIN() _INIT( TM_CU_LOGIN )
|
|
|
|
int client_id;
|
|
int account_id;
|
|
int guild_id;
|
|
int one_time_password;
|
|
char raw_server_name[32];
|
|
};
|
|
|
|
struct TS_UC_LOGIN_RESULT : TS_MESSAGE
|
|
{
|
|
TS_UC_LOGIN_RESULT() _INIT( TM_UC_LOGIN_RESULT )
|
|
|
|
unsigned short result;
|
|
};
|
|
|
|
struct TS_CU_UPLOAD : TS_MESSAGE
|
|
{
|
|
TS_CU_UPLOAD() _INIT( TM_CU_UPLOAD )
|
|
|
|
int file_length;
|
|
};
|
|
|
|
struct TS_UC_UPLOAD : TS_MESSAGE
|
|
{
|
|
TS_UC_UPLOAD() _INIT( TM_UC_UPLOAD )
|
|
|
|
unsigned short result;
|
|
};
|
|
|
|
|
|
|
|
#pragma pack()
|