Merge branch 'master' into feature/net-auth

This commit is contained in:
in1tiate 2021-03-09 14:41:08 -06:00 committed by GitHub
commit 0c9e432fab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 39 additions and 16 deletions

View File

@ -28,6 +28,7 @@
#include <QHostAddress> #include <QHostAddress>
#include <QTcpSocket> #include <QTcpSocket>
#include <QDateTime> #include <QDateTime>
#include <QRegExp>
#include <QtGlobal> #include <QtGlobal>
#if QT_VERSION > QT_VERSION_CHECK(5, 10, 0) #if QT_VERSION > QT_VERSION_CHECK(5, 10, 0)
#include <QRandomGenerator> #include <QRandomGenerator>
@ -131,6 +132,7 @@ class AOClient : public QObject {
// Packet helper functions // Packet helper functions
void sendEvidenceList(AreaData* area); void sendEvidenceList(AreaData* area);
AOPacket validateIcPacket(AOPacket packet); AOPacket validateIcPacket(AOPacket packet);
QString dezalgo(QString p_text);
// Packet helper global variables // Packet helper global variables
int char_id = -1; int char_id = -1;

View File

@ -40,6 +40,7 @@ class ConfigManager {
QString name; QString name;
QString description; QString description;
bool advertise_server; bool advertise_server;
int zalgo_tolerance;
}; };
bool loadServerSettings(server_settings* settings); bool loadServerSettings(server_settings* settings);

View File

@ -28,13 +28,13 @@ AreaData::AreaData(QStringList characters, QString p_name, int p_index)
areas_ini.beginGroup(p_name); areas_ini.beginGroup(p_name);
background = areas_ini.value("background", "gs4").toString(); background = areas_ini.value("background", "gs4").toString();
is_protected = areas_ini.value("protected_area").toBool(); is_protected = areas_ini.value("protected_area").toBool();
bg_locked = areas_ini.value("bg_locked", "false").toBool();
areas_ini.endGroup(); areas_ini.endGroup();
player_count = 0; player_count = 0;
locked = FREE; locked = FREE;
status = "FREE"; status = "FREE";
def_hp = 10; def_hp = 10;
pro_hp = 10; pro_hp = 10;
bg_locked = false;
document = "No document."; document = "No document.";
QSettings config_ini("config/config.ini", QSettings::IniFormat); QSettings config_ini("config/config.ini", QSettings::IniFormat);
config_ini.beginGroup("Options"); config_ini.beginGroup("Options");

View File

