1
1
#include " packet/packet_id.h"
2
- #include " config_manager.h"
2
+
3
+ #include " akashidefs.h"
3
4
#include " server.h"
4
5
5
6
#include < QDebug>
@@ -13,7 +14,7 @@ PacketInfo PacketID::getPacketInfo() const
13
14
{
14
15
PacketInfo info{
15
16
.acl_permission = ACLRole::Permission::NONE,
16
- .min_args = 2 ,
17
+ .min_args = 3 ,
17
18
.header = " ID" };
18
19
return info;
19
20
}
@@ -22,50 +23,24 @@ void PacketID::handlePacket(AreaData *area, AOClient &client) const
22
23
{
23
24
Q_UNUSED (area)
24
25
25
- if (client.m_version .major == 2 ) {
26
+ if (client.m_version .major == akashi::PROTOCOL_MAJOR_VERSION ) {
26
27
// No double sending of the ID packet!
27
28
client.sendPacket (" BD" , {" A protocol error has been encountered. Packet : ID" });
28
29
client.m_socket ->close ();
29
30
return ;
30
31
}
31
32
32
- // Full feature list as of AO 2.8.5
33
- // The only ones that are critical to ensuring the server works are
34
- // "noencryption" and "fastloading"
35
- QStringList l_feature_list = {
36
- " noencryption" , " yellowtext" , " prezoom" ,
37
- " flipping" , " customobjections" , " fastloading" ,
38
- " deskmod" , " evidence" , " cccc_ic_support" ,
39
- " arup" , " casing_alerts" , " modcall_reason" ,
40
- " looping_sfx" , " additive" , " effects" ,
41
- " y_offset" , " expanded_desk_mods" , " auth_packet" , " custom_blips" };
42
-
43
- client.m_version .string = m_content[1 ];
44
- QRegularExpression rx (" \\ b(\\ d+)\\ .(\\ d+)\\ .(\\ d+)\\ b" ); // matches X.X.X (e.g. 2.9.0, 2.4.10, etc.)
45
- QRegularExpressionMatch l_match = rx.match (client.m_version .string );
46
- if (l_match.hasMatch ()) {
47
- client.m_version .release = l_match.captured (1 ).toInt ();
48
- client.m_version .major = l_match.captured (2 ).toInt ();
49
- client.m_version .minor = l_match.captured (3 ).toInt ();
50
- }
51
- if (m_content[0 ] == " webAO" ) {
52
- client.m_version .release = 2 ;
53
- client.m_version .major = 10 ;
54
- client.m_version .minor = 0 ;
33
+ AOClient::ClientVersion version;
34
+ if (m_content[0 ] == akashi::get_protocol_version_string ()) {
35
+ version.major = akashi::PROTOCOL_MAJOR_VERSION;
36
+ version.minor = akashi::PROTOCOL_MINOR_VERSION;
37
+ version.patch = akashi::PROTOCOL_PATCH_VERSION;
55
38
}
56
-
57
- if (client.m_version .release != 2 ) {
58
- // No valid ID packet resolution.
59
- client.sendPacket (" BD" , {" A protocol error has been encountered. Packet : ID\n Major version not recognised." });
39
+ else {
40
+ client.sendPacket (" BD" , {" A protocol error has been encountered. Packet : ID\n Protocol version not supported." });
60
41
client.m_socket ->close ();
61
42
return ;
62
43
}
63
44
64
- client.sendPacket (" PN" , {QString::number (client.getServer ()->getPlayerCount ()), QString::number (ConfigManager::maxPlayers ()), ConfigManager::serverDescription ()});
65
- client.sendPacket (" FL" , l_feature_list);
66
-
67
- if (ConfigManager::assetUrl ().isValid ()) {
68
- QByteArray l_asset_url = ConfigManager::assetUrl ().toEncoded (QUrl::EncodeSpaces);
69
- client.sendPacket (" ASS" , {l_asset_url});
70
- }
45
+ client.sendPacket (" ID" , {QString::number (client.clientId ()), " akashi" , QCoreApplication::applicationVersion ()});
71
46
}
0 commit comments