Some loginserver refactoring

This commit is contained in:
Akkadius
2015-12-02 13:14:26 -06:00
parent a483d37c26
commit af18377505
8 changed files with 169 additions and 211 deletions
+46 -84
View File
@@ -44,7 +44,7 @@ int main()
RegisterExecutablePlatform(ExePlatformLogin);
set_exception_handler();
//Create our error log, is of format login_<number>.log
/* Start Loginserver log */
time_t current_time = time(nullptr);
std::stringstream log_name(std::stringstream::in | std::stringstream::out);
#ifdef WIN32
@@ -55,92 +55,55 @@ int main()
server_log = new ErrorLog(log_name.str().c_str());
server_log->Log(log_debug, "Logging System Init.");
//Create our subsystem and parse the ini file.
/* Parse out login.ini */
server.config = new Config();
server_log->Log(log_debug, "Config System Init.");
server.config->Parse("login.ini");
//Parse unregistered allowed option.
if(server.config->GetVariable("options", "unregistered_allowed").compare("FALSE") == 0)
{
if (server.config->GetVariable("options", "unregistered_allowed").compare("FALSE") == 0)
server.options.AllowUnregistered(false);
}
//Parse trace option.
if(server.config->GetVariable("options", "trace").compare("TRUE") == 0)
{
if (server.config->GetVariable("options", "trace").compare("TRUE") == 0)
server.options.Trace(true);
}
//Parse trace option.
if(server.config->GetVariable("options", "world_trace").compare("TRUE") == 0)
{
if (server.config->GetVariable("options", "world_trace").compare("TRUE") == 0)
server.options.WorldTrace(true);
}
//Parse packet inc dump option.
if(server.config->GetVariable("options", "dump_packets_in").compare("TRUE") == 0)
{
if (server.config->GetVariable("options", "dump_packets_in").compare("TRUE") == 0)
server.options.DumpInPackets(true);
}
//Parse packet out dump option.
if(server.config->GetVariable("options", "dump_packets_out").compare("TRUE") == 0)
{
if (server.config->GetVariable("options", "dump_packets_out").compare("TRUE") == 0)
server.options.DumpOutPackets(true);
}
//Parse encryption mode option.
std::string mode = server.config->GetVariable("security", "mode");
if(mode.size() > 0)
{
if (mode.size() > 0)
server.options.EncryptionMode(atoi(mode.c_str()));
}
//Parse local network option.
std::string ln = server.config->GetVariable("options", "local_network");
if(ln.size() > 0)
{
server.options.LocalNetwork(ln);
}
std::string local_network = server.config->GetVariable("options", "local_network");
if (local_network.size() > 0)
server.options.LocalNetwork(local_network);
//Parse reject duplicate servers option.
if(server.config->GetVariable("options", "reject_duplicate_servers").compare("TRUE") == 0)
{
if (server.config->GetVariable("options", "reject_duplicate_servers").compare("TRUE") == 0)
server.options.RejectDuplicateServers(true);
}
//Parse account table option.
ln = server.config->GetVariable("schema", "account_table");
if(ln.size() > 0)
{
server.options.AccountTable(ln);
}
local_network = server.config->GetVariable("schema", "account_table");
if (local_network.size() > 0)
server.options.AccountTable(local_network);
//Parse world account table option.
ln = server.config->GetVariable("schema", "world_registration_table");
if(ln.size() > 0)
{
server.options.WorldRegistrationTable(ln);
}
local_network = server.config->GetVariable("schema", "world_registration_table");
if (local_network.size() > 0)
server.options.WorldRegistrationTable(local_network);
//Parse admin world account table option.
ln = server.config->GetVariable("schema", "world_admin_registration_table");
if(ln.size() > 0)
{
server.options.WorldAdminRegistrationTable(ln);
}
local_network = server.config->GetVariable("schema", "world_admin_registration_table");
if (local_network.size() > 0)
server.options.WorldAdminRegistrationTable(local_network);
//Parse world type table option.
ln = server.config->GetVariable("schema", "world_server_type_table");
if(ln.size() > 0)
{
server.options.WorldServerTypeTable(ln);
}
local_network = server.config->GetVariable("schema", "world_server_type_table");
if (local_network.size() > 0)
server.options.WorldServerTypeTable(local_network);
//Create our DB from options.
if(server.config->GetVariable("database", "subsystem").compare("MySQL") == 0)
{
if (server.config->GetVariable("database", "subsystem").compare("MySQL") == 0) {
#ifdef EQEMU_MYSQL_ENABLED
server_log->Log(log_debug, "MySQL Database Init.");
server.db = (Database*)new DatabaseMySQL(
@@ -151,8 +114,7 @@ int main()
server.config->GetVariable("database", "db"));
#endif
}
else if(server.config->GetVariable("database", "subsystem").compare("PostgreSQL") == 0)
{
else if (server.config->GetVariable("database", "subsystem").compare("PostgreSQL") == 0) {
#ifdef EQEMU_POSTGRESQL_ENABLED
server_log->Log(log_debug, "PostgreSQL Database Init.");
server.db = (Database*)new DatabasePostgreSQL(
@@ -164,9 +126,8 @@ int main()
#endif
}
//Make sure our database got created okay, otherwise cleanup and exit.
if(!server.db)
{
/* Make sure our database got created okay, otherwise cleanup and exit. */
if (!server.db) {
server_log->Log(log_error, "Database Initialization Failure.");
server_log->Log(log_debug, "Config System Shutdown.");
delete server.config;
@@ -179,12 +140,10 @@ int main()
//initialize our encryption.
server_log->Log(log_debug, "Encryption Initialize.");
server.eq_crypto = new Encryption();
if(server.eq_crypto->LoadCrypto(server.config->GetVariable("security", "plugin")))
{
if (server.eq_crypto->LoadCrypto(server.config->GetVariable("security", "plugin"))) {
server_log->Log(log_debug, "Encryption Loaded Successfully.");
}
else
{
else {
//We can't run without encryption, cleanup and exit.
server_log->Log(log_error, "Encryption Failed to Load.");
server_log->Log(log_debug, "Database System Shutdown.");
@@ -199,15 +158,16 @@ int main()
//create our server manager.
server_log->Log(log_debug, "Server Manager Initialize.");
server.SM = new ServerManager();
if(!server.SM)
{
server.server_manager = new ServerManager();
if (!server.server_manager) {
//We can't run without a server manager, cleanup and exit.
server_log->Log(log_error, "Server Manager Failed to Start.");
#ifdef WIN32
server_log->Log(log_debug, "Encryption System Shutdown.");
delete server.eq_crypto;
#endif
server_log->Log(log_debug, "Database System Shutdown.");
delete server.db;
server_log->Log(log_debug, "Config System Shutdown.");
@@ -219,17 +179,18 @@ int main()
//create our client manager.
server_log->Log(log_debug, "Client Manager Initialize.");
server.CM = new ClientManager();
if(!server.CM)
{
server.client_manager = new ClientManager();
if (!server.client_manager) {
//We can't run without a client manager, cleanup and exit.
server_log->Log(log_error, "Client Manager Failed to Start.");
server_log->Log(log_debug, "Server Manager Shutdown.");
delete server.SM;
delete server.server_manager;
#ifdef WIN32
server_log->Log(log_debug, "Encryption System Shutdown.");
delete server.eq_crypto;
#endif
server_log->Log(log_debug, "Database System Shutdown.");
delete server.db;
server_log->Log(log_debug, "Config System Shutdown.");
@@ -248,23 +209,24 @@ int main()
#endif
server_log->Log(log_debug, "Server Started.");
while(run_server)
{
while (run_server) {
Timer::SetCurrentTime();
server.CM->Process();
server.SM->Process();
server.client_manager->Process();
server.server_manager->Process();
Sleep(100);
}
server_log->Log(log_debug, "Server Shutdown.");
server_log->Log(log_debug, "Client Manager Shutdown.");
delete server.CM;
delete server.client_manager;
server_log->Log(log_debug, "Server Manager Shutdown.");
delete server.SM;
delete server.server_manager;
#ifdef WIN32
server_log->Log(log_debug, "Encryption System Shutdown.");
delete server.eq_crypto;
#endif
server_log->Log(log_debug, "Database System Shutdown.");
delete server.db;
server_log->Log(log_debug, "Config System Shutdown.");