#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; }