aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/authserver/Main.cpp2
-rw-r--r--src/server/authserver/Server/AuthSocket.cpp2
-rw-r--r--src/server/authserver/authserver.conf.dist2
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.h2
-rw-r--r--src/server/game/Chat/Commands/Level3.cpp2
-rw-r--r--src/server/game/Guilds/Guild.cpp2
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.cpp2
-rw-r--r--src/server/game/Maps/Map.cpp2
-rw-r--r--src/server/game/Maps/MapManager.cpp2
-rw-r--r--src/server/game/Scripting/ScriptMgr.h2
-rw-r--r--src/server/game/Server/Protocol/Handlers/AddonHandler.h2
-rw-r--r--src/server/game/Server/Protocol/WorldLog.cpp2
-rw-r--r--src/server/game/Server/WorldSocketMgr.cpp2
-rw-r--r--src/server/game/World/World.cpp2
-rw-r--r--src/server/shared/CMakeLists.txt2
-rw-r--r--src/server/shared/Configuration/Config.cpp82
-rw-r--r--src/server/shared/Configuration/Config.h8
-rw-r--r--src/server/shared/Configuration/ConfigEnv.h30
-rw-r--r--src/server/shared/Configuration/ConfigLibrary.vcproj137
-rw-r--r--src/server/shared/Configuration/dotconfpp/dotconfpp.cpp599
-rw-r--r--src/server/shared/Configuration/dotconfpp/dotconfpp.h97
-rw-r--r--src/server/shared/Configuration/dotconfpp/mempool.cpp100
-rw-r--r--src/server/shared/Configuration/dotconfpp/mempool.h46
-rw-r--r--src/server/shared/Database/Database.cpp2
-rw-r--r--src/server/shared/Logging/Log.cpp2
-rw-r--r--src/server/worldserver/CommandLine/CliRunnable.cpp2
-rw-r--r--src/server/worldserver/Main.cpp2
-rw-r--r--src/server/worldserver/Master.cpp2
-rw-r--r--src/server/worldserver/RemoteAccess/RASocket.cpp2
-rw-r--r--src/server/worldserver/worldserver.conf.dist2
30 files changed, 70 insertions, 1073 deletions
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp
index 28757e914e3..3954b3fa4c8 100644
--- a/src/server/authserver/Main.cpp
+++ b/src/server/authserver/Main.cpp
@@ -26,7 +26,7 @@
#include "Database/DatabaseEnv.h"
#include "Database/PreparedStatements.h"
-#include "Configuration/ConfigEnv.h"
+#include "Configuration/Config.h"
#include "Log.h"
#include "SystemConfig.h"
#include "Util.h"
diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp
index c33f84a9669..b936a188aee 100644
--- a/src/server/authserver/Server/AuthSocket.cpp
+++ b/src/server/authserver/Server/AuthSocket.cpp
@@ -25,7 +25,7 @@
#include "Common.h"
#include "Database/DatabaseEnv.h"
#include "ByteBuffer.h"
-#include "Configuration/ConfigEnv.h"
+#include "Configuration/Config.h"
#include "Log.h"
#include "RealmList.h"
#include "AuthSocket.h"
diff --git a/src/server/authserver/authserver.conf.dist b/src/server/authserver/authserver.conf.dist
index cf2689b6db6..0ecb58bf14b 100644
--- a/src/server/authserver/authserver.conf.dist
+++ b/src/server/authserver/authserver.conf.dist
@@ -1,6 +1,8 @@
###############################################
# Trinity Core Auth Server configuration file #
###############################################
+[authserver]
+
# Note to devs, line breaks should be at column 80
###############################################################################
# AUTH SERVER SETTINGS
diff --git a/src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.h b/src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.h
index d1cec5f170e..b62d7363cd2 100644
--- a/src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.h
+++ b/src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.h
@@ -21,7 +21,7 @@
#define AUCTION_HOUSE_BOT_H
#include "World.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "ItemPrototype.h"
#define AHB_GREY 0
diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp
index 46083f05728..fb68581ad89 100644
--- a/src/server/game/Chat/Commands/Level3.cpp
+++ b/src/server/game/Chat/Commands/Level3.cpp
@@ -45,7 +45,7 @@
#include "SkillDiscovery.h"
#include "SkillExtraItems.h"
#include "SystemConfig.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "Util.h"
#include "ItemEnchantmentMgr.h"
#include "BattleGroundMgr.h"
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 6937db14e88..0b687b57c01 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -30,7 +30,7 @@
#include "Util.h"
#include "Language.h"
#include "World.h"
-#include "ConfigEnv.h"
+#include "Config.h"
Guild::Guild()
{
diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp
index dd9001402a0..b4f56d3f34f 100644
--- a/src/server/game/Instances/InstanceSaveMgr.cpp
+++ b/src/server/game/Instances/InstanceSaveMgr.cpp
@@ -32,7 +32,7 @@
#include "InstanceSaveMgr.h"
#include "Timer.h"
#include "GridNotifiersImpl.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "Transport.h"
#include "ObjectMgr.h"
#include "World.h"
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 2d86e17819c..c02ef5856fe 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -28,7 +28,7 @@
#include "InstanceData.h"
#include "Map.h"
#include "GridNotifiersImpl.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "Transport.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp
index 36999aab14f..5cdd2f90089 100644
--- a/src/server/game/Maps/MapManager.cpp
+++ b/src/server/game/Maps/MapManager.cpp
@@ -28,7 +28,7 @@
#include "MapInstanced.h"
#include "InstanceData.h"
#include "DestinationHolderImp.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "World.h"
#include "CellImpl.h"
#include "Corpse.h"
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index 4e7cc120cc9..e3a00c835b3 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -11,7 +11,7 @@
#include "Common.h"
#include "CompilerDefs.h"
#include "DBCStructure.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "ObjectMgr.h"
class Player;
diff --git a/src/server/game/Server/Protocol/Handlers/AddonHandler.h b/src/server/game/Server/Protocol/Handlers/AddonHandler.h
index 68620751da3..4a570abd760 100644
--- a/src/server/game/Server/Protocol/Handlers/AddonHandler.h
+++ b/src/server/game/Server/Protocol/Handlers/AddonHandler.h
@@ -22,7 +22,7 @@
#define __ADDONHANDLER_H
#include "Common.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "ace/Singleton.h"
#include "WorldPacket.h"
diff --git a/src/server/game/Server/Protocol/WorldLog.cpp b/src/server/game/Server/Protocol/WorldLog.cpp
index e66bff0b504..696175d4eae 100644
--- a/src/server/game/Server/Protocol/WorldLog.cpp
+++ b/src/server/game/Server/Protocol/WorldLog.cpp
@@ -23,7 +23,7 @@
*/
#include "WorldLog.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "Log.h"
WorldLog::WorldLog() : i_file(NULL)
diff --git a/src/server/game/Server/WorldSocketMgr.cpp b/src/server/game/Server/WorldSocketMgr.cpp
index 6ccb30b64ef..192105a5ba3 100644
--- a/src/server/game/Server/WorldSocketMgr.cpp
+++ b/src/server/game/Server/WorldSocketMgr.cpp
@@ -42,7 +42,7 @@
#include "Log.h"
#include "Common.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "DatabaseEnv.h"
#include "WorldSocket.h"
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 66254e0b545..6cedfeb2910 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -24,7 +24,7 @@
#include "Common.h"
#include "DatabaseEnv.h"
-#include "ConfigEnv.h"
+#include "Config.h"
#include "SystemConfig.h"
#include "Log.h"
#include "Opcodes.h"
diff --git a/src/server/shared/CMakeLists.txt b/src/server/shared/CMakeLists.txt
index 2c474e61693..6103b17a89d 100644
--- a/src/server/shared/CMakeLists.txt
+++ b/src/server/shared/CMakeLists.txt
@@ -67,8 +67,6 @@ endif()
########### trinityconfig ###############
set(trinityconfig_STAT_SRCS
- Configuration/dotconfpp/dotconfpp.cpp
- Configuration/dotconfpp/mempool.cpp
Configuration/Config.cpp
)
diff --git a/src/server/shared/Configuration/Config.cpp b/src/server/shared/Configuration/Config.cpp
index 3979cbc36aa..d0b9cd4ff17 100644
--- a/src/server/shared/Configuration/Config.cpp
+++ b/src/server/shared/Configuration/Config.cpp
@@ -18,9 +18,31 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include "ConfigEnv.h"
+#include "Config.h"
+#include <ace/Configuration_Import_Export.h>
-Config::Config() : mIgnoreCase(true), mConf(NULL)
+static bool GetValueHelper(ACE_Configuration_Heap *mConf, const char *name, ACE_TString &result)
+{
+ if (!mConf)
+ return false;
+
+ ACE_TString section_name;
+ ACE_Configuration_Section_Key section_key;
+ ACE_Configuration_Section_Key root_key = mConf->root_section();
+
+ int i = 0;
+ while (mConf->enumerate_sections(root_key, i, section_name) == 0)
+ {
+ mConf->open_section(root_key, section_name.c_str(), 0, section_key);
+ if (mConf->get_string_value(section_key, name, result) == 0)
+ return true;
+ ++i;
+ }
+
+ return false;
+}
+
+Config::Config() : mConf(NULL)
{
}
@@ -29,50 +51,40 @@ Config::~Config()
delete mConf;
}
-bool Config::SetSource(const char *file, bool ignorecase)
+bool Config::SetSource(const char *file)
{
- mIgnoreCase = ignorecase;
mFilename = file;
-
return Reload();
}
bool Config::Reload()
{
delete mConf;
-
- mConf = new DOTCONFDocument(mIgnoreCase ?
- DOTCONFDocument::CASEINSENSETIVE :
- DOTCONFDocument::CASESENSETIVE);
-
- if (mConf->setContent(mFilename.c_str()) == -1)
+ mConf = new ACE_Configuration_Heap;
+ if (mConf->open() == 0)
{
- delete mConf;
- mConf = NULL;
- return false;
+ ACE_Ini_ImpExp config_importer(*mConf);
+ if (config_importer.import_config(mFilename.c_str()) == 0)
+ return true;
}
-
- return true;
+ delete mConf;
+ mConf = NULL;
+ return false;
}
std::string Config::GetStringDefault(const char * name, std::string def)
{
- if(!mConf)
- return std::string(def);
- const DOTCONFDocumentNode * node = mConf->findNode(name);
- if(!node || !node->getValue())
- return std::string(def);
- return std::string(node->getValue());
+ ACE_TString val;
+ return GetValueHelper(mConf, name, val) ? val.c_str() : def;
};
bool Config::GetBoolDefault(const char * name, const bool def)
{
- if(!mConf)
- return false;
- const DOTCONFDocumentNode * node = mConf->findNode(name);
- if(!node || !node->getValue())
+ ACE_TString val;
+ if (!GetValueHelper(mConf, name, val))
return def;
- const char * str = node->getValue();
+ const char* str = val.c_str();
+
if(strcmp(str, "true") == 0 || strcmp(str, "TRUE") == 0 ||
strcmp(str, "yes") == 0 || strcmp(str, "YES") == 0 ||
strcmp(str, "1") == 0)
@@ -83,20 +95,12 @@ bool Config::GetBoolDefault(const char * name, const bool def)
int32 Config::GetIntDefault(const char * name, const int32 def)
{
- if(!mConf)
- return def;
- const DOTCONFDocumentNode * node = mConf->findNode(name);
- if(!node || !node->getValue())
- return def;
- return atoi(node->getValue());
+ ACE_TString val;
+ return GetValueHelper(mConf, name, val) ? atoi(val.c_str()) : def;
};
float Config::GetFloatDefault(const char * name, const float def)
{
- if(!mConf)
- return def;
- const DOTCONFDocumentNode * node = mConf->findNode(name);
- if(!node || !node->getValue())
- return def;
- return atof(node->getValue());
+ ACE_TString val;
+ return GetValueHelper(mConf, name, val) ? (float)atof(val.c_str()) : def;
};
diff --git a/src/server/shared/Configuration/Config.h b/src/server/shared/Configuration/Config.h
index 50cd4609b25..93830a15023 100644
--- a/src/server/shared/Configuration/Config.h
+++ b/src/server/shared/Configuration/Config.h
@@ -21,10 +21,11 @@
#ifndef CONFIG_H
#define CONFIG_H
+#include "Common.h"
#include <ace/Singleton.h>
#include "Define.h"
-class DOTCONFDocument;
+class ACE_Configuration_Heap;
class Config
{
@@ -33,7 +34,7 @@ class Config
public:
~Config();
- bool SetSource(const char *file, bool ignorecase = true);
+ bool SetSource(const char *file);
bool Reload();
std::string GetStringDefault(const char * name, std::string def);
@@ -44,8 +45,7 @@ class Config
std::string GetFilename() const { return mFilename; }
private:
std::string mFilename;
- bool mIgnoreCase;
- DOTCONFDocument *mConf;
+ ACE_Configuration_Heap *mConf;
};
#define sConfig (*ACE_Singleton<Config, ACE_Null_Mutex>::instance())
diff --git a/src/server/shared/Configuration/ConfigEnv.h b/src/server/shared/Configuration/ConfigEnv.h
deleted file mode 100644
index 16e596fd2da..00000000000
--- a/src/server/shared/Configuration/ConfigEnv.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
- *
- * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#if !defined(CONFIGENVIRONMENT_H)
-
-#define CONFIGENVIRONMENT_H
-
-#include "Common.h"
-#include "dotconfpp/dotconfpp.h"
-#include "Config.h"
-
-#endif
-
diff --git a/src/server/shared/Configuration/ConfigLibrary.vcproj b/src/server/shared/Configuration/ConfigLibrary.vcproj
deleted file mode 100644
index a8f1fc322e7..00000000000
--- a/src/server/shared/Configuration/ConfigLibrary.vcproj
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="ConfigLibrary"
- ProjectGUID="{C849D54F-32A6-4025-95BE-E64D1CF0686E}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="4"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/ConfigLibrary.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="4"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/ConfigLibrary.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath=".\Config.cpp">
- </File>
- <File
- RelativePath=".\dotconfpp\dotconfpp.cpp">
- </File>
- <File
- RelativePath=".\dotconfpp\mempool.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath=".\Config.h">
- </File>
- <File
- RelativePath=".\ConfigEnv.h">
- </File>
- <File
- RelativePath=".\dotconfpp\dotconfpp.h">
- </File>
- <File
- RelativePath=".\dotconfpp\mempool.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/src/server/shared/Configuration/dotconfpp/dotconfpp.cpp b/src/server/shared/Configuration/dotconfpp/dotconfpp.cpp
deleted file mode 100644
index 8760b118e38..00000000000
--- a/src/server/shared/Configuration/dotconfpp/dotconfpp.cpp
+++ /dev/null
@@ -1,599 +0,0 @@
-
-#include "Common.h"
-
-#include "dotconfpp.h"
-
-#ifdef WIN32
-#define PATH_MAX _MAX_PATH
-#define strcasecmp stricmp
-#define realpath(path,resolved_path) _fullpath(resolved_path, path, _MAX_PATH)
-#include <io.h>
-#else
-#include <unistd.h>
-#include <limits.h>
-#include <stdint.h>
-#include <strings.h>
-#endif
-
-#if !defined(R_OK)
-#define R_OK 04
-#endif
-
-DOTCONFDocumentNode::DOTCONFDocumentNode():previousNode(NULL), nextNode(NULL), parentNode(NULL), childNode(NULL),
- values(NULL), valuesCount(0),
- name(NULL), lineNum(0), fileName(NULL), closed(true)
-{
-}
-
-DOTCONFDocumentNode::~DOTCONFDocumentNode()
-{
- free(name);
- if(values != NULL){
- for (int i = 0 ; i < valuesCount; i++){
- free(values[i]);
- }
- free(values);
- }
-}
-
-void DOTCONFDocumentNode::pushValue(char * _value)
-{
- ++valuesCount;
- values = (char**)realloc(values, valuesCount*sizeof(char*));
- values[valuesCount-1] = strdup(_value);
-}
-
-const char* DOTCONFDocumentNode::getValue(int index) const
-{
- if(index >= valuesCount){
- return NULL;
- }
- return values[index];
-}
-
-DOTCONFDocument::DOTCONFDocument(DOTCONFDocument::CaseSensitive caseSensitivity):
- mempool(NULL),
- curParent(NULL), curPrev(NULL), curLine(0), file(NULL), fileName(NULL)
-{
- if(caseSensitivity == CASESENSETIVE){
- cmp_func = strcmp;
- } else {
- cmp_func = strcasecmp;
- }
-
- mempool = new AsyncDNSMemPool(1024);
- mempool->initialize();
-}
-
-DOTCONFDocument::~DOTCONFDocument()
-{
- for (std::list<DOTCONFDocumentNode*>::iterator i = nodeTree.begin(); i != nodeTree.end(); ++i){
- delete(*i);
- }
- for (std::list<char*>::iterator i = requiredOptions.begin(); i != requiredOptions.end(); ++i){
- free(*i);
- }
- for (std::list<char*>::iterator i = processedFiles.begin(); i != processedFiles.end(); ++i){
- free(*i);
- }
- free(fileName);
- delete mempool;
-}
-
-int DOTCONFDocument::cleanupLine(char * line)
-{
- char * start = line;
- char * bg = line;
- bool multiline = false;
- bool concat = false;
- char * word = NULL;
-
- if(!words.empty() && quoted)
- concat = true;
-
- while(*line){
- if((*line == '#' || *line == ';') && !quoted){
- *bg = 0;
- if(strlen(start)){
-
- if(concat){
- word = (char*)mempool->alloc(strlen(words.back())+strlen(start)+1);
- strcpy(word, words.back());
- strcat(word, start);
- words.pop_back();
- concat = false;
- } else {
- word = mempool->strdup(start);
- }
- words.push_back(word);
- }
- break;
- }
- if(*line == '=' && !quoted){
- *line = ' ';continue;
- }
-
- // Allowing \" in there causes problems with directory paths
- // like "C:\TrinIty\"
- //if(*line == '\\' && (*(line+1) == '"' || *(line+1) == '\'')){
- if(*line == '\\' && (*(line+1) == '\'')) {
- *bg++ = *(line+1);
- line+=2; continue;
- }
- if(*line == '\\' && *(line+1) == 'n'){
- *bg++ = '\n';
- line+=2; continue;
- }
- if(*line == '\\' && *(line+1) == 'r'){
- *bg++ = '\r';
- line+=2; continue;
- }
- if(*line == '\\' && (*(line+1) == '\n' || *(line+1) == '\r')){
- *bg = 0;
- if(strlen(start)){
-
- if(concat){
- word = (char*)mempool->alloc(strlen(words.back())+strlen(start)+1);
- strcpy(word, words.back());
- strcat(word, start);
- words.pop_back();
- concat = false;
- } else {
- word = mempool->strdup(start);
- }
- words.push_back(word);
- }
- multiline = true;
- break;
- }
- if(*line == '"' || *line == '\''){
- quoted = !quoted;
- ++line; continue;
- }
- if(isspace((unsigned char)*line) && !quoted){
- *bg++ = 0;
- if(strlen(start)){
-
- if(concat){
- word = (char*)mempool->alloc(strlen(words.back())+strlen(start)+1);
- strcpy(word, words.back());
- strcat(word, start);
- words.pop_back();
- concat = false;
- } else {
- word = mempool->strdup(start);
- }
- words.push_back(word);
- }
- start = bg;
- while(isspace((unsigned char)*++line)) {}
-
- continue;
- }
- *bg++ = *line++;
- }
-
- if(quoted && !multiline){
- error(curLine, fileName, "unterminated quote");
- return -1;
- }
-
- return multiline?1:0;
-}
-
-int DOTCONFDocument::parseLine()
-{
- char * word = NULL;
- char * nodeName = NULL;
- char * nodeValue = NULL;
- DOTCONFDocumentNode * tagNode = NULL;
- bool newNode = false;
-
- for (std::list<char*>::iterator i = words.begin(); i != words.end(); ++i) {
- word = *i;
-
- if(*word == '<'){
- newNode = true;
- }
-
- if(newNode){
- nodeValue = NULL;
- nodeName = NULL;
- newNode = false;
- }
-
- size_t wordLen = strlen(word);
- if(word[wordLen-1] == '>'){
- word[wordLen-1] = 0;
- newNode = true;
- }
-
- if(nodeName == NULL){
- nodeName = word;
- bool closed = true;
- if(*nodeName == '<'){
- if(*(nodeName+1) != '/'){
- ++nodeName;
- closed = false;
- } else {
- nodeName+=2;
- std::list<DOTCONFDocumentNode*>::reverse_iterator itr=nodeTree.rbegin();
- for (; itr!=nodeTree.rend(); ++itr){
- if(!cmp_func(nodeName, (*itr)->name) && !(*itr)->closed){
- (*itr)->closed = true;
- curParent = (*itr)->parentNode;
- curPrev = *itr;
- break;
- }
- }
- if(itr==nodeTree.rend()){
- error(curLine, fileName, "not matched closing tag </%s>", nodeName);
- return -1;
- }
- continue;
- }
- }
- tagNode = new DOTCONFDocumentNode;
- tagNode->name = strdup(nodeName);
- tagNode->document = this;
- tagNode->fileName = processedFiles.back();
- tagNode->lineNum = curLine;
- tagNode->closed = closed;
- if(!nodeTree.empty()){
- DOTCONFDocumentNode * prev = nodeTree.back();
- if(prev->closed){
-
- curPrev->nextNode = tagNode;
- tagNode->previousNode = curPrev;
- tagNode->parentNode = curParent;
-
- } else {
- prev->childNode = tagNode;
- tagNode->parentNode = prev;
- curParent = prev;
- }
- }
- nodeTree.push_back(tagNode);
- curPrev = tagNode;
- } else {
- nodeValue = word;
- tagNode->pushValue(nodeValue);
- }
- }
-
- return 0;
-}
-int DOTCONFDocument::parseFile(DOTCONFDocumentNode * _parent)
-{
- char str[512];
- int ret = 0;
- curLine = 0;
- curParent = _parent;
-
- quoted = false;
- size_t slen = 0;
-
- while(fgets(str, 511, file)){
- ++curLine;
- slen = strlen(str);
- if( slen >= 510 ){
- error(curLine, fileName, "warning: line too long");
- }
- if(str[slen-1] != '\n'){
- str[slen] = '\n';
- str[slen+1] = 0;
- }
- if((ret = cleanupLine(str)) == -1){
- break;
- }
- if(ret == 0){
- if(!words.empty()){
- ret = parseLine();
- mempool->free();
- words.clear();
- if(ret == -1){
- break;
- }
- }
- }
- }
-
- return ret;
-}
-
-int DOTCONFDocument::checkConfig(const std::list<DOTCONFDocumentNode*>::iterator & from)
-{
- int ret = 0;
-
- DOTCONFDocumentNode * tagNode = NULL;
- int vi = 0;
- for (std::list<DOTCONFDocumentNode*>::iterator i = from; i != nodeTree.end(); ++i){
- tagNode = *i;
- if(!tagNode->closed){
- error(tagNode->lineNum, tagNode->fileName, "unclosed tag %s", tagNode->name);
- ret = -1;
- break;
- }
- vi = 0;
- while( vi < tagNode->valuesCount ){
-
- if(strstr(tagNode->values[vi], "${") && strchr(tagNode->values[vi], '}') ){
- ret = macroSubstitute(tagNode, vi );
- mempool->free();
- if(ret == -1){
- break;
- }
- }
- ++vi;
- }
- if(ret == -1){
- break;
- }
- }
-
- return ret;
-}
-
-int DOTCONFDocument::setContent(const char * _fileName)
-{
- int ret = 0;
- char realpathBuf[PATH_MAX];
-
- if(realpath(_fileName, realpathBuf) == NULL){
- error(0, NULL, "realpath(%s) failed: %s", _fileName, strerror(errno));
- return -1;
- }
-
- fileName = strdup(realpathBuf);
-
- processedFiles.push_back(strdup(realpathBuf));
-
- if(( file = fopen(fileName, "r")) == NULL){
- error(0, NULL, "failed to open file '%s': %s", fileName, strerror(errno));
- return -1;
- }
- // Try read utf8 header and skip it if exist
- uint32 utf8header = 0;
- fgets((char*)&utf8header, 4, file); // Try read header
- if (utf8header!=0x00BFBBEF) // If not exist
- fseek(file, 0, SEEK_SET); // Reset read position
-
- ret = parseFile();
-
- (void) fclose(file);
-
- if(!ret){
-
- if( (ret = checkConfig(nodeTree.begin())) == -1){
- return -1;
- }
-
- std::list<DOTCONFDocumentNode*>::iterator from;
- DOTCONFDocumentNode * tagNode = NULL;
- int vi = 0;
- for (std::list<DOTCONFDocumentNode*>::iterator i = nodeTree.begin(); i!=nodeTree.end(); ++i){
- tagNode = *i;
- if(!cmp_func("DOTCONFPPIncludeFile", tagNode->name)){
- vi = 0;
- while( vi < tagNode->valuesCount ){
- if(access(tagNode->values[vi], R_OK) == -1){
- error(tagNode->lineNum, tagNode->fileName, "%s: %s", tagNode->values[vi], strerror(errno));
- return -1;
- }
- if(realpath(tagNode->values[vi], realpathBuf) == NULL){
- error(tagNode->lineNum, tagNode->fileName, "realpath(%s) failed: %s", tagNode->values[vi], strerror(errno));
- return -1;
- }
-
- bool processed = false;
- for (std::list<char*>::const_iterator itInode = processedFiles.begin(); itInode != processedFiles.end(); ++itInode){
- if(!strcmp(*itInode, realpathBuf)){
- processed = true;
- break;
- }
- }
- if(processed){
- break;
- }
-
- processedFiles.push_back(strdup(realpathBuf));
-
- file = fopen(tagNode->values[vi], "r");
- if(file == NULL){
- error(tagNode->lineNum, fileName, "failed to open file '%s': %s", tagNode->values[vi], strerror(errno));
- return -1;
- }
-
- fileName = strdup(realpathBuf);
- from = nodeTree.end(); --from;
-
- ret = parseFile();
- (void) fclose(file);
- if(ret == -1)
- return -1;
- if(checkConfig(++from) == -1){
- return -1;
- }
- ++vi;
- }
- }
- }
-
- if(!requiredOptions.empty())
- ret = checkRequiredOptions();
- }
-
- return ret;
-}
-
-int DOTCONFDocument::checkRequiredOptions()
-{
- for (std::list<char*>::const_iterator ci = requiredOptions.begin(); ci != requiredOptions.end(); ++ci){
- bool matched = false;
- for (std::list<DOTCONFDocumentNode*>::iterator i = nodeTree.begin(); i!=nodeTree.end(); ++i){
- if(!cmp_func((*i)->name, *ci)){
- matched = true;
- break;
- }
- }
- if(!matched){
- error(0, NULL, "required option '%s' not specified", *ci);
- return -1;
- }
- }
- return 0;
-}
-
-void DOTCONFDocument::error(int lineNum, const char * fileName_, const char * fmt, ...)
-{
- va_list args;
- va_start(args, fmt);
-
- size_t len = (lineNum!=0?strlen(fileName_):0) + strlen(fmt) + 50;
- char * buf = (char*)mempool->alloc(len);
-
- if(lineNum)
- (void) snprintf(buf, len, "DOTCONF++: file '%s', line %d: %s\n", fileName_, lineNum, fmt);
- else
- (void) snprintf(buf, len, "DOTCONF++: %s\n", fmt);
-
- (void) vfprintf(stderr, buf, args);
-
- va_end(args);
-}
-
-char * DOTCONFDocument::getSubstitution(char * macro, int lineNum)
-{
- char * buf = NULL;
- char * variable = macro+2;
-
- char * endBr = strchr(macro, '}');
-
- if(!endBr){
- error(lineNum, fileName, "unterminated '{'");
- return NULL;
- }
- *endBr = 0;
-
- char * defaultValue = strchr(variable, ':');
-
- if(defaultValue){
- *defaultValue++ = 0;
- if(*defaultValue != '-'){
- error(lineNum, fileName, "incorrect macro substitution syntax");
- return NULL;
- }
- ++defaultValue;
- if(*defaultValue == '"' || *defaultValue == '\''){
- ++defaultValue;
- defaultValue[strlen(defaultValue)-1] = 0;
- }
- } else {
- defaultValue = NULL;
- }
-
- char * subs = getenv(variable);
- if( subs ){
- buf = mempool->strdup(subs);
- } else {
- std::list<DOTCONFDocumentNode*>::iterator i = nodeTree.begin();
- DOTCONFDocumentNode * tagNode = NULL;
- for (; i!=nodeTree.end(); i++){
- tagNode = *i;
- if(!cmp_func(tagNode->name, variable)){
- if(tagNode->valuesCount != 0){
- buf = mempool->strdup(tagNode->values[0]);
- break;
- }
- }
- }
- if( i == nodeTree.end() ){
- if( defaultValue ){
- buf = mempool->strdup(defaultValue);
- } else {
- error(lineNum, fileName, "substitution not found and default value not given");
- return NULL;
- }
- }
- }
- return buf;
-}
-
-int DOTCONFDocument::macroSubstitute(DOTCONFDocumentNode * tagNode, int valueIndex)
-{
- int ret = 0;
- char * macro = tagNode->values[valueIndex];
- size_t valueLen = strlen(tagNode->values[valueIndex])+1;
- char * value = (char*)mempool->alloc(valueLen);
- char * v = value;
- char * subs = NULL;
-
- while(*macro){
- if(*macro == '$' && *(macro+1) == '{'){
- char * m = strchr(macro, '}');
- subs = getSubstitution(macro, tagNode->lineNum);
- if(subs == NULL){
- ret = -1;
- break;
- }
- macro = m + 1;
- *v = 0;
- v = (char*)mempool->alloc(strlen(value)+strlen(subs)+valueLen);
- strcpy(v, value);
- value = strcat(v, subs);
- v = value + strlen(value);
- continue;
- }
- *v++ = *macro++;
- }
- *v = 0;
-
- free(tagNode->values[valueIndex]);
- tagNode->values[valueIndex] = strdup(value);
- return ret;
-}
-
-const DOTCONFDocumentNode * DOTCONFDocument::getFirstNode() const
-{
- if ( !nodeTree.empty() ) {
- return *nodeTree.begin();
- } else {
- return NULL;
- }
-}
-
-const DOTCONFDocumentNode * DOTCONFDocument::findNode(const char * nodeName, const DOTCONFDocumentNode * parentNode, const DOTCONFDocumentNode * startNode) const
-{
-
- std::list<DOTCONFDocumentNode*>::const_iterator i = nodeTree.begin();
-
- if(startNode == NULL)
- startNode = parentNode;
-
- if(startNode != NULL){
- while( i != nodeTree.end() && (*i) != startNode ){
- ++i;
- }
- if( i != nodeTree.end() ) ++i;
- }
-
- for (; i!=nodeTree.end(); ++i){
-
- if((*i)->parentNode != parentNode){
- continue;
- }
- if(!cmp_func(nodeName, (*i)->name)){
- return *i;
- }
- }
- return NULL;
-}
-
-void DOTCONFDocument::setRequiredOptionNames(const char ** requiredOptionNames)
-{
- while(*requiredOptionNames){
- requiredOptions.push_back(strdup( *requiredOptionNames ));
- ++requiredOptionNames;
- }
-}
-
diff --git a/src/server/shared/Configuration/dotconfpp/dotconfpp.h b/src/server/shared/Configuration/dotconfpp/dotconfpp.h
deleted file mode 100644
index 554b152f693..00000000000
--- a/src/server/shared/Configuration/dotconfpp/dotconfpp.h
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-#ifndef DOTCONFPP_H
-#define DOTCONFPP_H
-
-#include <list>
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include "mempool.h"
-
-class DOTCONFDocument;
-
-class DOTCONFDocumentNode
-{
-friend class DOTCONFDocument;
-private:
- DOTCONFDocumentNode * previousNode;
- DOTCONFDocumentNode * nextNode;
- DOTCONFDocumentNode * parentNode;
- DOTCONFDocumentNode * childNode;
- char ** values;
- int valuesCount;
- char * name;
- const DOTCONFDocument * document;
- int lineNum;
- char * fileName;
- bool closed;
-
- void pushValue(char * _value);
-
-public:
- DOTCONFDocumentNode();
- ~DOTCONFDocumentNode();
-
- const char * getConfigurationFileName()const { return fileName; }
- int getConfigurationLineNumber() const { return lineNum; }
-
- const DOTCONFDocumentNode * getNextNode() const { return nextNode; }
- const DOTCONFDocumentNode * getPreviuosNode() const { return previousNode; }
- const DOTCONFDocumentNode * getParentNode() const { return parentNode; }
- const DOTCONFDocumentNode * getChildNode() const { return childNode; }
- const char* getValue(int index = 0) const;
- const char * getName() const { return name; }
- const DOTCONFDocument * getDocument() const { return document; }
-};
-
-class DOTCONFDocument
-{
-public:
- enum CaseSensitive { CASESENSETIVE, CASEINSENSETIVE };
-protected:
- AsyncDNSMemPool * mempool;
-private:
- DOTCONFDocumentNode * curParent;
- DOTCONFDocumentNode * curPrev;
- int curLine;
- bool quoted;
- std::list<DOTCONFDocumentNode*> nodeTree;
- std::list<char*> requiredOptions;
- std::list<char*> processedFiles;
- FILE * file;
- char * fileName;
- std::list<char*> words;
- int (*cmp_func)(const char *, const char *);
-
- int checkRequiredOptions();
- int parseLine();
- int parseFile(DOTCONFDocumentNode * _parent = NULL);
- int checkConfig(const std::list<DOTCONFDocumentNode*>::iterator & from);
- int cleanupLine(char * line);
- char * getSubstitution(char * macro, int lineNum);
- int macroSubstitute(DOTCONFDocumentNode * tagNode, int valueIndex);
-
-protected:
- virtual void error(int lineNum, const char * fileName, const char * fmt, ...) ATTR_PRINTF(4,5);
-
-public:
- DOTCONFDocument(CaseSensitive caseSensitivity = CASESENSETIVE);
- virtual ~DOTCONFDocument();
-
- int setContent(const char * _fileName);
-
- void setRequiredOptionNames(const char ** requiredOptionNames);
- const DOTCONFDocumentNode * getFirstNode() const;
- const DOTCONFDocumentNode * findNode(const char * nodeName, const DOTCONFDocumentNode * parentNode = NULL, const DOTCONFDocumentNode * startNode = NULL) const;
-};
-
-#endif
-
diff --git a/src/server/shared/Configuration/dotconfpp/mempool.cpp b/src/server/shared/Configuration/dotconfpp/mempool.cpp
deleted file mode 100644
index a23e33808bd..00000000000
--- a/src/server/shared/Configuration/dotconfpp/mempool.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-#include "mempool.h"
-
-AsyncDNSMemPool::PoolChunk::PoolChunk(size_t _size):
- pool(NULL), pos(0), size(_size)
-{
- pool = ::malloc(size);
-}
-
-AsyncDNSMemPool::PoolChunk::~PoolChunk()
-{
- ::free(pool);
-}
-
-AsyncDNSMemPool::AsyncDNSMemPool(size_t _defaultSize):
- chunks(NULL), chunksCount(0), defaultSize(_defaultSize),
- poolUsage(0), poolUsageCounter(0)
-{
-}
-
-AsyncDNSMemPool::~AsyncDNSMemPool()
-{
- for (size_t i = 0; i<chunksCount; ++i){
- delete chunks[i];
- }
- ::free(chunks);
-}
-
-int AsyncDNSMemPool::initialize()
-{
- chunksCount = 1;
- chunks = (PoolChunk**)::malloc(sizeof(PoolChunk*));
- if(chunks == NULL)
- return -1;
-
- chunks[chunksCount-1] = new PoolChunk(defaultSize);
-
- return 0;
-}
-
-void AsyncDNSMemPool::addNewChunk(size_t size)
-{
- ++chunksCount;
- chunks = (PoolChunk**)::realloc(chunks, chunksCount*sizeof(PoolChunk*));
- if(size <= defaultSize)
- chunks[chunksCount-1] = new PoolChunk(defaultSize);
- else
- chunks[chunksCount-1] = new PoolChunk(size);
-}
-
-void * AsyncDNSMemPool::alloc(size_t size)
-{
- PoolChunk * chunk = NULL;
- for (size_t i = 0; i<chunksCount; ++i){
- chunk = chunks[i];
- if((chunk->size - chunk->pos) >= size){
- chunk->pos += size;
- return ((char*)chunk->pool) + chunk->pos - size;
- }
- }
- addNewChunk(size);
- chunks[chunksCount-1]->pos = size;
- return chunks[chunksCount-1]->pool;
-}
-
-void AsyncDNSMemPool::free()
-{
- size_t pu = 0;
- size_t psz = 0;
- ++poolUsageCounter;
-
- for (size_t i = 0; i<chunksCount; ++i){
- pu += chunks[i]->pos;
- psz += chunks[i]->size;
- chunks[i]->pos = 0;
- }
- poolUsage=(poolUsage>pu)?poolUsage:pu;
-
- if(poolUsageCounter >= 10 && chunksCount > 1){
- psz -= chunks[chunksCount-1]->size;
- if(poolUsage < psz){
- --chunksCount;
- delete chunks[chunksCount];
- }
- poolUsage = 0;
- poolUsageCounter = 0;
- }
-}
-
-void * AsyncDNSMemPool::calloc(size_t size)
-{
- return ::memset(this->alloc(size), 0, size);
-}
-
-char * AsyncDNSMemPool::strdup(const char *str)
-{
- return ::strcpy((char*)this->alloc(strlen(str)+1), str);
-}
-
diff --git a/src/server/shared/Configuration/dotconfpp/mempool.h b/src/server/shared/Configuration/dotconfpp/mempool.h
deleted file mode 100644
index 185b50798e1..00000000000
--- a/src/server/shared/Configuration/dotconfpp/mempool.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-#ifndef ASYNC_DNS_MEMPOOL_H
-#define ASYNC_DNS_MEMPOOL_H
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
-#undef free
-#undef calloc
-#undef strdup
-
-class AsyncDNSMemPool
-{
-private:
- struct PoolChunk {
- void * pool;
- size_t pos;
- size_t size;
-
- PoolChunk(size_t _size);
- ~PoolChunk();
- };
- PoolChunk ** chunks;
- size_t chunksCount;
- size_t defaultSize;
-
- size_t poolUsage;
- size_t poolUsageCounter;
-
- void addNewChunk(size_t size);
-
-public:
- AsyncDNSMemPool(size_t _defaultSize = 4096);
- virtual ~AsyncDNSMemPool();
-
- int initialize();
- void free();
- void * alloc(size_t size);
- void * calloc(size_t size);
- char * strdup(const char *str);
-};
-
-#endif
-
diff --git a/src/server/shared/Database/Database.cpp b/src/server/shared/Database/Database.cpp
index 1fb2f831a9f..e2bfc58d96d 100644
--- a/src/server/shared/Database/Database.cpp
+++ b/src/server/shared/Database/Database.cpp
@@ -19,7 +19,7 @@
*/
#include "DatabaseEnv.h"
-#include "Configuration/ConfigEnv.h"
+#include "Configuration/Config.h"
#include "Common.h"
#include "Updates/UpdateFields.h"
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index 7a34eaa0c0d..563c9593e65 100644
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -20,7 +20,7 @@
#include "Common.h"
#include "Log.h"
-#include "Configuration/ConfigEnv.h"
+#include "Configuration/Config.h"
#include "Util.h"
#include <stdarg.h>
diff --git a/src/server/worldserver/CommandLine/CliRunnable.cpp b/src/server/worldserver/CommandLine/CliRunnable.cpp
index 294c512759f..536fd9bf883 100644
--- a/src/server/worldserver/CommandLine/CliRunnable.cpp
+++ b/src/server/worldserver/CommandLine/CliRunnable.cpp
@@ -26,7 +26,7 @@
#include "ObjectMgr.h"
#include "World.h"
#include "WorldSession.h"
-#include "Configuration/ConfigEnv.h"
+#include "Configuration/Config.h"
#include "AccountMgr.h"
#include "Chat.h"
diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp
index 5166ca741df..3e3310c613a 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/worldserver/Main.cpp
@@ -28,7 +28,7 @@
#include "Common.h"
#include "Database/DatabaseEnv.h"
-#include "Configuration/ConfigEnv.h"
+#include "Configuration/Config.h"
#include "Log.h"
#include "Master.h"
diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp
index 4a986893d78..fd2e7217daa 100644
--- a/src/server/worldserver/Master.cpp
+++ b/src/server/worldserver/Master.cpp
@@ -31,7 +31,7 @@
#include "WorldRunnable.h"
#include "WorldSocket.h"
#include "WorldSocketMgr.h"
-#include "Configuration/ConfigEnv.h"
+#include "Configuration/Config.h"
#include "Database/DatabaseEnv.h"
#include "CliRunnable.h"
diff --git a/src/server/worldserver/RemoteAccess/RASocket.cpp b/src/server/worldserver/RemoteAccess/RASocket.cpp
index 98587c935d0..69601155b37 100644
--- a/src/server/worldserver/RemoteAccess/RASocket.cpp
+++ b/src/server/worldserver/RemoteAccess/RASocket.cpp
@@ -23,7 +23,7 @@
*/
#include "Common.h"
-#include "Configuration/ConfigEnv.h"
+#include "Configuration/Config.h"
#include "Database/DatabaseEnv.h"
#include "AccountMgr.h"
#include "Log.h"
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 4847b22a737..768ed66620c 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -1,6 +1,8 @@
################################################
# Trinity Core World Server configuration file #
################################################
+[worldserver]
+
# Note to devs, line breaks should be at column 80
###############################################################################
# CONNECTIONS AND DIRECTORIES