limitrank - draft with return false always

This commit is contained in:
Kai Philipp
2019-09-09 19:21:15 +02:00
parent add886ebee
commit e18e459434
5 changed files with 70 additions and 3 deletions
+8 -3
View File
@@ -1427,13 +1427,18 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr<SessionData> sessio
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_NOT_INVITED);
} else if (!game->CheckPassword(password)) {
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_INVALID_PASSWORD);
} else if (tmpData.gameType == GAME_TYPE_RANKING
&& !joinGame.spectateonly()
} else if (tmpData.gameType == GAME_TYPE_RANKING) {
if(!joinGame.spectateonly()
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4V6
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4
&& game->IsClientAddressConnected(session->GetClientAddr())) {
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED);
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED);
}else if (!session->IsPlayerAllowedToJoinLimitRank(session->GetPlayerData()->GetUniqueId())) {
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED);
}
}
} else {
MoveSessionToGame(game, session, joinGame.autoleave(), false);
+16
View File
@@ -38,6 +38,8 @@
#include <net/websocketdata.h>
#include <gsasl.h>
// #include <ctime> // @TODO: remove if really not necessary
using namespace std;
using boost::asio::ip::tcp;
@@ -398,6 +400,20 @@ SessionData::GetPlayerData()
return m_playerData;
}
void
SessionData::SetPlayerLastGames(std::array<std::time_t> lastGames)
{
boost::mutex::scoped_lock lock(m_dataMutex);
m_lastGames = player;
}
std::array<std::time_t>
SessionData::GetPlayerLastGames()
{
boost::mutex::scoped_lock lock(m_dataMutex);
return m_lastGames;
}
string
SessionData::GetRemoteIPAddressFromSocket() const
{
+39
View File
@@ -34,9 +34,13 @@
#include <net/serverexception.h>
#include <net/socket_msg.h>
#include <ctime>
using namespace std;
#define SERVER_MAX_GUEST_USERS_LOBBY 50 // LG: Maximum number of guests users in lobby allowed
#define SERVER_ALLOWED_RANKING_GAMES_PER_MINUTES 5
#define SERVER_ALLOWED_RANKING_GAMES_MINUTES 60
SessionManager::SessionManager()
{
@@ -229,6 +233,41 @@ SessionManager::IsPlayerConnected(unsigned uniqueId) const
return retVal;
}
bool
SessionManager::IsPlayerAllowedToJoinLimitRank(const string &playerName) const
{
bool retVal = false;
// boost::shared_ptr<SessionData> tmpSession = GetSessionByPlayerName(playerName);
// if (tmpSession){
// std::array<std::time_t> lastGames = tmpSession->GetPlayerLastGames();
// std::time_t now = std::time(nullptr);
// retVal = true;
// }
return retVal;
}
bool
SessionManager::IsPlayerAllowedToJoinLimitRank(unsigned uniqueId) const
{
bool retVal = false;
// boost::shared_ptr<SessionData> tmpSession = GetSessionByUniquePlayerId(uniqueId);
// if (tmpSession){
// std::array<std::time_t> lastGames = tmpSession->GetPlayerLastGames();
// std::time_t now = std::time(nullptr);
// retVal = true;
// }
return retVal;
}
bool
SessionManager::IsClientAddressConnected(const std::string &clientAddress) const
{
+5
View File
@@ -126,6 +126,9 @@ public:
void SetPlayerData(boost::shared_ptr<PlayerData> player);
boost::shared_ptr<PlayerData> GetPlayerData();
void SetPlayerLastGames(std::array<std::time_t> lastGames);
std::array<std::time_t> GetPlayerLastGames();
std::string GetRemoteIPAddressFromSocket() const;
protected:
@@ -159,6 +162,8 @@ private:
std::string m_password;
boost::shared_ptr<PlayerData> m_playerData;
std::array<std::time_t> m_lastGames;
mutable boost::mutex m_dataMutex;
};
+2
View File
@@ -65,6 +65,8 @@ public:
bool IsPlayerConnected(unsigned uniqueId) const;
bool IsClientAddressConnected(const std::string &clientAddress) const;
bool IsGuestAllowedToConnect(const std::string &clientAddress) const;
bool IsPlayerAllowedToJoinLimitRank(const std::string &playerName) const;
bool IsPlayerAllowedToJoinLimitRank(unsigned uniqueId) const;
void ForEach(boost::function<void (boost::shared_ptr<SessionData>)> func);