Do not autostart network games. Do not start admin timer for network games.
This commit is contained in:
@@ -24,14 +24,19 @@
|
||||
#include <net/net_helper.h>
|
||||
|
||||
unsigned
|
||||
GetMaxNumberOfAvatarFiles()
|
||||
NetHelper::GetMaxNumberOfAvatarFiles()
|
||||
{
|
||||
return 256;
|
||||
}
|
||||
|
||||
unsigned
|
||||
GetMaxAvatarCacheAgeSec()
|
||||
NetHelper::GetMaxAvatarCacheAgeSec()
|
||||
{
|
||||
return 604800; // 1 Week
|
||||
}
|
||||
|
||||
unsigned
|
||||
NetHelper::GetLoginLockSec()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -24,14 +24,19 @@
|
||||
#include <net/net_helper.h>
|
||||
|
||||
unsigned
|
||||
GetMaxNumberOfAvatarFiles()
|
||||
NetHelper::GetMaxNumberOfAvatarFiles()
|
||||
{
|
||||
return 2048;
|
||||
}
|
||||
|
||||
unsigned
|
||||
GetMaxAvatarCacheAgeSec()
|
||||
NetHelper::GetMaxAvatarCacheAgeSec()
|
||||
{
|
||||
return 2592000; // 1 Month
|
||||
}
|
||||
|
||||
unsigned
|
||||
NetHelper::GetLoginLockSec()
|
||||
{
|
||||
return 30;
|
||||
}
|
||||
|
||||
@@ -413,11 +413,15 @@ ServerGameStateInit::HandleNewSession(boost::shared_ptr<ServerGame> server, Sess
|
||||
void
|
||||
ServerGameStateInit::RegisterAdminTimer(boost::shared_ptr<ServerGame> server)
|
||||
{
|
||||
server->GetStateTimer1().expires_from_now(
|
||||
boost::posix_time::seconds(SERVER_GAME_ADMIN_TIMEOUT_SEC - SERVER_GAME_ADMIN_WARNING_REMAINING_SEC));
|
||||
server->GetStateTimer1().async_wait(
|
||||
boost::bind(
|
||||
&ServerGameStateInit::TimerAdminWarning, this, boost::asio::placeholders::error, server));
|
||||
// No admin timeout in LAN games.
|
||||
if (server->GetLobbyThread().GetServerMode() != SERVER_MODE_LAN)
|
||||
{
|
||||
server->GetStateTimer1().expires_from_now(
|
||||
boost::posix_time::seconds(SERVER_GAME_ADMIN_TIMEOUT_SEC - SERVER_GAME_ADMIN_WARNING_REMAINING_SEC));
|
||||
server->GetStateTimer1().async_wait(
|
||||
boost::bind(
|
||||
&ServerGameStateInit::TimerAdminWarning, this, boost::asio::placeholders::error, server));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -429,11 +433,15 @@ ServerGameStateInit::UnregisterAdminTimer(boost::shared_ptr<ServerGame> server)
|
||||
void
|
||||
ServerGameStateInit::RegisterAutoStartTimer(boost::shared_ptr<ServerGame> server)
|
||||
{
|
||||
server->GetStateTimer2().expires_from_now(
|
||||
boost::posix_time::seconds(SERVER_AUTOSTART_GAME_DELAY_SEC));
|
||||
server->GetStateTimer2().async_wait(
|
||||
boost::bind(
|
||||
&ServerGameStateInit::TimerAutoStart, this, boost::asio::placeholders::error, server));
|
||||
// No autostart in LAN games.
|
||||
if (server->GetLobbyThread().GetServerMode() != SERVER_MODE_LAN)
|
||||
{
|
||||
server->GetStateTimer2().expires_from_now(
|
||||
boost::posix_time::seconds(SERVER_AUTOSTART_GAME_DELAY_SEC));
|
||||
server->GetStateTimer2().async_wait(
|
||||
boost::bind(
|
||||
&ServerGameStateInit::TimerAutoStart, this, boost::asio::placeholders::error, server));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -58,14 +58,13 @@
|
||||
#define SERVER_UPDATE_LOGIN_LOCK_INTERVAL_MSEC 1000
|
||||
#define SERVER_PROCESS_SEND_INTERVAL_MSEC 10
|
||||
|
||||
#define SERVER_INIT_LOGIN_CLIENT_LOCK_SEC 30 // Forbid a client to send an additional avatar.
|
||||
#define SERVER_INIT_LOGIN_CLIENT_LOCK_SEC NetHelper::GetLoginLockSec()
|
||||
|
||||
#define SERVER_INIT_SESSION_TIMEOUT_SEC 60
|
||||
#define SERVER_TIMEOUT_WARNING_REMAINING_SEC 60
|
||||
#define SERVER_SESSION_ACTIVITY_TIMEOUT_SEC 1800 // 30 min, MUST be > SERVER_TIMEOUT_WARNING_REMAINING_SEC
|
||||
#define SERVER_SESSION_FORCED_TIMEOUT_SEC 86400 // 1 day, should be quite large.
|
||||
|
||||
|
||||
#define SERVER_STATISTICS_FILE_NAME "server_statistics.log"
|
||||
#define SERVER_STATISTICS_STR_TOTAL_PLAYERS "TotalNumPlayersLoggedIn"
|
||||
#define SERVER_STATISTICS_STR_TOTAL_GAMES "TotalNumGamesCreated"
|
||||
@@ -637,6 +636,12 @@ ServerLobbyThread::GetStartTime() const
|
||||
return m_startTime;
|
||||
}
|
||||
|
||||
ServerMode
|
||||
ServerLobbyThread::GetServerMode() const
|
||||
{
|
||||
return m_mode;
|
||||
}
|
||||
|
||||
SenderHelper &
|
||||
ServerLobbyThread::GetSender()
|
||||
{
|
||||
@@ -989,22 +994,18 @@ ServerLobbyThread::HandleNetPacketInit(SessionWrapper session, const InitMessage
|
||||
// Before any other processing, perform some denial of service and
|
||||
// brute force attack prevention by checking whether the user recently sent an
|
||||
// Init packet.
|
||||
// This check is not performed on LAN servers.
|
||||
if (m_mode != SERVER_MODE_LAN)
|
||||
bool recentlySentInit = false;
|
||||
{
|
||||
bool recentlySentInit = false;
|
||||
{
|
||||
boost::mutex::scoped_lock lock(m_timerClientAddressMapMutex);
|
||||
if (m_timerClientAddressMap.find(session.sessionData->GetClientAddr()) != m_timerClientAddressMap.end())
|
||||
recentlySentInit = true;
|
||||
else
|
||||
m_timerClientAddressMap[session.sessionData->GetClientAddr()] = boost::timers::portable::microsec_timer();
|
||||
}
|
||||
if (recentlySentInit)
|
||||
{
|
||||
SessionError(session, ERR_NET_INIT_BLOCKED);
|
||||
return;
|
||||
}
|
||||
boost::mutex::scoped_lock lock(m_timerClientAddressMapMutex);
|
||||
if (m_timerClientAddressMap.find(session.sessionData->GetClientAddr()) != m_timerClientAddressMap.end())
|
||||
recentlySentInit = true;
|
||||
else
|
||||
m_timerClientAddressMap[session.sessionData->GetClientAddr()] = boost::timers::portable::microsec_timer();
|
||||
}
|
||||
if (recentlySentInit)
|
||||
{
|
||||
SessionError(session, ERR_NET_INIT_BLOCKED);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check the protocol version.
|
||||
|
||||
@@ -23,8 +23,13 @@
|
||||
#define SERVER_COMPUTER_PLAYER_NAME "Computer"
|
||||
#define SERVER_GUEST_PLAYER_NAME "Guest"
|
||||
|
||||
unsigned GetMaxNumberOfAvatarFiles();
|
||||
unsigned GetMaxAvatarCacheAgeSec();
|
||||
class NetHelper
|
||||
{
|
||||
public:
|
||||
static unsigned GetMaxNumberOfAvatarFiles();
|
||||
static unsigned GetMaxAvatarCacheAgeSec();
|
||||
static unsigned GetLoginLockSec();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -103,6 +103,7 @@ public:
|
||||
|
||||
ServerStats GetStats() const;
|
||||
boost::posix_time::ptime GetStartTime() const;
|
||||
ServerMode GetServerMode() const;
|
||||
|
||||
SenderHelper &GetSender();
|
||||
boost::asio::io_service &GetIOService();
|
||||
|
||||
Reference in New Issue
Block a user