[Server] Move server administration functions to ServerFunctions class
parent
c0fde5ae97
commit
141e404ed9
@ -0,0 +1,89 @@
|
||||
#include "Server.hpp"
|
||||
|
||||
#include <components/openmw-mp/NetworkMessages.hpp>
|
||||
#include <components/openmw-mp/Log.hpp>
|
||||
#include <components/openmw-mp/Version.hpp>
|
||||
|
||||
#include <apps/openmw-mp/Script/ScriptFunctions.hpp>
|
||||
#include <apps/openmw-mp/Networking.hpp>
|
||||
#include <apps/openmw-mp/MasterClient.hpp>
|
||||
|
||||
|
||||
void ServerFunctions::StopServer(int code) noexcept
|
||||
{
|
||||
mwmp::Networking::getPtr()->stopServer(code);
|
||||
}
|
||||
|
||||
void ServerFunctions::Kick(unsigned short pid) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player,);
|
||||
mwmp::Networking::getPtr()->kickPlayer(player->guid);
|
||||
}
|
||||
|
||||
void ServerFunctions::BanAddress(const char *ipAddress) noexcept
|
||||
{
|
||||
mwmp::Networking::getPtr()->banAddress(ipAddress);
|
||||
}
|
||||
|
||||
void ServerFunctions::UnbanAddress(const char *ipAddress) noexcept
|
||||
{
|
||||
mwmp::Networking::getPtr()->unbanAddress(ipAddress);
|
||||
}
|
||||
|
||||
const char *ServerFunctions::GetServerVersion() noexcept
|
||||
{
|
||||
return TES3MP_VERSION;
|
||||
}
|
||||
|
||||
const char *ServerFunctions::GetProtocolVersion() noexcept
|
||||
{
|
||||
static std::string version = std::to_string(TES3MP_PROTO_VERSION);
|
||||
return version.c_str();
|
||||
}
|
||||
|
||||
int ServerFunctions::GetAvgPing(unsigned short pid) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, -1);
|
||||
return mwmp::Networking::get().getAvgPing(player->guid);
|
||||
}
|
||||
|
||||
const char *ServerFunctions::GetIP(unsigned short pid) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, "");
|
||||
RakNet::SystemAddress addr = mwmp::Networking::getPtr()->getSystemAddress(player->guid);
|
||||
return addr.ToString(false);
|
||||
}
|
||||
|
||||
void ServerFunctions::SetGameMode(const char *gameMode) noexcept
|
||||
{
|
||||
if (mwmp::Networking::getPtr()->getMasterClient())
|
||||
mwmp::Networking::getPtr()->getMasterClient()->SetModname(gameMode);
|
||||
}
|
||||
|
||||
void ServerFunctions::SetHostname(const char *name) noexcept
|
||||
{
|
||||
if (mwmp::Networking::getPtr()->getMasterClient())
|
||||
mwmp::Networking::getPtr()->getMasterClient()->SetHostname(name);
|
||||
}
|
||||
|
||||
void ServerFunctions::SetServerPassword(const char *password) noexcept
|
||||
{
|
||||
mwmp::Networking::getPtr()->setServerPassword(password);
|
||||
}
|
||||
|
||||
void ServerFunctions::SetRuleString(const char *key, const char *value) noexcept
|
||||
{
|
||||
auto mc = mwmp::Networking::getPtr()->getMasterClient();
|
||||
if (mc)
|
||||
mc->SetRuleString(key, value);
|
||||
}
|
||||
|
||||
void ServerFunctions::SetRuleValue(const char *key, double value) noexcept
|
||||
{
|
||||
auto mc = mwmp::Networking::getPtr()->getMasterClient();
|
||||
if (mc)
|
||||
mc->SetRuleValue(key, value);
|
||||
}
|
@ -0,0 +1,133 @@
|
||||
#ifndef OPENMW_SERVERAPI_HPP
|
||||
#define OPENMW_SERVERAPI_HPP
|
||||
|
||||
#include "../Types.hpp"
|
||||
|
||||
#define SERVERAPI \
|
||||
{"StopServer", ServerFunctions::StopServer},\
|
||||
\
|
||||
{"Kick", ServerFunctions::Kick},\
|
||||
{"BanAddress", ServerFunctions::BanAddress},\
|
||||
{"UnbanAddress", ServerFunctions::UnbanAddress},\
|
||||
\
|
||||
{"GetServerVersion", ServerFunctions::GetServerVersion},\
|
||||
{"GetProtocolVersion", ServerFunctions::GetProtocolVersion},\
|
||||
{"GetAvgPing", ServerFunctions::GetAvgPing},\
|
||||
{"GetIP", ServerFunctions::GetIP},\
|
||||
\
|
||||
{"SetGameMode", ServerFunctions::SetGameMode},\
|
||||
{"SetHostname", ServerFunctions::SetHostname},\
|
||||
{"SetServerPassword", ServerFunctions::SetServerPassword},\
|
||||
{"SetRuleString", ServerFunctions::SetRuleString},\
|
||||
{"SetRuleValue", ServerFunctions::SetRuleValue}
|
||||
|
||||
class ServerFunctions
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* \brief Shut down the server.
|
||||
*
|
||||
* \param code The shutdown code.
|
||||
* \return void
|
||||
*/
|
||||
static void StopServer(int code) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Kick a certain player from the server.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \return void
|
||||
*/
|
||||
static void Kick(unsigned short pid) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Ban a certain IP address from the server.
|
||||
*
|
||||
* \param ipAddress The IP address.
|
||||
* \return void
|
||||
*/
|
||||
static void BanAddress(const char *ipAddress) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Unban a certain IP address from the server.
|
||||
*
|
||||
* \param ipAddress The IP address.
|
||||
* \return void
|
||||
*/
|
||||
static void UnbanAddress(const char *ipAddress) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Get the TES3MP version of the server.
|
||||
*
|
||||
* \return The server version.
|
||||
*/
|
||||
static const char *GetServerVersion() noexcept;
|
||||
|
||||
/**
|
||||
* \brief Get the protocol version of the server.
|
||||
*
|
||||
* \return The protocol version.
|
||||
*/
|
||||
static const char *GetProtocolVersion() noexcept;
|
||||
|
||||
/**
|
||||
* \brief Get the average ping of a certain player.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \return The average ping.
|
||||
*/
|
||||
static int GetAvgPing(unsigned short pid) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Get the IP address of a certain player.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \return The IP address.
|
||||
*/
|
||||
static const char* GetIP(unsigned short pid) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set the game mode of the server, as displayed in the server browser.
|
||||
*
|
||||
* \param name The new game mode.
|
||||
* \return void
|
||||
*/
|
||||
static void SetGameMode(const char* gameMode) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set the name of the server, as displayed in the server browser.
|
||||
*
|
||||
* \param name The new name.
|
||||
* \return void
|
||||
*/
|
||||
static void SetHostname(const char* name) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set the password required to join the server.
|
||||
*
|
||||
* \param password The password.
|
||||
* \return void
|
||||
*/
|
||||
static void SetServerPassword(const char *passw) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set a rule string for the server details displayed in the server browser.
|
||||
*
|
||||
* \param key The name of the rule.
|
||||
* \param value The string value of the rule.
|
||||
* \return void
|
||||
*/
|
||||
static void SetRuleString(const char *key, const char *value) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set a rule value for the server details displayed in the server browser.
|
||||
*
|
||||
* \param key The name of the rule.
|
||||
* \param value The numerical value of the rule.
|
||||
* \return void
|
||||
*/
|
||||
static void SetRuleValue(const char *key, double value) noexcept;
|
||||
};
|
||||
|
||||
#endif //OPENMW_SERVERAPI_HPP
|
Loading…
Reference in New Issue