diff --git a/.vs/config/applicationhost.config b/.vs/config/applicationhost.config new file mode 100644 index 0000000..c2abfb4 --- /dev/null +++ b/.vs/config/applicationhost.config @@ -0,0 +1,1030 @@ + + + + + + + + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Jupiter Bot.VC.db b/Jupiter Bot.VC.db new file mode 100644 index 0000000..c2485e5 Binary files /dev/null and b/Jupiter Bot.VC.db differ diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index e517467..45bf07a 100644 Binary files a/Release/Plugins/RenX.Core.lib and b/Release/Plugins/RenX.Core.lib differ diff --git a/RenX.Core/RenX_Functions.cpp b/RenX.Core/RenX_Functions.cpp index 0c87e69..0cd81a3 100644 --- a/RenX.Core/RenX_Functions.cpp +++ b/RenX.Core/RenX_Functions.cpp @@ -959,8 +959,6 @@ Jupiter::String RenX::escapifyRCON(const Jupiter::ReadableString &str) result += 'u'; result += Jupiter_asHex_upper(value >> 8); result += Jupiter_asHex_upper(value & 0x00FF); - - printf(ENDL ENDL ENDL "\\u%x%x" ENDL ENDL ENDL ENDL, value >> 8, value & 0x00FF); } // else // This is an invalid 1 byte sequence } diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 64d9d34..e84db1f 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -2562,9 +2562,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { player->global_rank = itr->rank; if (this->rconVersion >= 4) - this->sendData(Jupiter::StringS::Format("xset_rank %d %d\n", player->id, player->global_rank)); - else - this->sendData(Jupiter::StringS::Format("xset_rank%c%d%c%d\n", RenX::DelimC3, player->id, RenX::DelimC3, player->global_rank)); + this->sendData(Jupiter::StringS::Format("dset_rank %d %d\n", player->id, player->global_rank)); } break; } @@ -2632,9 +2630,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (this->devBot && player->global_rank != 0U) { if (this->rconVersion >= 4) - this->sendData(Jupiter::StringS::Format("xset_rank %d %d\n", player->id, player->global_rank)); - else - this->sendData(Jupiter::StringS::Format("xset_rank%c%d%c%d\n", RenX::DelimC, player->id, RenX::DelimC, player->global_rank)); + this->sendData(Jupiter::StringS::Format("dset_rank %d %d\n", player->id, player->global_rank)); } for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnIDChange(this, player, oldID); @@ -3148,7 +3144,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } break; - case 'x': + case 'd': { // We don't actually need to use this output for anything atm; tend to this later. } diff --git a/RenX.ModSystem/RenX_ModSystem.cpp b/RenX.ModSystem/RenX_ModSystem.cpp index b36dde8..81e32af 100644 --- a/RenX.ModSystem/RenX_ModSystem.cpp +++ b/RenX.ModSystem/RenX_ModSystem.cpp @@ -178,9 +178,9 @@ int RenX_ModSystemPlugin::auth(RenX::Server *server, const RenX::PlayerInfo *pla if (server->isDevBot()) { if (server->getVersion() >= 4) - server->sendData(Jupiter::StringS::Format("xset_dev %d\n", player->id)); + server->sendData(Jupiter::StringS::Format("dset_dev %d\n", player->id)); else - server->sendData(Jupiter::StringS::Format("xset_dev%c%d\n", RenX::DelimC, player->id)); + server->sendData(Jupiter::StringS::Format("d%d\n", player->id)); } } Jupiter::String playerName = RenX::getFormattedPlayerName(player); diff --git a/RenX.ServerList/RenX_ServerList.cpp b/RenX.ServerList/RenX_ServerList.cpp index 37b914f..cada9b4 100644 --- a/RenX.ServerList/RenX_ServerList.cpp +++ b/RenX.ServerList/RenX_ServerList.cpp @@ -88,8 +88,9 @@ RenX_ServerListPlugin::RenX_ServerListPlugin() { RenX_ServerListPlugin::web_hostname = Jupiter::IRC::Client::Config->get(this->name, "Hostname"_jrs, ""_jrs); RenX_ServerListPlugin::web_path = Jupiter::IRC::Client::Config->get(this->name, "Path"_jrs, "/"_jrs); - RenX_ServerListPlugin::server_list_page_name = Jupiter::IRC::Client::Config->get(this->name, "ServersPageName"_jrs, "servers.json"_jrs); - RenX_ServerListPlugin::server_page_name = Jupiter::IRC::Client::Config->get(this->name, "ServerPageName"_jrs, "server.json"_jrs); + RenX_ServerListPlugin::server_list_page_name = Jupiter::IRC::Client::Config->get(this->name, "ServersPageName"_jrs, "servers.jsp"_jrs); + RenX_ServerListPlugin::server_list_long_page_name = Jupiter::IRC::Client::Config->get(this->name, "HumanServersPageName"_jrs, "servers_long.jsp"_jrs); + RenX_ServerListPlugin::server_page_name = Jupiter::IRC::Client::Config->get(this->name, "ServerPageName"_jrs, "server.jsp"_jrs); /** Initialize content */ Jupiter::HTTP::Server &server = getHTTPServer(); @@ -102,6 +103,14 @@ RenX_ServerListPlugin::RenX_ServerListPlugin() content->free_result = false; server.hook(RenX_ServerListPlugin::web_hostname, RenX_ServerListPlugin::web_path, content); + // Server list (long) page + content = new Jupiter::HTTP::Server::Content(RenX_ServerListPlugin::server_list_long_page_name, handle_server_list_long_page); + content->language = &Jupiter::HTTP::Content::Language::ENGLISH; + content->type = &CONTENT_TYPE_APPLICATION_JSON; + content->charset = &Jupiter::HTTP::Content::Type::Text::Charset::UTF8; + content->free_result = true; + server.hook(RenX_ServerListPlugin::web_hostname, RenX_ServerListPlugin::web_path, content); + // Server page (GUIDs) content = new Jupiter::HTTP::Server::Content(RenX_ServerListPlugin::server_page_name, handle_server_page); content->language = &Jupiter::HTTP::Content::Language::ENGLISH; @@ -160,12 +169,12 @@ Jupiter::StringS server_as_json(const RenX::Server *server) server->getPort(), server->getSocketHostname().size(), server->getSocketHostname().ptr()); - server_json_block += "}"_jrs; + server_json_block += '}'; return server_json_block; } -Jupiter::StringS server_as_hr_json(const RenX::Server *server) +Jupiter::StringS server_as_long_json(const RenX::Server *server) { Jupiter::String server_json_block(128); @@ -220,43 +229,43 @@ Jupiter::StringS server_as_hr_json(const RenX::Server *server) // Level Rotation if (server->maps.size() != 0) { - server_json_block += ",\n\t\t\"Levels\": ["_jrs; + server_json_block += ",\n\t\t\"Levels\": ["_jrs; - server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; - server_json_block += server->maps.get(0)->name; - server_json_block += "\",\n\t\t\t\t\"GUID\": \""_jrs; - server_json_block += RenX::formatGUID(*server->maps.get(0)); - server_json_block += "\"\n\t\t\t}"_jrs; + server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += server->maps.get(0)->name; + server_json_block += "\",\n\t\t\t\t\"GUID\": \""_jrs; + server_json_block += RenX::formatGUID(*server->maps.get(0)); + server_json_block += "\"\n\t\t\t}"_jrs; - for (size_t index = 1; index != server->maps.size(); ++index) - { - server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; - server_json_block += server->maps.get(index)->name; - server_json_block += "\",\n\t\t\t\t\"GUID\": \""_jrs; - server_json_block += RenX::formatGUID(*server->maps.get(index)); - server_json_block += "\"\n\t\t\t}"_jrs; - } + for (size_t index = 1; index != server->maps.size(); ++index) + { + server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += server->maps.get(index)->name; + server_json_block += "\",\n\t\t\t\t\"GUID\": \""_jrs; + server_json_block += RenX::formatGUID(*server->maps.get(index)); + server_json_block += "\"\n\t\t\t}"_jrs; + } - server_json_block += "\n\t\t]"_jrs; + server_json_block += "\n\t\t]"_jrs; } // Mutators if (server->mutators.size() != 0) { - server_json_block += ",\n\t\t\"Mutators\": ["_jrs; + server_json_block += ",\n\t\t\"Mutators\": ["_jrs; - server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; - server_json_block += *server->mutators.get(0); - server_json_block += "\"\n\t\t\t}"_jrs; + server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += *server->mutators.get(0); + server_json_block += "\"\n\t\t\t}"_jrs; - for (size_t index = 1; index != server->mutators.size(); ++index) - { - server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; - server_json_block += *server->mutators.get(index); - server_json_block += "\"\n\t\t\t}"_jrs; - } + for (size_t index = 1; index != server->mutators.size(); ++index) + { + server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += *server->mutators.get(index); + server_json_block += "\"\n\t\t\t}"_jrs; + } - server_json_block += "\n\t\t]"_jrs; + server_json_block += "\n\t\t]"_jrs; } server_json_block += "\n\t}"_jrs; @@ -264,8 +273,10 @@ Jupiter::StringS server_as_hr_json(const RenX::Server *server) return server_json_block; } -void RenX_ServerListPlugin::addServerToServerList(const RenX::Server *server) +void RenX_ServerListPlugin::addServerToServerList(RenX::Server *server) { + Jupiter::String server_json_block(256); + // append to server_list_json if (RenX_ServerListPlugin::server_list_json.isEmpty()) @@ -281,48 +292,6 @@ void RenX_ServerListPlugin::addServerToServerList(const RenX::Server *server) RenX_ServerListPlugin::server_list_json += server_as_json(server); RenX_ServerListPlugin::server_list_json += ']'; } -} - -void RenX_ServerListPlugin::updateServerList() -{ - Jupiter::ArrayList servers = RenX::getCore()->getServers(); - size_t index = 0; - RenX::Server *server; - - // regenerate server_list_json - - RenX_ServerListPlugin::server_list_json = '['; - - while (index != servers.size()) - { - server = servers.get(index); - if (server->isConnected() && server->isFullyConnected()) - { - RenX_ServerListPlugin::server_list_json += server_as_json(server); - ++index; - break; - } - ++index; - } - while (index != servers.size()) - { - server = servers.get(index); - if (server->isConnected() && server->isFullyConnected()) - { - RenX_ServerListPlugin::server_list_json += ','; - RenX_ServerListPlugin::server_list_json += server_as_json(server); - } - ++index; - } - - RenX_ServerListPlugin::server_list_json += ']'; -} - -void RenX_ServerListPlugin::RenX_OnServerFullyConnected(RenX::Server *server) -{ - Jupiter::String server_json_block(256); - - this->addServerToServerList(server); // add to individual listing @@ -353,7 +322,9 @@ void RenX_ServerListPlugin::RenX_OnServerFullyConnected(RenX::Server *server) // Mutators if (server->mutators.size() != 0) { - server_json_block += ",\"Mutators\":["_jrs; + if (server->maps.size() != 0) + server_json_block += ","_jrs; + server_json_block += "\"Mutators\":["_jrs; server_json_block += "{\"Name\":\""_jrs; server_json_block += jsonify(*server->mutators.get(0)); @@ -374,6 +345,46 @@ void RenX_ServerListPlugin::RenX_OnServerFullyConnected(RenX::Server *server) server->varData.set(this->name, "j"_jrs, server_json_block); } +void RenX_ServerListPlugin::updateServerList() +{ + Jupiter::ArrayList servers = RenX::getCore()->getServers(); + size_t index = 0; + RenX::Server *server; + + // regenerate server_list_json + + RenX_ServerListPlugin::server_list_json = '['; + + while (index != servers.size()) + { + server = servers.get(index); + if (server->isConnected() && server->isFullyConnected()) + { + RenX_ServerListPlugin::server_list_json += server_as_json(server); + ++index; + break; + } + ++index; + } + while (index != servers.size()) + { + server = servers.get(index); + if (server->isConnected() && server->isFullyConnected()) + { + RenX_ServerListPlugin::server_list_json += ','; + RenX_ServerListPlugin::server_list_json += server_as_json(server); + } + ++index; + } + + RenX_ServerListPlugin::server_list_json += ']'; +} + +void RenX_ServerListPlugin::RenX_OnServerFullyConnected(RenX::Server *server) +{ + this->addServerToServerList(server); +} + void RenX_ServerListPlugin::RenX_OnServerDisconnect(RenX::Server *server, RenX::DisconnectReason) { this->updateServerList(); @@ -400,6 +411,45 @@ Jupiter::ReadableString *handle_server_list_page(const Jupiter::ReadableString & return pluginInstance.getServerListJSON(); } +Jupiter::ReadableString *handle_server_list_long_page(const Jupiter::ReadableString &) +{ + Jupiter::ArrayList servers = RenX::getCore()->getServers(); + size_t index = 0; + RenX::Server *server; + Jupiter::String *server_list_long_json = new Jupiter::String(256 * servers.size()); + + // regenerate server_list_json + + *server_list_long_json = "["_jrs; + + while (index != servers.size()) + { + server = servers.get(index); + if (server->isConnected() && server->isFullyConnected()) + { + *server_list_long_json += "\n\t"_jrs; + *server_list_long_json += server_as_long_json(server); + ++index; + break; + } + ++index; + } + while (index != servers.size()) + { + server = servers.get(index); + if (server->isConnected() && server->isFullyConnected()) + { + *server_list_long_json += ",\n\t"_jrs; + *server_list_long_json += server_as_long_json(server); + } + ++index; + } + + *server_list_long_json += "\n]"_jrs; + + return server_list_long_json; +} + Jupiter::ReadableString *handle_server_page(const Jupiter::ReadableString &query_string) { Jupiter::HTTP::HTMLFormResponse html_form_response(query_string); diff --git a/RenX.ServerList/RenX_ServerList.h b/RenX.ServerList/RenX_ServerList.h index 44297dd..f00af93 100644 --- a/RenX.ServerList/RenX_ServerList.h +++ b/RenX.ServerList/RenX_ServerList.h @@ -28,7 +28,7 @@ class RenX_ServerListPlugin : public RenX::Plugin public: // RenX_ServerListPlugin Jupiter::ReadableString *getServerListJSON(); - void addServerToServerList(const RenX::Server *server); + void addServerToServerList(RenX::Server *server); void updateServerList(); RenX_ServerListPlugin(); @@ -48,10 +48,11 @@ private: STRING_LITERAL_AS_NAMED_REFERENCE(name, "RenX.ServerList"); Jupiter::StringS server_list_json; - Jupiter::StringS web_hostname, web_path, server_list_page_name, server_page_name; + Jupiter::StringS web_hostname, web_path, server_list_page_name, server_list_long_page_name, server_page_name; }; Jupiter::ReadableString *handle_server_list_page(const Jupiter::ReadableString &); +Jupiter::ReadableString *handle_server_list_long_page(const Jupiter::ReadableString &); Jupiter::ReadableString *handle_server_page(const Jupiter::ReadableString &query_string); #endif // _RENX_SERVERLIST_H_HEADER