aboutsummaryrefslogtreecommitdiff
path: root/src/server/authserver/Main.cpp
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2014-11-10 20:57:39 +0000
committerDDuarte <dnpd.dd@gmail.com>2014-11-10 20:57:39 +0000
commit90c53e8c84b6a7b4346bda8087be8d14d0902d1a (patch)
tree440106833555d60ebf7a3a042449fd80250c2e2f /src/server/authserver/Main.cpp
parente90ef4fa24a1da7f4d7433a1522e5cb43ef68d29 (diff)
Core: Nuke authserver
It has been replaced by bnetserver since grunt was deprecated
Diffstat (limited to 'src/server/authserver/Main.cpp')
-rw-r--r--src/server/authserver/Main.cpp233
1 files changed, 0 insertions, 233 deletions
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp
deleted file mode 100644
index 5f08ebe3127..00000000000
--- a/src/server/authserver/Main.cpp
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/**
-* @file main.cpp
-* @brief Authentication Server main program
-*
-* This file contains the main program for the
-* authentication server
-*/
-
-#include "AuthSocketMgr.h"
-#include "Common.h"
-#include "Config.h"
-#include "DatabaseEnv.h"
-#include "Log.h"
-#include "ProcessPriority.h"
-#include "RealmList.h"
-#include "SystemConfig.h"
-#include "Util.h"
-#include <cstdlib>
-#include <iostream>
-#include <boost/date_time/posix_time/posix_time.hpp>
-#include <boost/program_options.hpp>
-#include <openssl/opensslv.h>
-#include <openssl/crypto.h>
-
-using boost::asio::ip::tcp;
-using namespace boost::program_options;
-
-#ifndef _TRINITY_REALM_CONFIG
-# define _TRINITY_REALM_CONFIG "authserver.conf"
-#endif
-
-bool StartDB();
-void StopDB();
-void SignalHandler(const boost::system::error_code& error, int signalNumber);
-void KeepDatabaseAliveHandler(const boost::system::error_code& error);
-variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile);
-
-boost::asio::io_service _ioService;
-boost::asio::deadline_timer _dbPingTimer(_ioService);
-uint32 _dbPingInterval;
-LoginDatabaseWorkerPool LoginDatabase;
-
-int main(int argc, char** argv)
-{
- std::string configFile = _TRINITY_REALM_CONFIG;
- auto vm = GetConsoleArguments(argc, argv, configFile);
- // exit if help is enabled
- if (vm.count("help"))
- return 0;
-
- std::string configError;
- if (!sConfigMgr->LoadInitial(configFile, configError))
- {
- printf("Error in config file: %s\n", configError.c_str());
- return 1;
- }
-
- TC_LOG_INFO("server.authserver", "%s (authserver)", _FULLVERSION);
- TC_LOG_INFO("server.authserver", "<Ctrl-C> to stop.\n");
- TC_LOG_INFO("server.authserver", "Using configuration file %s.", configFile.c_str());
- TC_LOG_INFO("server.authserver", "Using SSL version: %s (library: %s)", OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION));
- TC_LOG_INFO("server.authserver", "Using Boost version: %i.%i.%i", BOOST_VERSION / 100000, BOOST_VERSION / 100 % 1000, BOOST_VERSION % 100);
-
- // authserver PID file creation
- std::string pidFile = sConfigMgr->GetStringDefault("PidFile", "");
- if (!pidFile.empty())
- {
- if (uint32 pid = CreatePIDFile(pidFile))
- TC_LOG_INFO("server.authserver", "Daemon PID: %u\n", pid);
- else
- {
- TC_LOG_ERROR("server.authserver", "Cannot create PID file %s.\n", pidFile.c_str());
- return 1;
- }
- }
-
- // Initialize the database connection
- if (!StartDB())
- return 1;
-
- // Get the list of realms for the server
- sRealmList->Initialize(_ioService, sConfigMgr->GetIntDefault("RealmsStateUpdateDelay", 20));
-
- if (sRealmList->size() == 0)
- {
- TC_LOG_ERROR("server.authserver", "No valid realms specified.");
- StopDB();
- return 1;
- }
-
- // Start the listening port (acceptor) for auth connections
- int32 port = sConfigMgr->GetIntDefault("RealmServerPort", 3724);
- if (port < 0 || port > 0xFFFF)
- {
- TC_LOG_ERROR("server.authserver", "Specified port out of allowed range (1-65535)");
- StopDB();
- return 1;
- }
-
- std::string bindIp = sConfigMgr->GetStringDefault("BindIP", "0.0.0.0");
-
- sAuthSocketMgr.StartNetwork(_ioService, bindIp, port);
-
- // Set signal handlers
- boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM);
-#if PLATFORM == PLATFORM_WINDOWS
- signals.add(SIGBREAK);
-#endif
- signals.async_wait(SignalHandler);
-
- // Set process priority according to configuration settings
- SetProcessPriority("server.authserver");
-
- // Enabled a timed callback for handling the database keep alive ping
- _dbPingInterval = sConfigMgr->GetIntDefault("MaxPingTime", 30);
- _dbPingTimer.expires_from_now(boost::posix_time::minutes(_dbPingInterval));
- _dbPingTimer.async_wait(KeepDatabaseAliveHandler);
-
- // Start the io service worker loop
- _ioService.run();
-
- // Close the Database Pool and library
- StopDB();
-
- TC_LOG_INFO("server.authserver", "Halting process...");
- return 0;
-}
-
-
-/// Initialize connection to the database
-bool StartDB()
-{
- MySQL::Library_Init();
-
- std::string dbstring = sConfigMgr->GetStringDefault("LoginDatabaseInfo", "");
- if (dbstring.empty())
- {
- TC_LOG_ERROR("server.authserver", "Database not specified");
- return false;
- }
-
- int32 worker_threads = sConfigMgr->GetIntDefault("LoginDatabase.WorkerThreads", 1);
- if (worker_threads < 1 || worker_threads > 32)
- {
- TC_LOG_ERROR("server.authserver", "Improper value specified for LoginDatabase.WorkerThreads, defaulting to 1.");
- worker_threads = 1;
- }
-
- int32 synch_threads = sConfigMgr->GetIntDefault("LoginDatabase.SynchThreads", 1);
- if (synch_threads < 1 || synch_threads > 32)
- {
- TC_LOG_ERROR("server.authserver", "Improper value specified for LoginDatabase.SynchThreads, defaulting to 1.");
- synch_threads = 1;
- }
-
- // NOTE: While authserver is singlethreaded you should keep synch_threads == 1. Increasing it is just silly since only 1 will be used ever.
- if (!LoginDatabase.Open(dbstring, uint8(worker_threads), uint8(synch_threads)))
- {
- TC_LOG_ERROR("server.authserver", "Cannot connect to database");
- return false;
- }
-
- TC_LOG_INFO("server.authserver", "Started auth database connection pool.");
- sLog->SetRealmId(0); // Enables DB appenders when realm is set.
- return true;
-}
-
-/// Close the connection to the database
-void StopDB()
-{
- LoginDatabase.Close();
- MySQL::Library_End();
-}
-
-void SignalHandler(const boost::system::error_code& error, int /*signalNumber*/)
-{
- if (!error)
- _ioService.stop();
-}
-
-void KeepDatabaseAliveHandler(const boost::system::error_code& error)
-{
- if (!error)
- {
- TC_LOG_INFO("server.authserver", "Ping MySQL to keep connection alive");
- LoginDatabase.KeepAlive();
-
- _dbPingTimer.expires_from_now(boost::posix_time::minutes(_dbPingInterval));
- _dbPingTimer.async_wait(KeepDatabaseAliveHandler);
- }
-}
-
-variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile)
-{
- options_description all("Allowed options");
- all.add_options()
- ("help,h", "print usage message")
- ("config,c", value<std::string>(&configFile)->default_value(_TRINITY_REALM_CONFIG), "use <arg> as configuration file")
- ;
- variables_map variablesMap;
- try
- {
- store(command_line_parser(argc, argv).options(all).allow_unregistered().run(), variablesMap);
- notify(variablesMap);
- }
- catch (std::exception& e) {
- std::cerr << e.what() << "\n";
- }
-
- if (variablesMap.count("help")) {
- std::cout << all << "\n";
- }
-
- return variablesMap;
-}