Start.cpp 2.3 KB

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