Start.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include <iostream>
  2. #include <fstream>
  3. #include <Zeit.h>
  4. #include <Datei.h>
  5. #include <Text.h>
  6. #include <Globals.h>
  7. #include <sys/resource.h>
  8. #include <Klient.h>
  9. #include <cstdlib>
  10. #include <csignal>
  11. #include "Server.h"
  12. FactoryCraftServer* mserver = 0;
  13. void exit()
  14. {
  15. std::cout << "Der Server wird beendet...\n";
  16. if( mserver )
  17. mserver->close();
  18. }
  19. int main()
  20. {
  21. struct rlimit core_limits;
  22. core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
  23. setrlimit( RLIMIT_CORE, &core_limits );
  24. Framework::initFramework();
  25. Zeit* z = getZeit();
  26. Text* pfad = new Text( "log/" );
  27. pfad->append( z->getZeit( "y-m-d_h-i-s.log" ) );
  28. z->release();
  29. DateiPfadErstellen( pfad->getText() );
  30. std::ofstream file;
  31. file.open( pfad->getText() );
  32. std::streambuf* sbuf = std::cout.rdbuf();
  33. //std::cout.rdbuf( file.rdbuf() );
  34. pfad->release();
  35. std::cout << "Startet...\n";
  36. std::cout << "Lese init Datei fcInit.ini ...\n";
  37. InitDatei* dat = new InitDatei( "fcInit.ini" );
  38. if( !dat->laden() )
  39. {
  40. std::cout << "error: Datei konnte nicht gelesen werden. Das Programm wird geschlossen.\n";
  41. dat->release();
  42. file.close();
  43. std::cout.rdbuf( sbuf );
  44. exit( 1 );
  45. }
  46. const char* wichtig[] = { "SSLPort", "SSLCert", "SSLKey", "SSLPasswort", "Port" };
  47. for( const char* w : wichtig )
  48. {
  49. if( !dat->wertExistiert( w ) )
  50. {
  51. std::cout << "error: Der Wert '" << w << "' wurde nicht gefunden. Das Programm wird geschlossen.\n";
  52. dat->release();
  53. file.close();
  54. std::cout.rdbuf( sbuf );
  55. exit( 1 );
  56. }
  57. }
  58. mserver = new FactoryCraftServer( dat );
  59. std::atexit( exit );
  60. signal( SIGTERM, exit );
  61. signal( SIGSEGV, exit );
  62. signal( SIGILL, exit );
  63. signal( SIGABRT, exit );
  64. signal( SIGFPE, exit );
  65. signal( SIGINT, exit );
  66. std::cout << "Der Server läuft. Startforgang beendet.\n";
  67. mserver->run();
  68. mserver->release();
  69. mserver = 0;
  70. dat->release();
  71. std::cout << "Der Server ist heruntergefahren.\n";
  72. file.close();
  73. std::cout.rdbuf( sbuf );
  74. Framework::releaseFramework();
  75. return 0;
  76. }