Skip to content

Commit

Permalink
Restoration of backward compatibility (#367)
Browse files Browse the repository at this point in the history
Since this discussion is going nowhere, I'm restoring it.
  • Loading branch information
TrickyLeifa authored Jul 16, 2024
1 parent 8498e30 commit 3459486
Show file tree
Hide file tree
Showing 14 changed files with 127 additions and 171 deletions.
2 changes: 0 additions & 2 deletions core.pro
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ INCLUDEPATH += src

SOURCES += \
src/acl_roles_handler.cpp \
src/akashidefs.cpp \
src/aoclient.cpp \
src/network/aopacket.cpp \
src/network/network_socket.cpp \
Expand Down Expand Up @@ -84,7 +83,6 @@ SOURCES += \

HEADERS += src/aoclient.h \
src/acl_roles_handler.h \
src/akashidefs.h \
src/akashiutils.h \
src/network/aopacket.h \
src/network/network_socket.h \
Expand Down
8 changes: 0 additions & 8 deletions src/akashidefs.cpp

This file was deleted.

21 changes: 0 additions & 21 deletions src/akashidefs.h

This file was deleted.

2 changes: 1 addition & 1 deletion src/aoclient.h
Original file line number Diff line number Diff line change
Expand Up @@ -240,9 +240,9 @@ class AOClient : public QObject
*/
struct ClientVersion
{
int release = -1;
int major = -1;
int minor = -1;
int patch = -1;
};

/**
Expand Down
6 changes: 2 additions & 4 deletions src/command_extension.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
#include <QDebug>
#include <QSettings>

#include "akashidefs.h"

CommandExtension::CommandExtension() {}

CommandExtension::CommandExtension(QString f_command_name)
Expand Down Expand Up @@ -139,7 +137,7 @@ bool CommandExtensionCollection::loadFile(QString f_filename)

l_settings.beginGroup(i_group);

QStringList l_aliases = l_settings.value("aliases").toString().split(" ", akashi::SkipEmptyParts);
QStringList l_aliases = l_settings.value("aliases").toString().split(" ", Qt::SkipEmptyParts);
for (QString &i_alias : l_aliases) {
i_alias = i_alias.toLower();
}
Expand All @@ -155,7 +153,7 @@ bool CommandExtensionCollection::loadFile(QString f_filename)

CommandExtension l_extension(l_command_name);
l_extension.setAliases(l_aliases);
l_extension.setPermissionsByCaption(l_settings.value("permissions").toString().split(" ", akashi::SkipEmptyParts));
l_extension.setPermissionsByCaption(l_settings.value("permissions").toString().split(" ", Qt::SkipEmptyParts));
m_extensions.insert(l_command_name, std::move(l_extension));

l_settings.endGroup();
Expand Down
2 changes: 1 addition & 1 deletion src/commands/casing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ void AOClient::cmdExamine(int argc, QStringList argv)
AreaData *l_area = server->getAreaById(areaId());
if (l_area->testimony().size() - 1 > 0) {
l_area->restartTestimony();
server->broadcast(PacketFactory::createPacket("RT", {"testimony2"}), areaId());
server->broadcast(PacketFactory::createPacket("RT", {"testimony2", "0"}), areaId());
server->broadcast(PacketFactory::createPacket("MS", {l_area->testimony()[0]}), areaId());
return;
}
Expand Down
3 changes: 1 addition & 2 deletions src/packet/packet_ct.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include "packet/packet_ct.h"

#include "akashidefs.h"
#include "config_manager.h"
#include "packet/packet_factory.h"
#include "server.h"
Expand Down Expand Up @@ -48,7 +47,7 @@ void PacketCT::handlePacket(AreaData *area, AOClient &client) const
return;
AOPacket *final_packet = PacketFactory::createPacket("CT", {client.name(), l_message, "0"});
if (l_message.at(0) == '/') {
QStringList l_cmd_argv = l_message.split(" ", akashi::SkipEmptyParts);
QStringList l_cmd_argv = l_message.split(" ", Qt::SkipEmptyParts);
QString l_command = l_cmd_argv[0].trimmed().toLower();
l_command = l_command.right(l_command.length() - 1);
l_cmd_argv.removeFirst();
Expand Down
7 changes: 1 addition & 6 deletions src/packet/packet_hi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,5 @@ void PacketHI::handlePacket(AreaData *area, AOClient &client) const
return;
}

client.sendPacket("PN", {QString::number(client.getServer()->getPlayerCount()), QString::number(ConfigManager::maxPlayers()), ConfigManager::serverDescription()});

if (ConfigManager::assetUrl().isValid()) {
QByteArray l_asset_url = ConfigManager::assetUrl().toEncoded(QUrl::EncodeSpaces);
client.sendPacket("ASS", {l_asset_url});
}
client.sendPacket("ID", {QString::number(client.clientId()), "akashi", QCoreApplication::applicationVersion()});
}
43 changes: 29 additions & 14 deletions src/packet/packet_id.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include "packet/packet_id.h"

#include "akashidefs.h"
#include "config_manager.h"
#include "server.h"

Expand All @@ -15,7 +14,7 @@ PacketInfo PacketID::getPacketInfo() const
{
PacketInfo info{
.acl_permission = ACLRole::Permission::NONE,
.min_args = 3,
.min_args = 2,
.header = "ID"};
return info;
}
Expand All @@ -24,30 +23,46 @@ void PacketID::handlePacket(AreaData *area, AOClient &client) const
{
Q_UNUSED(area)

if (client.m_version.major == akashi::PROTOCOL_MAJOR_VERSION) {
if (client.m_version.release == 2) {
// No double sending of the ID packet!
client.sendPacket("BD", {"A protocol error has been encountered. Packet : ID"});
client.m_socket->close();
return;
}

AOClient::ClientVersion version;
if (m_content[0] == akashi::get_protocol_version_string()) {
version.major = akashi::PROTOCOL_MAJOR_VERSION;
version.minor = akashi::PROTOCOL_MINOR_VERSION;
version.patch = akashi::PROTOCOL_PATCH_VERSION;
}
else {
client.sendPacket("BD", {"A protocol error has been encountered. Packet : ID\nProtocol version not supported."});
if (!ConfigManager::webaoEnabled() && m_content[0] == "webAO") {
client.sendPacket("BD", {"WebAO is disabled on this server."});
client.m_socket->close();
return;
}

if (!ConfigManager::webaoEnabled() && m_content[1] == "webAO") {
client.sendPacket("BD", {"WebAO is disabled on this server."});
QRegularExpression rx("\\b(\\d+)\\.(\\d+)\\.(\\d+)\\b"); // matches X.X.X (e.g. 2.9.0, 2.4.10, etc.)
QRegularExpressionMatch l_match = rx.match(m_content[1]);
if (l_match.hasMatch()) {
client.m_version.release = l_match.captured(1).toInt();
client.m_version.major = l_match.captured(2).toInt();
client.m_version.minor = l_match.captured(3).toInt();
}

if (client.m_version.release != 2) {
client.sendPacket("BD", {"A protocol error has been encountered. Packet : ID\nRelease version not recognised."});
client.m_socket->close();
return;
}

client.sendPacket("ID", {QString::number(client.clientId()), "akashi", QCoreApplication::applicationVersion()});
client.sendPacket("PN", {QString::number(client.getServer()->getPlayerCount()), QString::number(ConfigManager::maxPlayers()), ConfigManager::serverDescription()});

QStringList l_feature_list = {
"noencryption", "yellowtext", "prezoom",
"flipping", "customobjections", "fastloading",
"deskmod", "evidence", "cccc_ic_support",
"arup", "casing_alerts", "modcall_reason",
"looping_sfx", "additive", "effects",
"y_offset", "expanded_desk_mods", "auth_packet", "custom_blips"};
client.sendPacket("FL", l_feature_list);

if (ConfigManager::assetUrl().isValid()) {
QByteArray l_asset_url = ConfigManager::assetUrl().toEncoded(QUrl::EncodeSpaces);
client.sendPacket("ASS", {l_asset_url});
}
}
Loading

0 comments on commit 3459486

Please sign in to comment.