Horizon Official Technical Documentation
PacketLengthTable.hpp
Go to the documentation of this file.
1/***************************************************
2 * _ _ _ *
3 * | | | | (_) *
4 * | |_| | ___ _ __ _ _______ _ __ *
5 * | _ |/ _ \| '__| |_ / _ \| '_ \ *
6 * | | | | (_) | | | |/ / (_) | | | | *
7 * \_| |_/\___/|_| |_/___\___/|_| |_| *
8 ***************************************************
9 * This file is part of Horizon (c).
10 * Copyright (c) 2023 Horizon Dev Team.
11 *
12 * Base Author - Sephus. (sagunxp@gmail.com)
13 *
14 * This library is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
18 *
19 * This library is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this library. If not, see <http://www.gnu.org/licenses/>.
26 **************************************************/
27
28#ifndef HORIZON_AUTH_ZERO_PACKET_LENGTH_TABLE
29#define HORIZON_AUTH_ZERO_PACKET_LENGTH_TABLE
30
34
35namespace Horizon
36{
37namespace Auth
38{
39 typedef std::shared_ptr<Base::NetworkPacket<AuthSession>> HPacketStructPtrType;
40 typedef std::shared_ptr<Base::NetworkPacket<AuthSession>> TPacketStructPtrType;
41 typedef std::pair<int16_t, HPacketStructPtrType> HPacketTablePairType;
42 typedef std::pair<int16_t, TPacketStructPtrType> TPacketTablePairType;
46class PacketLengthTable
47{
48public:
49 PacketLengthTable(std::shared_ptr<AuthSession> s)
50 : _session(s)
51 {
52#define ADD_HPKT(i, j, k) _hpacket_length_table.insert(i, std::make_pair(j, std::make_shared<k>(s)))
53#define ADD_TPKT(i, j, k) _tpacket_length_table.insert(i, std::make_pair(j, std::make_shared<k>(s)))
54 ADD_TPKT(0x0ac4, -1, AC_ACCEPT_LOGIN);
55 ADD_TPKT(0x0276, -1, AC_ACCEPT_LOGIN2);
63 ADD_TPKT(0x026f, 2, AC_ACK_FIRST_LOGIN);
64 ADD_TPKT(0x0259, 3, AC_ACK_GAME_GUARD);
65 ADD_TPKT(0x01dc, -1, AC_ACK_HASH);
66 ADD_TPKT(0x0272, 44, AC_ACK_PT_ID_INFO);
67 ADD_TPKT(0x01be, 2, AC_ASK_PNGAMEROOM);
68 ADD_TPKT(0x023d, 6, AC_EVENT_RESULT);
69 ADD_TPKT(0x01f1, -1, AC_NOTIFY_ERROR);
70 ADD_TPKT(0x0823, -1, AC_OTP_AUTH_ACK);
71 ADD_TPKT(0x0821, 2, AC_OTP_USER);
72 ADD_TPKT(0x08b2, -1, AC_REALNAME_AUTH);
73 ADD_TPKT(0x006a, 23, AC_REFUSE_LOGIN);
74 ADD_TPKT(0x083e, 26, AC_REFUSE_LOGIN2);
75 ADD_TPKT(0x09a5, 7, AC_REFUSE_LOGIN3);
79 ADD_TPKT(0x0262, 11, AC_REQ_LOGIN_NEWEKEY);
80 ADD_TPKT(0x0261, 11, AC_REQ_LOGIN_OLDEKEY);
81 ADD_TPKT(0x09a2, 6, AC_REQ_MOBILE_OTP);
82 ADD_TPKT(0x098b, 2, AC_REQ_NEW_USER);
83 ADD_TPKT(0x08e4, 6, AC_SHUTDOWN_INFO);
84 ADD_TPKT(0x0986, 10, AC_SHUTDOWN_NOTIFY);
87 ADD_HPKT(0x0265, 20, CA_ACK_LOGIN_NEWEKEY);
88 ADD_HPKT(0x0264, 20, CA_ACK_LOGIN_OLDEKEY);
89 ADD_HPKT(0x09a3, -1, CA_ACK_MOBILE_OTP);
90 ADD_HPKT(0x098c, 4, CA_ACK_NEW_USER);
91 ADD_HPKT(0x027f, 8, CA_CLIENT_TYPE);
93 ADD_HPKT(0x0204, 18, CA_EXE_HASHCHECK);
94 ADD_HPKT(0x0064, 55, CA_LOGIN);
95 ADD_HPKT(0x01dd, 47, CA_LOGIN2);
96 ADD_HPKT(0x01fa, 48, CA_LOGIN3);
97 ADD_HPKT(0x027c, 60, CA_LOGIN4);
98 ADD_HPKT(0x08cc, 109, CA_LOGIN5);
99 ADD_HPKT(0x0987, -1, CA_LOGIN6);
100 ADD_HPKT(0x02b0, 85, CA_LOGIN_HAN);
101 ADD_HPKT(0x09c8, -1, CA_LOGIN_OTP);
102 ADD_HPKT(0x0277, 84, CA_LOGIN_PCBANG);
103 ADD_HPKT(0x0822, 9, CA_OTP_AUTH_REQ);
104 ADD_HPKT(0x0ad0, 11, CA_OTP_CODE);
105 ADD_HPKT(0x01bf, 3, CA_REPLY_PNGAMEROOM);
107 ADD_HPKT(0x01db, 2, CA_REQ_HASH);
108 ADD_HPKT(0x0825, -1, CA_SSO_LOGIN_REQ);
109#undef ADD_HPKT
110#undef ADD_TPKT
111 }
112
114
115 std::shared_ptr<AuthSession> get_session() { return _session.lock(); }
116
117 HPacketTablePairType get_hpacket_info(uint16_t packet_id) { return _hpacket_length_table.at(packet_id); }
118 TPacketTablePairType get_tpacket_info(uint16_t packet_id) { return _tpacket_length_table.at(packet_id); }
119
120protected:
123 std::weak_ptr<AuthSession> _session;
124
125};
126}
127}
128#endif /* HORIZON_AUTH_ZERO_PACKET_LENGTH_TABLE */
#define ADD_HPKT(i, j, k)
#define ADD_TPKT(i, j, k)
Main object for the aegis packet: AC_ACCEPT_LOGIN2.
Definition: TransmittedPackets.hpp:138
Main object for the aegis packet: AC_ACCEPT_LOGIN.
Definition: TransmittedPackets.hpp:104
Main object for the aegis packet: AC_ACK_EKEY_FAIL_AUTHREFUSE.
Definition: TransmittedPackets.hpp:176
Main object for the aegis packet: AC_ACK_EKEY_FAIL_INPUTEKEY.
Definition: TransmittedPackets.hpp:214
Main object for the aegis packet: AC_ACK_EKEY_FAIL_NEEDCARDPASS.
Definition: TransmittedPackets.hpp:252
Main object for the aegis packet: AC_ACK_EKEY_FAIL_NOTEXIST.
Definition: TransmittedPackets.hpp:290
Main object for the aegis packet: AC_ACK_EKEY_FAIL_NOTICE.
Definition: TransmittedPackets.hpp:328
Main object for the aegis packet: AC_ACK_EKEY_FAIL_NOTUSEDEKEY.
Definition: TransmittedPackets.hpp:366
Main object for the aegis packet: AC_ACK_EKEY_FAIL_NOTUSESEKEY.
Definition: TransmittedPackets.hpp:404
Main object for the aegis packet: AC_ACK_FIRST_LOGIN.
Definition: TransmittedPackets.hpp:442
Main object for the aegis packet: AC_ACK_GAME_GUARD.
Definition: TransmittedPackets.hpp:480
Main object for the aegis packet: AC_ACK_HASH.
Definition: TransmittedPackets.hpp:518
Main object for the aegis packet: AC_ACK_PT_ID_INFO.
Definition: TransmittedPackets.hpp:556
Main object for the aegis packet: AC_ASK_PNGAMEROOM.
Definition: TransmittedPackets.hpp:594
Main object for the aegis packet: AC_EVENT_RESULT.
Definition: TransmittedPackets.hpp:632
Main object for the aegis packet: AC_NOTIFY_ERROR.
Definition: TransmittedPackets.hpp:720
Main object for the aegis packet: AC_OTP_AUTH_ACK.
Definition: TransmittedPackets.hpp:752
Main object for the aegis packet: AC_OTP_USER.
Definition: TransmittedPackets.hpp:784
Main object for the aegis packet: AC_REALNAME_AUTH.
Definition: TransmittedPackets.hpp:816
Main object for the aegis packet: AC_REFUSE_LOGIN2.
Definition: TransmittedPackets.hpp:915
Main object for the aegis packet: AC_REFUSE_LOGIN3.
Definition: TransmittedPackets.hpp:947
Main object for the aegis packet: AC_REFUSE_LOGIN.
Definition: TransmittedPackets.hpp:881
Main object for the aegis packet: AC_REQUEST_SECOND_PASSWORD.
Definition: TransmittedPackets.hpp:1017
Main object for the aegis packet: AC_REQ_LOGIN_ACCOUNT_INFO.
Definition: TransmittedPackets.hpp:1055
Main object for the aegis packet: AC_REQ_LOGIN_CARDPASS.
Definition: TransmittedPackets.hpp:1093
Main object for the aegis packet: AC_REQ_LOGIN_NEWEKEY.
Definition: TransmittedPackets.hpp:1131
Main object for the aegis packet: AC_REQ_LOGIN_OLDEKEY.
Definition: TransmittedPackets.hpp:1169
Main object for the aegis packet: AC_REQ_MOBILE_OTP.
Definition: TransmittedPackets.hpp:1201
Main object for the aegis packet: AC_REQ_NEW_USER.
Definition: TransmittedPackets.hpp:1233
Main object for the aegis packet: AC_SHUTDOWN_INFO.
Definition: TransmittedPackets.hpp:1265
Main object for the aegis packet: AC_SHUTDOWN_NOTIFY.
Definition: TransmittedPackets.hpp:1297
Main object for the aegis packet: CA_ACK_LOGIN_ACCOUNT_INFO.
Definition: HandledPackets.hpp:64
Main object for the aegis packet: CA_ACK_LOGIN_CARDPASS.
Definition: HandledPackets.hpp:102
Main object for the aegis packet: CA_ACK_LOGIN_NEWEKEY.
Definition: HandledPackets.hpp:140
Main object for the aegis packet: CA_ACK_LOGIN_OLDEKEY.
Definition: HandledPackets.hpp:178
Main object for the aegis packet: CA_ACK_MOBILE_OTP.
Definition: HandledPackets.hpp:210
Main object for the aegis packet: CA_ACK_NEW_USER.
Definition: HandledPackets.hpp:242
Main object for the aegis packet: CA_CLIENT_TYPE.
Definition: HandledPackets.hpp:280
Main object for the aegis packet: CA_CONNECT_INFO_CHANGED.
Definition: HandledPackets.hpp:318
Main object for the aegis packet: CA_EXE_HASHCHECK.
Definition: HandledPackets.hpp:356
Main object for the aegis packet: CA_LOGIN2.
Definition: HandledPackets.hpp:437
Main object for the aegis packet: CA_LOGIN3.
Definition: HandledPackets.hpp:475
Main object for the aegis packet: CA_LOGIN4.
Definition: HandledPackets.hpp:513
Main object for the aegis packet: CA_LOGIN5.
Definition: HandledPackets.hpp:545
Main object for the aegis packet: CA_LOGIN6.
Definition: HandledPackets.hpp:577
Main object for the aegis packet: CA_LOGIN_HAN.
Definition: HandledPackets.hpp:615
Main object for the aegis packet: CA_LOGIN_OTP.
Definition: HandledPackets.hpp:656
Main object for the aegis packet: CA_LOGIN_PCBANG.
Definition: HandledPackets.hpp:694
Main object for the aegis packet: CA_LOGIN.
Definition: HandledPackets.hpp:394
Main object for the aegis packet: CA_OTP_AUTH_REQ.
Definition: HandledPackets.hpp:726
Main object for the aegis packet: CA_OTP_CODE.
Definition: HandledPackets.hpp:758
Main object for the aegis packet: CA_REPLY_PNGAMEROOM.
Definition: HandledPackets.hpp:796
Main object for the aegis packet: CA_REQ_GAME_GUARD_CHECK.
Definition: HandledPackets.hpp:834
Main object for the aegis packet: CA_REQ_HASH.
Definition: HandledPackets.hpp:872
Main object for the aegis packet: CA_SSO_LOGIN_REQ.
Definition: HandledPackets.hpp:904
HPacketTablePairType get_hpacket_info(uint16_t packet_id)
Definition: PacketLengthTable.hpp:117
~PacketLengthTable()
Definition: PacketLengthTable.hpp:113
TPacketTablePairType get_tpacket_info(uint16_t packet_id)
Definition: PacketLengthTable.hpp:118
std::weak_ptr< AuthSession > _session
Definition: PacketLengthTable.hpp:80
PacketLengthTable(std::shared_ptr< AuthSession > s)
Definition: PacketLengthTable.hpp:49
LockedLookupTable< uint16_t, HPacketTablePairType > _hpacket_length_table
Definition: PacketLengthTable.hpp:78
std::shared_ptr< AuthSession > get_session()
Definition: PacketLengthTable.hpp:115
LockedLookupTable< uint16_t, TPacketTablePairType > _tpacket_length_table
Definition: PacketLengthTable.hpp:79
Value at(Key const &key, Value const &default_value=Value()) const
Definition: LockedLookupTable.hpp:63
std::pair< int16_t, HPacketStructPtrType > HPacketTablePairType
Definition: PacketLengthTable.hpp:41
std::shared_ptr< Base::NetworkPacket< AuthSession > > TPacketStructPtrType
Definition: PacketLengthTable.hpp:40
std::shared_ptr< Base::NetworkPacket< AuthSession > > HPacketStructPtrType
Definition: PacketLengthTable.hpp:39
std::pair< int16_t, TPacketStructPtrType > TPacketTablePairType
Definition: PacketLengthTable.hpp:42
Definition: Element.hpp:7