@ -37,13 +37,16 @@ void AOClient::cmdLogin(int argc, QStringList argv)
return; return;
} }
// TODO: tell the user if no modpass is set
if (auth_type == "simple") { if (auth_type == "simple") {
if(argv[0] == modpass) { if (modpass == "") {
sendServerMessage("No modpass is set! Please set a modpass before authenticating.");
}
else if(argv[0] == modpass) {
sendPacket("AUTH", {"1"}); // Client: "You were granted the Disable Modcalls button." sendPacket("AUTH", {"1"}); // Client: "You were granted the Disable Modcalls button."
sendServerMessage("Logged in as a moderator."); // for old clients, this is hardcoded to display the mod UI sendServerMessage("Logged in as a moderator."); // for old clients, this is hardcoded to display the mod UI
authenticated = true; authenticated = true;
} else { }
else {
sendPacket("AUTH", {"0"}); // Client: "Login unsuccessful." sendPacket("AUTH", {"0"}); // Client: "Login unsuccessful."
sendServerMessage("Incorrect password."); sendServerMessage("Incorrect password.");
} }
@ -185,8 +188,6 @@ void AOClient::cmdSetRootPass(int argc, QStringList argv)
void AOClient::cmdSetBackground(int argc, QStringList argv) void AOClient::cmdSetBackground(int argc, QStringList argv)
{ {
// TODO: area locks in areas.ini
// TODO: sendServerMessage but area broadcast
AreaData* area = server->areas[current_area]; AreaData* area = server->areas[current_area];
if (authenticated || !area->bg_locked) { if (authenticated || !area->bg_locked) {
if (server->backgrounds.contains(argv[0])) { if (server->backgrounds.contains(argv[0])) {

View File

@ -131,6 +131,7 @@ bool ConfigManager::loadServerSettings(server_settings* settings)
bool port_conversion_success; bool port_conversion_success;
bool ws_port_conversion_success; bool ws_port_conversion_success;
bool local_port_conversion_success; bool local_port_conversion_success;
bool zalgo_tolerance_conversion_success;
config.beginGroup("Options"); config.beginGroup("Options");
settings->ms_ip = settings->ms_ip =
config.value("ms_ip", "master.aceattorneyonline.com").toString(); config.value("ms_ip", "master.aceattorneyonline.com").toString();
@ -144,6 +145,8 @@ bool ConfigManager::loadServerSettings(server_settings* settings)
settings->description = settings->description =
config.value("server_description", "This is my flashy new server") config.value("server_description", "This is my flashy new server")
.toString(); .toString();
settings->zalgo_tolerance =
config.value("zalgo_tolerance", "3").toInt(&zalgo_tolerance_conversion_success);
config.endGroup(); config.endGroup();
if (!port_conversion_success || !ws_port_conversion_success || if (!port_conversion_success || !ws_port_conversion_success ||
!local_port_conversion_success) { !local_port_conversion_success) {

View File

@ -32,7 +32,7 @@ void AOClient::pktHardwareId(AreaData* area, int argc, QStringList argv, AOPacke
socket->close(); socket->close();
return; return;
} }
sendPacket("ID", {"271828", "akashi", QCoreApplication::applicationVersion()}); sendPacket("ID", {QString::number(id), "akashi", QCoreApplication::applicationVersion()});
} }
void AOClient::pktSoftwareId(AreaData* area, int argc, QStringList argv, AOPacket packet) void AOClient::pktSoftwareId(AreaData* area, int argc, QStringList argv, AOPacket packet)
@ -177,20 +177,21 @@ void AOClient::pktIcChat(AreaData* area, int argc, QStringList argv, AOPacket pa
void AOClient::pktOocChat(AreaData* area, int argc, QStringList argv, AOPacket packet) void AOClient::pktOocChat(AreaData* area, int argc, QStringList argv, AOPacket packet)
{ {
ooc_name = argv[0]; ooc_name = dezalgo(argv[0]);
if(argv[1].at(0) == '/') { QString message = dezalgo(argv[1]);
QStringList cmd_argv = argv[1].split(" ", QString::SplitBehavior::SkipEmptyParts); AOPacket final_packet("CT", {ooc_name, message, "0"});
if(message.at(0) == '/') {
QStringList cmd_argv = message.split(" ", QString::SplitBehavior::SkipEmptyParts);
QString command = cmd_argv[0].trimmed().toLower(); QString command = cmd_argv[0].trimmed().toLower();
command = command.right(command.length() - 1); command = command.right(command.length() - 1);
cmd_argv.removeFirst(); cmd_argv.removeFirst();
int cmd_argc = cmd_argv.length(); int cmd_argc = cmd_argv.length();
area->logger->logCmd(this, &packet, command, cmd_argv); area->logger->logCmd(this, &final_packet, command, cmd_argv);
handleCommand(command, cmd_argc, cmd_argv); handleCommand(command, cmd_argc, cmd_argv);
} }
else { else {
// TODO: zalgo strip server->broadcast(final_packet, current_area);
server->broadcast(packet, current_area); area->logger->logOOC(this, &final_packet);
area->logger->logOOC(this, &packet);
} }
} }
@ -374,7 +375,7 @@ AOPacket AOClient::validateIcPacket(AOPacket packet)
args.append(emote); args.append(emote);
// message text // message text
QString incoming_msg = incoming_args[4].toString().trimmed(); QString incoming_msg = dezalgo(incoming_args[4].toString().trimmed());
if (incoming_msg == last_message) if (incoming_msg == last_message)
return invalid; return invalid;
@ -452,7 +453,8 @@ AOPacket AOClient::validateIcPacket(AOPacket packet)
// 2.6 packet extensions // 2.6 packet extensions
if (incoming_args.length() > 15) { if (incoming_args.length() > 15) {
// showname // showname
args.append(incoming_args[15].toString()); QString showname = dezalgo(incoming_args[15].toString().trimmed());
args.append(showname);
// other char id // other char id
// things get a bit hairy here // things get a bit hairy here
@ -533,3 +535,17 @@ AOPacket AOClient::validateIcPacket(AOPacket packet)
return AOPacket("MS", args); return AOPacket("MS", args);
} }
QString AOClient::dezalgo(QString p_text)
{
QSettings config("config/config.ini", QSettings::IniFormat);
config.beginGroup("Options");
bool zalgo_tolerance_conversion_success;
int zalgo_tolerance = config.value("zalgo_tolerance", "3").toInt(&zalgo_tolerance_conversion_success);
if (!zalgo_tolerance_conversion_success)
zalgo_tolerance = 3;
QRegExp rxp("([\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f\u115f\u1160\u3164]{" + QRegExp::escape(QString::number(zalgo_tolerance)) + ",})");
QString filtered = p_text.replace(rxp, "");
return filtered;
}