Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
PacketLogServer.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef SKYFIRE_PACKETLOGSERVER_H
7
#define SKYFIRE_PACKETLOGSERVER_H
8
9
#include "
Common.h
"
10
#include "
Platform/Singleton.h
"
11
#include <cstddef>
12
#include <cstdio>
13
#include <mutex>
14
#include <string>
15
#include <unordered_map>
16
#include <unordered_set>
17
#include <vector>
18
19
namespace
Skyfire
20
{
21
enum
PacketLogServerDirection
22
{
23
PACKET_LOG_CLIENT_TO_SERVER
,
24
PACKET_LOG_SERVER_TO_CLIENT
25
};
26
27
struct
PacketLogServerSessionInfo
28
{
29
PacketLogServerSessionInfo
();
30
31
std::string
RemoteAddress
;
32
uint32
AccountId
;
33
std::string
AccountName
;
34
uint32
RealmId
;
35
std::string
CharacterName
;
36
std::string
SessionName
;
37
std::string
FilePrefix
;
38
};
39
40
class
PacketLogServer
41
{
42
friend
class
Singleton
<
PacketLogServer
,
Mutex
>;
43
44
private
:
45
PacketLogServer
();
46
~PacketLogServer
();
47
48
public
:
49
void
Initialize
(std::string
const
& controlFileDefault, std::string
const
& outputDirDefault);
50
void
Configure
(std::string
const
& controlFile, std::string
const
& outputDir, std::string logsDir =
""
);
51
void
ConfigureLegacyPacketLogFile
(std::string
const
& packetLogFile);
52
53
bool
CanLogPacket
()
const
;
54
void
EnableGlobalLogging
();
55
void
DisableAllLogging
();
56
void
EnableCharacterLogging
(std::string
const
& characterName);
57
void
DisableCharacterLogging
(std::string
const
& characterName);
58
bool
IsGlobalLoggingEnabled
()
const
;
59
size_t
GetCharacterLoggingCount
()
const
;
60
61
void
LogPacket
(
void
const
* sessionKey,
PacketLogServerSessionInfo
const
& sessionInfo,
62
PacketLogServerDirection
direction,
uint32
opcode, std::string
const
& opcodeName,
63
void
const
* payload,
size_t
payloadSize);
64
void
LogBinaryPacket
(
PacketLogServerDirection
direction,
uint32
opcode,
void
const
* payload,
size_t
payloadSize);
65
void
LogMarker
(
void
const
* sessionKey,
PacketLogServerSessionInfo
const
& sessionInfo, std::string
const
& marker);
66
void
RefreshSessionInfo
(
void
const
* sessionKey,
PacketLogServerSessionInfo
const
& sessionInfo);
67
void
CloseSession
(
void
const
* sessionKey);
68
69
private
:
70
struct
SessionLog
71
{
72
FILE*
file
;
73
uint64
sequence
;
74
std::string
path
;
75
PacketLogServerSessionInfo
info
;
76
};
77
78
bool
IsControlFileLoggingEnabled
()
const
;
79
bool
ShouldLogSession
(
PacketLogServerSessionInfo
const
& sessionInfo)
const
;
80
FILE*
OpenSessionLog
(
void
const
* sessionKey,
PacketLogServerSessionInfo
const
& sessionInfo);
81
void
CloseAllSessions
();
82
void
CloseCharacterSessions
(std::string
const
& normalizedName);
83
84
std::string
_logsDir
;
85
FILE*
_binaryFile
;
86
std::vector<std::string>
_controlFiles
;
87
std::string
_sessionLogDir
;
88
bool
_globalSessionLogging
;
89
std::unordered_set<std::string>
_characterSessionLogging
;
90
mutable
std::mutex
_sessionLock
;
91
std::unordered_map<void const*, SessionLog>
_sessionLogs
;
92
};
93
}
94
95
#define sPacketLogServer Skyfire::Singleton<Skyfire::PacketLogServer, Skyfire::Mutex>::instance()
96
97
#endif
Common.h
uint32
std::uint32_t uint32
Definition
Define.h:77
uint64
std::uint64_t uint64
Definition
Define.h:76
Singleton.h
Skyfire::Mutex
Definition
Threading.h:18
Skyfire::PacketLogServer::EnableCharacterLogging
void EnableCharacterLogging(std::string const &characterName)
Definition
PacketLogServer.cpp:264
Skyfire::PacketLogServer::_sessionLogDir
std::string _sessionLogDir
Definition
PacketLogServer.h:87
Skyfire::PacketLogServer::IsGlobalLoggingEnabled
bool IsGlobalLoggingEnabled() const
Definition
PacketLogServer.cpp:280
Skyfire::PacketLogServer::Initialize
void Initialize(std::string const &controlFileDefault, std::string const &outputDirDefault)
Definition
PacketLogServer.cpp:177
Skyfire::PacketLogServer::_controlFiles
std::vector< std::string > _controlFiles
Definition
PacketLogServer.h:86
Skyfire::PacketLogServer::LogBinaryPacket
void LogBinaryPacket(PacketLogServerDirection direction, uint32 opcode, void const *payload, size_t payloadSize)
Definition
PacketLogServer.cpp:383
Skyfire::PacketLogServer::CloseAllSessions
void CloseAllSessions()
Definition
PacketLogServer.cpp:491
Skyfire::PacketLogServer::DisableCharacterLogging
void DisableCharacterLogging(std::string const &characterName)
Definition
PacketLogServer.cpp:270
Skyfire::PacketLogServer::_characterSessionLogging
std::unordered_set< std::string > _characterSessionLogging
Definition
PacketLogServer.h:89
Skyfire::PacketLogServer::_globalSessionLogging
bool _globalSessionLogging
Definition
PacketLogServer.h:88
Skyfire::PacketLogServer::DisableAllLogging
void DisableAllLogging()
Definition
PacketLogServer.cpp:249
Skyfire::PacketLogServer::IsControlFileLoggingEnabled
bool IsControlFileLoggingEnabled() const
Definition
PacketLogServer.cpp:231
Skyfire::PacketLogServer::_sessionLock
std::mutex _sessionLock
Definition
PacketLogServer.h:90
Skyfire::PacketLogServer::CloseSession
void CloseSession(void const *sessionKey)
Definition
PacketLogServer.cpp:478
Skyfire::PacketLogServer::LogPacket
void LogPacket(void const *sessionKey, PacketLogServerSessionInfo const &sessionInfo, PacketLogServerDirection direction, uint32 opcode, std::string const &opcodeName, void const *payload, size_t payloadSize)
Definition
PacketLogServer.cpp:341
Skyfire::PacketLogServer::_binaryFile
FILE * _binaryFile
Definition
PacketLogServer.h:85
Skyfire::PacketLogServer::EnableGlobalLogging
void EnableGlobalLogging()
Definition
PacketLogServer.cpp:243
Skyfire::PacketLogServer::_logsDir
std::string _logsDir
Definition
PacketLogServer.h:84
Skyfire::PacketLogServer::Configure
void Configure(std::string const &controlFile, std::string const &outputDir, std::string logsDir="")
Definition
PacketLogServer.cpp:187
Skyfire::PacketLogServer::CanLogPacket
bool CanLogPacket() const
Definition
PacketLogServer.cpp:225
Skyfire::PacketLogServer::PacketLogServer
PacketLogServer()
Definition
PacketLogServer.cpp:161
Skyfire::PacketLogServer::RefreshSessionInfo
void RefreshSessionInfo(void const *sessionKey, PacketLogServerSessionInfo const &sessionInfo)
Definition
PacketLogServer.cpp:432
Skyfire::PacketLogServer::GetCharacterLoggingCount
size_t GetCharacterLoggingCount() const
Definition
PacketLogServer.cpp:286
Skyfire::PacketLogServer::CloseCharacterSessions
void CloseCharacterSessions(std::string const &normalizedName)
Definition
PacketLogServer.cpp:500
Skyfire::PacketLogServer::_sessionLogs
std::unordered_map< void const *, SessionLog > _sessionLogs
Definition
PacketLogServer.h:91
Skyfire::PacketLogServer::LogMarker
void LogMarker(void const *sessionKey, PacketLogServerSessionInfo const &sessionInfo, std::string const &marker)
Definition
PacketLogServer.cpp:402
Skyfire::PacketLogServer::~PacketLogServer
~PacketLogServer()
Definition
PacketLogServer.cpp:166
Skyfire::PacketLogServer::ConfigureLegacyPacketLogFile
void ConfigureLegacyPacketLogFile(std::string const &packetLogFile)
Definition
PacketLogServer.cpp:211
Skyfire::PacketLogServer::OpenSessionLog
FILE * OpenSessionLog(void const *sessionKey, PacketLogServerSessionInfo const &sessionInfo)
Definition
PacketLogServer.cpp:304
Skyfire::PacketLogServer::ShouldLogSession
bool ShouldLogSession(PacketLogServerSessionInfo const &sessionInfo) const
Definition
PacketLogServer.cpp:292
Skyfire::Singleton
Definition
Singleton.h:15
Skyfire
Definition
AuthPatchTransfer.h:12
Skyfire::PacketLogServerDirection
PacketLogServerDirection
Definition
PacketLogServer.h:22
Skyfire::PACKET_LOG_SERVER_TO_CLIENT
@ PACKET_LOG_SERVER_TO_CLIENT
Definition
PacketLogServer.h:24
Skyfire::PACKET_LOG_CLIENT_TO_SERVER
@ PACKET_LOG_CLIENT_TO_SERVER
Definition
PacketLogServer.h:23
Skyfire::PacketLogServer::SessionLog
Definition
PacketLogServer.h:71
Skyfire::PacketLogServer::SessionLog::file
FILE * file
Definition
PacketLogServer.h:72
Skyfire::PacketLogServer::SessionLog::info
PacketLogServerSessionInfo info
Definition
PacketLogServer.h:75
Skyfire::PacketLogServer::SessionLog::sequence
uint64 sequence
Definition
PacketLogServer.h:73
Skyfire::PacketLogServer::SessionLog::path
std::string path
Definition
PacketLogServer.h:74
Skyfire::PacketLogServerSessionInfo
Definition
PacketLogServer.h:28
Skyfire::PacketLogServerSessionInfo::CharacterName
std::string CharacterName
Definition
PacketLogServer.h:35
Skyfire::PacketLogServerSessionInfo::AccountId
uint32 AccountId
Definition
PacketLogServer.h:32
Skyfire::PacketLogServerSessionInfo::AccountName
std::string AccountName
Definition
PacketLogServer.h:33
Skyfire::PacketLogServerSessionInfo::PacketLogServerSessionInfo
PacketLogServerSessionInfo()
Definition
PacketLogServer.cpp:156
Skyfire::PacketLogServerSessionInfo::RemoteAddress
std::string RemoteAddress
Definition
PacketLogServer.h:31
Skyfire::PacketLogServerSessionInfo::FilePrefix
std::string FilePrefix
Definition
PacketLogServer.h:37
Skyfire::PacketLogServerSessionInfo::SessionName
std::string SessionName
Definition
PacketLogServer.h:36
Skyfire::PacketLogServerSessionInfo::RealmId
uint32 RealmId
Definition
PacketLogServer.h:34
src
server
shared
Packets
PacketLogServer.h
Generated on
for Project SkyFire Core by
1.17.0