Start.cpp 2.0 KB

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