diff options
| -rw-r--r-- | src/server/game/Tools/PlayerDump.cpp | 9 | ||||
| -rwxr-xr-x | src/server/game/World/World.cpp | 4 | ||||
| -rwxr-xr-x | src/server/game/World/World.h | 2 | ||||
| -rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 14 |
4 files changed, 29 insertions, 0 deletions
diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp index 8f888f8fb85..92fa001fe46 100644 --- a/src/server/game/Tools/PlayerDump.cpp +++ b/src/server/game/Tools/PlayerDump.cpp @@ -352,6 +352,15 @@ bool PlayerDumpWriter::GetDump(uint32 guid, std::string &dump) DumpReturn PlayerDumpWriter::WriteDump(const std::string& file, uint32 guid) { + if (sWorld->getBoolConfig(CONFIG_PDUMP_NO_PATHS)) + if (strstr(file.c_str(), "\\") || strstr(file.c_str(), "/")) + return DUMP_FILE_OPEN_ERROR; + if (sWorld->getBoolConfig(CONFIG_PDUMP_NO_OVERWRITE)) + if (FILE* f = fopen(file.c_str(), "r")) + { + fclose(f); + return DUMP_FILE_OPEN_ERROR; + } FILE* fout = fopen(file.c_str(), "w"); if (!fout) return DUMP_FILE_OPEN_ERROR; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 390c5de3f64..34b93c71fb4 100755 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1189,6 +1189,10 @@ void World::LoadConfigSettings(bool reload) // MySQL ping time interval m_int_configs[CONFIG_DB_PING_INTERVAL] = ConfigMgr::GetIntDefault("MaxPingTime", 30); + // misc + m_bool_configs[CONFIG_PDUMP_NO_PATHS] = ConfigMgr::GetBoolDefault("PlayerDump.DisallowPaths", true); + m_bool_configs[CONFIG_PDUMP_NO_OVERWRITE] = ConfigMgr::GetBoolDefault("PlayerDump.DisallowOverwrite", true); + sScriptMgr->OnConfigLoad(reload); } diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index e8d962281cd..7430dd22420 100755 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -158,6 +158,8 @@ enum WorldBoolConfigs CONFIG_ALLOW_TICKETS, CONFIG_DBC_ENFORCE_ITEM_ATTRIBUTES, CONFIG_PRESERVE_CUSTOM_CHANNELS, + CONFIG_PDUMP_NO_PATHS, + CONFIG_PDUMP_NO_OVERWRITE, BOOL_CONFIG_VALUE_COUNT }; diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index c894bf8afb7..a8c0d91b2e6 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -2770,4 +2770,18 @@ LevelReq.Auction = 1 LevelReq.Mail = 1 # +# PlayerDump.DisallowPaths +# Description: Disallow using paths in PlayerDump output files +# Default: 1 + +PlayerDump.DisallowPaths = 1 + +# +# PlayerDump.DisallowOverwrite +# Description: Disallow overwriting existing files with PlayerDump +# Default: 1 + +PlayerDump.DisallowOverwrite = 1 + +# ################################################################################################### |
