functions.autoconfiguration.inc.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. function autoconfiguration($_action, $_type, $_data = null) {
  3. global $pdo;
  4. global $lang;
  5. switch ($_action) {
  6. case 'edit':
  7. if (!isset($_SESSION['acl']['eas_autoconfig']) || $_SESSION['acl']['eas_autoconfig'] != "1" ) {
  8. $_SESSION['return'] = array(
  9. 'type' => 'danger',
  10. 'log' => array(__FUNCTION__, $_action, $_type, $_data),
  11. 'msg' => 'access_denied'
  12. );
  13. return false;
  14. }
  15. switch ($_type) {
  16. case 'autodiscover':
  17. $objects = (array)$_data['object'];
  18. foreach ($objects as $object) {
  19. if (is_valid_domain_name($object) && hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $object)) {
  20. $exclude_regex = (isset($_data['exclude_regex'])) ? $_data['exclude_regex'] : null;
  21. $exclude_regex = (isset($_data['exclude_regex'])) ? $_data['exclude_regex'] : null;
  22. try {
  23. $stmt = $pdo->prepare("SELECT COUNT(`domain`) AS `domain_c` FROM `autodiscover`
  24. WHERE `domain` = :domain");
  25. $stmt->execute(array(':domain' => $object));
  26. $num_results = $stmt->fetchColumn();
  27. if ($num_results > 0) {
  28. $stmt = $pdo->prepare("SELECT COUNT(`domain`) AS `domain_c` FROM `autodiscover`
  29. WHERE `domain` = :domain");
  30. }
  31. }
  32. catch(PDOException $e) {
  33. $_SESSION['return'] = array(
  34. 'type' => 'danger',
  35. 'log' => array(__FUNCTION__, $_action, $_type, $_data),
  36. 'msg' => array('mysql_error', $e)
  37. );
  38. return false;
  39. }
  40. }
  41. elseif (filter_var($object, FILTER_VALIDATE_EMAIL) === true && hasMailboxObjectAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $object)) {
  42. }
  43. }
  44. $_SESSION['return'] = array(
  45. 'type' => 'success',
  46. 'log' => array(__FUNCTION__, $_action, $_type, $_data),
  47. 'msg' => array('domain_modified', htmlspecialchars(implode(', ', $objects)))
  48. );
  49. break;
  50. }
  51. break;
  52. case 'get':
  53. switch ($_type) {
  54. case 'autodiscover':
  55. $autodiscover = array();
  56. if (is_valid_domain_name($_data) && hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $_data)) {
  57. try {
  58. $stmt = $pdo->prepare("SELECT * FROM `autodiscover`
  59. WHERE `domain` = :domain");
  60. $stmt->execute(array(':domain' => $_data));
  61. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  62. while($row = array_shift($rows)) {
  63. $autodiscover['mailbox'] = $row['mailbox'];
  64. $autodiscover['domain'] = $row['domain'];
  65. $autodiscover['service'] = $row['service'];
  66. $autodiscover['exclude_regex'] = $row['exclude_regex'];
  67. $autodiscover['created'] = $row['created'];
  68. $autodiscover['modified'] = $row['modified'];
  69. }
  70. }
  71. catch(PDOException $e) {
  72. $_SESSION['return'] = array(
  73. 'type' => 'danger',
  74. 'log' => array(__FUNCTION__, $_action, $_type, $_data),
  75. 'msg' => array('mysql_error', $e)
  76. );
  77. return false;
  78. }
  79. }
  80. elseif (filter_var($_data, FILTER_VALIDATE_EMAIL) === true && hasMailboxObjectAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $_data)) {
  81. try {
  82. $stmt = $pdo->prepare("SELECT * FROM `autodiscover`
  83. WHERE `mailbox` = :mailbox");
  84. $stmt->execute(array(':mailbox' => $_data));
  85. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  86. while($row = array_shift($rows)) {
  87. $autodiscover['mailbox'] = $row['mailbox'];
  88. $autodiscover['domain'] = $row['domain'];
  89. $autodiscover['service'] = $row['service'];
  90. $autodiscover['exclude_regex'] = $row['exclude_regex'];
  91. $autodiscover['created'] = $row['created'];
  92. $autodiscover['modified'] = $row['modified'];
  93. }
  94. }
  95. catch(PDOException $e) {
  96. $_SESSION['return'] = array(
  97. 'type' => 'danger',
  98. 'log' => array(__FUNCTION__, $_action, $_type, $_data),
  99. 'msg' => array('mysql_error', $e)
  100. );
  101. return false;
  102. }
  103. }
  104. return $autodiscover;
  105. break;
  106. }
  107. break;
  108. case 'reset':
  109. switch ($_type) {
  110. case 'autodiscover':
  111. if ($_SESSION['mailcow_cc_role'] != "admin" && $_SESSION['mailcow_cc_role'] != "domainadmin") {
  112. return false;
  113. }
  114. break;
  115. }
  116. break;
  117. }
  118. }