diff --git a/apps/openmw-mp/Networking.cpp b/apps/openmw-mp/Networking.cpp index 7bfb81d2f..196f39e13 100644 --- a/apps/openmw-mp/Networking.cpp +++ b/apps/openmw-mp/Networking.cpp @@ -30,7 +30,7 @@ using namespace std; Networking *Networking::sThis = 0; static int currentMpNum = 0; -static bool pluginEnforcementState = true; +static bool dataFileEnforcementState = true; static bool scriptErrorIgnoringState = false; Networking::Networking(RakNet::RakPeerInterface *peer) : mclient(nullptr) @@ -228,34 +228,34 @@ bool Networking::preInit(RakNet::Packet *packet, RakNet::BitStream &bsIn) } DEBUG_PRINTF("ID_GAME_PREINIT"); - PacketPreInit::PluginContainer plugins; + PacketPreInit::PluginContainer dataFiles; PacketPreInit packetPreInit(peer); packetPreInit.SetReadStream(&bsIn); - packetPreInit.setChecksums(&plugins); + packetPreInit.setChecksums(&dataFiles); packetPreInit.Read(); - if (!packetPreInit.isPacketValid() || plugins.empty()) + if (!packetPreInit.isPacketValid() || dataFiles.empty()) { LOG_APPEND(Log::LOG_ERROR, "Invalid packetPreInit"); peer->CloseConnection(packet->systemAddress, false); // close connection without notification return false; } - auto plugin = plugins.begin(); - if (samples.size() == plugins.size()) + auto dataFile = dataFiles.begin(); + if (samples.size() == dataFiles.size()) { - for (int i = 0; plugin != plugins.end(); plugin++, i++) + for (int i = 0; dataFile != dataFiles.end(); dataFile++, i++) { - LOG_APPEND(Log::LOG_VERBOSE, "- %X\t%s", plugin->second[0], plugin->first.c_str()); + LOG_APPEND(Log::LOG_VERBOSE, "- %X\t%s", dataFile->second[0], dataFile->first.c_str()); // Check if the filenames match, ignoring case - if (Misc::StringUtils::ciEqual(samples[i].first, plugin->first)) + if (Misc::StringUtils::ciEqual(samples[i].first, dataFile->first)) { auto &hashList = samples[i].second; - // Proceed if no checksums have been listed for this plugin on the server + // Proceed if no checksums have been listed for this dataFile on the server if (hashList.empty()) continue; - auto it = find(hashList.begin(), hashList.end(), plugin->second[0]); + auto it = find(hashList.begin(), hashList.end(), dataFile->second[0]); // Break the loop if the client's checksum isn't among those accepted by // the server if (it == hashList.end()) @@ -268,10 +268,10 @@ bool Networking::preInit(RakNet::Packet *packet, RakNet::BitStream &bsIn) RakNet::BitStream bs; packetPreInit.SetSendStream(&bs); - // If the loop above was broken, then the client's plugins do not match the server's - if (pluginEnforcementState && plugin != plugins.end()) + // If the loop above was broken, then the client's data files do not match the server's + if (dataFileEnforcementState && dataFile != dataFiles.end()) { - LOG_MESSAGE_SIMPLE(Log::LOG_INFO, "%s was not allowed to connect due to incompatible plugins", packet->systemAddress.ToString()); + LOG_MESSAGE_SIMPLE(Log::LOG_INFO, "%s was not allowed to connect due to incompatible data files", packet->systemAddress.ToString()); packetPreInit.setChecksums(&samples); packetPreInit.Send(packet->systemAddress); peer->CloseConnection(packet->systemAddress, true); @@ -427,14 +427,14 @@ int Networking::incrementMpNum() return currentMpNum; } -bool Networking::getPluginEnforcementState() +bool Networking::getDataFileEnforcementState() { - return pluginEnforcementState; + return dataFileEnforcementState; } -void Networking::setPluginEnforcementState(bool state) +void Networking::setDataFileEnforcementState(bool state) { - pluginEnforcementState = state; + dataFileEnforcementState = state; } bool Networking::getScriptErrorIgnoringState() diff --git a/apps/openmw-mp/Networking.hpp b/apps/openmw-mp/Networking.hpp index 211bc8c1c..974003617 100644 --- a/apps/openmw-mp/Networking.hpp +++ b/apps/openmw-mp/Networking.hpp @@ -53,8 +53,8 @@ namespace mwmp void setCurrentMpNum(int value); int incrementMpNum(); - bool getPluginEnforcementState(); - void setPluginEnforcementState(bool state); + bool getDataFileEnforcementState(); + void setDataFileEnforcementState(bool state); bool getScriptErrorIgnoringState(); void setScriptErrorIgnoringState(bool state); diff --git a/apps/openmw-mp/Script/Functions/Server.cpp b/apps/openmw-mp/Script/Functions/Server.cpp index 04a61d960..2a60bedd4 100644 --- a/apps/openmw-mp/Script/Functions/Server.cpp +++ b/apps/openmw-mp/Script/Functions/Server.cpp @@ -133,9 +133,9 @@ bool ServerFunctions::HasPassword() noexcept return mwmp::Networking::get().isPassworded(); } -bool ServerFunctions::GetPluginEnforcementState() noexcept +bool ServerFunctions::GetDataFileEnforcementState() noexcept { - return mwmp::Networking::getPtr()->getPluginEnforcementState(); + return mwmp::Networking::getPtr()->getDataFileEnforcementState(); } bool ServerFunctions::GetScriptErrorIgnoringState() noexcept @@ -160,9 +160,9 @@ void ServerFunctions::SetServerPassword(const char *password) noexcept mwmp::Networking::getPtr()->setServerPassword(password); } -void ServerFunctions::SetPluginEnforcementState(bool state) noexcept +void ServerFunctions::SetDataFileEnforcementState(bool state) noexcept { - mwmp::Networking::getPtr()->setPluginEnforcementState(state); + mwmp::Networking::getPtr()->setDataFileEnforcementState(state); } void ServerFunctions::SetScriptErrorIgnoringState(bool state) noexcept @@ -223,6 +223,16 @@ const char* ServerFunctions::GetModDir() noexcept return GetDataPath(); } +bool ServerFunctions::GetPluginEnforcementState() noexcept +{ + return mwmp::Networking::getPtr()->getDataFileEnforcementState(); +} + +void ServerFunctions::SetPluginEnforcementState(bool state) noexcept +{ + SetDataFileEnforcementState(state); +} + void ServerFunctions::AddPluginHash(const char *pluginName, const char *checksumString) noexcept { AddDataFileRequirement(pluginName, checksumString); diff --git a/apps/openmw-mp/Script/Functions/Server.hpp b/apps/openmw-mp/Script/Functions/Server.hpp index 169000471..e8aa9bbde 100644 --- a/apps/openmw-mp/Script/Functions/Server.hpp +++ b/apps/openmw-mp/Script/Functions/Server.hpp @@ -26,13 +26,13 @@ {"GetMaxPlayers", ServerFunctions::GetMaxPlayers},\ {"GetPort", ServerFunctions::GetPort},\ {"HasPassword", ServerFunctions::HasPassword},\ - {"GetPluginEnforcementState", ServerFunctions::GetPluginEnforcementState},\ + {"GetDataFileEnforcementState", ServerFunctions::GetDataFileEnforcementState},\ {"GetScriptErrorIgnoringState", ServerFunctions::GetScriptErrorIgnoringState},\ \ {"SetGameMode", ServerFunctions::SetGameMode},\ {"SetHostname", ServerFunctions::SetHostname},\ {"SetServerPassword", ServerFunctions::SetServerPassword},\ - {"SetPluginEnforcementState", ServerFunctions::SetPluginEnforcementState},\ + {"SetDataFileEnforcementState", ServerFunctions::SetDataFileEnforcementState},\ {"SetScriptErrorIgnoringState", ServerFunctions::SetScriptErrorIgnoringState},\ {"SetRuleString", ServerFunctions::SetRuleString},\ {"SetRuleValue", ServerFunctions::SetRuleValue},\ @@ -41,6 +41,8 @@ \ {"DoesFileExist", ServerFunctions::DoesFileExist},\ {"GetModDir", ServerFunctions::GetModDir},\ + {"GetPluginEnforcementState", ServerFunctions::GetPluginEnforcementState},\ + {"SetPluginEnforcementState", ServerFunctions::SetPluginEnforcementState},\ {"AddPluginHash", ServerFunctions::AddPluginHash} class ServerFunctions @@ -208,13 +210,13 @@ public: static bool HasPassword() noexcept; /** - * \brief Get the plugin enforcement state of the server. + * \brief Get the data file enforcement state of the server. * - * If true, clients are required to use the same plugins as set for the server. + * If true, clients are required to use the same data files as set for the server. * * \return The enforcement state. */ - static bool GetPluginEnforcementState() noexcept; + static bool GetDataFileEnforcementState() noexcept; /** * \brief Get the script error ignoring state of the server. @@ -250,14 +252,14 @@ public: static void SetServerPassword(const char *password) noexcept; /** - * \brief Set the plugin enforcement state of the server. + * \brief Set the data file enforcement state of the server. * - * If true, clients are required to use the same plugins as set for the server. + * If true, clients are required to use the same data files as set for the server. * * \param state The new enforcement state. * \return void */ - static void SetPluginEnforcementState(bool state) noexcept; + static void SetDataFileEnforcementState(bool state) noexcept; /** * \brief Set whether script errors should be ignored or not. @@ -307,6 +309,8 @@ public: static bool DoesFileExist(const char *filePath) noexcept; static const char *GetModDir() noexcept; + static bool GetPluginEnforcementState() noexcept; + static void SetPluginEnforcementState(bool state) noexcept; static void AddPluginHash(const char *pluginName, const char *checksumString) noexcept; };