#include #include #include #include #include #include #include #include #include #include #include "Server.h" FactoryCraftServer* mserver = 0; void exit() { std::cout << "Der Server wird beendet...\n"; if (mserver) mserver->close(); } int main() { struct rlimit core_limits; core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY; setrlimit(RLIMIT_CORE, &core_limits); Framework::initFramework(); Zeit* z = getZeit(); Text* pfad = new Text("log/"); pfad->append(z->getZeit("y-m-d_h-i-s.log")); z->release(); DateiPfadErstellen(pfad->getText()); std::ofstream file; file.open(pfad->getText()); std::streambuf* sbuf = std::cout.rdbuf(); //std::cout.rdbuf( file.rdbuf() ); pfad->release(); std::cout << "Startet...\n"; std::cout << "Lese init Datei fcInit.ini ...\n"; InitDatei* dat = new InitDatei("fcInit.ini"); if (!dat->laden()) { std::cout << "error: Datei konnte nicht gelesen werden. Das Programm wird geschlossen.\n"; dat->release(); file.close(); std::cout.rdbuf(sbuf); exit(1); } const char* wichtig[] = { "SSLPort", "SSLCert", "SSLKey", "SSLPasswort", "Port" }; for (const char* w : wichtig) { if (!dat->wertExistiert(w)) { std::cout << "error: Der Wert '" << w << "' wurde nicht gefunden. Das Programm wird geschlossen.\n"; dat->release(); file.close(); std::cout.rdbuf(sbuf); exit(1); } } mserver = new FactoryCraftServer(dat); std::atexit(exit); signal(SIGTERM, exit); signal(SIGSEGV, exit); signal(SIGILL, exit); signal(SIGABRT, exit); signal(SIGFPE, exit); signal(SIGINT, exit); std::cout << "Der Server läuft. Startforgang beendet.\n"; mserver->run(); mserver->release(); mserver = 0; dat->release(); std::cout << "Der Server ist heruntergefahren.\n"; file.close(); std::cout.rdbuf(sbuf); Framework::releaseFramework(); return 0; }