DDNet 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 "antibot.h"
7#include "authmanager.h"
8#include "name_ban.h"
9#include "snap_id_pool.h"
10
11#include <base/hash.h>
12
13#include <engine/console.h>
14#include <engine/server.h>
15#include <engine/shared/demo.h>
16#include <engine/shared/econ.h>
17#include <engine/shared/fifo.h>
18#include <engine/shared/http.h>
24
25#include <memory>
26#include <optional>
27#include <vector>
28
29#if defined(CONF_UPNP)
30#include "upnp.h"
31#endif
32
33class CConfig;
34class CHostLookup;
35class CLogMessage;
36class CMsgPacker;
37class CPacker;
38class IEngine;
39class ILogger;
40
41class CServerBan : public CNetBan
42{
44
45 template<class T>
46 int BanExt(T *pBanPool, const typename T::CDataType *pData, int Seconds, const char *pReason, bool VerbatimReason);
47
48public:
49 class CServer *Server() const { return m_pServer; }
50
51 void InitServerBan(class IConsole *pConsole, class IStorage *pStorage, class CServer *pServer);
52
53 int BanAddr(const NETADDR *pAddr, int Seconds, const char *pReason, bool VerbatimReason) override;
54 int BanRange(const CNetRange *pRange, int Seconds, const char *pReason) override;
55
56 static void ConBanExt(class IConsole::IResult *pResult, void *pUser);
57 static void ConBanRegion(class IConsole::IResult *pResult, void *pUser);
58 static void ConBanRegionRange(class IConsole::IResult *pResult, void *pUser);
59};
60
61class CServer : public IServer
62{
63 friend class CServerLogger;
64
72
73#if defined(CONF_UPNP)
75#endif
76
77#if defined(CONF_FAMILY_UNIX)
81#endif
82
84
86 void UpdateDebugDummies(bool ForceDisconnect);
87
88public:
90 class CConfig *Config() { return m_pConfig; }
91 const CConfig *Config() const { return m_pConfig; }
92 class IConsole *Console() { return m_pConsole; }
93 class IStorage *Storage() { return m_pStorage; }
94 class IEngineAntibot *Antibot() { return m_pAntibot; }
96 IEngine *Engine() { return m_pEngine; }
97
98 enum
99 {
101 };
102
110
111 static const char *DnsblStateStr(EDnsblState State);
112
114 {
115 public:
116 enum
117 {
125 };
126
127 enum
128 {
132 };
133
134 class CInput
135 {
136 public:
138 int m_GameTick; // the tick that was chosen for the input
139 };
140
141 // connection state info
145
146 double m_Traffic;
148
152
155 CInput m_aInputs[200]; // TODO: handle input better
157
161 std::optional<int> m_Score;
171 std::array<char, NETADDR_MAXSTRSIZE> m_aDebugDummyAddrString;
172 std::array<char, NETADDR_MAXSTRSIZE> m_aDebugDummyAddrStringNoPort;
173
175 enum
176 {
180 };
182
185
186 void Reset();
187
188 // DDRace
189
196
197 // DNSBL
199 std::shared_ptr<CHostLookup> m_pDnsblLookup;
200
202
204 {
205 return m_State != STATE_EMPTY && !m_DebugDummy;
206 }
207 };
208
209 IConsole::EAccessLevel ConsoleAccessLevel(int ClientId) const;
210
213
222
224
225 enum
226 {
230 };
231
233
242
243 enum
244 {
248 };
249
250 enum
251 {
255 };
256
262
265
268
270
272
274 std::vector<std::string> m_vAnnouncements;
275
276 std::shared_ptr<ILogger> m_pFileLogger = nullptr;
277 std::shared_ptr<ILogger> m_pStdoutLogger = nullptr;
278
279 CServer();
280 ~CServer() override;
281
282 bool IsClientNameAvailable(int ClientId, const char *pNameRequest);
283 bool SetClientNameImpl(int ClientId, const char *pNameRequest, bool Set);
284 bool SetClientClanImpl(int ClientId, const char *pClanRequest, bool Set);
285
286 bool WouldClientNameChange(int ClientId, const char *pNameRequest) override;
287 bool WouldClientClanChange(int ClientId, const char *pClanRequest) override;
288 void SetClientName(int ClientId, const char *pName) override;
289 void SetClientClan(int ClientId, const char *pClan) override;
290 void SetClientCountry(int ClientId, int Country) override;
291 void SetClientScore(int ClientId, std::optional<int> Score) override;
292 void SetClientFlags(int ClientId, int Flags) override;
293
294 void Kick(int ClientId, const char *pReason) override;
295 void Ban(int ClientId, int Seconds, const char *pReason, bool VerbatimReason) override;
296 void ReconnectClient(int ClientId);
297 void RedirectClient(int ClientId, int Port) override;
298
299 void DemoRecorder_HandleAutoStart() override;
300
301 int64_t TickStartTime(int Tick);
302
303 int Init();
304
305 static bool StrHideIps(const char *pInput, char *pOutputWithIps, int OutputWithIpsSize, char *pOutputWithoutIps, int OutputWithoutIpsSize);
306 void SendLogLine(const CLogMessage *pMessage);
307 void SetRconCid(int ClientId) override;
308 int GetAuthedState(int ClientId) const override;
309 bool IsRconAuthed(int ClientId) const override;
310 bool IsRconAuthedAdmin(int ClientId) const override;
311 const char *GetAuthName(int ClientId) const override;
312 bool HasAuthHidden(int ClientId) const override;
313 bool GetClientInfo(int ClientId, CClientInfo *pInfo) const override;
314 void SetClientDDNetVersion(int ClientId, int DDNetVersion) override;
315 const NETADDR *ClientAddr(int ClientId) const override;
316 const std::array<char, NETADDR_MAXSTRSIZE> &ClientAddrStringImpl(int ClientId, bool IncludePort) const override;
317 const char *ClientName(int ClientId) const override;
318 const char *ClientClan(int ClientId) const override;
319 int ClientCountry(int ClientId) const override;
320 bool ClientSlotEmpty(int ClientId) const override;
321 bool ClientIngame(int ClientId) const override;
322 int Port() const override;
323 int MaxClients() const override;
324 int ClientCount() const override;
325 int DistinctClientCount() const override;
326
327 int GetClientVersion(int ClientId) const override;
328 int SendMsg(CMsgPacker *pMsg, int Flags, int ClientId) override;
329
330 void DoSnapshot();
331
332 static int NewClientCallback(int ClientId, void *pUser, bool Sixup);
333 static int NewClientNoAuthCallback(int ClientId, void *pUser);
334 static int DelClientCallback(int ClientId, const char *pReason, void *pUser);
335
336 static int ClientRejoinCallback(int ClientId, void *pUser);
337
338 void SendRconType(int ClientId, bool UsernameReq);
339 void SendCapabilities(int ClientId);
340 void SendMap(int ClientId);
341 void SendMapData(int ClientId, int Chunk);
342 void SendMapReload(int ClientId);
343 void SendConnectionReady(int ClientId);
344 void SendRconLine(int ClientId, const char *pLine);
345 // Accepts -1 as ClientId to mean "all clients with at least auth level admin"
346 void SendRconLogLine(int ClientId, const CLogMessage *pMessage);
347
348 void SendRconCmdAdd(const IConsole::ICommandInfo *pCommandInfo, int ClientId);
349 void SendRconCmdRem(const IConsole::ICommandInfo *pCommandInfo, int ClientId);
350 void SendRconCmdGroupStart(int ClientId);
351 void SendRconCmdGroupEnd(int ClientId);
352 int NumRconCommands(int ClientId);
353 void UpdateClientRconCommands(int ClientId);
354
356 {
357 public:
358 char m_aName[128];
359
360 CMaplistEntry() = default;
361 CMaplistEntry(const char *pName);
362 bool operator<(const CMaplistEntry &Other) const;
363 };
364 std::vector<CMaplistEntry> m_vMaplistEntries;
365 void SendMaplistGroupStart(int ClientId);
366 void SendMaplistGroupEnd(int ClientId);
367 void UpdateClientMaplistEntries(int ClientId);
368
369 bool CheckReservedSlotAuth(int ClientId, const char *pPassword);
370 void ProcessClientPacket(CNetChunk *pPacket);
371 void OnNetMsgClientVer(int ClientId, CUuid *pConnectionId, int DDNetVersion, const char *pDDNetVersionStr);
372 void OnNetMsgReady(int ClientId);
373 void OnNetMsgEnterGame(int ClientId);
374 void OnNetMsgRconCmd(int ClientId, const char *pCmd);
375 void OnNetMsgRconAuth(int ClientId, const char *pName, const char *pPw, bool SendRconCmds);
376
377 class CCache
378 {
379 public:
381 {
382 public:
383 CCacheChunk(const void *pData, int Size);
384 CCacheChunk(const CCacheChunk &) = delete;
386
387 std::vector<uint8_t> m_vData;
388 };
389
390 std::vector<CCacheChunk> m_vCache;
391
392 CCache();
393 ~CCache();
394
395 void AddChunk(const void *pData, int Size);
396 void Clear();
397 };
402
403 void FillAntibot(CAntibotRoundData *pData) override;
404
405 void ExpireServerInfo() override;
407 void CacheServerInfo(CCache *pCache, int Type, bool SendClients);
408 void CacheServerInfoSixup(CCache *pCache, bool SendClients, int MaxConsideredClients);
409 void SendServerInfo(const NETADDR *pAddr, int Token, int Type, bool SendClients);
410 void GetServerInfoSixup(CPacker *pPacker, bool SendClients);
412 void SendServerInfoConnless(const NETADDR *pAddr, int Token, int Type);
414 void UpdateServerInfo(bool Resend);
415
416 void PumpNetwork(bool PacketWaiting);
417
418 void ChangeMap(const char *pMap) override;
419 void ReloadMap() override;
420 int LoadMap(const char *pMapName);
421
422 void SaveDemo(int ClientId, float Time) override;
423 void StartRecord(int ClientId) override;
424 void StopRecord(int ClientId) override;
425 bool IsRecording(int ClientId) override;
426 void StopDemos() override;
427
428 int Run();
429
430 static void ConKick(IConsole::IResult *pResult, void *pUser);
431 static void ConStatus(IConsole::IResult *pResult, void *pUser);
432 static void ConShutdown(IConsole::IResult *pResult, void *pUser);
433 static void ConRecord(IConsole::IResult *pResult, void *pUser);
434 static void ConStopRecord(IConsole::IResult *pResult, void *pUser);
435 static void ConMapReload(IConsole::IResult *pResult, void *pUser);
436 static void ConLogout(IConsole::IResult *pResult, void *pUser);
437 static void ConShowIps(IConsole::IResult *pResult, void *pUser);
438 static void ConHideAuthStatus(IConsole::IResult *pResult, void *pUser);
439 static void ConForceHighBandwidthOnSpectate(IConsole::IResult *pResult, void *pUser);
440
441 static void ConAuthAdd(IConsole::IResult *pResult, void *pUser);
442 static void ConAuthAddHashed(IConsole::IResult *pResult, void *pUser);
443 static void ConAuthUpdate(IConsole::IResult *pResult, void *pUser);
444 static void ConAuthUpdateHashed(IConsole::IResult *pResult, void *pUser);
445 static void ConAuthRemove(IConsole::IResult *pResult, void *pUser);
446 static void ConAuthList(IConsole::IResult *pResult, void *pUser);
447
448 // console commands for sqlmasters
449 static void ConAddSqlServer(IConsole::IResult *pResult, void *pUserData);
450 static void ConDumpSqlServers(IConsole::IResult *pResult, void *pUserData);
451
452 static void ConReloadAnnouncement(IConsole::IResult *pResult, void *pUserData);
453 static void ConReloadMaplist(IConsole::IResult *pResult, void *pUserData);
454
455 static void ConchainSpecialInfoupdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
456 static void ConchainMaxclientsperipUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
457 static void ConchainCommandAccessUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
458
459 void LogoutClient(int ClientId, const char *pReason);
460 void LogoutKey(int Key, const char *pReason);
461
462 void ConchainRconPasswordChangeGeneric(const char *pRoleName, const char *pCurrent, IConsole::IResult *pResult);
463 static void ConchainRconPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
464 static void ConchainRconModPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
465 static void ConchainRconHelperPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
466 static void ConchainMapUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
467 static void ConchainSixupUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
468 static void ConchainRegisterCommunityTokenRedact(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
469 static void ConchainLoglevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
470 static void ConchainStdoutOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
471 static void ConchainAnnouncementFilename(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
472 static void ConchainInputFifo(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
473
474#if defined(CONF_FAMILY_UNIX)
475 static void ConchainConnLoggingServerChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
476#endif
477
478 void RegisterCommands();
479
480 int SnapNewId() override;
481 void SnapFreeId(int Id) override;
482 void *SnapNewItem(int Type, int Id, int Size) override;
483 void SnapSetStaticsize(int ItemType, int Size) override;
484
485 // DDRace
486
488 const char *GetAnnouncementLine() override;
490
491 static int MaplistEntryCallback(const char *pFilename, int IsDir, int DirType, void *pUser);
492 void InitMaplist();
493
494 int *GetIdMap(int ClientId) override;
495
496 void InitDnsbl(int ClientId);
497 bool DnsblWhite(int ClientId) override
498 {
499 return m_aClients[ClientId].m_DnsblState == EDnsblState::NONE ||
500 m_aClients[ClientId].m_DnsblState == EDnsblState::WHITELISTED;
501 }
502 bool DnsblPending(int ClientId) override
503 {
504 return m_aClients[ClientId].m_DnsblState == EDnsblState::PENDING;
505 }
506 bool DnsblBlack(int ClientId) override
507 {
508 return m_aClients[ClientId].m_DnsblState == EDnsblState::BLACKLISTED;
509 }
510
511 static bool CanClientUseCommandCallback(int ClientId, const IConsole::ICommandInfo *pCommand, void *pUser);
512 bool CanClientUseCommand(int ClientId, const IConsole::ICommandInfo *pCommand) const;
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.IgnoreTimeouts(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
536 void SendConnLoggingCommand(CONN_LOGGING_CMD Cmd, const NETADDR *pAddr);
537#endif
538};
539
540bool IsInterrupted();
541
542extern CServer *CreateServer();
543#endif
Definition authmanager.h:55
Definition config.h:30
Definition connection_pool.h:62
Definition demo.h:19
Definition econ.h:13
Definition fifo.h:9
Definition host_lookup.h:11
Definition http.h:312
Definition logger.h:20
Definition message.h:10
Definition name_ban.h:29
Definition netban.h:31
Definition netban.h:17
Definition network.h:410
Definition packer.h:38
Definition server.h:42
static void ConBanRegionRange(class IConsole::IResult *pResult, void *pUser)
Definition server.cpp:178
static void ConBanRegion(class IConsole::IResult *pResult, void *pUser)
Definition server.cpp:168
void InitServerBan(class IConsole *pConsole, class IStorage *pStorage, class CServer *pServer)
Definition server.cpp:59
class CServer * m_pServer
Definition server.h:43
int BanExt(T *pBanPool, const typename T::CDataType *pData, int Seconds, const char *pReason, bool VerbatimReason)
Definition server.cpp:72
class CServer * Server() const
Definition server.h:49
static void ConBanExt(class IConsole::IResult *pResult, void *pUser)
Definition server.cpp:148
int BanAddr(const NETADDR *pAddr, int Seconds, const char *pReason, bool VerbatimReason) override
Definition server.cpp:134
int BanRange(const CNetRange *pRange, int Seconds, const char *pReason) override
Definition server.cpp:139
std::vector< uint8_t > m_vData
Definition server.h:387
CCacheChunk(CCacheChunk &&)=default
CCacheChunk(const CCacheChunk &)=delete
CCacheChunk(const void *pData, int Size)
Definition server.cpp:2210
Definition server.h:378
void Clear()
Definition server.cpp:2220
void AddChunk(const void *pData, int Size)
Definition server.cpp:2215
CCache()
Definition server.cpp:2200
std::vector< CCacheChunk > m_vCache
Definition server.h:390
~CCache()
Definition server.cpp:2205
Definition server.h:135
int m_aData[MAX_INPUT_SIZE]
Definition server.h:137
int m_GameTick
Definition server.h:138
Definition server.h:114
CNetMsg_Sv_PreInput m_LastPreInput
Definition server.h:153
const IConsole::ICommandInfo * m_pRconCmdToSend
Definition server.h:174
double m_Traffic
Definition server.h:146
@ SNAPRATE_FULL
Definition server.h:130
@ SNAPRATE_RECOVER
Definition server.h:131
@ SNAPRATE_INIT
Definition server.h:129
int64_t m_RedirectDropTime
Definition server.h:195
int m_CurrentInput
Definition server.h:156
void Reset()
Definition server.cpp:214
int m_NextMapChunk
Definition server.h:165
CSnapshotStorage m_Snapshots
Definition server.h:151
EDnsblState m_DnsblState
Definition server.h:198
bool m_DebugDummy
Definition server.h:168
bool m_ShowIps
Definition server.h:167
int m_LastAckedSnapshot
Definition server.h:149
CInput m_aInputs[200]
Definition server.h:155
int m_DDNetVersion
Definition server.h:192
char m_aDDNetVersionStr[64]
Definition server.h:193
bool m_ForceHighBandwidthOnSpectate
Definition server.h:169
int m_AuthTries
Definition server.h:163
bool m_AuthHidden
Definition server.h:164
void * m_pPersistentData
Definition server.h:184
@ STATE_REDIRECTED
Definition server.h:118
@ STATE_INGAME
Definition server.h:124
@ STATE_EMPTY
Definition server.h:119
@ STATE_CONNECTING
Definition server.h:122
@ STATE_AUTH
Definition server.h:121
@ STATE_READY
Definition server.h:123
@ STATE_PREAUTH
Definition server.h:120
int m_Latency
Definition server.h:143
int m_State
Definition server.h:142
int m_AuthKey
Definition server.h:162
char m_aClan[MAX_CLAN_LENGTH]
Definition server.h:159
bool m_HasPersistentData
Definition server.h:183
CUuid m_ConnectionId
Definition server.h:194
bool m_Sixup
Definition server.h:201
bool IncludedInServerInfo() const
Definition server.h:203
int m_Flags
Definition server.h:166
int m_LastInputTick
Definition server.h:150
char m_aName[MAX_NAME_LENGTH]
Definition server.h:158
std::array< char, NETADDR_MAXSTRSIZE > m_aDebugDummyAddrStringNoPort
Definition server.h:172
std::array< char, NETADDR_MAXSTRSIZE > m_aDebugDummyAddrString
Definition server.h:171
@ MAPLIST_UNINITIALIZED
Definition server.h:177
@ MAPLIST_DONE
Definition server.h:179
@ MAPLIST_DISABLED
Definition server.h:178
bool m_DDNetVersionSettled
Definition server.h:191
int m_Country
Definition server.h:160
int m_SnapRate
Definition server.h:144
std::optional< int > m_Score
Definition server.h:161
bool m_GotDDNetVersionPacket
Definition server.h:190
int m_MaplistEntryToSend
Definition server.h:181
CInput m_LatestInput
Definition server.h:154
NETADDR m_DebugDummyAddr
Definition server.h:170
int64_t m_TrafficSince
Definition server.h:147
std::shared_ptr< CHostLookup > m_pDnsblLookup
Definition server.h:199
bool operator<(const CMaplistEntry &Other) const
Definition server.cpp:1512
char m_aName[128]
Definition server.h:358
Definition server.h:62
CSnapshotBuilder m_SnapshotBuilder
Definition server.h:215
void SendMsgRaw(int ClientId, const void *pData, int Size, int Flags) override
Definition server.cpp:982
@ MAX_RCONCMD_SEND
Definition server.h:100
UNIXSOCKET m_ConnLoggingSocket
Definition server.h:80
EDnsblState
Definition server.h:104
@ WHITELISTED
Definition server.h:108
@ NONE
Definition server.h:105
@ PENDING
Definition server.h:106
@ BLACKLISTED
Definition server.h:107
void SetClientName(int ClientId, const char *pName) override
Definition server.cpp:461
static void ConchainSixupUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4287
bool CheckReservedSlotAuth(int ClientId, const char *pPassword)
Definition server.cpp:1611
void ExpireServerInfo() override
Definition server.cpp:2616
void SetClientCountry(int ClientId, int Country) override
Definition server.cpp:471
void SetClientFlags(int ClientId, int Flags) override
Definition server.cpp:490
int GetAuthedState(int ClientId) const override
Definition server.cpp:652
static void ConDumpSqlServers(IConsole::IResult *pResult, void *pUserData)
Definition server.cpp:4091
void DoSnapshot()
Definition server.cpp:1001
static void ConchainCommandAccessUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4141
int64_t TickStartTime(int Tick)
Definition server.cpp:579
static void ConForceHighBandwidthOnSpectate(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:4022
char m_aErrorShutdownReason[128]
Definition server.h:269
void ConchainRconPasswordChangeGeneric(const char *pRoleName, const char *pCurrent, IConsole::IResult *pResult)
Definition server.cpp:4226
void CacheServerInfo(CCache *pCache, int Type, bool SendClients)
Definition server.cpp:2225
void Ban(int ClientId, int Seconds, const char *pReason, bool VerbatimReason) override
Definition server.cpp:519
int m_aIdMap[MAX_CLIENTS *VANILLA_MAX_CLIENTS]
Definition server.h:212
static bool CanClientUseCommandCallback(int ClientId, const IConsole::ICommandInfo *pCommand, void *pUser)
Definition server.cpp:3589
const char * GetAnnouncementLine() override
Definition server.cpp:4502
void UpdateClientRconCommands(int ClientId)
Definition server.cpp:1486
void SetClientClan(int ClientId, const char *pClan) override
Definition server.cpp:466
static void ConAddSqlServer(IConsole::IResult *pResult, void *pUserData)
Definition server.cpp:4042
bool DnsblPending(int ClientId) override
Definition server.h:502
void ReadAnnouncementsFile()
Definition server.cpp:4479
CServerBan m_ServerBan
Definition server.h:220
CSnapshotDelta m_SnapshotDelta
Definition server.h:214
bool IsSixup(int ClientId) const override
Definition server.h:525
void CacheServerInfoSixup(CCache *pCache, bool SendClients, int MaxConsideredClients)
Definition server.cpp:2439
void SetRconCid(int ClientId) override
Definition server.cpp:647
class CDbConnectionPool * m_pConnectionPool
Definition server.h:83
bool IsRecording(int ClientId) override
Definition server.cpp:3908
const char * ClientClan(int ClientId) const override
Definition server.cpp:759
int * GetIdMap(int ClientId) override
Definition server.cpp:4599
void SetClientScore(int ClientId, std::optional< int > Score) override
Definition server.cpp:479
void StopDemos() override
Definition server.cpp:3913
void AuthRemoveKey(int KeySlot)
Definition server.cpp:3605
void SendCapabilities(int ClientId)
Definition server.cpp:1326
class IConsole * m_pConsole
Definition server.h:67
bool SetTimedOut(int ClientId, int OrigId) override
Definition server.cpp:4604
void RegisterCommands()
Definition server.cpp:4384
bool IsClientNameAvailable(int ClientId, const char *pNameRequest)
Definition server.cpp:330
int Port() const override
Definition server.cpp:789
bool SetClientNameImpl(int ClientId, const char *pNameRequest, bool Set)
Definition server.cpp:354
SHA256_DIGEST m_aCurrentMapSha256[NUM_MAP_TYPES]
Definition server.h:257
void OnNetMsgReady(int ClientId)
Definition server.cpp:1986
void SendConnectionReady(int ClientId)
Definition server.cpp:1412
static void ConchainStdoutOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4324
static bool StrHideIps(const char *pInput, char *pOutputWithIps, int OutputWithIpsSize, char *pOutputWithoutIps, int OutputWithoutIpsSize)
Definition server.cpp:611
void SnapSetStaticsize(int ItemType, int Size) override
Definition server.cpp:4470
int Run()
Definition server.cpp:3063
void ExpireServerInfoAndQueueResend()
Definition server.cpp:2621
void RedirectClient(int ClientId, int Port) override
Definition server.cpp:548
std::shared_ptr< ILogger > m_pFileLogger
Definition server.h:276
bool m_ConnLoggingSocketCreated
Definition server.h:79
bool m_ServerInfoNeedsResend
Definition server.h:401
bool DnsblWhite(int ClientId) override
Definition server.h:497
void SendRconCmdGroupStart(int ClientId)
Definition server.cpp:1462
void GetServerInfoSixup(CPacker *pPacker, bool SendClients)
Definition server.cpp:2585
class IStorage * m_pStorage
Definition server.h:68
static void ConchainRconHelperPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4270
class IEngineAntibot * m_pAntibot
Definition server.h:69
void ReconnectClient(int ClientId)
Definition server.cpp:524
void SendRconCmdAdd(const IConsole::ICommandInfo *pCommandInfo, int ClientId)
Definition server.cpp:1446
CHttp m_Http
Definition server.h:221
static int ClientRejoinCallback(int ClientId, void *pUser)
Definition server.cpp:1142
void InitDnsbl(int ClientId)
Definition server.cpp:1231
CNetServer m_NetServer
Definition server.h:217
static void ConchainRegisterCommunityTokenRedact(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4297
const NETADDR * ClientAddr(int ClientId) const override
Definition server.cpp:727
void PumpNetwork(bool PacketWaiting)
Definition server.cpp:2800
void SendLogLine(const CLogMessage *pMessage)
Definition server.cpp:635
std::shared_ptr< ILogger > m_pStdoutLogger
Definition server.h:277
int m_ServerInfoNumRequests
Definition server.h:267
static void ConRecord(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3924
int m_RunServer
Definition server.h:232
@ MAP_TYPE_SIX
Definition server.h:245
@ NUM_MAP_TYPES
Definition server.h:247
@ MAP_TYPE_SIXUP
Definition server.h:246
static void ConchainMapUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4277
int SnapNewId() override
Definition server.cpp:4455
bool ClientSlotEmpty(int ClientId) const override
Definition server.cpp:779
static void ConAuthAddHashed(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3659
void SendMapReload(int ClientId)
Definition server.cpp:1406
bool m_ReloadedWhenEmpty
Definition server.h:236
const char * ClientName(int ClientId) const override
Definition server.cpp:749
CDemoRecorder m_aDemoRecorder[NUM_RECORDERS]
Definition server.h:263
bool DnsblBlack(int ClientId) override
Definition server.h:506
void SendRconCmdRem(const IConsole::ICommandInfo *pCommandInfo, int ClientId)
Definition server.cpp:1455
bool m_MapReload
Definition server.h:234
void OnNetMsgClientVer(int ClientId, CUuid *pConnectionId, int DDNetVersion, const char *pDDNetVersionStr)
Definition server.cpp:1971
void * SnapNewItem(int Type, int Id, int Size) override
Definition server.cpp:4465
static int NewClientCallback(int ClientId, void *pUser, bool Sixup)
Definition server.cpp:1198
CUPnP m_UPnP
Definition server.h:74
bool WouldClientClanChange(int ClientId, const char *pClanRequest) override
Definition server.cpp:456
unsigned m_aCurrentMapCrc[NUM_MAP_TYPES]
Definition server.h:258
int MaxClients() const override
Definition server.cpp:794
class IStorage * Storage()
Definition server.h:93
static void ConShutdown(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3822
const CConfig * Config() const
Definition server.h:91
class IGameServer * GameServer()
Definition server.h:89
static void ConchainRconModPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4263
void UpdateRegisterServerInfo()
Definition server.cpp:2627
void SendRconType(int ClientId, bool UsernameReq)
Definition server.cpp:1319
static void ConAuthList(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3814
const char * GetAuthName(int ClientId) const override
Definition server.cpp:675
class IGameServer * m_pGameServer
Definition server.h:65
class CConfig * m_pConfig
Definition server.h:66
std::vector< std::string > m_vAnnouncements
Definition server.h:274
int64_t m_GameStartTime
Definition server.h:223
static void ConReloadAnnouncement(IConsole::IResult *pResult, void *pUserData)
Definition server.cpp:4111
@ RECORDER_AUTO
Definition server.h:253
@ NUM_RECORDERS
Definition server.h:254
@ RECORDER_MANUAL
Definition server.h:252
void LogoutClient(int ClientId, const char *pReason)
Definition server.cpp:4182
bool SetClientClanImpl(int ClientId, const char *pClanRequest, bool Set)
Definition server.cpp:410
static void ConAuthAdd(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3624
const char * GetNetErrorString(int ClientId) override
Definition server.h:515
void InitMaplist()
Definition server.cpp:4574
void OnNetMsgEnterGame(int ClientId)
Definition server.cpp:2012
void SendServerInfoConnless(const NETADDR *pAddr, int Token, int Type)
Definition server.cpp:2185
static void ConAuthUpdateHashed(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3741
CCache m_aServerInfoCache[3 *2]
Definition server.h:398
void FillAntibot(CAntibotRoundData *pData) override
Definition server.cpp:2591
void SendMap(int ClientId)
Definition server.cpp:1334
void OnNetMsgRconAuth(int ClientId, const char *pName, const char *pPw, bool SendRconCmds)
Definition server.cpp:2067
void SendRconCmdGroupEnd(int ClientId)
Definition server.cpp:1469
void SendRconLogLine(int ClientId, const CLogMessage *pMessage)
Definition server.cpp:1425
void DemoRecorder_HandleAutoStart() override
Definition server.cpp:3833
int m_RconClientId
Definition server.h:237
static void ConchainLoglevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4314
int DistinctClientCount() const override
Definition server.cpp:813
class IRegister * m_pRegister
Definition server.h:70
static const char * DnsblStateStr(EDnsblState State)
Definition server.cpp:297
CNameBans m_NameBans
Definition server.h:271
int ClientCountry(int ClientId) const override
Definition server.cpp:769
static void ConStatus(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3513
bool RateLimitServerInfoConnless()
Definition server.cpp:2163
bool CanClientUseCommand(int ClientId, const IConsole::ICommandInfo *pCommand) const
Definition server.cpp:3594
std::vector< CMaplistEntry > m_vMaplistEntries
Definition server.h:364
@ RUNNING
Definition server.h:228
@ STOPPING
Definition server.h:229
@ UNINITIALIZED
Definition server.h:227
int SendMsg(CMsgPacker *pMsg, int Flags, int ClientId) override
Definition server.cpp:905
static void ConchainMaxclientsperipUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4134
int m_PrintCBIndex
Definition server.h:239
CSnapIdPool m_IdPool
Definition server.h:216
CCache m_aSixupServerInfoCache[2]
Definition server.h:399
static void ConchainAnnouncementFilename(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4334
static int DelClientCallback(int ClientId, const char *pReason, void *pUser)
Definition server.cpp:1274
void UpdateClientMaplistEntries(int ClientId)
Definition server.cpp:1530
void SendRconLine(int ClientId, const char *pLine)
Definition server.cpp:1418
CServer()
Definition server.cpp:233
bool IsRconAuthed(int ClientId) const override
Definition server.cpp:665
int GetClientVersion(int ClientId) const override
Definition server.cpp:842
~CServer() override
Definition server.cpp:277
void LogoutKey(int Key, const char *pReason)
Definition server.cpp:4219
void ProcessClientPacket(CNetChunk *pPacket)
Definition server.cpp:1639
void ResetNetErrorString(int ClientId) override
Definition server.h:516
friend class CServerLogger
Definition server.h:63
bool WouldClientNameChange(int ClientId, const char *pNameRequest) override
Definition server.cpp:451
void * m_pPersistentData
Definition server.h:241
void StopRecord(int ClientId) override
Definition server.cpp:3900
void SendMaplistGroupEnd(int ClientId)
Definition server.cpp:1524
bool ClientPrevIngame(int ClientId) override
Definition server.h:514
char m_aMapDownloadUrl[256]
Definition server.h:261
static void ConAuthRemove(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3787
void UpdateDebugDummies(bool ForceDisconnect)
Definition server.cpp:3004
bool m_ServerInfoNeedsUpdate
Definition server.h:400
void ReloadMap() override
Definition server.cpp:2907
static void ConAuthUpdate(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3710
IEngine * m_pEngine
Definition server.h:71
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:1258
bool GetClientInfo(int ClientId, CClientInfo *pInfo) const override
Definition server.cpp:690
static void ConReloadMaplist(IConsole::IResult *pResult, void *pUserData)
Definition server.cpp:4117
void OnNetMsgRconCmd(int ClientId, const char *pCmd)
Definition server.cpp:2039
void SendServerInfo(const NETADDR *pAddr, int Token, int Type, bool SendClients)
Definition server.cpp:2531
CClient m_aClients[MAX_CLIENTS]
Definition server.h:211
UNIXSOCKETADDR m_ConnLoggingDestAddr
Definition server.h:78
unsigned char * m_apCurrentMapData[NUM_MAP_TYPES]
Definition server.h:259
static void ConShowIps(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3982
class IEngineAntibot * Antibot()
Definition server.h:94
static int NewClientNoAuthCallback(int ClientId, void *pUser)
Definition server.cpp:1164
IEngine * Engine()
Definition server.h:96
static void ConchainRconPasswordChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4256
static void ConStopRecord(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3961
CEcon m_Econ
Definition server.h:218
int NumRconCommands(int ClientId)
Definition server.cpp:1475
class CDbConnectionPool * DbPool()
Definition server.h:95
int m_PreviousDebugDummies
Definition server.h:85
static void ConHideAuthStatus(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:4002
class CConfig * Config()
Definition server.h:90
int Init()
Definition server.cpp:584
int ClientCount() const override
Definition server.cpp:799
CFifo m_Fifo
Definition server.h:219
void ChangeMap(const char *pMap) override
Definition server.cpp:2901
bool ClientIngame(int ClientId) const override
Definition server.cpp:784
size_t m_AnnouncementLastLine
Definition server.h:273
const std::array< char, NETADDR_MAXSTRSIZE > & ClientAddrStringImpl(int ClientId, bool IncludePort) const override
Definition server.cpp:738
void StartRecord(int ClientId) override
Definition server.cpp:3877
bool IsRconAuthedAdmin(int ClientId) const override
Definition server.cpp:670
int LoadMap(const char *pMapName)
Definition server.cpp:2912
int m_aPrevStates[MAX_CLIENTS]
Definition server.h:487
int m_RconAuthLevel
Definition server.h:238
bool ErrorShutdown() const
Definition server.h:522
bool HasAuthHidden(int ClientId) const override
Definition server.cpp:684
unsigned int m_aCurrentMapSize[NUM_MAP_TYPES]
Definition server.h:260
static int MaplistEntryCallback(const char *pFilename, int IsDir, int DirType, void *pUser)
Definition server.cpp:4537
void SendMaplistGroupStart(int ClientId)
Definition server.cpp:1517
static void ConchainConnLoggingServerChange(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4357
static void ConchainInputFifo(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4345
int64_t m_ServerInfoFirstRequest
Definition server.h:266
char m_aShutdownReason[128]
Definition server.h:240
IConsole::EAccessLevel ConsoleAccessLevel(int ClientId) const
Definition server.cpp:314
static void ConLogout(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3971
static void ConKick(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3501
void SaveDemo(int ClientId, float Time) override
Definition server.cpp:3867
void SetClientDDNetVersion(int ClientId, int DDNetVersion) override
Definition server.cpp:716
void SetLoggers(std::shared_ptr< ILogger > &&pFileLogger, std::shared_ptr< ILogger > &&pStdoutLogger)
Definition server.cpp:4635
void SetErrorShutdown(const char *pReason) override
Definition server.cpp:4630
class IConsole * Console()
Definition server.h:92
static void ConchainSpecialInfoupdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition server.cpp:4123
void Kick(int ClientId, const char *pReason) override
Definition server.cpp:498
void SendMapData(int ClientId, int Chunk)
Definition server.cpp:1370
void UpdateServerInfo(bool Resend)
Definition server.cpp:2764
CAuthManager m_AuthManager
Definition server.h:264
bool m_SameMapReload
Definition server.h:235
void SetTimeoutProtected(int ClientId) override
Definition server.h:518
void SnapFreeId(int Id) override
Definition server.cpp:4460
static void ConMapReload(IConsole::IResult *pResult, void *pUser)
Definition server.cpp:3966
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:90
Definition console.h:64
Definition console.h:20
EAccessLevel
Definition console.h:55
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition console.h:102
Definition antibot.h:29
Definition engine.h:15
Definition server.h:302
Definition logger.h:68
Definition register.h:11
Definition server.h:36
int Tick() const
Definition server.h:55
Definition storage.h:21
@ MAX_CLAN_LENGTH
Definition protocol.h:100
@ MAX_INPUT_SIZE
Definition protocol.h:96
@ MAX_CLIENTS
Definition protocol.h:89
@ VANILLA_MAX_CLIENTS
Definition protocol.h:90
@ MAX_NAME_LENGTH
Definition protocol.h:99
int UNIXSOCKET
Definition net.h:42
struct sockaddr_un UNIXSOCKETADDR
Definition net.h:47
CServer * CreateServer()
Definition server.cpp:4475
bool IsInterrupted()
Definition main.cpp:39
@ SERVER_DEMO_CLIENT
Definition server.h:32
Definition antibot_data.h:111
Definition network.h:139
Definition protocol.h:1444
Definition uuid_manager.h:17
Definition server.h:46
Definition types.h:114
Definition hash.h:15
Definition score_test.cpp:25