10#include <QMutexLocker>
12#include <QReadWriteLock>
15#include <qtmetamacros.h>
59 explicit Server(QObject *parent =
nullptr);
63 const QString &password,
64 bool passwordNeedsHash,
68 QString &clientVersion,
69 QString &connectionType);
273 void externalRoomSay(
int roomId,
const QString &userName,
const QString &message,
const QString &channelId);
Definition remote_connection_controller.h:20
Definition server_abstractuserinterface.h:28
Definition server_database_interface.h:22
Definition server_protocolhandler.h:40
Definition server_room.h:35
int getUsersCount() const
Definition server.cpp:652
virtual bool getMaxUserLimitEnabled() const
Definition server.h:126
void removeClient(Server_ProtocolHandler *player)
Definition server.cpp:280
virtual bool getClientIDRequiredEnabled() const
Definition server.h:118
const QMap< QString, Server_ProtocolHandler * > & getUsers() const
Definition server.h:78
virtual void observeGameStartDurationMs(qint64)
Definition server.h:192
virtual QMap< QString, bool > getServerRequiredFeatureList() const
Definition server.h:86
QReadWriteLock persistentPlayersLock
Definition server.h:264
void externalUserJoined(const ServerInfo_User &userInfo)
Definition server.cpp:341
virtual bool requiresChallengeResponseAuth() const
True when only challenge-response logins are accepted (strict mode).
Definition server.h:91
virtual int getMaxGameInactivityTime() const
Definition server.h:146
virtual bool permitUnregisteredUsers() const
Definition server.h:110
QMap< qint64, Server_AbstractUserInterface * > externalUsersBySessionId
Definition server.h:293
void addPersistentPlayer(const QString &userName, int roomId, int gameId, int playerId)
Definition server.cpp:236
void externalUserLeft(const QString &userName)
Definition server.cpp:367
virtual int getMaxGamesPerUser() const
Definition server.h:166
void broadcastRoomUpdate(const ServerInfo_Room &roomInfo, bool sendToIsl=false)
Definition server.cpp:618
virtual int loginRateLimitRemainingSeconds(const QString &, const QString &)
Seconds remaining before the login rate limit for the (address, username) pair lifts....
Definition server.h:220
virtual QString getRequiredFeatures() const
Definition server.h:106
virtual bool getEnableLogQuery() const
Definition server.h:130
QMultiMap< QString, PlayerReference > persistentPlayers
Definition server.h:263
const QMap< int, Server_Room * > & getRooms()
Definition server.h:72
virtual int getMaxPlayerInactivityTime() const
Definition server.h:150
void removePersistentPlayer(const QString &userName, int roomId, int gameId, int playerId)
Definition server.cpp:242
virtual QString getLoginMessage() const
Definition server.h:98
void prepareDestroy()
Definition server.cpp:79
virtual void doSendIslMessage(const IslMessage &, int)
Definition server.h:283
AuthenticationResult loginUser(Server_ProtocolHandler *session, QString &name, const QString &password, bool passwordNeedsHash, QString &reason, int &secondsLeft, QString &clientid, QString &clientVersion, QString &connectionType)
Definition server.cpp:101
void externalRoomRemoveMessages(int roomId, const QString &userName, int amount)
Definition server.cpp:472
void externalRoomUserJoined(int roomId, const ServerInfo_User &userInfo)
Definition server.cpp:418
QMap< QString, Server_AbstractUserInterface * > externalUsers
Definition server.h:294
int getWebSocketUserCount() const
Definition server.h:257
virtual int getMaxUserTotal() const
Definition server.h:178
void externalJoinGameCommandReceived(const Command_JoinGame &cmd, int cmdId, int roomId, int serverId, qint64 sessionId)
Definition server.cpp:498
void addRoom(Server_Room *newRoom)
Definition server.cpp:642
QReadWriteLock roomsLock
Definition server.h:58
int nextLocalGameId
Definition server.h:265
virtual int getMaxCommandCountPerInterval() const
Definition server.h:174
const QMap< qint64, Server_ProtocolHandler * > & getUsersBySessionId() const
Definition server.h:82
virtual SessionEvent * getLoginSessionEvent() const
Definition server.h:102
void sendIsl_RoomCommand(const CommandContainer &item, int serverId, qint64 sessionId, int roomId)
Definition server.cpp:733
virtual void clearFailedLogins(const QString &, const QString &)
Clear any failed-login lockout for the (address, username) pair, e.g. after a successful login.
Definition server.h:225
void addClient(Server_ProtocolHandler *player)
Definition server.cpp:266
QMap< int, Server_Room * > rooms
Definition server.h:295
virtual int getServerID() const
Definition server.h:182
virtual int getCommandCountingInterval() const
Definition server.h:170
Server_AbstractUserInterface * findUser(const QString &userName) const
Definition server.cpp:254
void sigSendIslMessage(const IslMessage &message, int serverId)
QReadWriteLock clientsLock
Definition server.h:58
virtual int getMessageCountingInterval() const
Definition server.h:154
void externalResponseReceived(const Response &resp, qint64 sessionId)
Definition server.cpp:604
Server(QObject *parent=nullptr)
Definition server.cpp:64
QMap< QThread *, Server_DatabaseInterface * > databaseInterfaces
Definition server.h:296
QList< Server_ProtocolHandler * > clients
Definition server.h:290
QMutex nextLocalGameIdMutex
Definition server.h:266
void externalRoomUserLeft(int roomId, const QString &userName)
Definition server.cpp:431
virtual int getClientKeepAlive() const
Definition server.h:142
void endSession(qint64 sessionId)
int getNextLocalGameId()
Definition server.h:230
const QMap< QString, Server_AbstractUserInterface * > & getExternalUsers() const
Definition server.h:243
QMap< QString, Server_ProtocolHandler * > users
Definition server.h:292
void sendIsl_SessionEvent(const SessionEvent &item, int serverId=-1, qint64 sessionId=-1)
Definition server.cpp:683
virtual bool permitCreateGameAsJudge() const
Definition server.h:186
Server_DatabaseInterface * getDatabaseInterface() const
Definition server.cpp:96
virtual int getMaxMessageCountPerInterval() const
Definition server.h:158
void sendIsl_GameEventContainer(const GameEventContainer &item, int serverId=-1, qint64 sessionId=-1)
Definition server.cpp:695
void sendIsl_GameCommand(const CommandContainer &item, int serverId, qint64 sessionId, int roomId, int playerId)
Definition server.cpp:719
int tcpUserCount
Definition server.h:265
virtual int getIdleClientTimeout() const
Definition server.h:138
void externalGameEventContainerReceived(const GameEventContainer &cont, qint64 sessionId)
Definition server.cpp:590
void sendIsl_Response(const Response &item, int serverId=-1, qint64 sessionId=-1)
Definition server.cpp:671
int webSocketUserCount
Definition server.h:265
void externalGameCommandContainerReceived(const CommandContainer &cont, int playerId, int serverId, qint64 sessionId)
Definition server.cpp:533
QMap< qint64, Server_ProtocolHandler * > usersBySessionId
Definition server.h:291
virtual int getMaxMessageSizePerInterval() const
Definition server.h:162
virtual bool getRegOnlyServerEnabled() const
Definition server.h:122
void broadcastUserInfoUpdate(Server_ProtocolHandler *source)
Definition server.cpp:217
QList< QString > getOnlineModeratorList() const
Definition server.cpp:325
int getGamesCount() const
Definition server.cpp:658
virtual bool getGameShouldPing() const
Definition server.h:114
~Server() override=default
QList< PlayerReference > getPersistentPlayerReferences(const QString &userName) const
Definition server.cpp:248
void setDatabaseInterface(Server_DatabaseInterface *_databaseInterface)
Definition server.cpp:90
void sendIsl_RoomEvent(const RoomEvent &item, int serverId=-1, qint64 sessionId=-1)
Definition server.cpp:707
virtual bool isLoginRateLimited(const QString &, const QString &)
True if the (address, username) pair is already locked out of logging in.
Definition server.h:212
int getTCPUserCount() const
Definition server.h:253
void externalRoomSay(int roomId, const QString &userName, const QString &message, const QString &channelId)
Definition server.cpp:444
void externalRoomGameListChanged(int roomId, const ServerInfo_Game &gameInfo)
Definition server.cpp:485
virtual bool getStoreReplaysEnabled() const
Definition server.h:134
virtual bool recordFailedLogin(const QString &, const QString &)
Record a failed login attempt for the (address, username) pair; returns true if now locked out.
Definition server.h:202
AuthenticationResult
Definition server.h:34
@ UserIsInactive
Definition server.h:42
@ PasswordChangeRequired
Definition server.h:44
@ UnknownUser
Definition server.h:37
@ RegistrationRequired
Definition server.h:41
@ UserIsBanned
Definition server.h:39
@ ClientIdRequired
Definition server.h:43
@ PasswordRight
Definition server.h:36
@ WouldOverwriteOldSession
Definition server.h:38
@ UsernameInvalid
Definition server.h:40
@ NotLoggedIn
Definition server.h:35
Definition commands.proto:8
Definition room_commands.proto:79
Definition game_event_container.proto:4
Definition isl_message.proto:7
Definition response.proto:11
Definition room_event.proto:2
Definition serverinfo_game.proto:5
Definition serverinfo_room.proto:6
Definition serverinfo_user.proto:2
Definition session_event.proto:2