Files
Sun1602/ProgramCommon/SunAuth/AuthProtocol.h
T
2022-10-26 12:25:11 +08:00

230 lines
8.1 KiB
C

#ifndef __AUTH_PROTOCOL_H__
#define __AUTH_PROTOCOL_H__
#include <SunAuth/AuthDefine.h>
#include <PacketStruct.h>
#pragma pack(push, 1)
//-------------------------------------------------------------------------------------------------------
// * Prefix
// C : Client
// G : Game Agent
// F : Login Front
// A : Auth Agent
// B : Billing Server
// R : RTT Agent
// S : Auth Server
//
// * Postfix
// SYN - Server에 요청
// ACK - 요청에 대한 허락
// NAK - 요청에 대한 거부
// CMD - Server의 명령
// BRD - Server가 동기화 관련 내용을 알림
//
// * 프로토콜 Naming Rule
// Prefix_카테고리명_프로토콜명_Postfix
// ex) CG_CONNECTION_REGISTER_SYN
//
//-------------------------------------------------------------------------------------------------------
#define PACKET_INTERNAL_OPEN( c, p ) \
struct MSG_##p : public MSG_BASE_INTERNAL { MSG_##p(){ m_byCategory = c; m_byProtocol = p; }
#define PACKET_INTERNAL_CLOSE };
#define PACKET_INTERNAL_INHERITED_OPEN( c, p, base_ ) \
struct MSG_##p : public base_ { MSG_##p() { m_byCategory = c; m_byProtocol = p; }
#define PACKET_INTERNAL_INHERITED_CLOSE };
enum eCATEGORY_AUTH
{
CATEGORY_AUTH = 51,
};
// 로그인 인증
enum ePROTOCOL_AUTH
{
// 접속후 LoginFront에서 최초로 클라이언트로 보냄
FC_AUTH_READY_CMD,
// 클라이언트가 접속 요청(버전확인)
CF_AUTH_VERIFY_SYN,
FC_AUTH_VERIFY_ACK,
// ID, PW 체크 - START!
CF_AUTH_ID_PASSWORD_CHECK_SYN,
FS_AUTH_ID_PASSWORD_CHECK_SYN,
// Channeling AuthToken : __KR000000_090128_CHANNELING__
//< Peer-to-Peer간 프로토콜을 분리하지 말자.
//분산처리 프로그래밍의 극악의 방법 중에 하나다.
CF_AUTH_TOKEN_PASS_SYN = CF_AUTH_ID_PASSWORD_CHECK_SYN,
FS_AUTH_TOKEN_PASS_SYN = FS_AUTH_ID_PASSWORD_CHECK_SYN,
// 'NorthA' Channeling AuthToken : __NA000000_NORTH_AMERICA_HANGAME_CHANNELING__
CF_AUTH_TOKEN_NORTHA_PASS_SYN = CF_AUTH_TOKEN_PASS_SYN,
FS_AUTH_TOKEN_NORTHA_PASS_SYN = FS_AUTH_TOKEN_PASS_SYN,
// 'Global' Channeling AuthToken : __NA000000_GLOBAL_AUTH_PROCESS__
CF_AUTH_TOKEN_GLOBAL_PASS_SYN = CF_AUTH_TOKEN_NORTHA_PASS_SYN,
FS_AUTH_TOKEN_GLOBAL_PASS_SYN = FS_AUTH_TOKEN_NORTHA_PASS_SYN,
//일본 게임츄 로그인
CF_AUTH_TOKEN_JP_GAMECHU_SYN = CF_AUTH_TOKEN_GLOBAL_PASS_SYN,
FS_AUTH_TOKEN_JP_GAMECHU_SYN = FS_AUTH_TOKEN_GLOBAL_PASS_SYN,
//dev : CF, FS SYN 프로토콜 정의 정의
// 'Russia' Ingamba auth process
CF_AUTH_PASS_RU_INGAMBA_SYN = CF_AUTH_TOKEN_JP_GAMECHU_SYN,
FS_AUTH_PASS_RU_INGAMBA_SYN = FS_AUTH_TOKEN_JP_GAMECHU_SYN,
//!~ _CN_ZY_AUTH_PROCESS
CF_AUTH_ZY_PASSWORD_CHECK_SYN = CF_AUTH_PASS_RU_INGAMBA_SYN,
FS_AUTH_ZY_PASSWORD_CHECK_SYN = FS_AUTH_PASS_RU_INGAMBA_SYN,
//~! _CN_ZY_AUTH_PROCESS
// ID, PW 체크 - 형상 인증
SF_AUTH_SHAPE_SYN,
FC_AUTH_SHAPE_SYN,
CF_AUTH_SHAPE_ACK,
FS_AUTH_SHAPE_ACK,
// ID, PW 체크 - 매트릭스 카드 인증
SF_AUTH_MATRIX_CARD_SYN,
FC_AUTH_MATRIX_CARD_SYN,
CF_AUTH_MATRIX_CARD_ACK,
FS_AUTH_MATRIX_CARD_ACK,
//_JP000000_ONETIMEPASSWORD_AUTHFLOW_
CF_AUTH_OTP_PASS_CMD = SF_AUTH_MATRIX_CARD_SYN, // S -> C (show OTP windows, ref: packet)
CF_AUTH_OTP_PASS_SYN = FC_AUTH_MATRIX_CARD_SYN, // C -> S (retry with OTP)
CF_AUTH_OTP_PASS_ACK = CF_AUTH_MATRIX_CARD_ACK, // S -> C (if success then next, if fail then retry 'show OTP window')
AU_AUTH_OTP_PASS_CMD = CF_AUTH_OTP_PASS_CMD, // S -> F (ref: CF_AUTH_OTP_PASS_CMD)
AU_AUTH_OTP_PASS_SYN = CF_AUTH_OTP_PASS_SYN, // F -> S (ref: CF_AUTH_OTP_PASS_SYN)
AU_AUTH_OTP_PASS_ACK = CF_AUTH_OTP_PASS_ACK, // S -> F (ref: CF_AUTH_OTP_PASS_ACK)
//__CN_20100909_SECURITY_TOKEN__
CF_AUTH_SECURITY_TOKEN_SYN = FC_AUTH_MATRIX_CARD_SYN, // C -> S (retry with OTP)
CF_AUTH_SECURITY_TOKEN_ACK = CF_AUTH_MATRIX_CARD_ACK, // S -> C (if success then next, if fail then retry 'show OTP window')
AU_AUTH_SECURITY_TOKEN_SYN = CF_AUTH_SECURITY_TOKEN_SYN, // F -> S
AU_AUTH_SECURITY_TOKEN_ACK = CF_AUTH_SECURITY_TOKEN_ACK, // S -> F
//
// NOTE: security protocol last boundary (4/4)
AU_AUTH_OTP_PASS_RESERVED_SLOT = FS_AUTH_MATRIX_CARD_ACK, // no specification, reserved slot
//
// ID, PW 체크 - END!
SF_AUTH_ID_PASSWORD_CHECK_ACK,
FC_AUTH_ID_PASSWORD_CHECK_ACK,
// Channeling AuthToken : __KR000000_090128_CHANNELING__
SF_AUTH_TOKEN_PASS_ACK = SF_AUTH_ID_PASSWORD_CHECK_ACK,
FC_AUTH_TOKEN_PASS_ACK = FC_AUTH_ID_PASSWORD_CHECK_ACK,
// Server Select Facility : __NA001334_090420_SERVER_SELECT_FACILITY__
SF_AUTH_REAUTH_PASS_ACK = SF_AUTH_TOKEN_PASS_ACK,
FC_AUTH_REAUTH_PASS_ACK = FC_AUTH_TOKEN_PASS_ACK,
// NorthA Channeling AuthToken : __NA000000_NORTH_AMERICA_HANGAME_CHANNELING__
SF_AUTH_TOKEN_NORTHA_PASS_ACK = SF_AUTH_REAUTH_PASS_ACK,
FC_AUTH_TOKEN_NORTHA_PASS_ACK = FC_AUTH_REAUTH_PASS_ACK,
// 'Global' Channeling AuthToken : __NA000000_GLOBAL_AUTH_PROCESS__
SF_AUTH_TOKEN_GLOBAL_PASS_ACK = SF_AUTH_TOKEN_NORTHA_PASS_ACK,
FC_AUTH_TOKEN_GLOBAL_PASS_ACK = FC_AUTH_TOKEN_NORTHA_PASS_ACK,
//dev : SF, FC ACK 프로토콜 정의
// 'Russia' Ingamba Auth process : _RU_INGAMBA_AUTH_PROCESS
SF_AUTH_PASS_RU_INGAMBA_ACK = SF_AUTH_TOKEN_GLOBAL_PASS_ACK,
FC_AUTH_PASS_RU_INGAMBA_ACK = FC_AUTH_TOKEN_GLOBAL_PASS_ACK,
// 서버 목록 요청
CF_AUTH_SERVER_LIST_SYN,
SF_AUTH_SERVER_LIST_NTF,
FC_AUTH_SERVER_LIST_WORLD_ACK,
FC_AUTH_SERVER_LIST_CHANNEL_ACK,
// 서버 선택 - START!
CF_AUTH_SERVER_SELECT_SYN,
FS_AUTH_SERVER_SELECT_SYN,
// 서버 선택 - GameAgent 검증 및 미리 알림
SA_AUTH_NEWCLIENT_TO_GAMEAGENT_SYN,
AG_AUTH_NEWCLIENT_TO_GAMEAGENT_SYN,
GA_AUTH_NEWCLIENT_TO_GAMEAGENT_ACK,
AS_AUTH_NEWCLIENT_TO_GAMEAGENT_ACK,
// 서버 선택 - END!
SF_AUTH_SERVER_SELECT_ACK,
FC_AUTH_SERVER_SELECT_ACK,
// PC LOGIN, LOGOUT CMD From GameAgent
GA_AUTH_PC_LOGIN_CMD,
AS_AUTH_PC_LOGIN_CMD,
GA_AUTH_PC_LOGOUT_CMD,
AS_AUTH_PC_LOGOUT_CMD,
// PC LOGOUT ASK To GameAgent
SA_AUTH_ASK_PC_LOGOUT_SYN,
AG_AUTH_ASK_PC_LOGOUT_SYN,
GA_AUTH_ASK_PC_LOGOUT_ACK,
AS_AUTH_ASK_PC_LOGOUT_ACK,
// GameAgent LOGIN
AS_AUTH_GAMEAGENT_LOGIN_CMD,
// Billing 마감을 GameAgnet에 알림
SA_AUTH_BILLING_ALARM_CMD,
AG_AUTH_BILLING_ALARM_SYN,
GA_AUTH_BILLING_ALARM_ACK,
// Client Disconnect 통지 받음 From LoginFront
FS_AUTH_CLIENT_DISCONNECT_CMD,
// Client Disconnect 명령 내림 To LoginFront
SF_AUTH_CLIENT_DISCONNECT_CMD,
// PC Name과 UserCount NTF From GameAgent
GA_AUTH_PC_NAME_NTF,
AS_AUTH_PC_NAME_NTF,
GA_AUTH_USER_COUNT_NTF,
AS_AUTH_USER_COUNT_NTF,
// NTF To LoginFront
SF_AUTH_GAME_VERSION_NTF,
SF_AUTH_CONTROL_IPLIST_NTF,
// NTF To AuthAgent
SA_AUTH_AGENT_IP_LIST_NTF,
// 서버 선택 기능 지원용 __NA001334_090420_SERVER_SELECT_FACILITY__
CF_AUTH_REAUTH_PASS_SYN,
FS_AUTH_REAUTH_PASS_SYN,
//----------------------------------------------------------------------------------------------
// 서버 선택 기능 지원 (AuthServer <-> AgentServer) __NA001334_090420_SERVER_SELECT_FACILITY__
// (WAVERIX) (NOTE) 도저히 프로토콜 혼란스러워 안되겠다.
// 서버 계열(AuthAgent계열 모두 제거할 예정, 이후 실제 AuthAgent도 제거예정)
AU_AUTH_SERVER_SELECT_SYN, // AgentServer -> (AuthAgent) -> AuthServer
AU_AUTH_SERVER_SELECT_ACK, // AuthServer -> (AuthAgent) -> AgentServer
AU_AUTH_COMMON_QUERY_USER_ID_SYN, //__NA000000_SHOP_USERID_50_PASSING_PROC__
AU_AUTH_COMMON_QUERY_USER_ID_ACK,
AU_AUTH_BILLING_CHANGE_CONTROL_SYN, // AuthServer -> AgentServer (_PCBANG_POLICY_CHANGE_POST_EXPIRED)
AU_AUTH_BILLING_CHANGE_CONTROL_ACK,
// NOTE: f101030.1L, change the specification to accept multi-agent on same ip address
AU_AUTH_CONNECTOR_CHANGE_CONFIG_SYN, // AgentServer -> AuthAgent
// _NA_002455_20110328_AUTH_HEART_BEAT
AU_AUTH_HEART_BEAT_SYN, // AgentServer -> AuthAgent Heartbeat 전송
AU_AUTH_HEART_BEAT_ACK, // AuthAgent -> AgentServer Heartbeat 응답
//----------------------------------------------------------------------------------------------
AU_AUTH_UPPERBOUND_CHECK_PROTOCOL, // CF_AUTH_REQ_PATCH_VER_XXX계열 상한 검사용.
// 런쳐가 패치버전 요청
CF_AUTH_REQ_PATCH_VER_SYN = 254,
FC_AUTH_REQ_PATCH_VER_ACK = 255,
};
// (NOTE) (100118) (WAVERIX) 매우 혼란스러웠던 프로토콜 정리 차원에서 분리한다.
enum ePROTOCOL_AUTH_S2S
{
};
#pragma pack(pop)
#endif //__AUTH_PROTOCOL_H__