2
0

prerequisites.inc.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/sessions.inc.php';
  3. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/vars.inc.php';
  4. if (file_exists('./inc/vars.local.inc.php')) {
  5. include_once 'inc/vars.local.inc.php';
  6. }
  7. // Yubi OTP API
  8. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/lib/Yubico.php';
  9. // Autoload composer
  10. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/lib/vendor/autoload.php';
  11. // U2F API + T/HOTP API
  12. $u2f = new u2flib_server\U2F('https://' . $_SERVER['HTTP_HOST']);
  13. $tfa = new RobThree\Auth\TwoFactorAuth('mailcow UI');
  14. // Redis
  15. $redis = new Redis();
  16. $redis->connect('redis-mailcow', 6379);
  17. // PDO
  18. // Calculate offset
  19. $now = new DateTime();
  20. $mins = $now->getOffset() / 60;
  21. $sgn = ($mins < 0 ? -1 : 1);
  22. $mins = abs($mins);
  23. $hrs = floor($mins / 60);
  24. $mins -= $hrs * 60;
  25. $offset = sprintf('%+d:%02d', $hrs*$sgn, $mins);
  26. $dsn = $database_type . ":host=" . $database_host . ";dbname=" . $database_name;
  27. $opt = [
  28. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  29. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  30. PDO::ATTR_EMULATE_PREPARES => false,
  31. PDO::MYSQL_ATTR_INIT_COMMAND => "SET time_zone = '" . $offset . "'",
  32. ];
  33. try {
  34. $pdo = new PDO($dsn, $database_user, $database_pass, $opt);
  35. }
  36. catch (PDOException $e) {
  37. ?>
  38. <center style='font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;'>?? Connection failed, database may be in warm-up state, please try again later.<br /><br />The following error was reported:<br/> <?=$e->getMessage();?></center>
  39. <?php
  40. exit;
  41. }
  42. $_SESSION['mailcow_locale'] = strtolower(trim($DEFAULT_LANG));
  43. setcookie('language', $DEFAULT_LANG);
  44. if (isset($_COOKIE['language'])) {
  45. switch ($_COOKIE['language']) {
  46. case "de":
  47. $_SESSION['mailcow_locale'] = 'de';
  48. setcookie('language', 'de');
  49. break;
  50. case "en":
  51. $_SESSION['mailcow_locale'] = 'en';
  52. setcookie('language', 'en');
  53. break;
  54. case "es":
  55. $_SESSION['mailcow_locale'] = 'es';
  56. setcookie('language', 'es');
  57. break;
  58. case "nl":
  59. $_SESSION['mailcow_locale'] = 'nl';
  60. setcookie('language', 'nl');
  61. break;
  62. case "pt":
  63. $_SESSION['mailcow_locale'] = 'pt';
  64. setcookie('language', 'pt');
  65. break;
  66. case "ru":
  67. $_SESSION['mailcow_locale'] = 'ru';
  68. setcookie('language', 'ru');
  69. break;
  70. }
  71. }
  72. if (isset($_GET['lang'])) {
  73. switch ($_GET['lang']) {
  74. case "de":
  75. $_SESSION['mailcow_locale'] = 'de';
  76. setcookie('language', 'de');
  77. break;
  78. case "en":
  79. $_SESSION['mailcow_locale'] = 'en';
  80. setcookie('language', 'en');
  81. break;
  82. case "es":
  83. $_SESSION['mailcow_locale'] = 'es';
  84. setcookie('language', 'es');
  85. break;
  86. case "nl":
  87. $_SESSION['mailcow_locale'] = 'nl';
  88. setcookie('language', 'nl');
  89. break;
  90. case "pt":
  91. $_SESSION['mailcow_locale'] = 'pt';
  92. setcookie('language', 'pt');
  93. break;
  94. case "ru":
  95. $_SESSION['mailcow_locale'] = 'ru';
  96. setcookie('language', 'ru');
  97. break;
  98. }
  99. }
  100. require_once $_SERVER['DOCUMENT_ROOT'] . '/lang/lang.en.php';
  101. include $_SERVER['DOCUMENT_ROOT'] . '/lang/lang.'.$_SESSION['mailcow_locale'].'.php';
  102. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/functions.inc.php';
  103. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/init_db.inc.php';
  104. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/triggers.inc.php';
  105. init_db_schema();