triggers.admin.inc.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. if (isset($_POST["verify_tfa_login"])) {
  3. if (verify_tfa_login($_SESSION['pending_mailcow_cc_username'], $_POST)) {
  4. if ($_SESSION['pending_mailcow_cc_role'] == "admin") {
  5. $_SESSION['mailcow_cc_username'] = $_SESSION['pending_mailcow_cc_username'];
  6. $_SESSION['mailcow_cc_role'] = "admin";
  7. unset($_SESSION['pending_mailcow_cc_username']);
  8. unset($_SESSION['pending_mailcow_cc_role']);
  9. unset($_SESSION['pending_tfa_methods']);
  10. // If pending actions exist, redirect to /admin to show modal
  11. if (!empty($_SESSION['pending_tfa_setup']) || !empty($_SESSION['pending_pw_update'])) {
  12. header("Location: /admin");
  13. die();
  14. }
  15. header("Location: /admin/dashboard");
  16. die();
  17. }
  18. }
  19. unset($_SESSION['pending_mailcow_cc_username']);
  20. unset($_SESSION['pending_mailcow_cc_role']);
  21. unset($_SESSION['pending_tfa_methods']);
  22. }
  23. if (isset($_POST["verify_fido2_login"])) {
  24. $res = fido2(array(
  25. "action" => "verify",
  26. "token" => $_POST["token"],
  27. "user" => "admin"
  28. ));
  29. if (is_array($res) && $res['role'] == "admin" && !empty($res['username'])){
  30. $_SESSION["mailcow_cc_username"] = $res['username'];
  31. $_SESSION["mailcow_cc_role"] = $res['role'];
  32. $_SESSION["fido2_cid"] = $res['cid'];
  33. }
  34. exit;
  35. }
  36. if (isset($_GET["cancel_tfa_login"])) {
  37. unset($_SESSION['pending_pw_reset_token']);
  38. unset($_SESSION['pending_pw_new_password']);
  39. unset($_SESSION['pending_mailcow_cc_username']);
  40. unset($_SESSION['pending_mailcow_cc_role']);
  41. unset($_SESSION['pending_tfa_methods']);
  42. header("Location: /admin");
  43. }
  44. if (isset($_GET["cancel_tfa_setup"])) {
  45. session_regenerate_id(true);
  46. session_unset();
  47. session_destroy();
  48. session_write_close();
  49. header("Location: /admin");
  50. exit();
  51. }
  52. if (isset($_POST["login_user"]) && isset($_POST["pass_user"])) {
  53. $login_user = strtolower(trim($_POST["login_user"]));
  54. $as = check_login($login_user, $_POST["pass_user"], array("role" => "admin", "service" => "MAILCOWUI"));
  55. if ($as == "admin") {
  56. session_regenerate_id(true);
  57. $_SESSION['mailcow_cc_username'] = $login_user;
  58. $_SESSION['mailcow_cc_role'] = "admin";
  59. // If pending actions exist, redirect to /admin to show modal
  60. if (!empty($_SESSION['pending_tfa_setup']) || !empty($_SESSION['pending_pw_update'])) {
  61. header("Location: /admin");
  62. die();
  63. }
  64. header("Location: /admin/dashboard");
  65. die();
  66. }
  67. elseif ($as != "pending") {
  68. unset($_SESSION['pending_mailcow_cc_username']);
  69. unset($_SESSION['pending_mailcow_cc_role']);
  70. unset($_SESSION['pending_tfa_methods']);
  71. unset($_SESSION['mailcow_cc_username']);
  72. unset($_SESSION['mailcow_cc_role']);
  73. }
  74. }
  75. if (isset($_SESSION['mailcow_cc_role']) && $_SESSION['mailcow_cc_role'] == "admin" && !isset($_SESSION['mailcow_cc_api'])) {
  76. // TODO: Move file upload to API?
  77. if (isset($_POST["submit_main_logo"])) {
  78. if ($_FILES['main_logo']['error'] == 0) {
  79. customize('add', 'main_logo', $_FILES);
  80. }
  81. if ($_FILES['main_logo_dark']['error'] == 0) {
  82. customize('add', 'main_logo_dark', $_FILES);
  83. }
  84. }
  85. if (isset($_POST["reset_main_logo"])) {
  86. customize('delete', 'main_logo');
  87. customize('delete', 'main_logo_dark');
  88. }
  89. // Some actions will not be available via API
  90. if (isset($_POST["license_validate_now"])) {
  91. license('verify');
  92. }
  93. if (isset($_POST["admin_api"])) {
  94. if (isset($_POST["admin_api"]["ro"])) {
  95. admin_api('ro', 'edit', $_POST);
  96. }
  97. elseif (isset($_POST["admin_api"]["rw"])) {
  98. admin_api('rw', 'edit', $_POST);
  99. }
  100. }
  101. if (isset($_POST["admin_api_regen_key"])) {
  102. if (isset($_POST["admin_api_regen_key"]["ro"])) {
  103. admin_api('ro', 'regen_key', $_POST);
  104. }
  105. elseif (isset($_POST["admin_api_regen_key"]["rw"])) {
  106. admin_api('rw', 'regen_key', $_POST);
  107. }
  108. }
  109. if (isset($_POST["rspamd_ui"])) {
  110. rspamd_ui('edit', $_POST);
  111. }
  112. if (isset($_POST["mass_send"])) {
  113. sys_mail($_POST);
  114. }
  115. }
  116. ?>