Cleanup some variable naming

+ move file reading operations into ConfigManager
This commit is contained in:
Salanto 2021-09-10 23:33:37 +02:00
parent 90b9eaa665
commit a4e8442657
15 changed files with 306 additions and 208 deletions

View File

@ -44,6 +44,53 @@ class ConfigManager {
*/
static bool verifyServerConfig();
/**
* @brief Returns the IP the TCP Server binds to.
*
* @return See short description
*/
static QString bindIP();
/**
* @brief Returns the character list of the server.
*
* @return See short description.
*/
static QStringList charlist();
/**
* @brief Returns the a QStringList of the available backgrounds.
*
* @return See short description.
*/
static QStringList backgrounds();
/**
* @brief Returns a QStringlist of the available songs.
*
* @return See short description.
*/
static QStringList musiclist();
/**
* @brief Returns the content of
* @return
*/
static QSettings *areaData();
/**
* @brief Returns a sanitized QStringList of the areas.
*
* @return See short description.
*/
static QStringList sanitizedAreaNames();
/**
* @brief Returns the raw arealist
*
* @return See short description.
*/
static QStringList rawAreaNames();
/**
* @brief Returns true if the server should advertise to the master server.
*
@ -424,6 +471,11 @@ private:
*/
static QSettings* m_discord;
/**
* @brief Stores all of the area valus.
*/
static QSettings* m_areas;
/**
* @brief Pointer to QElapsedTimer to track the uptime of the server.
*/

View File

@ -157,22 +157,22 @@ class Server : public QObject {
/**
* @brief The collection of all currently connected clients.
*/
QVector<AOClient*> clients;
QVector<AOClient*> m_clients;
/**
* @brief The overall player count in the server.
*/
int player_count;
int m_player_count;
/**
* @brief The characters available on the server to use.
*/
QStringList characters;
QStringList m_characters;
/**
* @brief The areas on the server.
*/
QVector<AreaData*> areas;
QVector<AreaData*> m_areas;
/**
* @brief The names of the areas on the server.
@ -180,7 +180,7 @@ class Server : public QObject {
* @details Equivalent to iterating over #areas and getting the area names individually, but grouped together
* here for faster access.
*/
QStringList area_names;
QStringList m_area_names;
/**
* @brief The available songs on the server.
@ -188,12 +188,12 @@ class Server : public QObject {
* @details Does **not** include the area names, the actual music list packet should be constructed from
* #area_names and this combined.
*/
QStringList music_list;
QStringList m_music_list;
/**
* @brief The backgrounds on the server that may be used in areas.
*/
QStringList backgrounds;
QStringList m_backgrounds;
/**
* @brief The database manager on the server, used to store users' bans and authorisation details.

View File

@ -53,18 +53,18 @@ void AOClient::clientDisconnected()
qDebug() << remote_ip.toString() << "disconnected";
#endif
if (joined) {
server->player_count--;
server->areas[current_area]->clientLeftArea(server->getCharID(current_char));
server->m_player_count--;
server->m_areas[current_area]->clientLeftArea(server->getCharID(current_char));
arup(ARUPType::PLAYER_COUNT, true);
}
if (current_char != "") {
server->updateCharsTaken(server->areas[current_area]);
server->updateCharsTaken(server->m_areas[current_area]);
}
bool l_updateLocks = false;
for (AreaData* area : qAsConst(server->areas)) {
for (AreaData* area : qAsConst(server->m_areas)) {
l_updateLocks = l_updateLocks || area->removeOwner(id);
}
@ -78,7 +78,7 @@ void AOClient::handlePacket(AOPacket packet)
#ifdef NET_DEBUG
qDebug() << "Received packet:" << packet.header << ":" << packet.contents << "args length:" << packet.contents.length();
#endif
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
PacketInfo info = packets.value(packet.header, {false, 0, &AOClient::pktDefault});
if (packet.contents.join("").size() > 16384) {
@ -109,38 +109,38 @@ void AOClient::handlePacket(AOPacket packet)
void AOClient::changeArea(int new_area)
{
if (current_area == new_area) {
sendServerMessage("You are already in area " + server->area_names[current_area]);
sendServerMessage("You are already in area " + server->m_area_names[current_area]);
return;
}
if (server->areas[new_area]->lockStatus() == AreaData::LockStatus::LOCKED && !server->areas[new_area]->invited().contains(id) && !checkAuth(ACLFlags.value("BYPASS_LOCKS"))) {
sendServerMessage("Area " + server->area_names[new_area] + " is locked.");
if (server->m_areas[new_area]->lockStatus() == AreaData::LockStatus::LOCKED && !server->m_areas[new_area]->invited().contains(id) && !checkAuth(ACLFlags.value("BYPASS_LOCKS"))) {
sendServerMessage("Area " + server->m_area_names[new_area] + " is locked.");
return;
}
if (current_char != "") {
server->areas[current_area]->changeCharacter(server->getCharID(current_char), -1);
server->updateCharsTaken(server->areas[current_area]);
server->m_areas[current_area]->changeCharacter(server->getCharID(current_char), -1);
server->updateCharsTaken(server->m_areas[current_area]);
}
server->areas[current_area]->clientLeftArea(char_id);
server->m_areas[current_area]->clientLeftArea(char_id);
bool character_taken = false;
if (server->areas[new_area]->charactersTaken().contains(server->getCharID(current_char))) {
if (server->m_areas[new_area]->charactersTaken().contains(server->getCharID(current_char))) {
current_char = "";
char_id = -1;
character_taken = true;
}
server->areas[new_area]->clientJoinedArea(char_id);
server->m_areas[new_area]->clientJoinedArea(char_id);
current_area = new_area;
arup(ARUPType::PLAYER_COUNT, true);
sendEvidenceList(server->areas[new_area]);
sendPacket("HP", {"1", QString::number(server->areas[new_area]->defHP())});
sendPacket("HP", {"2", QString::number(server->areas[new_area]->proHP())});
sendPacket("BN", {server->areas[new_area]->background()});
sendEvidenceList(server->m_areas[new_area]);
sendPacket("HP", {"1", QString::number(server->m_areas[new_area]->defHP())});
sendPacket("HP", {"2", QString::number(server->m_areas[new_area]->proHP())});
sendPacket("BN", {server->m_areas[new_area]->background()});
if (character_taken) {
sendPacket("DONE");
}
const QList<QTimer*> timers = server->areas[current_area]->timers();
const QList<QTimer*> timers = server->m_areas[current_area]->timers();
for (QTimer* timer : timers) {
int timer_id = server->areas[current_area]->timers().indexOf(timer) + 1;
int timer_id = server->m_areas[current_area]->timers().indexOf(timer) + 1;
if (timer->isActive()) {
sendPacket("TI", {QString::number(timer_id), "2"});
sendPacket("TI", {QString::number(timer_id), "0", QString::number(QTime(0,0).msecsTo(QTime(0,0).addMSecs(timer->remainingTime())))});
@ -149,16 +149,16 @@ void AOClient::changeArea(int new_area)
sendPacket("TI", {QString::number(timer_id), "3"});
}
}
sendServerMessage("You moved to area " + server->area_names[current_area]);
if (server->areas[current_area]->lockStatus() == AreaData::LockStatus::SPECTATABLE)
sendServerMessage("Area " + server->area_names[current_area] + " is spectate-only; to chat IC you will need to be invited by the CM.");
sendServerMessage("You moved to area " + server->m_area_names[current_area]);
if (server->m_areas[current_area]->lockStatus() == AreaData::LockStatus::SPECTATABLE)
sendServerMessage("Area " + server->m_area_names[current_area] + " is spectate-only; to chat IC you will need to be invited by the CM.");
}
bool AOClient::changeCharacter(int char_id)
{
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if(char_id >= server->characters.length())
if(char_id >= server->m_characters.length())
return false;
if (is_charcursed && !charcurse_list.contains(char_id)) {
@ -172,7 +172,7 @@ bool AOClient::changeCharacter(int char_id)
}
if (l_successfulChange == true) {
QString char_selected = server->characters[char_id];
QString char_selected = server->m_characters[char_id];
current_char = char_selected;
pos = "";
server->updateCharsTaken(area);
@ -210,7 +210,7 @@ void AOClient::arup(ARUPType type, bool broadcast)
{
QStringList arup_data;
arup_data.append(QString::number(type));
for (AreaData* area : qAsConst(server->areas)) {
for (AreaData* area : qAsConst(server->m_areas)) {
switch(type) {
case ARUPType::PLAYER_COUNT: {
arup_data.append(QString::number(area->playerCount()));
@ -319,7 +319,7 @@ bool AOClient::checkAuth(unsigned long long acl_mask)
#endif
if (acl_mask != ACLFlags.value("NONE")) {
if (acl_mask == ACLFlags.value("CM")) {
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->owners().contains(id))
return true;
}

View File

@ -35,23 +35,20 @@ AreaData::AreaData(QString p_name, int p_index) :
QStringList name_split = p_name.split(":");
name_split.removeFirst();
m_name = name_split.join(":");
QSettings areas_ini("config/areas.ini", QSettings::IniFormat);
areas_ini.setIniCodec("UTF-8");
areas_ini.beginGroup(p_name);
m_background = areas_ini.value("background", "gs4").toString();
m_isProtected = areas_ini.value("protected_area", "false").toBool();
m_iniswapAllowed = areas_ini.value("iniswap_allowed", "true").toBool();
m_bgLocked = areas_ini.value("bg_locked", "false").toBool();
m_eviMod = QVariant(areas_ini.value("evidence_mod", "FFA").toString().toUpper()).value<EvidenceMod>();
m_blankpostingAllowed = areas_ini.value("blankposting_allowed","true").toBool();
m_forceImmediate = areas_ini.value("force_immediate", "false").toBool();
m_toggleMusic = areas_ini.value("toggle_music", "true").toBool();
m_shownameAllowed = areas_ini.value("shownames_allowed", "true").toBool();
m_ignoreBgList = areas_ini.value("ignore_bglist", "false").toBool();
areas_ini.endGroup();
int log_size = ConfigManager::logBuffer();
if (log_size == 0)
log_size = 500;
QSettings* areas_ini = ConfigManager::areaData();
areas_ini->setIniCodec("UTF-8");
areas_ini->beginGroup(p_name);
m_background = areas_ini->value("background", "gs4").toString();
m_isProtected = areas_ini->value("protected_area", "false").toBool();
m_iniswapAllowed = areas_ini->value("iniswap_allowed", "true").toBool();
m_bgLocked = areas_ini->value("bg_locked", "false").toBool();
m_eviMod = QVariant(areas_ini->value("evidence_mod", "FFA").toString().toUpper()).value<EvidenceMod>();
m_blankpostingAllowed = areas_ini->value("blankposting_allowed","true").toBool();
m_forceImmediate = areas_ini->value("force_immediate", "false").toBool();
m_toggleMusic = areas_ini->value("toggle_music", "true").toBool();
m_shownameAllowed = areas_ini->value("shownames_allowed", "true").toBool();
m_ignoreBgList = areas_ini->value("ignore_bglist", "false").toBool();
areas_ini->endGroup();
QTimer* timer1 = new QTimer();
m_timers.append(timer1);
QTimer* timer2 = new QTimer();

View File

@ -24,7 +24,7 @@
void AOClient::cmdCM(int argc, QStringList argv)
{
QString sender_name = ooc_name;
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->isProtected()) {
sendServerMessage("This area is protected, you may not become CM.");
return;
@ -59,7 +59,7 @@ void AOClient::cmdCM(int argc, QStringList argv)
void AOClient::cmdUnCM(int argc, QStringList argv)
{
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
int uid;
if (area->owners().isEmpty()) {
@ -104,7 +104,7 @@ void AOClient::cmdInvite(int argc, QStringList argv)
{
Q_UNUSED(argc);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
bool ok;
int invited_id = argv[0].toInt(&ok);
if (!ok) {
@ -129,7 +129,7 @@ void AOClient::cmdUnInvite(int argc, QStringList argv)
{
Q_UNUSED(argc);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
bool ok;
int uninvited_id = argv[0].toInt(&ok);
if (!ok) {
@ -159,14 +159,14 @@ void AOClient::cmdLock(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->lockStatus() == AreaData::LockStatus::LOCKED) {
sendServerMessage("This area is already locked.");
return;
}
sendServerMessageArea("This area is now locked.");
area->lock();
for (AOClient* client : qAsConst(server->clients)) { // qAsConst here avoids detaching the container
for (AOClient* client : qAsConst(server->m_clients)) { // qAsConst here avoids detaching the container
if (client->current_area == current_area && client->joined) {
area->invite(client->id);
}
@ -179,14 +179,14 @@ void AOClient::cmdSpectatable(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->lockStatus() == AreaData::LockStatus::SPECTATABLE) {
sendServerMessage("This area is already in spectate mode.");
return;
}
sendServerMessageArea("This area is now spectatable.");
area->spectatable();
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->current_area == current_area && client->joined) {
area->invite(client->id);
}
@ -199,7 +199,7 @@ void AOClient::cmdUnLock(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->lockStatus() == AreaData::LockStatus::FREE) {
sendServerMessage("This area is not locked.");
return;
@ -216,7 +216,7 @@ void AOClient::cmdGetAreas(int argc, QStringList argv)
QStringList entries;
entries.append("== Area List ==");
for (int i = 0; i < server->area_names.length(); i++) {
for (int i = 0; i < server->m_area_names.length(); i++) {
QStringList cur_area_lines = buildAreaList(i);
entries.append(cur_area_lines);
}
@ -238,7 +238,7 @@ void AOClient::cmdArea(int argc, QStringList argv)
bool ok;
int new_area = argv[0].toInt(&ok);
if (!ok || new_area >= server->areas.size() || new_area < 0) {
if (!ok || new_area >= server->m_areas.size() || new_area < 0) {
sendServerMessage("That does not look like a valid area ID.");
return;
}
@ -249,7 +249,7 @@ void AOClient::cmdAreaKick(int argc, QStringList argv)
{
Q_UNUSED(argc);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
bool ok;
int idx = argv[0].toInt(&ok);
@ -257,7 +257,7 @@ void AOClient::cmdAreaKick(int argc, QStringList argv)
sendServerMessage("That does not look like a valid ID.");
return;
}
if (server->areas[current_area]->owners().contains(idx)) {
if (server->m_areas[current_area]->owners().contains(idx)) {
sendServerMessage("You cannot kick another CM!");
return;
}
@ -281,9 +281,9 @@ void AOClient::cmdSetBackground(int argc, QStringList argv)
Q_UNUSED(argc);
QString f_background = argv.join(" ");
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (authenticated || !area->bgLocked()) {
if (server->backgrounds.contains(f_background, Qt::CaseInsensitive) || area->ignoreBgList() == true) {
if (server->m_backgrounds.contains(f_background, Qt::CaseInsensitive) || area->ignoreBgList() == true) {
area->setBackground(f_background);
server->broadcast(AOPacket("BN", {f_background}), current_area);
sendServerMessageArea(current_char + " changed the background to " + f_background);
@ -302,7 +302,7 @@ void AOClient::cmdBgLock(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->bgLocked() == false) {
area->toggleBgLock();
@ -316,7 +316,7 @@ void AOClient::cmdBgUnlock(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->bgLocked() == true) {
area->toggleBgLock();
@ -329,7 +329,7 @@ void AOClient::cmdStatus(int argc, QStringList argv)
{
Q_UNUSED(argc);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
QString arg = argv[0].toLower();
if (area->changeStatus(arg)) {
@ -346,7 +346,7 @@ void AOClient::cmdJudgeLog(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->judgelog().isEmpty()) {
sendServerMessage("There have been no judge actions in this area.");
return;
@ -367,7 +367,7 @@ void AOClient::cmdIgnoreBgList(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
area->toggleIgnoreBgList();
QString state = area->ignoreBgList() ? "ignored." : "enforced.";
sendServerMessage("BG list in this area is now " + state);

View File

@ -23,7 +23,7 @@
void AOClient::cmdDoc(int argc, QStringList argv)
{
QString sender_name = ooc_name;
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (argc == 0) {
sendServerMessage("Document: " + area->document());
}
@ -39,7 +39,7 @@ void AOClient::cmdClearDoc(int argc, QStringList argv)
Q_UNUSED(argv);
QString sender_name = ooc_name;
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
area->changeDoc("No document.");
sendServerMessageArea(sender_name + " cleared the document.");
}
@ -48,7 +48,7 @@ void AOClient::cmdEvidenceMod(int argc, QStringList argv)
{
Q_UNUSED(argc);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
argv[0] = argv[0].toLower();
if (argv[0] == "cm")
area->setEviMod(AreaData::EvidenceMod::CM);
@ -72,7 +72,7 @@ void AOClient::cmdEvidence_Swap(int argc, QStringList argv)
{
Q_UNUSED(argc);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
int ev_size = area->evidence().size() -1;
if (ev_size < 0) {
@ -106,7 +106,7 @@ void AOClient::cmdTestify(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->testimonyRecording() == AreaData::TestimonyRecording::RECORDING) {
sendServerMessage("Testimony recording is already in progress. Please stop it before starting a new one.");
}
@ -122,7 +122,7 @@ void AOClient::cmdExamine(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->testimony().size() -1 > 0)
{
area->restartTestimony();
@ -141,7 +141,7 @@ void AOClient::cmdTestimony(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->testimony().size() -1 < 1) {
sendServerMessage("Unable to display empty testimony.");
return;
@ -162,7 +162,7 @@ void AOClient::cmdDeleteStatement(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
int c_statement = area->statement();
if (area->testimony().size() - 1 == 0) {
sendServerMessage("Unable to delete statement. No statements saved in this area.");
@ -178,7 +178,7 @@ void AOClient::cmdUpdateStatement(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
server->areas[current_area]->setTestimonyRecording(AreaData::TestimonyRecording::UPDATE);
server->m_areas[current_area]->setTestimonyRecording(AreaData::TestimonyRecording::UPDATE);
sendServerMessage("The next IC-Message will replace the last displayed replay message.");
}
@ -187,7 +187,7 @@ void AOClient::cmdPauseTestimony(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
area->setTestimonyRecording(AreaData::TestimonyRecording::STOPPED);
server->broadcast(AOPacket("RT",{"testimony1", "1"}), current_area);
sendServerMessage("Testimony has been stopped.");
@ -198,8 +198,8 @@ void AOClient::cmdAddStatement(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
if (server->areas[current_area]->statement() < ConfigManager::maxStatements()) {
server->areas[current_area]->setTestimonyRecording(AreaData::TestimonyRecording::ADD);
if (server->m_areas[current_area]->statement() < ConfigManager::maxStatements()) {
server->m_areas[current_area]->setTestimonyRecording(AreaData::TestimonyRecording::ADD);
sendServerMessage("The next IC-Message will be inserted into the testimony.");
}
else
@ -218,7 +218,7 @@ void AOClient::cmdSaveTestimony(int argc, QStringList argv)
permission_found = true;
if (permission_found) {
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->testimony().size() -1 <= 0) {
sendServerMessage("Can't save an empty testimony.");
return;
@ -257,7 +257,7 @@ void AOClient::cmdLoadTestimony(int argc, QStringList argv)
{
Q_UNUSED(argc);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
QDir dir_testimony("storage/testimony");
if (!dir_testimony.exists()) {
sendServerMessage("Unable to load testimonies. Testimony storage not found.");

View File

@ -32,8 +32,8 @@ void AOClient::cmdDefault(int argc, QStringList argv)
QStringList AOClient::buildAreaList(int area_idx)
{
QStringList entries;
QString area_name = server->area_names[area_idx];
AreaData* area = server->areas[area_idx];
QString area_name = server->m_area_names[area_idx];
AreaData* area = server->m_areas[area_idx];
entries.append("=== " + area_name + " ===");
switch (area->lockStatus()) {
case AreaData::LockStatus::LOCKED:
@ -47,7 +47,7 @@ QStringList AOClient::buildAreaList(int area_idx)
break;
}
entries.append("[" + QString::number(area->playerCount()) + " users][" + QVariant::fromValue(area->status()).toString().replace("_", "-") + "]");
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->current_area == area_idx && client->joined) {
QString char_entry = "[" + QString::number(client->id) + "] " + client->current_char;
if (client->current_char == "")
@ -101,7 +101,7 @@ void AOClient::diceThrower(int argc, QStringList argv, bool p_roll)
QString AOClient::getAreaTimer(int area_idx, int timer_idx)
{
AreaData* area = server->areas[area_idx];
AreaData* area = server->m_areas[area_idx];
QTimer* timer;
QString timer_name = (timer_idx == 0) ? "Global timer" : "Timer " + QString::number(timer_idx);

View File

@ -25,7 +25,7 @@ void AOClient::cmdPos(int argc, QStringList argv)
Q_UNUSED(argc);
changePosition(argv[0]);
updateEvidenceList(server->areas[current_area]);
updateEvidenceList(server->m_areas[current_area]);
}
void AOClient::cmdForcePos(int argc, QStringList argv)
@ -51,7 +51,7 @@ void AOClient::cmdForcePos(int argc, QStringList argv)
}
else if (argv[1] == "*") { // force all clients in the area
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->current_area == current_area)
targets.append(client);
}
@ -69,9 +69,9 @@ void AOClient::cmdG(int argc, QStringList argv)
Q_UNUSED(argc);
QString sender_name = ooc_name;
QString sender_area = server->area_names.value(current_area);
QString sender_area = server->m_area_names.value(current_area);
QString sender_message = argv.join(" ");
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->global_enabled)
client->sendPacket("CT", {"[G][" + sender_area + "]" + sender_name, sender_message});
}
@ -82,9 +82,9 @@ void AOClient::cmdNeed(int argc, QStringList argv)
{
Q_UNUSED(argc);
QString sender_area = server->area_names.value(current_area);
QString sender_area = server->m_area_names.value(current_area);
QString sender_message = argv.join(" ");
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->advert_enabled) {
client->sendServerMessage({"=== Advert ===\n[" + sender_area + "] needs " + sender_message+ "."});
}
@ -113,11 +113,11 @@ void AOClient::cmdRandomChar(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
int selected_char_id;
bool taken = true;
while (taken) {
selected_char_id = genRand(0, server->characters.size() - 1);
selected_char_id = genRand(0, server->m_characters.size() - 1);
if (!area->charactersTaken().contains(selected_char_id)) {
taken = false;
}
@ -174,7 +174,7 @@ void AOClient::cmdM(int argc, QStringList argv)
QString sender_name = ooc_name;
QString sender_message = argv.join(" ");
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->checkAuth(ACLFlags.value("MODCHAT")))
client->sendPacket("CT", {"[M]" + sender_name, sender_message});
}
@ -186,9 +186,9 @@ void AOClient::cmdGM(int argc, QStringList argv)
Q_UNUSED(argc);
QString sender_name = ooc_name;
QString sender_area = server->area_names.value(current_area);
QString sender_area = server->m_area_names.value(current_area);
QString sender_message = argv.join(" ");
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->global_enabled) {
client->sendPacket("CT", {"[G][" + sender_area + "]" + "["+sender_name+"][M]", sender_message});
}
@ -439,11 +439,11 @@ void AOClient::cmdCharCurse(int argc, QStringList argv)
//Kick back to char select screen
if (!target->charcurse_list.contains(server->getCharID(target->current_char))) {
target->changeCharacter(-1);
server->updateCharsTaken(server->areas.value(current_area));
server->updateCharsTaken(server->m_areas.value(current_area));
target->sendPacket("DONE");
}
else {
server->updateCharsTaken(server->areas.value(current_area));
server->updateCharsTaken(server->m_areas.value(current_area));
}
target->sendServerMessage("You have been charcursed!");
@ -474,7 +474,7 @@ void AOClient::cmdUnCharCurse(int argc, QStringList argv)
}
target->is_charcursed = false;
target->charcurse_list.clear();
server->updateCharsTaken(server->areas.value(current_area));
server->updateCharsTaken(server->m_areas.value(current_area));
sendServerMessage("Uncharcursed player.");
target->sendServerMessage("You were uncharcursed.");
}
@ -517,7 +517,7 @@ void AOClient::cmdA(int argc, QStringList argv)
return;
}
AreaData* area = server->areas[area_id];
AreaData* area = server->m_areas[area_id];
if (!area->owners().contains(id)) {
sendServerMessage("You are not CM in that area.");
return;
@ -533,12 +533,12 @@ void AOClient::cmdS(int argc, QStringList argv)
{
Q_UNUSED(argc);
int all_areas = server->areas.size() - 1;
int all_areas = server->m_areas.size() - 1;
QString sender_name = ooc_name;
QString ooc_message = argv.join(" ");
for (int i = 0; i <= all_areas; i++) {
if (server->areas[i]->owners().contains(id))
if (server->m_areas[i]->owners().contains(id))
server->broadcast(AOPacket("CT", {"[CM]" + sender_name, ooc_message}), i);
}
}

View File

@ -132,7 +132,7 @@ void AOClient::cmdMods(int argc, QStringList argv)
QStringList entries;
int online_count = 0;
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->authenticated) {
entries << "---";
if (ConfigManager::authType() != DataTypes::AuthType::SIMPLE)
@ -402,7 +402,7 @@ void AOClient::cmdAllowBlankposting(int argc, QStringList argv)
Q_UNUSED(argv);
QString sender_name = ooc_name;
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
area->toggleBlankposting();
if (area->blankpostingAllowed() == false) {
sendServerMessageArea(sender_name + " has set blankposting in the area to forbidden.");
@ -470,7 +470,7 @@ void AOClient::cmdForceImmediate(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
area->toggleImmediate();
QString state = area->forceImmediate() ? "on." : "off.";
sendServerMessage("Forced immediate text processing in this area is now " + state);
@ -481,7 +481,7 @@ void AOClient::cmdAllowIniswap(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
area->toggleIniswap();
QString state = area->iniswapAllowed() ? "allowed." : "disallowed.";
sendServerMessage("Iniswapping in this area is now " + state);

View File

@ -28,7 +28,7 @@ void AOClient::cmdPlay(int argc, QStringList argv)
sendServerMessage("You are blocked from changing the music.");
return;
}
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
QString song = argv.join(" ");
area->currentMusic() = song;
area->musicPlayerBy() = showname;
@ -41,7 +41,7 @@ void AOClient::cmdCurrentMusic(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->currentMusic() != "" && area->currentMusic() != "~stop.mp3") // dummy track for stopping music
sendServerMessage("The current song is " + area->currentMusic() + " played by " + area->musicPlayerBy());
else
@ -107,7 +107,7 @@ void AOClient::cmdToggleMusic(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
area->toggleMusic();
QString state = area->isMusicAllowed() ? "allowed." : "disallowed.";
sendServerMessage("Music in this area is now " + state);

View File

@ -43,7 +43,7 @@ void AOClient::cmdRollP(int argc, QStringList argv)
void AOClient::cmdTimer(int argc, QStringList argv)
{
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
// Called without arguments
// Shows a brief of all timers
@ -134,7 +134,7 @@ void AOClient::cmdNoteCard(int argc, QStringList argv)
{
Q_UNUSED(argc);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
QString notecard = argv.join(" ");
area->addNotecard(current_char, notecard);
sendServerMessageArea(current_char + " wrote a note card.");
@ -145,7 +145,7 @@ void AOClient::cmdNoteCardClear(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (!area->addNotecard(current_char, QString())) {
sendServerMessageArea(current_char + " erased their note card.");
}
@ -156,7 +156,7 @@ void AOClient::cmdNoteCardReveal(int argc, QStringList argv)
Q_UNUSED(argc);
Q_UNUSED(argv);
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
const QStringList l_notecards = area->getNotecards();
if (l_notecards.isEmpty()) {
@ -192,7 +192,7 @@ void AOClient::cmdSubTheme(int argc, QStringList argv)
Q_UNUSED(argc);
QString subtheme = argv.join(" ");
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->current_area == current_area)
client->sendPacket("ST", {subtheme, "1"});
}

View File

@ -21,6 +21,7 @@
QSettings* ConfigManager::m_settings = new QSettings("config/config.ini", QSettings::IniFormat);
QSettings* ConfigManager::m_discord = new QSettings("config/discord.ini", QSettings::IniFormat);
QSettings* ConfigManager::m_areas = new QSettings("config/areas.ini", QSettings::IniFormat);
ConfigManager::CommandSettings* ConfigManager::m_commands = new CommandSettings();
QElapsedTimer* ConfigManager::m_uptimeTimer = new QElapsedTimer;
@ -93,6 +94,75 @@ bool ConfigManager::verifyServerConfig()
return true;
}
QString ConfigManager::bindIP()
{
return m_settings->value("Options/bind_ip","all").toString();
}
QStringList ConfigManager::charlist()
{
QStringList l_charlist;
QFile l_file("config/characters.txt");
l_file.open(QIODevice::ReadOnly | QIODevice::Text);
while (!l_file.atEnd()) {
l_charlist.append(l_file.readLine().trimmed());
}
l_file.close();
return l_charlist;
}
QStringList ConfigManager::backgrounds()
{
QStringList l_backgrounds;
QFile l_file("config/backgrounds.txt");
l_file.open(QIODevice::ReadOnly | QIODevice::Text);
while (!l_file.atEnd()) {
l_backgrounds.append(l_file.readLine().trimmed());
}
l_file.close();
return l_backgrounds;
}
QStringList ConfigManager::musiclist()
{
QStringList l_music_list;
QFile l_file("config/music.txt");
l_file.open(QIODevice::ReadOnly | QIODevice::Text);
while (!l_file.atEnd()) {
l_music_list.append(l_file.readLine().trimmed());
}
l_file.close();
if(l_music_list[0].contains(".")) // Add a default category if none exists
l_music_list.insert(0, "==Music==");
return l_music_list;
}
QSettings* ConfigManager::areaData()
{
return m_areas;
}
QStringList ConfigManager::sanitizedAreaNames()
{
QStringList l_area_names = m_areas->childGroups(); // invisibly does a lexicographical sort, because Qt is great like that
std::sort(l_area_names.begin(), l_area_names.end(), [] (const QString &a, const QString &b) {return a.split(":")[0].toInt() < b.split(":")[0].toInt();});
QStringList l_sanitized_area_names;
for (const QString &areaName : qAsConst(l_area_names)) {
QStringList l_nameSplit = areaName.split(":");
l_nameSplit.removeFirst();
QString l_area_name_sanitized = l_nameSplit.join(":");
l_sanitized_area_names.append(l_area_name_sanitized);
}
return l_sanitized_area_names;
}
QStringList ConfigManager::rawAreaNames()
{
return m_areas->childGroups();
}
void ConfigManager::reloadSettings()
{
m_settings->sync();
@ -102,12 +172,12 @@ void ConfigManager::reloadSettings()
QStringList ConfigManager::loadConfigFile(const QString filename)
{
QStringList stringlist;
QFile file("config/text/" + filename + ".txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);
while (!(file.atEnd())) {
stringlist.append(file.readLine().trimmed());
QFile l_file("config/text/" + filename + ".txt");
l_file.open(QIODevice::ReadOnly | QIODevice::Text);
while (!(l_file.atEnd())) {
stringlist.append(l_file.readLine().trimmed());
}
file.close();
l_file.close();
return stringlist;
}

View File

@ -74,7 +74,7 @@ void AOClient::pktSoftwareId(AreaData* area, int argc, QStringList argv, AOPacke
version.minor = match.captured(3).toInt();
}
sendPacket("PN", {QString::number(server->player_count), QString::number(ConfigManager::maxPlayers())});
sendPacket("PN", {QString::number(server->m_player_count), QString::number(ConfigManager::maxPlayers())});
sendPacket("FL", feature_list);
if (ConfigManager::assetUrl().isValid()) {
@ -93,7 +93,7 @@ void AOClient::pktBeginLoad(AreaData* area, int argc, QStringList argv, AOPacket
// Evidence isn't loaded during this part anymore
// As a result, we can always send "0" for evidence length
// Client only cares about what it gets from LE
sendPacket("SI", {QString::number(server->characters.length()), "0", QString::number(server->area_names.length() + server->music_list.length())});
sendPacket("SI", {QString::number(server->m_characters.length()), "0", QString::number(server->m_area_names.length() + server->m_music_list.length())});
}
void AOClient::pktRequestChars(AreaData* area, int argc, QStringList argv, AOPacket packet)
@ -103,7 +103,7 @@ void AOClient::pktRequestChars(AreaData* area, int argc, QStringList argv, AOPac
Q_UNUSED(argv);
Q_UNUSED(packet);
sendPacket("SC", server->characters);
sendPacket("SC", server->m_characters);
}
void AOClient::pktRequestMusic(AreaData* area, int argc, QStringList argv, AOPacket packet)
@ -113,7 +113,7 @@ void AOClient::pktRequestMusic(AreaData* area, int argc, QStringList argv, AOPac
Q_UNUSED(argv);
Q_UNUSED(packet);
sendPacket("SM", server->area_names + server->music_list);
sendPacket("SM", server->m_area_names + server->m_music_list);
}
void AOClient::pktLoadingDone(AreaData* area, int argc, QStringList argv, AOPacket packet)
@ -132,7 +132,7 @@ void AOClient::pktLoadingDone(AreaData* area, int argc, QStringList argv, AOPack
return;
}
server->player_count++;
server->m_player_count++;
area->clientJoinedArea();
joined = true;
server->updateCharsTaken(area);
@ -142,7 +142,7 @@ void AOClient::pktLoadingDone(AreaData* area, int argc, QStringList argv, AOPack
sendPacket("HP", {"1", QString::number(area->defHP())});
sendPacket("HP", {"2", QString::number(area->proHP())});
sendPacket("FA", server->area_names);
sendPacket("FA", server->m_area_names);
//Here lies OPPASS, the genius of FanatSors who send the modpass to everyone in plain text.
sendPacket("DONE");
sendPacket("BN", {area->background()});
@ -217,7 +217,7 @@ void AOClient::pktIcChat(AreaData* area, int argc, QStringList argv, AOPacket pa
validated_packet.contents[5] = pos;
server->broadcast(validated_packet, current_area);
emit logIC((current_char + " " + showname), ooc_name,ipid,server->areas[current_area]->name(),last_message);
emit logIC((current_char + " " + showname), ooc_name,ipid,server->m_areas[current_area]->name(),last_message);
area->updateLastICMessage(validated_packet.contents);
server->can_send_ic_messages = false;
@ -264,7 +264,7 @@ void AOClient::pktOocChat(AreaData* area, int argc, QStringList argv, AOPacket p
int cmd_argc = cmd_argv.length();
handleCommand(command, cmd_argc, cmd_argv);
emit logCMD((current_char + " " + showname),ipid, ooc_name,command,cmd_argv,server->areas[current_area]->name());
emit logCMD((current_char + " " + showname),ipid, ooc_name,command,cmd_argv,server->m_areas[current_area]->name());
return;
}
else {
@ -298,7 +298,7 @@ void AOClient::pktChangeMusic(AreaData* area, int argc, QStringList argv, AOPack
// argument is a valid song
QString argument = argv[0];
for (const QString &song : qAsConst(server->music_list)) {
for (const QString &song : qAsConst(server->m_music_list)) {
if (song == argument || song == "~stop.mp3") { // ~stop.mp3 is a dummy track used by 2.9+
// We have a song here
if (is_dj_blocked) {
@ -327,8 +327,8 @@ void AOClient::pktChangeMusic(AreaData* area, int argc, QStringList argv, AOPack
}
}
for (int i = 0; i < server->area_names.length(); i++) {
QString area = server->area_names[i];
for (int i = 0; i < server->m_area_names.length(); i++) {
QString area = server->m_area_names[i];
if(area == argument) {
changeArea(i);
break;
@ -398,7 +398,7 @@ void AOClient::pktWebSocketIp(AreaData* area, int argc, QStringList argv, AOPack
}
int multiclient_count = 0;
for (AOClient* joined_client : qAsConst(server->clients)) {
for (AOClient* joined_client : qAsConst(server->m_clients)) {
if (remote_ip.isEqual(joined_client->remote_ip))
multiclient_count++;
}
@ -415,11 +415,11 @@ void AOClient::pktModCall(AreaData* area, int argc, QStringList argv, AOPacket p
Q_UNUSED(argc);
Q_UNUSED(argv);
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->authenticated)
client->sendPacket(packet);
}
emit logModcall((current_char + " " + showname),ipid, ooc_name, server->areas[current_area]->name());
emit logModcall((current_char + " " + showname),ipid, ooc_name, server->m_areas[current_area]->name());
if (ConfigManager::discordModcallWebhookEnabled()) {
QString name = ooc_name;
@ -524,7 +524,7 @@ void AOClient::pktAnnounceCase(AreaData* area, int argc, QStringList argv, AOPac
#else
QSet<bool> needs_set = needs_list.toSet();
#endif
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
QSet<bool> matches(client->casing_preferences.begin(), client->casing_preferences.end());
matches.intersect(needs_set);
@ -546,7 +546,7 @@ void AOClient::pktAnnounceCase(AreaData* area, int argc, QStringList argv, AOPac
void AOClient::sendEvidenceList(AreaData* area)
{
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->current_area == current_area)
client->updateEvidenceList(area);
}
@ -590,7 +590,7 @@ AOPacket AOClient::validateIcPacket(AOPacket packet)
if (current_char == "" || !joined)
// Spectators cannot use IC
return invalid;
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
if (area->lockStatus() == AreaData::LockStatus::SPECTATABLE && !area->invited().contains(id) && !checkAuth(ACLFlags.value("BYPASS_LOCKS")))
// Non-invited players cannot speak in spectatable areas
return invalid;
@ -617,7 +617,7 @@ AOPacket AOClient::validateIcPacket(AOPacket packet)
// Selected char is different from supplied folder name
// This means the user is INI-swapped
if (!area->iniswapAllowed()) {
if (!server->characters.contains(incoming_args[2].toString(), Qt::CaseInsensitive))
if (!server->m_characters.contains(incoming_args[2].toString(), Qt::CaseInsensitive))
return invalid;
}
qDebug() << "INI swap detected from " << getIpid();
@ -670,7 +670,7 @@ AOPacket AOClient::validateIcPacket(AOPacket packet)
args.append(incoming_args[5].toString());
if (pos != incoming_args[5].toString()) {
pos = incoming_args[5].toString();
updateEvidenceList(server->areas[current_area]);
updateEvidenceList(server->m_areas[current_area]);
}
// sfx name
@ -770,7 +770,7 @@ AOPacket AOClient::validateIcPacket(AOPacket packet)
QString other_emote = "0";
QString other_offset = "0";
QString other_flip = "0";
for (AOClient* client : qAsConst(server->clients)) {
for (AOClient* client : qAsConst(server->m_clients)) {
if (client->pairing_with == char_id
&& other_charid != char_id
&& client->char_id == pairing_with
@ -990,7 +990,7 @@ void AOClient::loginAttempt(QString message)
sendPacket("AUTH", {"0"}); // Client: "Login unsuccessful."
sendServerMessage("Incorrect password.");
}
emit logLogin((current_char + " " + showname),ooc_name,"Moderator", ipid, server->areas.value(current_area)->name(),authenticated);
emit logLogin((current_char + " " + showname),ooc_name,"Moderator", ipid, server->m_areas.value(current_area)->name(),authenticated);
break;
case DataTypes::AuthType::ADVANCED:
QStringList login = message.split(" ");
@ -1014,7 +1014,7 @@ void AOClient::loginAttempt(QString message)
sendPacket("AUTH", {"0"}); // Client: "Login unsuccessful."
sendServerMessage("Incorrect password.");
}
emit logLogin((current_char + " " + showname),ooc_name, username, ipid, server->areas.value(current_area)->name(),authenticated);
emit logLogin((current_char + " " + showname),ooc_name, username, ipid, server->m_areas.value(current_area)->name(),authenticated);
break;
}
sendServerMessage("Exiting login prompt.");

View File

@ -19,24 +19,31 @@
Server::Server(int p_port, int p_ws_port, QObject* parent) :
QObject(parent),
player_count(0),
m_player_count(0),
port(p_port),
ws_port(p_ws_port)
{
server = new QTcpServer(this);
connect(server, SIGNAL(newConnection()), this, SLOT(clientConnected()));
proxy = new WSProxy(port, ws_port, this);
if(ws_port != -1)
proxy->start();
timer = new QTimer();
db_manager = new DBManager();
//We create it, even if its not used later on.
discord = new Discord(this);
logger = new ULogger(this);
connect(this, &Server::logConnectionAttempt,
logger, &ULogger::logConnectionAttempt);
}
void Server::start()
{
QSettings config("config/config.ini", QSettings::IniFormat);
config.beginGroup("Options");
QString bind_ip = config.value("ip", "all").toString();
QString bind_ip = ConfigManager::bindIP();
QHostAddress bind_addr;
if (bind_ip == "all")
bind_addr = QHostAddress::Any;
@ -52,9 +59,10 @@ void Server::start()
qDebug() << "Server listening on" << port;
}
discord = new Discord(this);
//Checks if any Discord webhooks are enabled.
handleDiscordIntegration();
//Construct modern advertiser if enabled in config
if (ConfigManager::advertiseHTTPServer()) {
httpAdvertiserTimer = new QTimer(this);
httpAdvertiser = new HTTPAdvertiser();
@ -69,53 +77,24 @@ void Server::start()
httpAdvertiserTimer->start(300000);
}
logger = new ULogger(this);
connect(this, &Server::logConnectionAttempt,
logger, &ULogger::logConnectionAttempt);
//Get characters from config file
m_characters = ConfigManager::charlist();
proxy = new WSProxy(port, ws_port, this);
if(ws_port != -1)
proxy->start();
//Get musiclist from config file
m_music_list = ConfigManager::musiclist();
QFile char_list("config/characters.txt");
char_list.open(QIODevice::ReadOnly | QIODevice::Text);
while (!char_list.atEnd()) {
characters.append(char_list.readLine().trimmed());
}
char_list.close();
//Get backgrounds from config file
m_backgrounds = ConfigManager::backgrounds();
QFile music_file("config/music.txt");
music_file.open(QIODevice::ReadOnly | QIODevice::Text);
while (!music_file.atEnd()) {
music_list.append(music_file.readLine().trimmed());
}
music_file.close();
if(music_list[0].contains(".")) // Add a default category if none exists
music_list.insert(0, "==Music==");
QFile bg_file("config/backgrounds.txt");
bg_file.open(QIODevice::ReadOnly | QIODevice::Text);
while (!bg_file.atEnd()) {
backgrounds.append(bg_file.readLine().trimmed());
}
bg_file.close();
QSettings areas_ini("config/areas.ini", QSettings::IniFormat);
area_names = areas_ini.childGroups(); // invisibly does a lexicographical sort, because Qt is great like that
std::sort(area_names.begin(), area_names.end(), [] (const QString &a, const QString &b) {return a.split(":")[0].toInt() < b.split(":")[0].toInt();});
QStringList sanitized_area_names;
QStringList raw_area_names = area_names;
for (const QString &area_name : qAsConst(area_names)) {
QStringList name_split = area_name.split(":");
name_split.removeFirst();
QString area_name_sanitized = name_split.join(":");
sanitized_area_names.append(area_name_sanitized);
}
area_names = sanitized_area_names;
//Assembles the area list
m_area_names = ConfigManager::sanitizedAreaNames();
QStringList raw_area_names = ConfigManager::rawAreaNames();
for (int i = 0; i < raw_area_names.length(); i++) {
QString area_name = raw_area_names[i];
areas.insert(i, new AreaData(area_name, i));
m_areas.insert(i, new AreaData(area_name, i));
}
//Rate-Limiter for IC-Chat
connect(&next_message_timer, SIGNAL(timeout()), this, SLOT(allowMessage()));
}
@ -124,10 +103,10 @@ void Server::clientConnected()
QTcpSocket* socket = server->nextPendingConnection();
int user_id;
QList<int> user_ids;
for (AOClient* client : qAsConst(clients)) {
for (AOClient* client : qAsConst(m_clients)) {
user_ids.append(client->id);
}
for (user_id = 0; user_id <= player_count; user_id++) {
for (user_id = 0; user_id <= m_player_count; user_id++) {
if (user_ids.contains(user_id))
continue;
else
@ -140,7 +119,7 @@ void Server::clientConnected()
client->calculateIpid();
auto ban = db_manager->isIPBanned(client->getIpid());
bool is_banned = ban.first;
for (AOClient* joined_client : qAsConst(clients)) {
for (AOClient* joined_client : qAsConst(m_clients)) {
if (client->remote_ip.isEqual(joined_client->remote_ip))
multiclient_count++;
}
@ -160,11 +139,11 @@ void Server::clientConnected()
return;
}
clients.append(client);
m_clients.append(client);
connect(socket, &QTcpSocket::disconnected, client,
&AOClient::clientDisconnected);
connect(socket, &QTcpSocket::disconnected, this, [=] {
clients.removeAll(client);
m_clients.removeAll(client);
client->deleteLater();
});
connect(socket, &QTcpSocket::readyRead, client, &AOClient::clientData);
@ -182,7 +161,7 @@ void Server::clientConnected()
void Server::updateCharsTaken(AreaData* area)
{
QStringList chars_taken;
for (const QString &cur_char : qAsConst(characters)) {
for (const QString &cur_char : qAsConst(m_characters)) {
chars_taken.append(area->charactersTaken().contains(getCharID(cur_char))
? QStringLiteral("-1")
: QStringLiteral("0"));
@ -190,7 +169,7 @@ void Server::updateCharsTaken(AreaData* area)
AOPacket response_cc("CharsCheck", chars_taken);
for (AOClient* client : qAsConst(clients)) {
for (AOClient* client : qAsConst(m_clients)) {
if (client->current_area == area->index()){
if (!client->is_charcursed)
client->sendPacket(response_cc);
@ -217,7 +196,7 @@ QStringList Server::getCursedCharsTaken(AOClient* client, QStringList chars_take
void Server::broadcast(AOPacket packet, int area_index)
{
for (AOClient* client : qAsConst(clients)) {
for (AOClient* client : qAsConst(m_clients)) {
if (client->current_area == area_index)
client->sendPacket(packet);
}
@ -225,7 +204,7 @@ void Server::broadcast(AOPacket packet, int area_index)
void Server::broadcast(AOPacket packet)
{
for (AOClient* client : qAsConst(clients)) {
for (AOClient* client : qAsConst(m_clients)) {
client->sendPacket(packet);
}
}
@ -233,7 +212,7 @@ void Server::broadcast(AOPacket packet)
QList<AOClient*> Server::getClientsByIpid(QString ipid)
{
QList<AOClient*> return_clients;
for (AOClient* client : qAsConst(clients)) {
for (AOClient* client : qAsConst(m_clients)) {
if (client->getIpid() == ipid)
return_clients.append(client);
}
@ -242,7 +221,7 @@ QList<AOClient*> Server::getClientsByIpid(QString ipid)
AOClient* Server::getClientByID(int id)
{
for (AOClient* client : qAsConst(clients)) {
for (AOClient* client : qAsConst(m_clients)) {
if (client->id == id)
return client;
}
@ -251,9 +230,9 @@ AOClient* Server::getClientByID(int id)
int Server::getCharID(QString char_name)
{
for (const QString &character : qAsConst(characters)) {
for (const QString &character : qAsConst(m_characters)) {
if (character.toLower() == char_name.toLower()) {
return characters.indexOf(QRegExp(character, Qt::CaseInsensitive));
return m_characters.indexOf(QRegExp(character, Qt::CaseInsensitive));
}
}
return -1; // character does not exist
@ -336,7 +315,7 @@ void Server::hookupLogger(AOClient* client)
Server::~Server()
{
for (AOClient* client : qAsConst(clients)) {
for (AOClient* client : qAsConst(m_clients)) {
client->deleteLater();
}
server->deleteLater();

View File

@ -24,7 +24,7 @@ void AOClient::addStatement(QStringList packet)
if (checkTestimonySymbols(packet[4])) {
return;
}
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
int c_statement = area->statement();
if (c_statement >= -1) {
if (area->testimonyRecording() == AreaData::TestimonyRecording::RECORDING) {
@ -57,7 +57,7 @@ QStringList AOClient::updateStatement(QStringList packet)
if (checkTestimonySymbols(packet[4])) {
return packet;
}
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
int c_statement = area->statement();
area->setTestimonyRecording(AreaData::TestimonyRecording::PLAYBACK);
if (c_statement <= 0 || area->testimony()[c_statement].empty())
@ -73,7 +73,7 @@ QStringList AOClient::updateStatement(QStringList packet)
void AOClient::clearTestimony()
{
AreaData* area = server->areas[current_area];
AreaData* area = server->m_areas[current_area];
area->clearTestimony();
}