mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-27 10:09:40 +00:00
[Server] Refer to data files instead of plugins in var & function names
This commit is contained in:
parent
a2f110ae6d
commit
d8919dcec6
4 changed files with 46 additions and 32 deletions
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue