mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
228 lines
4.9 KiB
C++
228 lines
4.9 KiB
C++
/* EQEMu: Everquest Server Emulator
|
|
Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net)
|
|
|
|
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; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY except by those people which sell it, which
|
|
are required to give you total support for your newly bought product;
|
|
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
|
|
*/
|
|
#ifndef __EQEmuConfig_H
|
|
#define __EQEmuConfig_H
|
|
|
|
#include "xml_parser.h"
|
|
#include "linked_list.h"
|
|
|
|
struct LoginConfig {
|
|
std::string LoginHost;
|
|
std::string LoginAccount;
|
|
std::string LoginPassword;
|
|
uint16 LoginPort;
|
|
};
|
|
|
|
class EQEmuConfig : public XMLParser {
|
|
public:
|
|
virtual std::string GetByName(const std::string &var_name) const;
|
|
|
|
// From <world/>
|
|
std::string ShortName;
|
|
std::string LongName;
|
|
std::string WorldAddress;
|
|
std::string LocalAddress;
|
|
std::string LoginHost;
|
|
std::string LoginAccount;
|
|
std::string LoginPassword;
|
|
uint16 LoginPort;
|
|
uint32 LoginCount;
|
|
LinkedList<LoginConfig*> loginlist;
|
|
bool Locked;
|
|
uint16 WorldTCPPort;
|
|
std::string WorldIP;
|
|
bool TelnetEnabled;
|
|
int32 MaxClients;
|
|
bool WorldHTTPEnabled;
|
|
uint16 WorldHTTPPort;
|
|
std::string WorldHTTPMimeFile;
|
|
std::string SharedKey;
|
|
|
|
// From <chatserver/>
|
|
std::string ChatHost;
|
|
uint16 ChatPort;
|
|
|
|
// From <mailserver/>
|
|
std::string MailHost;
|
|
uint16 MailPort;
|
|
|
|
// From <database/>
|
|
std::string DatabaseHost;
|
|
std::string DatabaseUsername;
|
|
std::string DatabasePassword;
|
|
std::string DatabaseDB;
|
|
uint16 DatabasePort;
|
|
|
|
// From <qsdatabase> // QueryServ
|
|
std::string QSDatabaseHost;
|
|
std::string QSDatabaseUsername;
|
|
std::string QSDatabasePassword;
|
|
std::string QSDatabaseDB;
|
|
uint16 QSDatabasePort;
|
|
|
|
// From <files/>
|
|
std::string SpellsFile;
|
|
std::string OpCodesFile;
|
|
std::string EQTimeFile;
|
|
std::string LogSettingsFile;
|
|
|
|
// From <directories/>
|
|
std::string MapDir;
|
|
std::string QuestDir;
|
|
std::string PluginDir;
|
|
|
|
// From <launcher/>
|
|
std::string LogPrefix;
|
|
std::string LogSuffix;
|
|
std::string ZoneExe;
|
|
uint32 RestartWait;
|
|
uint32 TerminateWait;
|
|
uint32 InitialBootWait;
|
|
uint32 ZoneBootInterval;
|
|
|
|
// From <zones/>
|
|
uint16 ZonePortLow;
|
|
uint16 ZonePortHigh;
|
|
uint8 DefaultStatus;
|
|
|
|
// uint16 DynamicCount;
|
|
|
|
// map<string,uint16> StaticZones;
|
|
|
|
protected:
|
|
|
|
static EQEmuConfig *_config;
|
|
|
|
static std::string ConfigFile;
|
|
|
|
#define ELEMENT(name) \
|
|
void do_##name(TiXmlElement *ele);
|
|
#include "eqemu_config_elements.h"
|
|
|
|
|
|
EQEmuConfig() {
|
|
// import the needed handler prototypes
|
|
#define ELEMENT(name) \
|
|
Handlers[#name]=(ElementHandler)&EQEmuConfig::do_##name;
|
|
#include "eqemu_config_elements.h"
|
|
|
|
// Set sane defaults
|
|
|
|
// Login server
|
|
LoginHost="eqemulator.net";
|
|
LoginPort=5998;
|
|
|
|
// World
|
|
Locked=false;
|
|
WorldTCPPort=9000;
|
|
TelnetEnabled=false;
|
|
WorldHTTPEnabled=false;
|
|
WorldHTTPPort=9080;
|
|
WorldHTTPMimeFile="mime.types";
|
|
SharedKey = ""; //blank disables authentication
|
|
|
|
// Mail
|
|
ChatHost="eqchat.eqemulator.net";
|
|
ChatPort=7778;
|
|
|
|
// Mail
|
|
MailHost="eqmail.eqemulator.net";
|
|
MailPort=7779;
|
|
|
|
// Mysql
|
|
DatabaseHost="localhost";
|
|
DatabasePort=3306;
|
|
DatabaseUsername="eq";
|
|
DatabasePassword="eq";
|
|
DatabaseDB="eq";
|
|
|
|
// QueryServ Database
|
|
QSDatabaseHost="localhost";
|
|
QSDatabasePort=3306;
|
|
QSDatabaseUsername="eq";
|
|
QSDatabasePassword="eq";
|
|
QSDatabaseDB="eq";
|
|
|
|
// Files
|
|
SpellsFile="spells_us.txt";
|
|
OpCodesFile="opcodes.conf";
|
|
EQTimeFile="eqtime.cfg";
|
|
LogSettingsFile="log.ini";
|
|
|
|
// Dirs
|
|
MapDir="Maps";
|
|
QuestDir="quests";
|
|
PluginDir="plugins";
|
|
|
|
// Launcher
|
|
LogPrefix = "logs/zone-";
|
|
LogSuffix = ".log";
|
|
RestartWait = 10000; //milliseconds
|
|
TerminateWait = 10000; //milliseconds
|
|
InitialBootWait = 20000; //milliseconds
|
|
ZoneBootInterval = 2000; //milliseconds
|
|
#ifdef WIN32
|
|
ZoneExe = "zone.exe";
|
|
#else
|
|
ZoneExe = "./zone";
|
|
#endif
|
|
|
|
// Zones
|
|
ZonePortLow=7000;
|
|
ZonePortHigh=7999;
|
|
DefaultStatus=0;
|
|
|
|
// For where zones need to connect to.
|
|
WorldIP="127.0.0.1";
|
|
|
|
// Dynamics to start
|
|
//DynamicCount=5;
|
|
|
|
MaxClients=-1;
|
|
|
|
LoginCount=0;
|
|
|
|
}
|
|
virtual ~EQEmuConfig() {}
|
|
|
|
public:
|
|
|
|
// Produce a const singleton
|
|
static const EQEmuConfig *get() {
|
|
if (_config == nullptr)
|
|
LoadConfig();
|
|
return(_config);
|
|
}
|
|
|
|
// Allow the use to set the conf file to be used.
|
|
static void SetConfigFile(std::string file) { EQEmuConfig::ConfigFile = file; }
|
|
|
|
// Load the config
|
|
static bool LoadConfig() {
|
|
if (_config != nullptr)
|
|
delete _config;
|
|
_config=new EQEmuConfig;
|
|
|
|
return _config->ParseFile(EQEmuConfig::ConfigFile.c_str(),"server");
|
|
}
|
|
|
|
void Dump() const;
|
|
};
|
|
|
|
#endif
|