From b5be8296d4a7a9241bb5af75634062540b89ccd8 Mon Sep 17 00:00:00 2001 From: Jessica James Date: Sat, 12 Oct 2019 01:28:31 -0500 Subject: [PATCH] Removed HashTable, CString Added JUPITER_SOCK_EWOULDBLOCK Code now runs and compiles on linux --- src/Bot/include/IRC_Command.h | 2 +- src/Bot/src/IRC_Bot.cpp | 19 +- src/Bot/src/IRC_Command.cpp | 2 +- src/Jupiter | 2 +- src/Plugins/ChannelRelay/ChannelRelay.cpp | 19 +- src/Plugins/ExtraCommands/ExtraCommands.cpp | 18 +- src/Plugins/FunCommands/FunCommands.cpp | 5 +- .../RenX.Announcements/RenX_Announcements.h | 1 - .../RenX/RenX.Commands/RenX_Commands.cpp | 26 +- .../RenX/RenX.Core/RenX_BanDatabase.cpp | 19 +- src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h | 10 +- src/Plugins/RenX/RenX.Core/RenX_Core.cpp | 2 +- .../RenX/RenX.Core/RenX_ExemptionDatabase.cpp | 4 +- .../RenX/RenX.Core/RenX_ExemptionDatabase.h | 5 +- .../RenX/RenX.Core/RenX_LadderDatabase.cpp | 2 +- .../RenX/RenX.Core/RenX_LadderDatabase.h | 2 +- src/Plugins/RenX/RenX.Core/RenX_Server.cpp | 239 ++++++++++-------- src/Plugins/RenX/RenX.Core/RenX_Server.h | 9 +- src/Plugins/RenX/RenX.Core/RenX_Tags.cpp | 8 +- src/Plugins/RenX/RenX.Core/RenX_Tags.h | 5 +- .../RenX.ExtraLogging/RenX_ExtraLogging.cpp | 4 +- .../RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp | 60 ++--- .../RenX/RenX.Ladder.Web/RenX_Ladder_Web.h | 18 +- src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp | 9 +- src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp | 2 +- .../RenX/RenX.ModSystem/RenX_ModSystem.cpp | 35 +-- .../RenX/RenX.ServerList/RenX_ServerList.cpp | 12 +- 27 files changed, 272 insertions(+), 267 deletions(-) diff --git a/src/Bot/include/IRC_Command.h b/src/Bot/include/IRC_Command.h index 6ac4d13..4d2f19e 100644 --- a/src/Bot/include/IRC_Command.h +++ b/src/Bot/include/IRC_Command.h @@ -207,7 +207,7 @@ public: /** * @brief Copy constructor for the GenericCommandWrapperIRCCommand class */ - GenericCommandWrapperIRCCommand(GenericCommandWrapperIRCCommand &in_command); + GenericCommandWrapperIRCCommand(const GenericCommandWrapperIRCCommand &in_command); /** * @brief Wrapper constructor for the GenericCommandWrapperIRCCommand class diff --git a/src/Bot/src/IRC_Bot.cpp b/src/Bot/src/IRC_Bot.cpp index a9846dd..51a391f 100644 --- a/src/Bot/src/IRC_Bot.cpp +++ b/src/Bot/src/IRC_Bot.cpp @@ -116,20 +116,19 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) if (section == nullptr) return; - auto read_section = [this, section, in_command](Jupiter::HashTable::Bucket::Entry &in_entry) - { + for (auto& entry : section->getTable()) { size_t tmp_index; Jupiter::ReferenceString tmp_key, tmp_sub_key; IRCCommand *command; - tmp_index = in_entry.key.find('.'); + tmp_index = entry.first.find('.'); if (tmp_index != Jupiter::INVALID_INDEX) { // non-default access assignment - tmp_key.set(in_entry.key.ptr(), tmp_index); + tmp_key.set(entry.first.ptr(), tmp_index); - tmp_sub_key = in_entry.key; + tmp_sub_key = entry.first; tmp_sub_key.shiftRight(tmp_index + 1); if (tmp_sub_key.findi("Type."_jrs) == 0) @@ -138,7 +137,7 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) command = this->getCommand(tmp_key); if (command != nullptr && (in_command == nullptr || in_command == command)) - command->setAccessLevel(tmp_sub_key.asInt(), in_entry.value.asInt()); + command->setAccessLevel(tmp_sub_key.asInt(), entry.second.asInt()); } else if (tmp_sub_key.findi("Channel."_jrs) == 0) { @@ -147,19 +146,17 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) // Assign access level to command (if command exists) command = this->getCommand(tmp_key); if (command != nullptr && (in_command == nullptr || in_command == command)) - command->setAccessLevel(tmp_sub_key, in_entry.value.asInt()); + command->setAccessLevel(tmp_sub_key, entry.second.asInt()); } } else { // Assign access level to command (if command exists) - command = this->getCommand(in_entry.key); + command = this->getCommand(entry.first); if (command != nullptr && (in_command == nullptr || in_command == command)) - command->setAccessLevel(in_entry.value.asInt()); + command->setAccessLevel(entry.second.asInt()); } }; - - section->getTable().callback(read_section); }; set_command_access_levels(this->getSecondaryConfigSection()); diff --git a/src/Bot/src/IRC_Command.cpp b/src/Bot/src/IRC_Command.cpp index e84ec96..e9cd602 100644 --- a/src/Bot/src/IRC_Command.cpp +++ b/src/Bot/src/IRC_Command.cpp @@ -130,7 +130,7 @@ void IRCCommand::create() /** GenericCommandWrapperIRCCommand */ -GenericCommandWrapperIRCCommand::GenericCommandWrapperIRCCommand(GenericCommandWrapperIRCCommand &in_command) : IRCCommand(in_command) +GenericCommandWrapperIRCCommand::GenericCommandWrapperIRCCommand(const GenericCommandWrapperIRCCommand &in_command) : IRCCommand(in_command) { GenericCommandWrapperIRCCommand::m_command = in_command.m_command; diff --git a/src/Jupiter b/src/Jupiter index cfcc27e..cf77a1b 160000 --- a/src/Jupiter +++ b/src/Jupiter @@ -1 +1 @@ -Subproject commit cfcc27e7d9ca2263cab592e1f619e7d825f746e2 +Subproject commit cf77a1b6a72491686f370be33bc367f28bebeb40 diff --git a/src/Plugins/ChannelRelay/ChannelRelay.cpp b/src/Plugins/ChannelRelay/ChannelRelay.cpp index 5dd7a76..86ed9a1 100644 --- a/src/Plugins/ChannelRelay/ChannelRelay.cpp +++ b/src/Plugins/ChannelRelay/ChannelRelay.cpp @@ -53,7 +53,6 @@ void ChannelRelayPlugin::OnChat(Jupiter::IRC::Client *server, const Jupiter::Rea int type = chan->getType(); if (ChannelRelayPlugin::types.contains(type)) { - unsigned int count = server->getChannelCount(); unsigned int serverCount = serverManager->size(); char prefix = chan->getUserPrefix(nick); Jupiter::String str; @@ -64,16 +63,14 @@ void ChannelRelayPlugin::OnChat(Jupiter::IRC::Client *server, const Jupiter::Rea str = "<"_js + prefix + nick + "> "_jrs + message; } - Jupiter::IRC::Client *irc_server; - - auto relay_channels_callback = [irc_server, type, chan, &str](Jupiter::IRC::Client::ChannelTableType::Bucket::Entry &in_entry) - { - if (in_entry.value.getType() == type && &in_entry.value != chan) - irc_server->sendMessage(in_entry.value.getName(), str); - }; - - while (serverCount != 0) - serverManager->getServer(--serverCount)->getChannels().callback(relay_channels_callback); + while (serverCount != 0) { + auto server = serverManager->getServer(--serverCount); + for (auto& channel : server->getChannels()) { + if (channel.second.getType() == type && &channel.second != chan) { + server->sendMessage(channel.second.getName(), str); + } + } + } } } } diff --git a/src/Plugins/ExtraCommands/ExtraCommands.cpp b/src/Plugins/ExtraCommands/ExtraCommands.cpp index 6be2198..292422b 100644 --- a/src/Plugins/ExtraCommands/ExtraCommands.cpp +++ b/src/Plugins/ExtraCommands/ExtraCommands.cpp @@ -258,24 +258,18 @@ Jupiter::GenericCommand::ResponseLine *DebugInfoGenericCommand::trigger(const Ju line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("Outputting data for %u channels...", server->getChannelCount()), GenericCommand::DisplayType::PublicSuccess); line = line->next; - auto debug_callback = [&line](Jupiter::IRC::Client::ChannelTableType::Bucket::Entry &in_entry) - { - line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("Channel %.*s - Type: %d", in_entry.value.getName().size(), in_entry.value.getName().ptr(), in_entry.value.getType()), GenericCommand::DisplayType::PublicSuccess); + for (auto& channel_pair : server->getChannels()) { + auto& channel = channel_pair.second; + line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("Channel %.*s - Type: %d", channel.getName().size(), channel.getName().ptr(), channel.getType()), GenericCommand::DisplayType::PublicSuccess); line = line->next; - auto debug_user_callback = [&line, &in_entry](Jupiter::IRC::Client::Channel::UserTableType::Bucket::Entry &in_user_entry) - { - Jupiter::IRC::Client::User *user = in_user_entry.value.getUser(); - line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("User %.*s!%.*s@%.*s (prefix: %c) of channel %.*s (of %u shared)", user->getNickname().size(), user->getNickname().ptr(), user->getUsername().size(), user->getUsername().ptr(), user->getHostname().size(), user->getHostname().ptr(), in_entry.value.getUserPrefix(in_user_entry.value) ? in_entry.value.getUserPrefix(in_user_entry.value) : ' ', in_entry.value.getName().size(), in_entry.value.getName().ptr(), user->getChannelCount()), GenericCommand::DisplayType::PublicSuccess); + for (auto& user_pair : channel.getUsers()) { + Jupiter::IRC::Client::User *user = user_pair.second.getUser(); + line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("User %.*s!%.*s@%.*s (prefix: %c) of channel %.*s (of %u shared)", user->getNickname().size(), user->getNickname().ptr(), user->getUsername().size(), user->getUsername().ptr(), user->getHostname().size(), user->getHostname().ptr(), channel.getUserPrefix(user_pair.second) ? channel.getUserPrefix(user_pair.second) : ' ', channel.getName().size(), channel.getName().ptr(), user->getChannelCount()), GenericCommand::DisplayType::PublicSuccess); line = line->next; }; - - in_entry.value.getUsers().callback(debug_user_callback); }; - for (unsigned int index = 0; index < server->getChannelCount(); ++index) - server->getChannels().callback(debug_callback); - return ret; } diff --git a/src/Plugins/FunCommands/FunCommands.cpp b/src/Plugins/FunCommands/FunCommands.cpp index c52bedc..4623f60 100644 --- a/src/Plugins/FunCommands/FunCommands.cpp +++ b/src/Plugins/FunCommands/FunCommands.cpp @@ -19,7 +19,6 @@ #include #include "Jupiter/Functions.h" #include "Jupiter/Socket.h" -#include "Jupiter/CString.h" #include "FunCommands.h" #include "IRC_Bot.h" @@ -167,14 +166,14 @@ Jupiter::GenericCommand::ResponseLine *ResolveGenericCommand::trigger(const Jupi Jupiter::ReferenceString command = Jupiter::ReferenceString::getWord(parameters, 0, WHITESPACE); if (command.equalsi("hostname"_jrs) || command.equalsi("host"_jrs)) { - Jupiter::ReferenceString resolved = Jupiter::Socket::resolveHostname(Jupiter::CStringS::gotoWord(parameters, 1, WHITESPACE).c_str(), 0); + Jupiter::ReferenceString resolved = Jupiter::Socket::resolveHostname(static_cast(Jupiter::ReferenceString::gotoWord(parameters, 1, WHITESPACE)).c_str(), 0); if (resolved.isEmpty()) return new Jupiter::GenericCommand::ResponseLine("Error: Unable to resolve."_jrs, GenericCommand::DisplayType::PublicError); return new Jupiter::GenericCommand::ResponseLine(resolved, GenericCommand::DisplayType::PublicSuccess); } else if (command.equalsi("ip"_jrs)) { - Jupiter::ReferenceString resolved = Jupiter::Socket::resolveAddress(Jupiter::CStringS::gotoWord(parameters, 1, WHITESPACE).c_str(), 0); + Jupiter::ReferenceString resolved = Jupiter::Socket::resolveAddress(static_cast(Jupiter::ReferenceString::gotoWord(parameters, 1, WHITESPACE)).c_str(), 0); if (resolved.isEmpty()) return new Jupiter::GenericCommand::ResponseLine("Error: Unable to resolve."_jrs, GenericCommand::DisplayType::PublicError); return new Jupiter::GenericCommand::ResponseLine(resolved, GenericCommand::DisplayType::PublicSuccess); diff --git a/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.h b/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.h index 1a9c169..3c8b070 100644 --- a/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.h +++ b/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.h @@ -23,7 +23,6 @@ #include "Jupiter/Timer.h" #include "Jupiter/File.h" #include "Jupiter/String.hpp" -#include "Jupiter/CString.h" #include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" diff --git a/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp b/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp index 306fe70..0752b5f 100644 --- a/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp +++ b/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp @@ -1267,7 +1267,7 @@ void ReconnectIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString if (server->isLogChanType(type)) { if (server->reconnect(RenX::DisconnectReason::Triggered)) msg.set("Connection established"); - else msg.format("[RenX] ERROR: Failed to connect to %.*s on port %u." ENDL, server->getHostname().size(), server->getHostname().ptr(), server->getPort()); + else msg.format("[RenX] ERROR: Failed to connect to %.*s on port %u." ENDL, server->getHostname().size(), server->getHostname().c_str(), server->getPort()); source->sendMessage(channel, msg); } } @@ -2104,7 +2104,7 @@ void AddBanIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c { size_t index = 0; Jupiter::ReferenceString name; - Jupiter::CStringS ip_str; + std::string ip_str; uint32_t ip = 0U; uint8_t prefix_length = 32U; uint64_t steamid = 0U; @@ -2138,7 +2138,7 @@ void AddBanIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c return; } - ip_str = Jupiter::ReferenceString::getWord(parameters, index++, ADDBAN_WHITESPACE); + ip_str = static_cast(Jupiter::ReferenceString::getWord(parameters, index++, ADDBAN_WHITESPACE)); } else if (word.equalsi("Steam"_jrs) || word.equalsi("SteamID"_jrs)) { @@ -2217,13 +2217,13 @@ void AddBanIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c flags = RenX::BanDatabase::Entry::FLAG_TYPE_GAME; index = ip_str.find('/'); - if (index != JUPITER_INVALID_INDEX) + if (index != std::string::npos) { Jupiter::ReferenceString prefix_length_str(ip_str.c_str() + index + 1); prefix_length = prefix_length_str.asUnsignedInt(); if (prefix_length == 0) prefix_length = 32U; - ip_str.truncate(prefix_length_str.size() + 1); + ip_str.erase(index); } ip = Jupiter::Socket::pton4(ip_str.c_str()); @@ -2555,7 +2555,7 @@ void AddExemptionIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableStr else { size_t index = 0; - Jupiter::CStringS ip_str; + std::string ip_str; uint32_t ip = 0U; uint8_t prefix_length = 32U; uint64_t steamid = 0U; @@ -2576,7 +2576,7 @@ void AddExemptionIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableStr return; } - ip_str = Jupiter::ReferenceString::getWord(parameters, index++, ADDEXEMPTION_WHITESPACE); + ip_str = static_cast(Jupiter::ReferenceString::getWord(parameters, index++, ADDEXEMPTION_WHITESPACE)); } else if (word.equalsi("Steam"_jrs) || word.equalsi("SteamID"_jrs)) { @@ -2613,16 +2613,16 @@ void AddExemptionIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableStr if (flags == 0) flags = RenX::ExemptionDatabase::Entry::FLAG_TYPE_BAN; - if (ip_str.isNotEmpty()) + if (!ip_str.empty()) { index = ip_str.find('/'); - if (index != JUPITER_INVALID_INDEX) + if (index != std::string::npos) { Jupiter::ReferenceString prefix_length_str(ip_str.c_str() + index + 1); prefix_length = prefix_length_str.asUnsignedInt(); if (prefix_length == 0) prefix_length = 32U; - ip_str.truncate(prefix_length_str.size() + 1); + ip_str.erase(index); } ip = Jupiter::Socket::pton4(ip_str.c_str()); @@ -3204,8 +3204,8 @@ void ModRequestGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play Jupiter::String fmtName = RenX::getFormattedPlayerName(*player); Jupiter::StringL user_message = Jupiter::StringL::Format(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game; please look in ", staff_word.size(), staff_word.ptr(), fmtName.size(), fmtName.ptr()); Jupiter::StringS channel_message = Jupiter::StringS::Format(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game!" IRCCOLOR, staff_word.size(), staff_word.ptr(), fmtName.size(), fmtName.ptr()); - - auto alert_message_callback = [this, source, server, &user_message, &channel_message, &messageCount](Jupiter::IRC::Client::ChannelTableType::Bucket::Entry &in_entry) + + /*auto alert_message_callback = [this, source, server, &user_message, &channel_message, &messageCount](Jupiter::IRC::Client::ChannelTableType::Bucket::Entry &in_entry) { auto alert_message_user_callback = [server, &in_entry, &user_message, &messageCount](Jupiter::IRC::Client::Channel::UserTableType::Bucket::Entry &in_user_entry) { @@ -3224,7 +3224,7 @@ void ModRequestGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play in_entry.value.getUsers().callback(alert_message_user_callback); user_message -= in_entry.value.getName().size(); } - }; + };*/ source->sendMessage(*player, Jupiter::StringS::Format("A total of %u %.*ss have been notified of your assistance request.", messageCount, staff_word.size(), staff_word.ptr())); } diff --git a/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.cpp b/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.cpp index eb4e93d..5b2069a 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.cpp @@ -62,7 +62,7 @@ void RenX::BanDatabase::process_data(Jupiter::DataBuffer &buffer, FILE *file, fp // Read varData from buffer to entry for (size_t varData_entries = buffer.pop(); varData_entries != 0; --varData_entries) - entry->varData.set(buffer.pop(), buffer.pop()); + entry->varData[buffer.pop()] = buffer.pop(); RenX::BanDatabase::entries.add(entry); } @@ -153,13 +153,10 @@ void RenX::BanDatabase::write(RenX::BanDatabase::Entry *entry, FILE *file) size_t varData_entries = entry->varData.size(); buffer.push(varData_entries); - auto write_varData_entry = [&buffer](Jupiter::HashTable::Bucket::Entry &in_entry) - { - buffer.push(in_entry.key); - buffer.push(in_entry.value); - }; - - entry->varData.callback(write_varData_entry); + for (auto& entry : entry->varData) { + buffer.push(entry.first); + buffer.push(entry.second); + } // push buffer to file buffer.push_to(file); @@ -189,7 +186,7 @@ void RenX::BanDatabase::add(RenX::Server *server, const RenX::PlayerInfo &player Jupiter::ArrayList &xPlugins = *RenX::getCore()->getPlugins(); for (size_t i = 0; i < xPlugins.size(); i++) if (xPlugins.get(i)->RenX_OnBan(*server, player, pluginData)) - entry->varData.set(xPlugins.get(i)->getName(), pluginData); + entry->varData[xPlugins.get(i)->getName()] = pluginData; entries.add(entry); RenX::BanDatabase::write(entry); @@ -239,7 +236,7 @@ uint8_t RenX::BanDatabase::getVersion() const return RenX::BanDatabase::write_version; } -const Jupiter::ReadableString &RenX::BanDatabase::getFileName() const +const std::string &RenX::BanDatabase::getFileName() const { return RenX::BanDatabase::filename; } @@ -251,7 +248,7 @@ const Jupiter::ArrayList &RenX::BanDatabase::getEntrie bool RenX::BanDatabase::initialize() { - RenX::BanDatabase::filename = RenX::getCore()->getConfig().get("BanDB"_jrs, "Bans.db"_jrs); + RenX::BanDatabase::filename = static_cast(RenX::getCore()->getConfig().get("BanDB"_jrs, "Bans.db"_jrs)); return this->process_file(filename); } diff --git a/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h b/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h index 714cd3c..45ebb9b 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h +++ b/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h @@ -20,9 +20,9 @@ #define _RENX_BANDATABASE_H_HEADER #include +#include #include "Jupiter/Database.h" #include "Jupiter/String.hpp" -#include "Jupiter/CString.h" #include "Jupiter/ArrayList.h" #include "RenX.h" @@ -79,6 +79,8 @@ namespace RenX */ struct RENX_API Entry { + using VarDataTableType = std::unordered_map; + fpos_t pos; /** Position of the entry in the database */ uint16_t flags /** Flags affecting this ban entry (See below for flags) */ = 0x00; std::chrono::system_clock::time_point timestamp /** Time the ban was created */; @@ -91,7 +93,7 @@ namespace RenX Jupiter::StringS name /** Name of the banned player */; Jupiter::StringS banner /** Name of the user who initiated the ban */; Jupiter::StringS reason /** Reason the player was banned */; - Jupiter::HashTable varData; /** Variable entry data */ + VarDataTableType varData; /** Variable entry data */ static const uint16_t FLAG_ACTIVE = 0x8000U; static const uint16_t FLAG_USE_RDNS = 0x4000U; @@ -199,7 +201,7 @@ namespace RenX * * @return Database file name */ - const Jupiter::ReadableString &getFileName() const; + const std::string &getFileName() const; /** * @brief Fetches the list of ban entries. @@ -217,7 +219,7 @@ namespace RenX uint8_t read_version = write_version; fpos_t eof; - Jupiter::CStringS filename; + std::string filename; Jupiter::ArrayList entries; }; diff --git a/src/Plugins/RenX/RenX.Core/RenX_Core.cpp b/src/Plugins/RenX/RenX.Core/RenX_Core.cpp index c67dd73..f4d56f9 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Core.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Core.cpp @@ -58,7 +58,7 @@ bool RenX::Core::initialize() if (server->connect() == false) { - fprintf(stderr, "[RenX] ERROR: Failed to connect to %.*s on port %u. Error code: %d" ENDL, server->getHostname().size(), server->getHostname().ptr(), server->getPort(), Jupiter::Socket::getLastError()); + fprintf(stderr, "[RenX] ERROR: Failed to connect to %.*s on port %u. Error code: %d" ENDL, server->getHostname().size(), server->getHostname().c_str(), server->getPort(), Jupiter::Socket::getLastError()); delete server; } else RenX::Core::addServer(server); diff --git a/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.cpp b/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.cpp index 7b13e09..999efec 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.cpp @@ -174,7 +174,7 @@ uint8_t RenX::ExemptionDatabase::getVersion() const return RenX::ExemptionDatabase::write_version; } -const Jupiter::ReadableString &RenX::ExemptionDatabase::getFileName() const +const std::string &RenX::ExemptionDatabase::getFileName() const { return RenX::ExemptionDatabase::filename; } @@ -186,7 +186,7 @@ const Jupiter::ArrayList &RenX::ExemptionDatabas bool RenX::ExemptionDatabase::initialize() { - RenX::ExemptionDatabase::filename = RenX::getCore()->getConfig().get("ExemptionDB"_jrs, "Exemptions.db"_jrs); + RenX::ExemptionDatabase::filename = static_cast(RenX::getCore()->getConfig().get("ExemptionDB"_jrs, "Exemptions.db"_jrs)); return this->process_file(filename); } diff --git a/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.h b/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.h index 28a1097..e04a0da 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.h +++ b/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.h @@ -23,7 +23,6 @@ #include #include "Jupiter/Database.h" #include "Jupiter/String.hpp" -#include "Jupiter/CString.h" #include "Jupiter/ArrayList.h" #include "RenX.h" @@ -173,7 +172,7 @@ namespace RenX * * @return Database file name */ - const Jupiter::ReadableString &getFileName() const; + const std::string &getFileName() const; /** * @brief Fetches the list of exemption entries. @@ -191,7 +190,7 @@ namespace RenX uint8_t read_version = write_version; fpos_t eof; - Jupiter::CStringS filename; + std::string filename; Jupiter::ArrayList entries; }; diff --git a/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.cpp b/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.cpp index 33c8971..aa6c74d 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.cpp @@ -321,7 +321,7 @@ void RenX::LadderDatabase::append(RenX::LadderDatabase::Entry *entry) RenX::LadderDatabase::end = entry; } -void RenX::LadderDatabase::write(const Jupiter::CStringType &filename) +void RenX::LadderDatabase::write(const std::string &filename) { return RenX::LadderDatabase::write(filename.c_str()); } diff --git a/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.h b/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.h index 9cef38a..25ea132 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.h +++ b/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.h @@ -162,7 +162,7 @@ namespace RenX /** * @brief Writes the current ladder data to the disk. */ - void write(const Jupiter::CStringType &filename); + void write(const std::string &filename); void write(const char *filename); /** diff --git a/src/Plugins/RenX/RenX.Core/RenX_Server.cpp b/src/Plugins/RenX/RenX.Core/RenX_Server.cpp index c709c16..49f8d7c 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Server.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Server.cpp @@ -109,7 +109,7 @@ int RenX::Server::think() } } } - else if (Jupiter::Socket::getLastError() == 10035) // Operation would block (no new data) + else if (Jupiter::Socket::getLastError() == JUPITER_SOCK_EWOULDBLOCK) // Operation would block (no new data) { cycle_player_rdns(); @@ -159,22 +159,27 @@ int RenX::Server::think() int RenX::Server::OnRehash() { - Jupiter::StringS oldHostname = RenX::Server::hostname; - Jupiter::StringS oldClientHostname = RenX::Server::clientHostname; + std::string oldHostname = RenX::Server::hostname; + std::string oldClientHostname = RenX::Server::clientHostname; Jupiter::StringS oldPass = RenX::Server::pass; unsigned short oldPort = RenX::Server::port; int oldSteamFormat = RenX::Server::steamFormat; RenX::Server::commands.emptyAndDelete(); RenX::Server::init(*RenX::getCore()->getConfig().getSection(RenX::Server::configSection)); - if (RenX::Server::port == 0 || RenX::Server::hostname.isNotEmpty()) + if (RenX::Server::port == 0 || !RenX::Server::hostname.empty()) { RenX::Server::hostname = oldHostname; RenX::Server::clientHostname = oldClientHostname; RenX::Server::pass = oldPass; RenX::Server::port = oldPort; } - else if (oldHostname.equalsi(RenX::Server::hostname) == false || oldPort != RenX::Server::port || oldClientHostname.equalsi(RenX::Server::clientHostname) == false || oldPass.equalsi(RenX::Server::pass) == false) + else if (Jupiter::ReferenceString(oldHostname.c_str()).equalsi(RenX::Server::hostname) == false + || oldPort != RenX::Server::port + || Jupiter::ReferenceString(oldClientHostname.c_str()).equalsi(RenX::Server::clientHostname) == false + || oldPass.equalsi(RenX::Server::pass) == false) { RenX::Server::reconnect(RenX::DisconnectReason::Rehash); + } + return 0; } @@ -626,28 +631,21 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) Jupiter::StringL user_message = Jupiter::StringL::Format(IRCCOLOR "04[Alert] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is marked for monitoring by %.*s for: \"%.*s\". Please keep an eye on them in ", fmtName.size(), fmtName.ptr(), last_to_expire[6]->banner.size(), last_to_expire[6]->banner.ptr(), last_to_expire[6]->reason.size(), last_to_expire[6]->reason.ptr()); Jupiter::StringS channel_message = Jupiter::StringS::Format(IRCCOLOR "04[Alert] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is marked for monitoring by %.*s for: \"%.*s\"." IRCCOLOR, fmtName.size(), fmtName.ptr(), last_to_expire[6]->banner.size(), last_to_expire[6]->banner.ptr(), last_to_expire[6]->reason.size(), last_to_expire[6]->reason.ptr()); - auto alert_message_callback = [this, server, &user_message, &channel_message](Jupiter::IRC::Client::ChannelTableType::Bucket::Entry &in_entry) - { - auto alert_message_user_callback = [server, &in_entry, &user_message](Jupiter::IRC::Client::Channel::UserTableType::Bucket::Entry &in_user_entry) - { - if (in_entry.value.getUserPrefix(in_user_entry.value) != 0 && in_user_entry.value.getNickname().equals(server->getNickname()) == false) - server->sendMessage(in_user_entry.value.getUser()->getNickname(), user_message); - }; - - if (this->isAdminLogChanType(in_entry.value.getType())) - { - server->sendMessage(in_entry.value.getName(), channel_message); + for (size_t server_index = 0; server_index < serverManager->size(); ++server_index) { + server = serverManager->getServer(server_index); + for (auto& channel : server->getChannels()) { + if (this->isAdminLogChanType(channel.second.getType())) + { + server->sendMessage(channel.second.getName(), channel_message); - user_message += in_entry.value.getName(); - in_entry.value.getUsers().callback(alert_message_user_callback); - user_message -= in_entry.value.getName().size(); + user_message += channel.second.getName(); + for (auto& user : channel.second.getUsers()) { + if (channel.second.getUserPrefix(user.second) != 0 && user.second.getNickname().equals(server->getNickname()) == false) + server->sendMessage(user.second.getUser()->getNickname(), user_message); + } + user_message -= channel.second.getName().size(); + } } - }; - - for (size_t server_index = 0; server_index < serverManager->size(); ++server_index) - { - server = serverManager->getServer(server_index); - server->getChannels().callback(alert_message_callback); } } } @@ -953,7 +951,7 @@ const Jupiter::ReadableString &RenX::Server::getRules() const return RenX::Server::rules; } -const Jupiter::ReadableString &RenX::Server::getHostname() const +const std::string &RenX::Server::getHostname() const { return RenX::Server::hostname; } @@ -963,7 +961,7 @@ unsigned short RenX::Server::getPort() const return RenX::Server::port; } -const Jupiter::ReadableString &RenX::Server::getSocketHostname() const +const std::string &RenX::Server::getSocketHostname() const { return RenX::Server::sock.getRemoteHostname(); } @@ -1334,7 +1332,7 @@ void RenX::Server::sendLogChan(const Jupiter::ReadableString &msg) const void resolve_rdns(RenX::PlayerInfo *player) { player->rdns_mutex.lock(); - char *resolved = Jupiter::Socket::resolveHostname_alloc(Jupiter::CStringS(player->ip).c_str(), 0); + char *resolved = Jupiter::Socket::resolveHostname_alloc(static_cast(player->ip).c_str(), 0); player->rdns.capture(resolved, strlen(resolved)); player->rdns_mutex.unlock(); } @@ -1456,7 +1454,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) player->name = name; player->team = team; player->ip = ip; - player->ip32 = Jupiter::Socket::pton4(Jupiter::CStringS(player->ip).c_str()); + player->ip32 = Jupiter::Socket::pton4(static_cast(player->ip).c_str()); player->hwid = hwid; // RDNS @@ -1494,7 +1492,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (player->ip32 == 0 && ip.isNotEmpty()) { player->ip = ip; - player->ip32 = Jupiter::Socket::pton4(Jupiter::CStringS(player->ip).c_str()); + player->ip32 = Jupiter::Socket::pton4(static_cast(player->ip).c_str()); if (this->resolvesRDNS()) { player->rdns_thread = std::thread(resolve_rdns, player); @@ -1610,43 +1608,62 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) rPlayerLog�Kills�PlayerKills�BotKills�Deaths�Score�Credits�Character�BoundVehicle�Vehicle�Spy�RemoteC4�ATMine�KDR�Ping�Admin�Steam�IP�ID�Name�Team�TeamNum rGDI,256,EKT-J�0�0�0�0�0�5217.9629�Rx_FamilyInfo_GDI_Soldier���False�0�0�0.0000�8�None�0x0110000104AE0666�127.0.0.1�256�EKT-J�GDI�0 */ - Jupiter::HashTable table; + std::unordered_map table; size_t i = tokens.token_count; while (i-- != 0) - table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); - auto parse = [&table](RenX::PlayerInfo *player) + table[this->commandListFormat.getToken(i)] = tokens.getToken(i); + + auto table_get = [&table](const Jupiter::ReadableString& in_key) -> Jupiter::StringS* { + auto value = table.find(in_key); + if (value != table.end()) { + return &value->second; + } + + return nullptr; + }; + + auto table_get_ref = [&table](const Jupiter::ReadableString& in_key, const Jupiter::ReadableString& in_default_value) -> const Jupiter::ReadableString& { + auto value = table.find(in_key); + if (value != table.end()) { + return value->second; + } + + return in_default_value; + }; + + auto parse = [&table_get](RenX::PlayerInfo *player) { Jupiter::ReadableString *value; - value = table.get("KILLS"_jrs); + value = table_get("KILLS"_jrs); if (value != nullptr) player->kills = value->asUnsignedInt(); - value = table.get("DEATHS"_jrs); + value = table_get("DEATHS"_jrs); if (value != nullptr) player->deaths = value->asUnsignedInt(); - value = table.get("SCORE"_jrs); + value = table_get("SCORE"_jrs); if (value != nullptr) player->score = value->asDouble(); - value = table.get("CREDITS"_jrs); + value = table_get("CREDITS"_jrs); if (value != nullptr) player->credits = value->asDouble(); - value = table.get("CHARACTER"_jrs); + value = table_get("CHARACTER"_jrs); if (value != nullptr) player->character = *value; - value = table.get("VEHICLE"_jrs); + value = table_get("VEHICLE"_jrs); if (value != nullptr) player->vehicle = *value; - value = table.get("PING"_jrs); + value = table_get("PING"_jrs); if (value != nullptr) player->ping = value->asUnsignedInt(); - value = table.get("ADMIN"_jrs); + value = table_get("ADMIN"_jrs); if (value != nullptr) { if (value->equals("None"_jrs)) @@ -1655,13 +1672,13 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) player->adminType = *value; } }; - Jupiter::ReadableString *value = table.get("PLAYERLOG"_jrs); + Jupiter::ReadableString *value = table_get("PLAYERLOG"_jrs); if (value != nullptr) - parse(getPlayerOrAdd(Jupiter::ReferenceString::getToken(*value, 2, ','), Jupiter::ReferenceString::getToken(*value, 1, ',').asInt(), RenX::getTeam(Jupiter::ReferenceString::getToken(*value, 0, ',')), false, table.get("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(), table.get("IP"_jrs, Jupiter::ReferenceString::empty), table.get("HWID"_jrs, Jupiter::ReferenceString::empty))); + parse(getPlayerOrAdd(Jupiter::ReferenceString::getToken(*value, 2, ','), Jupiter::ReferenceString::getToken(*value, 1, ',').asInt(), RenX::getTeam(Jupiter::ReferenceString::getToken(*value, 0, ',')), false, table_get_ref("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(), table_get_ref("IP"_jrs, Jupiter::ReferenceString::empty), table_get_ref("HWID"_jrs, Jupiter::ReferenceString::empty))); else { - Jupiter::ReadableString *name = table.get("NAME"_jrs); - value = table.get("ID"_jrs); + Jupiter::ReadableString *name = table_get("NAME"_jrs); + value = table_get("ID"_jrs); if (value != nullptr) { @@ -1670,16 +1687,16 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { if (player->name.isEmpty()) { - player->name = table.get("NAME"_jrs, Jupiter::ReferenceString::empty); + player->name = table_get_ref("NAME"_jrs, Jupiter::ReferenceString::empty); player->name.processEscapeSequences(); } if (player->ip.isEmpty()) - player->ip = table.get("IP"_jrs, Jupiter::ReferenceString::empty); + player->ip = table_get_ref("IP"_jrs, Jupiter::ReferenceString::empty); if (player->hwid.isEmpty()) - player->hwid = table.get("HWID"_jrs, Jupiter::ReferenceString::empty); + player->hwid = table_get_ref("HWID"_jrs, Jupiter::ReferenceString::empty); if (player->steamid == 0) { - uint64_t steamid = table.get("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(); + uint64_t steamid = table_get_ref("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(); if (steamid != 0) { player->steamid = steamid; @@ -1687,12 +1704,12 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } } - value = table.get("TEAMNUM"_jrs); + value = table_get("TEAMNUM"_jrs); if (value != nullptr) player->team = RenX::getTeam(value->asInt()); else { - value = table.get("TEAM"_jrs); + value = table_get("TEAM"_jrs); if (value != nullptr) player->team = RenX::getTeam(*value); } @@ -1708,12 +1725,12 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (player != nullptr) { if (player->ip.isEmpty()) - player->ip = table.get("IP"_jrs, Jupiter::ReferenceString::empty); + player->ip = table_get_ref("IP"_jrs, Jupiter::ReferenceString::empty); if (player->hwid.isEmpty()) - player->hwid = table.get("HWID"_jrs, Jupiter::ReferenceString::empty); + player->hwid = table_get_ref("HWID"_jrs, Jupiter::ReferenceString::empty); if (player->steamid == 0) { - uint64_t steamid = table.get("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(); + uint64_t steamid = table_get_ref("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(); if (steamid != 0) { player->steamid = steamid; @@ -1721,12 +1738,12 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } } - value = table.get("TEAMNUM"_jrs); + value = table_get("TEAMNUM"_jrs); if (value != nullptr) player->team = RenX::getTeam(value->asInt()); else { - value = table.get("TEAM"_jrs); + value = table_get("TEAM"_jrs); if (value != nullptr) player->team = RenX::getTeam(*value); } @@ -1757,45 +1774,64 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) rPlayerLog�Kills�PlayerKills�BotKills�Deaths�Score�Credits�Character�BoundVehicle�Vehicle�Spy�RemoteC4�ATMine�KDR�Ping�Admin�Steam�IP�ID�Name�Team�TeamNum rGDI,256,EKT-J�0�0�0�0�0�5217.9629�Rx_FamilyInfo_GDI_Soldier���False�0�0�0.0000�8�None�0x0110000104AE0666�127.0.0.1�256�EKT-J�GDI�0 */ - Jupiter::HashTable table; + std::unordered_map table; size_t i = tokens.token_count; while (i-- != 0) - table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); - auto parse = [&table](RenX::PlayerInfo *player) + table[this->commandListFormat.getToken(i)] = tokens.getToken(i); + + auto table_get = [&table](const Jupiter::ReadableString& in_key) -> Jupiter::StringS* { + auto value = table.find(in_key); + if (value != table.end()) { + return &value->second; + } + + return nullptr; + }; + + auto table_get_ref = [&table](const Jupiter::ReadableString& in_key, const Jupiter::ReadableString& in_default_value) -> const Jupiter::ReadableString& { + auto value = table.find(in_key); + if (value != table.end()) { + return value->second; + } + + return in_default_value; + }; + + auto parse = [&table_get](RenX::PlayerInfo *player) { Jupiter::ReadableString *value; - value = table.get("KILLS"_jrs); + value = table_get("KILLS"_jrs); if (value != nullptr) player->kills = value->asUnsignedInt(); - value = table.get("DEATHS"_jrs); + value = table_get("DEATHS"_jrs); if (value != nullptr) player->deaths = value->asUnsignedInt(); - value = table.get("SCORE"_jrs); + value = table_get("SCORE"_jrs); if (value != nullptr) player->score = value->asDouble(); - value = table.get("CREDITS"_jrs); + value = table_get("CREDITS"_jrs); if (value != nullptr) player->credits = value->asDouble(); - value = table.get("CHARACTER"_jrs); + value = table_get("CHARACTER"_jrs); if (value != nullptr) player->character = *value; - value = table.get("VEHICLE"_jrs); + value = table_get("VEHICLE"_jrs); if (value != nullptr) player->vehicle = *value; }; - Jupiter::ReadableString *value = table.get("PLAYERLOG"_jrs); + Jupiter::ReadableString *value = table_get("PLAYERLOG"_jrs); if (value != nullptr) parse(getPlayerOrAdd(Jupiter::ReferenceString::getToken(*value, 2, ','), Jupiter::ReferenceString::getToken(*value, 1, ',').substring(1).asInt(), RenX::getTeam(Jupiter::ReferenceString::getToken(*value, 0, ',')), true, 0ULL, Jupiter::ReferenceString::empty, Jupiter::ReferenceString::empty)); else { - Jupiter::ReadableString *name = table.get("NAME"_jrs); - value = table.get("ID"_jrs); + Jupiter::ReadableString *name = table_get("NAME"_jrs); + value = table_get("ID"_jrs); if (value != nullptr) { @@ -1804,16 +1840,16 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { if (player->name.isEmpty()) { - player->name = table.get("NAME"_jrs, Jupiter::ReferenceString::empty); + player->name = table_get_ref("NAME"_jrs, Jupiter::ReferenceString::empty); player->name.processEscapeSequences(); } - value = table.get("TEAMNUM"_jrs); + value = table_get("TEAMNUM"_jrs); if (value != nullptr) player->team = RenX::getTeam(value->asInt()); else { - value = table.get("TEAM"_jrs); + value = table_get("TEAM"_jrs); if (value != nullptr) player->team = RenX::getTeam(*value); } @@ -1826,12 +1862,12 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) RenX::PlayerInfo *player = getPlayerByName(*name); if (player != nullptr) { - value = table.get("TEAMNUM"_jrs); + value = table_get("TEAMNUM"_jrs); if (value != nullptr) player->team = RenX::getTeam(value->asInt()); else { - value = table.get("TEAM"_jrs); + value = table_get("TEAM"_jrs); if (value != nullptr) player->team = RenX::getTeam(*value); } @@ -1854,15 +1890,24 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) rBuilding�Health�MaxHealth�Armor MaxArmor Team�Capturable Destroyed rRx_Building_Refinery_GDI�2000�2000�2000 2000 GDI�False False */ - Jupiter::HashTable table; + std::unordered_map table; size_t i = tokens.token_count; while (i-- != 0) - table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); + table[this->commandListFormat.getToken(i)] = tokens.getToken(i); + + auto table_get = [&table](const Jupiter::ReadableString& in_key) -> Jupiter::StringS* { + auto value = table.find(in_key); + if (value != table.end()) { + return &value->second; + } + + return nullptr; + }; Jupiter::ReadableString *value; RenX::BuildingInfo *building; - value = table.get("Building"_jrs); + value = table_get("Building"_jrs); if (value != nullptr) { building = this->getBuildingByName(*value); @@ -1873,31 +1918,31 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) building->name = *value; } - value = table.get("Health"_jrs); + value = table_get("Health"_jrs); if (value != nullptr) building->health = value->asInt(10); - value = table.get("MaxHealth"_jrs); + value = table_get("MaxHealth"_jrs); if (value != nullptr) building->max_health = value->asInt(10); - value = table.get("Team"_jrs); + value = table_get("Team"_jrs); if (value != nullptr) building->team = RenX::getTeam(*value); - value = table.get("Capturable"_jrs); + value = table_get("Capturable"_jrs); if (value != nullptr) building->capturable = value->asBool(); - value = table.get("Destroyed"_jrs); + value = table_get("Destroyed"_jrs); if (value != nullptr) building->destroyed = value->asBool(); - value = table.get("Armor"_jrs); + value = table_get("Armor"_jrs); if (value != nullptr) building->armor = value->asInt(10); - value = table.get("MaxArmor"_jrs); + value = table_get("MaxArmor"_jrs); if (value != nullptr) building->max_armor = value->asInt(10); } @@ -3379,7 +3424,7 @@ void RenX::Server::disconnect(RenX::DisconnectReason reason) bool RenX::Server::connect() { RenX::Server::lastAttempt = std::chrono::steady_clock::now(); - if (RenX::Server::sock.connect(RenX::Server::hostname.c_str(), RenX::Server::port, RenX::Server::clientHostname.isEmpty() ? nullptr : RenX::Server::clientHostname.c_str())) + if (RenX::Server::sock.connect(RenX::Server::hostname.c_str(), RenX::Server::port, RenX::Server::clientHostname.empty() ? nullptr : RenX::Server::clientHostname.c_str())) { RenX::Server::sock.setBlocking(false); RenX::Server::sock.send(Jupiter::StringS::Format("a%.*s\n", RenX::Server::pass.size(), RenX::Server::pass.ptr())); @@ -3478,9 +3523,9 @@ RenX::Server::Server(const Jupiter::ReadableString &configurationSection) void RenX::Server::init(const Jupiter::Config &config) { - RenX::Server::hostname = config.get("Hostname"_jrs, "localhost"_jrs); + RenX::Server::hostname = static_cast(config.get("Hostname"_jrs, "localhost"_jrs)); RenX::Server::port = config.get("Port"_jrs, 7777); - RenX::Server::clientHostname = config.get("ClientAddress"_jrs); + RenX::Server::clientHostname = static_cast(config.get("ClientAddress"_jrs)); RenX::Server::pass = config.get("Password"_jrs, "renx"_jrs); RenX::Server::logChanType = config.get("ChanType"_jrs); @@ -3522,22 +3567,12 @@ void RenX::Server::init(const Jupiter::Config &config) { Jupiter::Config *basic_commands_help = commandsFile.getSection(section_prefix + ".Basic.Help"_jrs); - auto basic_command_no_help_callback = [this](Jupiter::HashTable::Bucket::Entry &in_entry) - { - if (this->getCommand(in_entry.key) == nullptr) - this->addCommand(new RenX::BasicGameCommand(in_entry.key, in_entry.value, ""_jrs)); - }; - - auto basic_command_callback = [this, basic_commands_help](Jupiter::HashTable::Bucket::Entry &in_entry) - { - if (this->getCommand(in_entry.key) == nullptr) - this->addCommand(new RenX::BasicGameCommand(in_entry.key, in_entry.value, basic_commands_help->get(in_entry.value, ""_jrs))); - }; - - if (basic_commands_help == nullptr) - basic_commands->getTable().callback(basic_command_no_help_callback); - else - basic_commands->getTable().callback(basic_command_callback); + for (auto& command : basic_commands->getTable()) { + if (this->getCommand(command.first) == nullptr) { + const auto& help_str = basic_commands_help == nullptr ? ""_jrs : basic_commands_help->get(command.second, ""_jrs); + this->addCommand(new RenX::BasicGameCommand(command.first, command.second,help_str)); + } + } } }; diff --git a/src/Plugins/RenX/RenX.Core/RenX_Server.h b/src/Plugins/RenX/RenX.Core/RenX_Server.h index 2a760dd..9996d8d 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Server.h +++ b/src/Plugins/RenX/RenX.Core/RenX_Server.h @@ -29,7 +29,6 @@ #include "Jupiter/TCPSocket.h" #include "Jupiter/ArrayList.h" #include "Jupiter/String.hpp" -#include "Jupiter/CString.h" #include "Jupiter/Config.h" #include "Jupiter/Thinker.h" #include "Jupiter/Rehash.h" @@ -699,7 +698,7 @@ namespace RenX * * @return String containing the hostname of the server. */ - const Jupiter::ReadableString &getHostname() const; + const std::string &getHostname() const; /** * @brief Fetches the port of a server. @@ -713,7 +712,7 @@ namespace RenX * * @return String containing the hostname of the server. */ - const Jupiter::ReadableString &getSocketHostname() const; + const std::string &getSocketHostname() const; /** * @brief Fetches the port from the server socket. @@ -1082,8 +1081,8 @@ namespace RenX std::chrono::milliseconds buildingUpdateRate; std::chrono::milliseconds pingRate; std::chrono::milliseconds pingTimeoutThreshold; - Jupiter::CStringS clientHostname; - Jupiter::CStringS hostname; + std::string clientHostname; + std::string hostname; Jupiter::StringS pass; Jupiter::StringS configSection; Jupiter::StringS rules; diff --git a/src/Plugins/RenX/RenX.Core/RenX_Tags.cpp b/src/Plugins/RenX/RenX.Core/RenX_Tags.cpp index eb28601..1cbdc47 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Tags.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Tags.cpp @@ -58,8 +58,8 @@ bool TagsImp::initialize() TagsImp::bar_width = config[configSection].get("BarWidth"_jrs, 19); /** Global formats */ - this->dateFmt = config[configSection].get("DateFormat"_jrs, "%A, %B %d, %Y"_jrs); - this->timeFmt = config[configSection].get("TimeFormat"_jrs, "%H:%M:%S"_jrs);; + this->dateFmt = static_cast(config[configSection].get("DateFormat"_jrs, "%A, %B %d, %Y"_jrs)); + this->timeFmt = static_cast(config[configSection].get("TimeFormat"_jrs, "%H:%M:%S"_jrs)); /** Internal message tags */ @@ -457,9 +457,9 @@ void TagsImp::processTags(Jupiter::StringType &msg, const RenX::Server *server, PROCESS_TAG(this->INTERNAL_SERVER_NAME_TAG, server->getName()); PROCESS_TAG(this->INTERNAL_MAP_TAG, server->getMap().name); PROCESS_TAG(this->INTERNAL_MAP_GUID_TAG, RenX::formatGUID(server->getMap())); - PROCESS_TAG(this->INTERNAL_SERVER_HOSTNAME_TAG, server->getHostname()); + PROCESS_TAG(this->INTERNAL_SERVER_HOSTNAME_TAG, Jupiter::ReferenceString(server->getHostname().c_str())); PROCESS_TAG(this->INTERNAL_SERVER_PORT_TAG, Jupiter::StringS::Format("%u", server->getPort())); - PROCESS_TAG(this->INTERNAL_SOCKET_HOSTNAME_TAG, server->getSocketHostname()); + PROCESS_TAG(this->INTERNAL_SOCKET_HOSTNAME_TAG, Jupiter::ReferenceString(server->getSocketHostname().c_str())); PROCESS_TAG(this->INTERNAL_SOCKET_PORT_TAG, Jupiter::StringS::Format("%u", server->getSocketPort())); PROCESS_TAG(this->INTERNAL_SERVER_PREFIX_TAG, server->getPrefix()); if (player != nullptr) diff --git a/src/Plugins/RenX/RenX.Core/RenX_Tags.h b/src/Plugins/RenX/RenX.Core/RenX_Tags.h index e4331d7..3b6fa9a 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Tags.h +++ b/src/Plugins/RenX/RenX.Core/RenX_Tags.h @@ -25,7 +25,6 @@ */ #include "Jupiter/String.hpp" -#include "Jupiter/CString.h" #include "RenX.h" #include "RenX_LadderDatabase.h" @@ -52,8 +51,8 @@ namespace RenX virtual bool initialize(); /** Global formats */ - Jupiter::CStringS dateFmt; - Jupiter::CStringS timeFmt; + std::string dateFmt; + std::string timeFmt; /** Global tags */ Jupiter::StringS INTERNAL_DATE_TAG; diff --git a/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp b/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp index 9c192b7..67872d8 100644 --- a/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp +++ b/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp @@ -51,13 +51,13 @@ bool RenX_ExtraLoggingPlugin::initialize() RenX_ExtraLoggingPlugin::consolePrefix = this->config.get("ConsolePrefix"_jrs, RenX_ExtraLoggingPlugin::filePrefix); RenX_ExtraLoggingPlugin::newDayFmt = this->config.get("NewDayFormat"_jrs, Jupiter::StringS::Format("Time: %.*s %.*s", RenX::tags->timeTag.size(), RenX::tags->timeTag.ptr(), RenX::tags->dateTag.size(), RenX::tags->dateTag.ptr())); RenX_ExtraLoggingPlugin::printToConsole = this->config.get("PrintToConsole"_jrs, true); - const Jupiter::CStringS logFile = this->config.get("LogFile"_jrs); + const std::string logFile = static_cast(this->config.get("LogFile"_jrs)); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::filePrefix); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::consolePrefix); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::newDayFmt); - if (logFile.isNotEmpty()) + if (!logFile.empty()) { RenX_ExtraLoggingPlugin::file = fopen(logFile.c_str(), "a+b"); if (RenX_ExtraLoggingPlugin::file != nullptr && RenX_ExtraLoggingPlugin::newDayFmt.isNotEmpty()) diff --git a/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp b/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp index 840f1e1..63fff04 100644 --- a/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp +++ b/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp @@ -72,11 +72,11 @@ void RenX_Ladder_WebPlugin::init() FILE *file; int chr; - RenX_Ladder_WebPlugin::web_header_filename = this->config.get("HeaderFilename"_jrs, "RenX.Ladder.Web.Header.html"_jrs); - RenX_Ladder_WebPlugin::web_footer_filename = this->config.get("FooterFilename"_jrs, "RenX.Ladder.Web.Footer.html"_jrs); - RenX_Ladder_WebPlugin::web_profile_filename = this->config.get("ProfileFilename"_jrs, "RenX.Ladder.Web.Profile.html"_jrs); - RenX_Ladder_WebPlugin::web_ladder_table_header_filename = this->config.get("LadderTableHeaderFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Header.html"_jrs); - RenX_Ladder_WebPlugin::web_ladder_table_footer_filename = this->config.get("LadderTableFooterFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Footer.html"_jrs); + RenX_Ladder_WebPlugin::web_header_filename = static_cast(this->config.get("HeaderFilename"_jrs, "RenX.Ladder.Web.Header.html"_jrs)); + RenX_Ladder_WebPlugin::web_footer_filename = static_cast(this->config.get("FooterFilename"_jrs, "RenX.Ladder.Web.Footer.html"_jrs)); + RenX_Ladder_WebPlugin::web_profile_filename = static_cast(this->config.get("ProfileFilename"_jrs, "RenX.Ladder.Web.Profile.html"_jrs)); + RenX_Ladder_WebPlugin::web_ladder_table_header_filename = static_cast(this->config.get("LadderTableHeaderFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Header.html"_jrs)); + RenX_Ladder_WebPlugin::web_ladder_table_footer_filename = static_cast(this->config.get("LadderTableFooterFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Footer.html"_jrs)); RenX_Ladder_WebPlugin::entries_per_page = this->config.get("EntriesPerPage"_jrs, 50); RenX_Ladder_WebPlugin::min_search_name_length = this->config.get("MinSearchNameLength"_jrs, 3); @@ -95,7 +95,7 @@ void RenX_Ladder_WebPlugin::init() RenX_Ladder_WebPlugin::ladder_table_footer.erase(); /** Load header */ - if (RenX_Ladder_WebPlugin::web_header_filename.isNotEmpty()) + if (!RenX_Ladder_WebPlugin::web_header_filename.empty()) { file = fopen(RenX_Ladder_WebPlugin::web_header_filename.c_str(), "rb"); if (file != nullptr) @@ -107,7 +107,7 @@ void RenX_Ladder_WebPlugin::init() } /** Load footer */ - if (RenX_Ladder_WebPlugin::web_footer_filename.isNotEmpty()) + if (!RenX_Ladder_WebPlugin::web_footer_filename.empty()) { file = fopen(RenX_Ladder_WebPlugin::web_footer_filename.c_str(), "rb"); if (file != nullptr) @@ -119,7 +119,7 @@ void RenX_Ladder_WebPlugin::init() } /** Load profile */ - if (RenX_Ladder_WebPlugin::web_profile_filename.isNotEmpty()) + if (!RenX_Ladder_WebPlugin::web_profile_filename.empty()) { file = fopen(RenX_Ladder_WebPlugin::web_profile_filename.c_str(), "rb"); if (file != nullptr) @@ -132,7 +132,7 @@ void RenX_Ladder_WebPlugin::init() } /** Load table header */ - if (RenX_Ladder_WebPlugin::web_ladder_table_header_filename.isNotEmpty()) + if (!RenX_Ladder_WebPlugin::web_ladder_table_header_filename.empty()) { file = fopen(RenX_Ladder_WebPlugin::web_ladder_table_header_filename.c_str(), "rb"); if (file != nullptr) @@ -144,7 +144,7 @@ void RenX_Ladder_WebPlugin::init() } /** Load table footer */ - if (RenX_Ladder_WebPlugin::web_ladder_table_footer_filename.isNotEmpty()) + if (!RenX_Ladder_WebPlugin::web_ladder_table_footer_filename.empty()) { file = fopen(RenX_Ladder_WebPlugin::web_ladder_table_footer_filename.c_str(), "rb"); if (file != nullptr) @@ -184,7 +184,7 @@ Jupiter::String generate_search(RenX::LadderDatabase *db) } /** Database selector */ -Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupiter::HashTable &query_params) +Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupiter::HTTP::HTMLFormResponse::TableType &query_params) { RenX::LadderDatabase *db_ptr; Jupiter::String result(256); @@ -215,11 +215,11 @@ Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupit } } - const Jupiter::ReadableString *value = query_params.get("id"_jrs); - if (value != nullptr) + auto value = query_params.find("id"_jrs); + if (value != query_params.end()) { result += R"html(second; result += R"html("/>)html"_jrs; } @@ -309,7 +309,7 @@ Jupiter::String RenX_Ladder_WebPlugin::generate_entry_table(RenX::LadderDatabase return result; } -Jupiter::String *RenX_Ladder_WebPlugin::generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t index, size_t count, const Jupiter::HashTable &query_params) +Jupiter::String *RenX_Ladder_WebPlugin::generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t index, size_t count, const Jupiter::HTTP::HTMLFormResponse::TableType &query_params) { Jupiter::String *result = new Jupiter::String(2048); @@ -334,7 +334,7 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_ladder_page(RenX::LadderDatabas // include_header | include_footer | include_any_headers | include_any_footers /** Search page */ -Jupiter::String *RenX_Ladder_WebPlugin::generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::ReadableString &name, const Jupiter::HashTable &query_params) +Jupiter::String *RenX_Ladder_WebPlugin::generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::ReadableString &name, const Jupiter::HTTP::HTMLFormResponse::TableType &query_params) { Jupiter::String *result = new Jupiter::String(2048); @@ -385,7 +385,7 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_search_page(RenX::LadderDatabas } /** Profile page */ -Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::HashTable &query_params) +Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::HTTP::HTMLFormResponse::TableType &query_params) { Jupiter::String *result = new Jupiter::String(2048); @@ -452,7 +452,7 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDataba /** Content functions */ -Jupiter::ReadableString *generate_no_db_page(const Jupiter::HashTable &query_params) +Jupiter::ReadableString *generate_no_db_page(const Jupiter::HTTP::HTMLFormResponse::TableType &query_params) { Jupiter::String *result = new Jupiter::String(pluginInstance.header); if (RenX::ladder_databases.size() != 0) @@ -476,11 +476,11 @@ Jupiter::ReadableString *handle_ladder_page(const Jupiter::ReadableString &query if (html_form_response.table.size() != 0) { - format = html_form_response.table.getCast("format"_jrs, format); - start_index = html_form_response.table.getCast("start"_jrs, start_index); - count = html_form_response.table.getCast("count"_jrs, count); + format = html_form_response.tableGetCast("format"_jrs, format); + start_index = html_form_response.tableGetCast("start"_jrs, start_index); + count = html_form_response.tableGetCast("count"_jrs, count); - const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs, Jupiter::ReferenceString::empty); + const Jupiter::ReadableString &db_name = html_form_response.tableGet("database"_jrs, Jupiter::ReferenceString::empty); if (db_name.isNotEmpty()) { db = nullptr; @@ -509,12 +509,12 @@ Jupiter::ReadableString *handle_search_page(const Jupiter::ReadableString &query if (html_form_response.table.size() != 0) { - format = html_form_response.table.getCast("format"_jrs, format); - start_index = html_form_response.table.getCast("start"_jrs, start_index); - count = html_form_response.table.getCast("count"_jrs, count); - name = html_form_response.table.get("name"_jrs, name); + format = html_form_response.tableGetCast("format"_jrs, format); + start_index = html_form_response.tableGetCast("start"_jrs, start_index); + count = html_form_response.tableGetCast("count"_jrs, count); + name = html_form_response.tableGet("name"_jrs, name); - const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs, Jupiter::ReferenceString::empty); + const Jupiter::ReadableString &db_name = html_form_response.tableGet("database"_jrs, Jupiter::ReferenceString::empty); if (db_name.isNotEmpty()) { db = nullptr; @@ -545,10 +545,10 @@ Jupiter::ReadableString *handle_profile_page(const Jupiter::ReadableString &quer if (html_form_response.table.size() != 0) { - format = html_form_response.table.getCast("format"_jrs, format); - steam_id = html_form_response.table.getCast("id"_jrs, steam_id); + format = html_form_response.tableGetCast("format"_jrs, format); + steam_id = html_form_response.tableGetCast("id"_jrs, steam_id); - const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs, Jupiter::ReferenceString::empty); + const Jupiter::ReadableString &db_name = html_form_response.tableGet("database"_jrs, Jupiter::ReferenceString::empty); if (db_name.isNotEmpty()) { db = nullptr; diff --git a/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.h b/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.h index 6077c60..9c2b84f 100644 --- a/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.h +++ b/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.h @@ -21,7 +21,7 @@ #include "Jupiter/Plugin.h" #include "Jupiter/Reference_String.h" -#include "Jupiter/CString.h" +#include "Jupiter/String.hpp" #include "RenX_Plugin.h" class RenX_Ladder_WebPlugin : public RenX::Plugin @@ -39,9 +39,9 @@ public: Jupiter::StringS header; Jupiter::StringS footer; - Jupiter::String *generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::HashTable &query_params); - Jupiter::String *generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::ReadableString &name, const Jupiter::HashTable &query_params); - Jupiter::String *generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::HashTable &query_params); + Jupiter::String *generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::HTTP::HTMLFormResponse::TableType &query_params); + Jupiter::String *generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::ReadableString &name, const Jupiter::HTTP::HTMLFormResponse::TableType &query_params); + Jupiter::String *generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::HTTP::HTMLFormResponse::TableType &query_params); inline size_t getEntriesPerPage() const { return this->entries_per_page; } inline size_t getMinSearchNameLength() const { return this->min_search_name_length; }; @@ -60,11 +60,11 @@ private: Jupiter::StringS ladder_page_name, search_page_name, profile_page_name, ladder_table_header, ladder_table_footer; Jupiter::StringS web_hostname; Jupiter::StringS web_path; - Jupiter::CStringS web_header_filename; - Jupiter::CStringS web_footer_filename; - Jupiter::CStringS web_profile_filename; - Jupiter::CStringS web_ladder_table_header_filename; - Jupiter::CStringS web_ladder_table_footer_filename; + std::string web_header_filename; + std::string web_footer_filename; + std::string web_profile_filename; + std::string web_ladder_table_header_filename; + std::string web_ladder_table_footer_filename; Jupiter::StringS entry_table_row, entry_profile, entry_profile_previous, entry_profile_next; }; diff --git a/src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp b/src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp index d6e4e8b..fffab9d 100644 --- a/src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp +++ b/src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp @@ -17,7 +17,6 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/CString.h" #include "RenX_Listen.h" #include "RenX_Core.h" #include "RenX_Server.h" @@ -35,7 +34,7 @@ bool RenX_ListenPlugin::initialize() const Jupiter::ReadableString &address = this->config.get("Address"_jrs, "0.0.0.0"_jrs); RenX_ListenPlugin::serverSection = this->config.get("ServerSection"_jrs, this->getName()); - return RenX_ListenPlugin::socket.bind(Jupiter::CStringS(address).c_str(), port, true) && RenX_ListenPlugin::socket.setBlocking(false); + return RenX_ListenPlugin::socket.bind(static_cast(address).c_str(), port, true) && RenX_ListenPlugin::socket.setBlocking(false); } int RenX_ListenPlugin::think() @@ -45,8 +44,8 @@ int RenX_ListenPlugin::think() { sock->setBlocking(false); RenX::Server *server = new RenX::Server(std::move(*sock), RenX_ListenPlugin::serverSection); - printf("Incoming server connected from %.*s:%u" ENDL, server->getSocketHostname().size(), server->getSocketHostname().ptr(), server->getSocketPort()); - server->sendLogChan("Incoming server connected from " IRCCOLOR "12%.*s:%u", server->getSocketHostname().size(), server->getSocketHostname().ptr(), server->getSocketPort()); + printf("Incoming server connected from %.*s:%u" ENDL, server->getSocketHostname().size(), server->getSocketHostname().c_str(), server->getSocketPort()); + server->sendLogChan("Incoming server connected from " IRCCOLOR "12%.*s:%u", server->getSocketHostname().size(), server->getSocketHostname().c_str(), server->getSocketPort()); RenX::getCore()->addServer(server); delete sock; } @@ -65,7 +64,7 @@ int RenX_ListenPlugin::OnRehash() { puts("Notice: The Renegade-X listening socket has been changed!"); RenX_ListenPlugin::socket.close(); - return RenX_ListenPlugin::socket.bind(Jupiter::CStringS(address).c_str(), port, true) == false || RenX_ListenPlugin::socket.setBlocking(false) == false; + return RenX_ListenPlugin::socket.bind(static_cast(address).c_str(), port, true) == false || RenX_ListenPlugin::socket.setBlocking(false) == false; } return 0; } diff --git a/src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp b/src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp index c55e8e7..52fd8d5 100644 --- a/src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp +++ b/src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp @@ -322,7 +322,7 @@ void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co { unsigned int recs = section->get("Recs"_jrs); unsigned int noobs = section->get("Noobs"_jrs); - source->sendMessage(*player, Jupiter::StringS::Format("[Archive] %.*s has %u and %u n00bs. Their worth: %d", section->getName().size(), section->getName().ptr(), recs, noobs, recs - noobs)); + source->sendMessage(*player, Jupiter::StringS::Format("[Archive] %.*s has %u and %u n00bs. Their worth: %d", section->getName().size(), section->getName().c_str(), recs, noobs, recs - noobs)); } } else if (target->uuid.isEmpty()) diff --git a/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp b/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp index 584368b..622d256 100644 --- a/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp +++ b/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp @@ -762,23 +762,15 @@ void DelIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); else { - auto bucket_itr = pluginInstance.modsFile.getSections().begin(); - auto bucket_end = pluginInstance.modsFile.getSections().end(); - - while (bucket_itr != bucket_end) + for (auto& section : pluginInstance.modsFile.getSections()) { - for (auto entry_itr = bucket_itr->m_entries.begin(); entry_itr != bucket_itr->m_entries.end(); ++entry_itr) - { - if (entry_itr->value.get("Name"_jrs).equalsi(parameters)) - { - if (pluginInstance.modsFile.remove(entry_itr->key)) - source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); - else - source->sendNotice(nick, "Error: Unknown error occurred."_jrs); - - bucket_itr = bucket_end; - return; - } + if (section.second.get("Name"_jrs).equalsi(parameters)) { + if (pluginInstance.modsFile.remove(section.first)) + source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); + else + source->sendNotice(nick, "Error: Unknown error occurred."_jrs); + + return; } } @@ -896,16 +888,13 @@ void ModListIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString & msg.aformat(IRCNORMAL " (Access: %d): ", node->access); msgBaseSize = msg.size(); - auto entry_callback = [&msg, &node](Jupiter::Config::SectionHashTable::Bucket::Entry &in_entry) - { - if (in_entry.value.get("Group"_jrs).equalsi(node->name)) + for (auto& section : pluginInstance.modsFile.getSections()) { + if (section.second.get("Group"_jrs).equalsi(node->name)) { - msg += in_entry.value.get("Name"_jrs, in_entry.value.getName()); + msg += section.second.get("Name"_jrs, section.second.getName()); msg += ", "_jrs; } - }; - - pluginInstance.modsFile.getSections().callback(entry_callback); + } if (msg.size() != msgBaseSize) { diff --git a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp index 814327b..45e8fa3 100644 --- a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp +++ b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp @@ -244,7 +244,7 @@ Jupiter::StringS server_as_json(const RenX::Server &server) server.getCrateRespawnDelay(), server.getTimeLimit(), server.getPort(), - server.getSocketHostname().size(), server.getSocketHostname().ptr()); + server.getSocketHostname().size(), server.getSocketHostname().c_str()); server_json_block += '}'; @@ -282,7 +282,7 @@ Jupiter::StringS server_as_game(const RenX::Server &server) server_game_block.format("\n<@>%.*s~%.*s~%u~%s~%.*s~" "%d;%d;%d;%s;%d;%d;%d;%s;%s;%s;%.*s;%s" "~%u~%d~%s~%s~%.*s", server_name.size(), server_name.ptr(), - server.getSocketHostname().size(), server.getSocketHostname().ptr(), + server.getSocketHostname().size(), server.getSocketHostname().c_str(), server.getPort(), json_bool_as_cstring(server.isPassworded()), server_map.size(), server_map.ptr(), @@ -360,7 +360,7 @@ Jupiter::StringS server_as_long_json(const RenX::Server &server) server.getTimeLimit(), server.getPort(), - server.getSocketHostname().size(), server.getSocketHostname().ptr()); + server.getSocketHostname().size(), server.getSocketHostname().c_str()); // Level Rotation @@ -698,8 +698,8 @@ Jupiter::ReadableString *handle_server_page(const Jupiter::ReadableString &query if (html_form_response.table.size() != 0) { - address = html_form_response.table.get("ip"_jrs, address); - port = html_form_response.table.getCast("port"_jrs, port); + address = html_form_response.tableGet("ip"_jrs, address); + port = html_form_response.tableGetCast("port"_jrs, port); } // search for server @@ -712,7 +712,7 @@ Jupiter::ReadableString *handle_server_page(const Jupiter::ReadableString &query return new Jupiter::ReferenceString(); server = servers.get(index); - if (server->getSocketHostname().equals(address) && server->getPort() == port) + if (address.equals(server->getSocketHostname()) && server->getPort() == port) break; ++index;