DDraceNetwork Documentation
Loading...
Searching...
No Matches
server.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef ENGINE_SERVER_SERVER_H
4#define ENGINE_SERVER_SERVER_H
5
6#include <base/hash.h>
7
8#include <engine/console.h>
9#include <engine/server.h>
10
11#include <engine/shared/demo.h>
12#include <engine/shared/econ.h>
13#include <engine/shared/fifo.h>
14#include <engine/shared/http.h>
20
21#include <memory>
22#include <optional>
23#include <vector>
24
25#include "antibot.h"
26#include "authmanager.h"
27#include "name_ban.h"
28#include "snap_id_pool.h"
29
30#if defined(CONF_UPNP)
31#include "upnp.h"
32#endif
33
34class CConfig;
35class CHostLookup;
36class CLogMessage;
37class CMsgPacker;
38class CPacker;
39class IEngine;
40class IEngineMap;
41class ILogger;
42
43class CServerBan : public CNetBan
44{
46
47 template<class T>
48 int BanExt(T *pBanPool, const typename T::CDataType *pData, int Seconds, const char *pReason, bool VerbatimReason);
49
50public:
51 class CServer *Server() const { return m_pServer; }
52
53 void InitServerBan(class IConsole *pConsole, class IStorage *pStorage, class CServer *pServer);
54
55 int BanAddr(const NETADDR *pAddr, int Seconds, const char *pReason, bool VerbatimReason) override;
56 int BanRange(const CNetRange *pRange, int Seconds, const char *pReason) override;
57
58 static void ConBanExt(class IConsole::IResult *pResult, void *pUser);
59 static void ConBanRegion(class IConsole::IResult *pResult, void *pUser);
60 static void ConBanRegionRange(class IConsole::IResult *pResult, void *pUser);
61};
62
63class CServer : public IServer
64{
65 friend class CServerLogger;
66
74
75#if defined(CONF_UPNP)
77#endif
78
79#if defined(CONF_FAMILY_UNIX)
83#endif
84
86
87#ifdef CONF_DEBUG
90#endif
91
92public:
94 class CConfig *Config() { return m_pConfig; }
95 const CConfig *Config() const { return m_pConfig; }
96 class IConsole *Console() { return m_pConsole; }
97 class IStorage *Storage() { return m_pStorage; }
98 class IEngineAntibot *Antibot() { return m_pAntibot; }
100 IEngine *Engine() { return m_pEngine; }
101
102 enum
103 {
105 };
106
107 enum class EDnsblState
108 {
109 NONE,
110 PENDING,
113 };
114
115 static const char *DnsblStateStr(EDnsblState State);
116
118 {
119 public:
120 enum
121 {
129
133 };
134
135 class CInput
136 {
137 public:
139 int m_GameTick; // the tick that was chosen for the input
140 };
141
142 // connection state info
146
147 double m_Traffic;
149
153
156 CInput m_aInputs[200]; // TODO: handle input better
158
162 std::optional<int> m_Score;
173 std::array<char, NETADDR_MAXSTRSIZE> m_aDebugDummyAddrString;
174 std::array<char, NETADDR_MAXSTRSIZE> m_aDebugDummyAddrStringNoPort;
175
177 enum
178 {
182 };
184
187
188 void Reset();
189
190 // DDRace
191
198
199 // DNSBL
201 std::shared_ptr<CHostLookup> m_pDnsblLookup;
202
204
206 {
207 return m_State != STATE_EMPTY && !m_DebugDummy;
208 }
209 };
210
211 int ConsoleAccessLevel(int ClientId) const;
212
215
224
226
228 //int m_CurrentGameTick;
229
230 enum
231 {
234 STOPPING = 2
235 };
236
238
247
248 enum
249 {
253 };
254
255 enum
256 {
260 };
261
263 const char *m_pCurrentMapName;
269
272
275
277
279
281 std::vector<std::string> m_vAnnouncements;
282
283 std::shared_ptr<ILogger> m_pFileLogger = nullptr;
284 std::shared_ptr<ILogger> m_pStdoutLogger = nullptr;
285
286 CServer();
287 ~CServer();
288
289 bool IsClientNameAvailable(int ClientId, const char *pNameRequest);
290 bool SetClientNameImpl(int ClientId, const char *pNameRequest, bool Set);
291 bool SetClientClanImpl(int ClientId, const char *pClanRequest, bool Set);
292
293 bool WouldClientNameChange(int ClientId, const char *pNameRequest) override;
294 bool WouldClientClanChange(int ClientId, const char *pClanRequest) override;
295 void SetClientName(int ClientId, const char *pName) override;
296 void SetClientClan(int ClientId, const char *pClan) override;
297 void SetClientCountry(int ClientId, int Country) override;
298 void SetClientScore(int ClientId, std::optional<int> Score) override;
299 void SetClientFlags(int ClientId, int Flags) override;
300
301 void Kick(int ClientId, const char *pReason) override;
302 void Ban(int ClientId, int Seconds, const char *pReason, bool VerbatimReason) override;
303 void ReconnectClient(int ClientId);
304 void RedirectClient(int ClientId, int Port) override;
305
306 void DemoRecorder_HandleAutoStart() override;
307
308 //int Tick()
310 //int TickSpeed()
311
312 int Init();
313
314 void SendLogLine(const CLogMessage *pMessage);
315 void SetRconCid(int ClientId) override;
316 int GetAuthedState(int ClientId) const override;
317 bool IsRconAuthed(int ClientId) const override;
318 bool IsRconAuthedAdmin(int ClientId) const override;
319 const char *GetAuthName(int ClientId) const override;
320 bool HasAuthHidden(int ClientId) const override;
321 void GetMapInfo(char *pMapName, int MapNameSize, int *pMapSize, SHA256_DIGEST *pMapSha256, int *pMapCrc) override;
322 bool GetClientInfo(int ClientId, CClientInfo *pInfo) const override;
323 void SetClientDDNetVersion(int ClientId, int DDNetVersion) override;
324 const NETADDR *ClientAddr(int ClientId) const override;
325 const std::array<char, NETADDR_MAXSTRSIZE> &ClientAddrStringImpl(int ClientId, bool IncludePort) const override;
326 const char *ClientName(int ClientId) const override;
327 const char *ClientClan(int ClientId) const override;
328 int ClientCountry(int ClientId) const override;
329 bool ClientSlotEmpty(int ClientId) const override;
330 bool ClientIngame(int ClientId) const override;
331 int Port() const override;
332 int MaxClients() const override;
333 int ClientCount() const override;
334 int DistinctClientCount() const override;
335
336 int GetClientVersion(int ClientId) const override;
337 int SendMsg(CMsgPacker *pMsg, int Flags, int ClientId) override;
338
339 void DoSnapshot();
340
341 static int NewClientCallback(int ClientId, void *pUser, bool Sixup);
342 static int NewClientNoAuthCallback(int ClientId, void *pUser);
343 static int DelClientCallback(int ClientId, const char *pReason, void *pUser);
344
345 static int ClientRejoinCallback(int ClientId, void *pUser);
346
347 void SendRconType(int ClientId, bool UsernameReq);
348 void SendCapabilities(int ClientId);
349 void SendMap(int ClientId);
350 void SendMapData(int ClientId, int Chunk);
351 void SendMapReload(int ClientId);
352 void SendConnectionReady(int ClientId);
353 void SendRconLine(int ClientId, const char *pLine);
354 // Accepts -1 as ClientId to mean "all clients with at least auth level admin"
355 void SendRconLogLine(int ClientId, const CLogMessage *pMessage);
356
357 void SendRconCmdAdd(const IConsole::CCommandInfo *pCommandInfo, int ClientId);
358 void SendRconCmdRem(const IConsole::CCommandInfo *pCommandInfo, int ClientId);
359 void SendRconCmdGroupStart(int ClientId);
360 void SendRconCmdGroupEnd(int ClientId);
361 int NumRconCommands(int ClientId);
362 void UpdateClientRconCommands(int ClientId);
363
365 {
366 public:
367 char m_aName[128];
368
369 CMaplistEntry() = default;
370 CMaplistEntry(const char *pName);
371 bool operator<(const CMaplistEntry &Other) const;
372 };
373 std::vector<CMaplistEntry> m_vMaplistEntries;
374 void SendMaplistGroupStart(int ClientId);
375 void SendMaplistGroupEnd(int ClientId);
376 void UpdateClientMaplistEntries(int ClientId);
377
378 bool CheckReservedSlotAuth(int ClientId, const char *pPassword);
380
381 class CCache
382 {
383 public:
385 {
386 public:
387 CCacheChunk(const void *pData, int Size);
388 CCacheChunk(const CCacheChunk &) = delete;
390
391 std::vector<uint8_t> m_vData;
392 };
393
394 std::vector<CCacheChunk> m_vCache;
395
396 CCache();
397 ~CCache();
398
399 void AddChunk(const void *pData, int Size);
400 void Clear();
401 };
405
406 void FillAntibot(CAntibotRoundData *pData) override;
407
408 void ExpireServerInfo() override;
409 void CacheServerInfo(CCache *pCache, int Type, bool SendClients);
411 void SendServerInfo(const NETADDR *pAddr, int Token, int Type, bool SendClients);
414 void SendServerInfoConnless(const NETADDR *pAddr, int Token, int Type);
416 void UpdateServerInfo(bool Resend = false);
417
418 void PumpNetwork(bool PacketWaiting);
419
420 void ChangeMap(const char *pMap) override;
421 const char *GetMapName() const override;
422 void ReloadMap() override;
423 int LoadMap(const char *pMapName);
424
425 void SaveDemo(int ClientId, float Time) override;
426 void StartRecord(int ClientId) override;
427 void StopRecord(int ClientId) override;
428 bool IsRecording(int ClientId) override;
429 void StopDemos() override;
430
431 int Run();
432
433 static void ConKick(IConsole::IResult *pResult, void *pUser);
434 static void ConStatus(IConsole::IResult *pResult, void *pUser);
435 static void ConShutdown(IConsole::IResult *pResult, void *pUser);
436 static void ConRecord(IConsole::IResult *pResult, void *pUser);
437 static void ConStopRecord(IConsole::IResult *pResult, void *pUser);
438 static void ConMapReload(IConsole::IResult *pResult, void *pUser);
439 static void ConLogout(IConsole::IResult *pResult, void *pUser);
440 static void ConShowIps(IConsole::IResult *pResult, void *pUser);
443
444 static void ConAuthAdd(IConsole::IResult *pResult, void *pUser);
445 static void ConAuthAddHashed(IConsole::IResult *pResult, void *pUser);
446 static void ConAuthUpdate(IConsole::IResult *pResult, void *pUser);
448 static void ConAuthRemove(IConsole::IResult *pResult, void *pUser);
449 static void ConAuthList(IConsole::IResult *pResult, void *pUser);
450
451 // console commands for sqlmasters
454
457
461
462 void LogoutClient(int ClientId, const char *pReason);
463 void LogoutKey(int Key, const char *pReason);
464
475
476#if defined(CONF_FAMILY_UNIX)
478#endif
479
480 void RegisterCommands();
481
482 int SnapNewId() override;
483 void SnapFreeId(int Id) override;
484 void *SnapNewItem(int Type, int Id, int Size) override;
485 void SnapSetStaticsize(int ItemType, int Size) override;
486
487 // DDRace
488
490 const char *GetAnnouncementLine() override;
492
493 static int MaplistEntryCallback(const char *pFilename, int IsDir, int DirType, void *pUser);
494 void InitMaplist();
495
496 int *GetIdMap(int ClientId) override;
497
498 void InitDnsbl(int ClientId);
499 bool DnsblWhite(int ClientId) override
500 {
501 return m_aClients[ClientId].m_DnsblState == EDnsblState::NONE ||
503 }
504 bool DnsblPending(int ClientId) override
505 {
506 return m_aClients[ClientId].m_DnsblState == EDnsblState::PENDING;
507 }
508 bool DnsblBlack(int ClientId) override
509 {
511 }
512
513 void AuthRemoveKey(int KeySlot);
514 bool ClientPrevIngame(int ClientId) override { return m_aPrevStates[ClientId] == CClient::STATE_INGAME; }
515 const char *GetNetErrorString(int ClientId) override { return m_NetServer.ErrorString(ClientId); }
516 void ResetNetErrorString(int ClientId) override { m_NetServer.ResetErrorString(ClientId); }
517 bool SetTimedOut(int ClientId, int OrigId) override;
518 void SetTimeoutProtected(int ClientId) override { m_NetServer.SetTimeoutProtected(ClientId); }
519
520 void SendMsgRaw(int ClientId, const void *pData, int Size, int Flags) override;
521
522 bool ErrorShutdown() const { return m_aErrorShutdownReason[0] != 0; }
523 void SetErrorShutdown(const char *pReason) override;
524
525 bool IsSixup(int ClientId) const override { return ClientId != SERVER_DEMO_CLIENT && m_aClients[ClientId].m_Sixup; }
526
527 void SetLoggers(std::shared_ptr<ILogger> &&pFileLogger, std::shared_ptr<ILogger> &&pStdoutLogger);
528
529#ifdef CONF_FAMILY_UNIX
535
537#endif
538};
539
540bool IsInterrupted();
541
542extern CServer *CreateServer();
543#endif
Definition authmanager.h:11
Definition config.h:25
Definition connection_pool.h:61
Definition demo.h:19
Definition econ.h:13
Definition fifo.h:8
Definition host_lookup.h:11
Definition http.h:310
Definition logger.h:20
Definition message.h:10
Definition name_ban.h:29
Definition netban.h:27
Definition netban.h:13
Definition network.h:397
void ResetErrorString(int ClientId)
Definition network_server.cpp:747
void SetTimeoutProtected(int ClientId)
Definition network_server.cpp:742
const char * ErrorString(int ClientId)
Definition network_server.cpp:752
Definition packer.h:38
Definition server.h:44
static void ConBanRegionRange(class IConsole::IResult *pResult, void *pUser)
Definition server.cpp:176
static void ConBanRegion(class IConsole::IResult *pResult, void *pUser)
Definition server.cpp:166
void InitServerBan(class IConsole *pConsole, class IStorage *pStorage, class CServer *pServer)
Definition server.cpp:57
class CServer * m_pServer
Definition server.h:45
int BanExt(T *pBanPool, const typename T::CDataType *pData, int Seconds, const char *pReason, bool VerbatimReason)
Definition server.cpp:70
class CServer * Server() const
Definition server.h:51
static void ConBanExt(class IConsole::IResult *pResult, void *pUser)
Definition server.cpp:146
int BanAddr(const NETADDR *pAddr, int Seconds, const char *pReason, bool VerbatimReason) override
Definition server.cpp:132
int BanRange(const CNetRange *pRange, int Seconds, const char *pReason) override
Definition server.cpp:137
Definition server_logger.h:10
Definition server.h:385
std::vector< uint8_t > m_vData
Definition server.h:391
CCacheChunk(CCacheChunk &&)=default
CCacheChunk(const CCacheChunk &)=delete
Definition server.h:382
void Clear()
Definition server.cpp:2196
void AddChunk(const void *pData, int Size)
Definition server.cpp:2191
CCache()
Definition server.cpp:2176
std::vector< CCacheChunk > m_vCache
Definition server.h:394
~CCache()
Definition server.cpp:2181
Definition server.h:136
int m_aData[MAX_INPUT_SIZE]
Definition server.h:138
int m_GameTick
Definition server.h:139
Definition server.h:118
CNetMsg_Sv_PreInput m_LastPreInput
Definition server.h:154
@ MAPLIST_UNINITIALIZED
Definition server.h:179
@ MAPLIST_DONE
Definition server.h:181
@ MAPLIST_DISABLED
Definition server.h:180
double m_Traffic
Definition server.h:147
int64_t m_RedirectDropTime
Definition server.h:197
int m_CurrentInput
Definition server.h:157
void Reset()
Definition server.cpp:212
int m_NextMapChunk
Definition server.h:167
CSnapshotStorage m_Snapshots
Definition server.h:152
EDnsblState m_DnsblState
Definition server.h:200
bool m_DebugDummy
Definition server.h:170
bool m_ShowIps
Definition server.h:169
int m_LastAckedSnapshot
Definition server.h:150
CInput m_aInputs[200]
Definition server.h:156
int m_DDNetVersion
Definition server.h:194
char m_aDDNetVersionStr[64]
Definition server.h:195
bool m_ForceHighBandwidthOnSpectate
Definition server.h:171
int m_AuthTries
Definition server.h:165
bool m_AuthHidden
Definition server.h:166
void * m_pPersistentData
Definition server.h:186
int m_Latency
Definition server.h:144
int m_Authed
Definition server.h:163
int m_State
Definition server.h:143
int m_AuthKey
Definition server.h:164
char m_aClan[MAX_CLAN_LENGTH]
Definition server.h:160
@ STATE_REDIRECTED
Definition server.h:122
@ SNAPRATE_FULL
Definition server.h:131
@ STATE_INGAME
Definition server.h:128
@ STATE_EMPTY
Definition server.h:123
@ STATE_CONNECTING
Definition server.h:126
@ SNAPRATE_RECOVER
Definition server.h:132
@ SNAPRATE_INIT
Definition server.h:130
@ STATE_AUTH
Definition server.h:125
@ STATE_READY
Definition server.h:127
@ STATE_PREAUTH
Definition server.h:124
const IConsole::CCommandInfo * m_pRconCmdToSend
Definition server.h:176
bool m_HasPersistentData
Definition server.h:185
CUuid m_ConnectionId
Definition server.h:196
bool m_Sixup
Definition server.h:203
bool IncludedInServerInfo() const
Definition server.h:205
int m_Flags
Definition server.h:168
int m_LastInputTick
Definition server.h:151
char m_aName[MAX_NAME_LENGTH]
Definition server.h:159
std::array< char, NETADDR_MAXSTRSIZE > m_aDebugDummyAddrStringNoPort
Definition server.h:174
std::array< char, NETADDR_MAXSTRSIZE > m_aDebugDummyAddrString
Definition server.h:173
bool m_DDNetVersionSettled
Definition server.h:193
int m_Country
Definition server.h:161
int m_SnapRate
Definition server.h:145
std::optional< int > m_Score
Definition server.h:162
bool m_GotDDNetVersionPacket
Definition server.h:192
int m_MaplistEntryToSend
Definition server.h:183
CInput m_LatestInput
Definition server.h:155
NETADDR m_DebugDummyAddr
Definition server.h:172
int64_t m_TrafficSince
Definition server.h:148
std::shared_ptr< CHostLookup > m_pDnsblLookup
Definition server.h:201
Definition server.h:365
bool operator<(const CMaplistEntry &Other) const
Definition server.cpp:1524
char m_aName[128]
Definition server.h:367
Definition server.h:64
CSnapshotBuilder m_SnapshotBuilder
Definition server.h:217
void SendMsgRaw(int ClientId, const void *pData, int Size, int Flags) override
Definition server.cpp:957
UNIXSOCKET m_ConnLoggingSocket
Definition server.h:82
EDnsblState
Definition server.h:108
void SetClientName(int ClientId, const char *pName) override
Definition server.cpp:464
static void ConchainSixupUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4179
bool CheckReservedSlotAuth(int ClientId, const char *pPassword)
Definition server.cpp:1623
void ExpireServerInfo() override
Definition server.cpp:2592
void GetMapInfo(char *pMapName, int MapNameSize, int *pMapSize, SHA256_DIGEST *pMapSha256, int *pMapCrc) override
Definition server.cpp:1305
void SetClientCountry(int ClientId, int Country) override
Definition server.cpp:474
void SetClientFlags(int ClientId, int Flags) override
Definition server.cpp:493
int GetAuthedState(int ClientId) const override
Definition server.cpp:629
static void ConDumpSqlServers(IConsole::IResult *pResult, void *pUserData)
Definition server.cpp:3988
void DoSnapshot()
Definition server.cpp:976
static void ConchainCommandAccessUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4038
int64_t TickStartTime(int Tick)
Definition server.cpp:580
static void ConForceHighBandwidthOnSpectate(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3919
char m_aErrorShutdownReason[128]
Definition server.h:276
void CacheServerInfo(CCache *pCache, int Type, bool SendClients)
Definition server.cpp:2201
void Ban(int ClientId, int Seconds, const char *pReason, bool VerbatimReason) override
Definition server.cpp:522
int m_aIdMap[MAX_CLIENTS *VANILLA_MAX_CLIENTS]
Definition server.h:214
@ RUNNING
Definition server.h:233
@ STOPPING
Definition server.h:234
@ UNINITIALIZED
Definition server.h:232
const char * GetAnnouncementLine() override
Definition server.cpp:4374
void UpdateClientRconCommands(int ClientId)
Definition server.cpp:1497
void SetClientClan(int ClientId, const char *pClan) override
Definition server.cpp:469
static void ConAddSqlServer(IConsole::IResult *pResult, void *pUserData)
Definition server.cpp:3939
bool DnsblPending(int ClientId) override
Definition server.h:504
void ReadAnnouncementsFile()
Definition server.cpp:4351
CServerBan m_ServerBan
Definition server.h:222
CSnapshotDelta m_SnapshotDelta
Definition server.h:216
bool IsSixup(int ClientId) const override
Definition server.h:525
void CacheServerInfoSixup(CCache *pCache, bool SendClients, int MaxConsideredClients)
Definition server.cpp:2415
void SetRconCid(int ClientId) override
Definition server.cpp:624
class CDbConnectionPool * m_pConnectionPool
Definition server.h:85
bool IsRecording(int ClientId) override
Definition server.cpp:3805
@ MAX_RCONCMD_SEND
Definition server.h:104
const char * ClientClan(int ClientId) const override
Definition server.cpp:734
int * GetIdMap(int ClientId) override
Definition server.cpp:4471
void SetClientScore(int ClientId, std::optional< int > Score) override
Definition server.cpp:482
const char * GetMapName() const override
Definition server.cpp:2827
void StopDemos() override
Definition server.cpp:3810
void AuthRemoveKey(int KeySlot)
Definition server.cpp:3506
void SendCapabilities(int ClientId)
Definition server.cpp:1313
class IConsole * m_pConsole
Definition server.h:69
bool SetTimedOut(int ClientId, int OrigId) override
Definition server.cpp:4476
void RegisterCommands()
Definition server.cpp:4257
bool IsClientNameAvailable(int ClientId, const char *pNameRequest)
Definition server.cpp:333
int Port() const override
Definition server.cpp:764
bool SetClientNameImpl(int ClientId, const char *pNameRequest, bool Set)
Definition server.cpp:357
SHA256_DIGEST m_aCurrentMapSha256[NUM_MAP_TYPES]
Definition server.h:264
void SendConnectionReady(int ClientId)
Definition server.cpp:1399
static void ConchainStdoutOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4197
void SnapSetStaticsize(int ItemType, int Size) override
Definition server.cpp:4342
int Run()
Definition server.cpp:2999
void RedirectClient(int ClientId, int Port) override
Definition server.cpp:550
std::shared_ptr< ILogger > m_pFileLogger
Definition server.h:283
bool m_ConnLoggingSocketCreated
Definition server.h:81
static void ConchainAnnouncementFileName(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4207
bool DnsblWhite(int ClientId) override
Definition server.h:499
void SendRconCmdGroupStart(int ClientId)
Definition server.cpp:1472
void GetServerInfoSixup(CPacker *pPacker, bool SendClients)
Definition server.cpp:2561
class IStorage * m_pStorage
Definition server.h:70
static void ConchainRconHelperPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4162
class IEngineAntibot * m_pAntibot
Definition server.h:71
void ReconnectClient(int ClientId)
Definition server.cpp:527
CHttp m_Http
Definition server.h:223
static int ClientRejoinCallback(int ClientId, void *pUser)
Definition server.cpp:1117
void InitDnsbl(int ClientId)
Definition server.cpp:1209
CNetServer m_NetServer
Definition server.h:219
const NETADDR * ClientAddr(int ClientId) const override
Definition server.cpp:698
void PumpNetwork(bool PacketWaiting)
Definition server.cpp:2726
void SendLogLine(const CLogMessage *pMessage)
Definition server.cpp:612
std::shared_ptr< ILogger > m_pStdoutLogger
Definition server.h:284
int m_ServerInfoNumRequests
Definition server.h:274
static void ConRecord(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3821
int m_RunServer
Definition server.h:237
static void ConchainMapUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4169
int SnapNewId() override
Definition server.cpp:4326
bool ClientSlotEmpty(int ClientId) const override
Definition server.cpp:754
static void ConAuthAddHashed(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3558
void SendMapReload(int ClientId)
Definition server.cpp:1393
IEngineMap * m_pMap
Definition server.h:225
bool m_ReloadedWhenEmpty
Definition server.h:241
const char * ClientName(int ClientId) const override
Definition server.cpp:724
CDemoRecorder m_aDemoRecorder[NUM_RECORDERS]
Definition server.h:270
bool DnsblBlack(int ClientId) override
Definition server.h:508
bool m_MapReload
Definition server.h:239
void * SnapNewItem(int Type, int Id, int Size) override
Definition server.cpp:4336
static int NewClientCallback(int ClientId, void *pUser, bool Sixup)
Definition server.cpp:1175
CUPnP m_UPnP
Definition server.h:76
bool WouldClientClanChange(int ClientId, const char *pClanRequest) override
Definition server.cpp:459
unsigned m_aCurrentMapCrc[NUM_MAP_TYPES]
Definition server.h:265
int MaxClients() const override
Definition server.cpp:769
class IStorage * Storage()
Definition server.h:97
static void ConShutdown(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3719
const CConfig * Config() const
Definition server.h:95
class IGameServer * GameServer()
Definition server.h:93
static void ConchainRconModPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4155
void UpdateRegisterServerInfo()
Definition server.cpp:2597
void SendRconType(int ClientId, bool UsernameReq)
Definition server.cpp:1298
static void ConAuthList(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3711
@ RECORDER_AUTO
Definition server.h:258
@ NUM_RECORDERS
Definition server.h:259
@ RECORDER_MANUAL
Definition server.h:257
const char * GetAuthName(int ClientId) const override
Definition server.cpp:646
class IGameServer * m_pGameServer
Definition server.h:67
char m_aCurrentMap[IO_MAX_PATH_LENGTH]
Definition server.h:262
class CConfig * m_pConfig
Definition server.h:68
std::vector< std::string > m_vAnnouncements
Definition server.h:281
int64_t m_GameStartTime
Definition server.h:227
static void ConReloadAnnouncement(IConsole::IResult *pResult, void *pUserData)
Definition server.cpp:4008
void LogoutClient(int ClientId, const char *pReason)
Definition server.cpp:4071
bool SetClientClanImpl(int ClientId, const char *pClanRequest, bool Set)
Definition server.cpp:413
static void ConAuthAdd(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3525
const char * GetNetErrorString(int ClientId) override
Definition server.h:515
void InitMaplist()
Definition server.cpp:4446
void SendServerInfoConnless(const NETADDR *pAddr, int Token, int Type)
Definition server.cpp:2161
static void ConAuthUpdateHashed(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3636
CCache m_aServerInfoCache[3 *2]
Definition server.h:402
void FillAntibot(CAntibotRoundData *pData) override
Definition server.cpp:2567
void SendMap(int ClientId)
Definition server.cpp:1321
void SendRconCmdGroupEnd(int ClientId)
Definition server.cpp:1479
void SendRconLogLine(int ClientId, const CLogMessage *pMessage)
Definition server.cpp:1412
void DemoRecorder_HandleAutoStart() override
Definition server.cpp:3730
int m_RconClientId
Definition server.h:242
static void ConchainLoglevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4187
int DistinctClientCount() const override
Definition server.cpp:788
class IRegister * m_pRegister
Definition server.h:72
static const char * DnsblStateStr(EDnsblState State)
Definition server.cpp:298
CNameBans m_NameBans
Definition server.h:278
int ClientCountry(int ClientId) const override
Definition server.cpp:744
static void ConStatus(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3442
bool RateLimitServerInfoConnless()
Definition server.cpp:2139
std::vector< CMaplistEntry > m_vMaplistEntries
Definition server.h:373
int SendMsg(CMsgPacker *pMsg, int Flags, int ClientId) override
Definition server.cpp:880
static void ConchainMaxclientsperipUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4031
int m_PrintCBIndex
Definition server.h:244
CSnapIdPool m_IdPool
Definition server.h:218
CCache m_aSixupServerInfoCache[2]
Definition server.h:403
static int DelClientCallback(int ClientId, const char *pReason, void *pUser)
Definition server.cpp:1252
void UpdateClientMaplistEntries(int ClientId)
Definition server.cpp:1542
void UpdateServerInfo(bool Resend=false)
Definition server.cpp:2691
void SendRconLine(int ClientId, const char *pLine)
Definition server.cpp:1405
CServer()
Definition server.cpp:231
bool IsRconAuthed(int ClientId) const override
Definition server.cpp:636
int GetClientVersion(int ClientId) const override
Definition server.cpp:817
void LogoutKey(int Key, const char *pReason)
Definition server.cpp:4111
void ProcessClientPacket(CNetChunk *pPacket)
Definition server.cpp:1655
void ResetNetErrorString(int ClientId) override
Definition server.h:516
bool WouldClientNameChange(int ClientId, const char *pNameRequest) override
Definition server.cpp:454
void * m_pPersistentData
Definition server.h:246
void StopRecord(int ClientId) override
Definition server.cpp:3797
void SendMaplistGroupEnd(int ClientId)
Definition server.cpp:1536
bool ClientPrevIngame(int ClientId) override
Definition server.h:514
char m_aMapDownloadUrl[256]
Definition server.h:268
static void ConAuthRemove(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3680
bool m_ServerInfoNeedsUpdate
Definition server.h:404
void ReloadMap() override
Definition server.cpp:2838
static void ConAuthUpdate(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3607
IEngine * m_pEngine
Definition server.h:73
CONN_LOGGING_CMD
Definition server.h:531
@ OPEN_SESSION
Definition server.h:532
@ CLOSE_SESSION
Definition server.h:533
void SendConnLoggingCommand(CONN_LOGGING_CMD Cmd, const NETADDR *pAddr)
Definition server.cpp:1236
bool GetClientInfo(int ClientId, CClientInfo *pInfo) const override
Definition server.cpp:661
static void ConReloadMaplist(IConsole::IResult *pResult, void *pUserData)
Definition server.cpp:4014
void SendServerInfo(const NETADDR *pAddr, int Token, int Type, bool SendClients)
Definition server.cpp:2507
CClient m_aClients[MAX_CLIENTS]
Definition server.h:213
UNIXSOCKETADDR m_ConnLoggingDestAddr
Definition server.h:80
unsigned char * m_apCurrentMapData[NUM_MAP_TYPES]
Definition server.h:266
static void ConShowIps(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3879
class IEngineAntibot * Antibot()
Definition server.h:98
static int NewClientNoAuthCallback(int ClientId, void *pUser)
Definition server.cpp:1140
IEngine * Engine()
Definition server.h:100
static void ConchainRconPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4148
static void ConStopRecord(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3858
CEcon m_Econ
Definition server.h:220
int NumRconCommands(int ClientId)
Definition server.cpp:1485
class CDbConnectionPool * DbPool()
Definition server.h:99
static void ConHideAuthStatus(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3899
class CConfig * Config()
Definition server.h:94
@ MAP_TYPE_SIX
Definition server.h:250
@ NUM_MAP_TYPES
Definition server.h:252
@ MAP_TYPE_SIXUP
Definition server.h:251
int Init()
Definition server.cpp:585
int ClientCount() const override
Definition server.cpp:774
CFifo m_Fifo
Definition server.h:221
void ChangeMap(const char *pMap) override
Definition server.cpp:2832
bool ClientIngame(int ClientId) const override
Definition server.cpp:759
size_t m_AnnouncementLastLine
Definition server.h:280
const std::array< char, NETADDR_MAXSTRSIZE > & ClientAddrStringImpl(int ClientId, bool IncludePort) const override
Definition server.cpp:711
void StartRecord(int ClientId) override
Definition server.cpp:3774
bool IsRconAuthedAdmin(int ClientId) const override
Definition server.cpp:641
int LoadMap(const char *pMapName)
Definition server.cpp:2843
int m_aPrevStates[MAX_CLIENTS]
Definition server.h:489
int m_RconAuthLevel
Definition server.h:243
bool ErrorShutdown() const
Definition server.h:522
bool HasAuthHidden(int ClientId) const override
Definition server.cpp:655
unsigned int m_aCurrentMapSize[NUM_MAP_TYPES]
Definition server.h:267
int ConsoleAccessLevel(int ClientId) const
Definition server.cpp:316
static int MaplistEntryCallback(const char *pFilename, int IsDir, int DirType, void *pUser)
Definition server.cpp:4409
void SendMaplistGroupStart(int ClientId)
Definition server.cpp:1529
static void ConchainConnLoggingServerChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4230
static void ConchainInputFifo(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4218
void SendRconCmdRem(const IConsole::CCommandInfo *pCommandInfo, int ClientId)
Definition server.cpp:1465
int64_t m_ServerInfoFirstRequest
Definition server.h:273
char m_aShutdownReason[128]
Definition server.h:245
static void ConLogout(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3868
static void ConKick(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3430
void SaveDemo(int ClientId, float Time) override
Definition server.cpp:3764
void SendRconCmdAdd(const IConsole::CCommandInfo *pCommandInfo, int ClientId)
Definition server.cpp:1456
void SetClientDDNetVersion(int ClientId, int DDNetVersion) override
Definition server.cpp:687
void ConchainRconPasswordChangeGeneric(int Level, const char *pCurrent, IConsole::IResult *pResult)
Definition server.cpp:4118
void SetLoggers(std::shared_ptr< ILogger > &&pFileLogger, std::shared_ptr< ILogger > &&pStdoutLogger)
Definition server.cpp:4502
void SetErrorShutdown(const char *pReason) override
Definition server.cpp:4497
class IConsole * Console()
Definition server.h:96
static void ConchainSpecialInfoupdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4020
void Kick(int ClientId, const char *pReason) override
Definition server.cpp:501
void SendMapData(int ClientId, int Chunk)
Definition server.cpp:1357
const char * m_pCurrentMapName
Definition server.h:263
~CServer()
Definition server.cpp:278
CAuthManager m_AuthManager
Definition server.h:271
bool m_SameMapReload
Definition server.h:240
void SetTimeoutProtected(int ClientId) override
Definition server.h:518
void SnapFreeId(int Id) override
Definition server.cpp:4331
static void ConMapReload(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3863
Definition snap_id_pool.h:8
Definition snapshot.h:150
Definition snapshot.h:78
Definition snapshot.h:119
Definition upnp.h:6
Definition console.h:73
Definition console.h:47
Definition console.h:18
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition console.h:91
Definition antibot.h:30
Definition map.h:35
Definition engine.h:15
Definition server.h:299
Definition logger.h:68
Definition register.h:11
Definition server.h:31
int Tick() const
Definition server.h:50
Definition storage.h:21
Definition vmath.h:15
@ MAX_CLAN_LENGTH
Definition protocol.h:99
@ MAX_INPUT_SIZE
Definition protocol.h:95
@ MAX_CLIENTS
Definition protocol.h:88
@ VANILLA_MAX_CLIENTS
Definition protocol.h:89
@ MAX_NAME_LENGTH
Definition protocol.h:98
CServer * CreateServer()
Definition server.cpp:4347
bool IsInterrupted()
Definition main.cpp:33
@ SERVER_DEMO_CLIENT
Definition server.h:27
Definition antibot_data.h:111
Definition network.h:129
Definition protocol.h:1406
Definition uuid_manager.h:17
Definition server.h:41
Definition types.h:72
Definition hash.h:15
Definition score.cpp:22
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:49