From 05ff6b08a2d7a812ae128e23c97a516f2492cfe9 Mon Sep 17 00:00:00 2001 From: in1tiate Date: Sun, 28 Mar 2021 23:11:54 -0500 Subject: add exception for LE packets in demos, which encode ampersand separators --- src/packet_distribution.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/packet_distribution.cpp') diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index f3810ca..0a99b9d 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -542,7 +542,11 @@ void AOApplication::server_packet_received(AOPacket *p_packet) QVector f_evi_list; for (QString f_string : f_contents_encoded) { - QStringList sub_contents = f_string.split("&"); + QStringList sub_contents; + if (f_contents_encoded.contains("&")) + sub_contents = f_string.split("&"); + else + sub_contents = f_string.split(""); // demos incorrectly encode the separator so we have to account for that if (sub_contents.size() < 3) continue; -- cgit From d5c1273518a2eccbeff87d0c5dafa52885a1af2b Mon Sep 17 00:00:00 2001 From: Crystalwarrior Date: Wed, 7 Apr 2021 15:25:18 +0300 Subject: Fix demos incorrectly saving the packets (breaking encoding for things such as evidence by recording instead of &) ACTUALLY fix encoding errors, stop supporting the absolutely bonkers exceptions just to support the previous bug instead of fixing the root issue --- src/packet_distribution.cpp | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'src/packet_distribution.cpp') diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 0a99b9d..a3b12c8 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -121,6 +121,7 @@ void AOApplication::append_to_demofile(QString packet_string) void AOApplication::server_packet_received(AOPacket *p_packet) { QStringList f_contents_encoded = p_packet->get_contents(); + QString f_packet_encoded = p_packet->to_string(); p_packet->net_decode(); QString header = p_packet->get_header(); @@ -182,7 +183,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1), "0"); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "FL") { @@ -368,7 +369,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } send_server_packet(new AOPacket("RM#%")); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } else if (header == "SM") { if (!courtroom_constructed || courtroom_loaded) @@ -471,7 +472,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) 2) // We have a pos included in the background packet! w_courtroom->set_side(f_contents.at(1)); w_courtroom->set_background(f_contents.at(0), f_contents.size() >= 2); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "SP") { @@ -481,7 +482,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (courtroom_constructed) // We were sent a "set position" packet { w_courtroom->set_side(f_contents.at(0)); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "SD") // Send pos dropdown @@ -507,14 +508,14 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (courtroom_constructed && courtroom_loaded) { w_courtroom->chatmessage_enqueue(p_packet->get_contents()); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "MC") { if (courtroom_constructed && courtroom_loaded) { w_courtroom->handle_song(&p_packet->get_contents()); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "RT") { @@ -525,7 +526,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->handle_wtce(f_contents.at(0), 0); else if (f_contents.size() == 2) { w_courtroom->handle_wtce(f_contents.at(0), f_contents.at(1).toInt()); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } } @@ -534,7 +535,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { w_courtroom->set_hp_bar(f_contents.at(0).toInt(), f_contents.at(1).toInt()); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "LE") { @@ -542,11 +543,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) QVector f_evi_list; for (QString f_string : f_contents_encoded) { - QStringList sub_contents; - if (f_contents_encoded.contains("&")) - sub_contents = f_string.split("&"); - else - sub_contents = f_string.split(""); // demos incorrectly encode the separator so we have to account for that + QStringList sub_contents = f_string.split("&"); if (sub_contents.size() < 3) continue; @@ -564,7 +561,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } w_courtroom->set_evidence_list(f_evi_list); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } } else if (header == "ARUP") { @@ -669,7 +666,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->set_clock_visibility(id, true); else if (type == 3) w_courtroom->set_clock_visibility(id, false); - append_to_demofile(p_packet->to_string(true)); + append_to_demofile(f_packet_encoded); } else if (header == "CHECK") { if (!courtroom_constructed) -- cgit From a5e1cc41733859e4d5aa79a56b3b0cc887b6fdb6 Mon Sep 17 00:00:00 2001 From: in1tiate <32779090+in1tiate@users.noreply.github.com> Date: Fri, 16 Apr 2021 00:42:43 -0500 Subject: Fix CASEA failing to validate packets with exactly six arguments (#521) --- src/packet_distribution.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/packet_distribution.cpp') diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index a3b12c8..cf51002 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -616,7 +616,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->mod_called(f_contents.at(0)); } else if (header == "CASEA") { - if (courtroom_constructed && f_contents.size() > 6) + if (courtroom_constructed && f_contents.size() >= 6) w_courtroom->case_called(f_contents.at(0), f_contents.at(1) == "1", f_contents.at(2) == "1", f_contents.at(3) == "1", f_contents.at(4) == "1", -- cgit From 81c0f9a569eaee58a28ca521b15ab397c03a4890 Mon Sep 17 00:00:00 2001 From: Crystalwarrior Date: Tue, 20 Apr 2021 08:13:56 +0300 Subject: Better logs with OOC logging, [IC] and [OOC] tags (#519) * Add OOC logging to the .log files, making them infinitely more precious to GMs especially of ambitious multi-area RPs Add [IC] and [OOC] tags to distinguish between the types of msg * minor wording change for .log top line to make it clearer that it's the server address and not the user address Co-authored-by: oldmud0 --- src/packet_distribution.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/packet_distribution.cpp') diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index cf51002..dc76ec1 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -308,7 +308,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) this->log_filename = QDateTime::currentDateTime().toUTC().toString( "'logs/" + server_name.remove(QRegExp("[\\\\/:*?\"<>|\']")) + "/'yyyy-MM-dd hh-mm-ss t'.log'"); - this->write_to_file("Joined server " + server_name + " on address " + + this->write_to_file("Joined server " + server_name + " hosted on address " + server_address + " on " + QDateTime::currentDateTime().toUTC().toString(), log_filename, true); -- cgit From 8a9bb6dc6923a3a9a77bb8a0f397edeac8407a8a Mon Sep 17 00:00:00 2001 From: Salanto Date: Tue, 4 May 2021 05:39:50 +0200 Subject: Add Asset Packet This packet is used to send the client the URL of an online content repository, if available. --- src/packet_distribution.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/packet_distribution.cpp') diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index dc76ec1..2860720 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -703,6 +703,16 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->on_authentication_state_received(authenticated); } + //AssetURL Packet + else if (header == "ASS") { + if (f_contents.size() > 1) { // This can never be more than one link. + goto end; + } + QUrl t_asset_url = QUrl::fromPercentEncoding(f_contents.at(0).toUtf8()); + if (t_asset_url.isValid()) + asset_url = t_asset_url.toString(); + } + end: delete p_packet; -- cgit From 8fc75f29a7888a6db5db641421b0020ed561406e Mon Sep 17 00:00:00 2001 From: Salanto Date: Wed, 12 May 2021 01:56:15 +0200 Subject: Prevent crash when sending empty ASS packet --- src/packet_distribution.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/packet_distribution.cpp') diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 2860720..dfe28f4 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -705,7 +705,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) //AssetURL Packet else if (header == "ASS") { - if (f_contents.size() > 1) { // This can never be more than one link. + if (f_contents.size() > 1 || f_contents.size() == 0) { // This can never be more than one link. goto end; } QUrl t_asset_url = QUrl::fromPercentEncoding(f_contents.at(0).toUtf8()); -- cgit