delete.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. require_once("inc/prerequisites.inc.php");
  3. $AuthUsers = array("admin", "domainadmin", "user");
  4. if (!isset($_SESSION['mailcow_cc_role']) OR !in_array($_SESSION['mailcow_cc_role'], $AuthUsers)) {
  5. header('Location: /');
  6. exit();
  7. }
  8. require_once("inc/header.inc.php");
  9. ?>
  10. <div class="container">
  11. <div class="row">
  12. <div class="col-md-12">
  13. <div class="panel panel-default">
  14. <div class="panel-heading">
  15. <h3 class="panel-title"><?=$lang['delete']['title'];?></h3>
  16. </div>
  17. <div class="panel-body">
  18. <?php
  19. if (isset($_SESSION['mailcow_cc_role']) && ($_SESSION['mailcow_cc_role'] == "admin" || $_SESSION['mailcow_cc_role'] == "domainadmin")) {
  20. // DELETE DOMAIN
  21. if (isset($_GET["domain"]) &&
  22. is_valid_domain_name($_GET["domain"]) &&
  23. !empty($_GET["domain"]) &&
  24. $_SESSION['mailcow_cc_role'] == "admin") {
  25. $domain = $_GET["domain"];
  26. ?>
  27. <div class="alert alert-warning" role="alert"><?=sprintf($lang['delete']['remove_domain_warning'], htmlspecialchars($_GET["domain"]));?></div>
  28. <p><?=$lang['delete']['remove_domain_details'];?></p>
  29. <form class="form-horizontal" role="form" method="post" action="/mailbox.php">
  30. <input type="hidden" name="domain" value="<?php echo htmlspecialchars($domain) ?>">
  31. <div class="form-group">
  32. <div class="col-sm-offset-1 col-sm-10">
  33. <button type="submit" name="trigger_mailbox_action" value="deletedomain" class="btn btn-default btn-sm"><?=$lang['delete']['remove_button'];?></button>
  34. </div>
  35. </div>
  36. </form>
  37. <?php
  38. }
  39. // DELETE ALIAS
  40. elseif (isset($_GET["alias"]) &&
  41. (filter_var($_GET["alias"], FILTER_VALIDATE_EMAIL) || is_valid_domain_name(substr(strrchr($_GET["alias"], "@"), 1))) &&
  42. !empty($_GET["alias"])) {
  43. $domain = substr(strrchr($_GET["alias"], "@"), 1);
  44. if (hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) {
  45. ?>
  46. <div class="alert alert-warning" role="alert"><?=sprintf($lang['delete']['remove_alias_warning'], htmlspecialchars($_GET["alias"]));?></div>
  47. <p><?=$lang['delete']['remove_alias_details'];?></p>
  48. <form class="form-horizontal" role="form" method="post" action="/mailbox.php">
  49. <input type="hidden" name="address" value="<?php echo htmlspecialchars($_GET["alias"]) ?>">
  50. <div class="form-group">
  51. <div class="col-sm-offset-1 col-sm-10">
  52. <button type="submit" name="trigger_mailbox_action" value="deletealias" class="btn btn-default btn-sm"><?=$lang['delete']['remove_button'];?></button>
  53. </div>
  54. </div>
  55. </form>
  56. <?php
  57. }
  58. else {
  59. ?>
  60. <div class="alert alert-info" role="alert"><?=$lang['info']['no_action'];?></div>
  61. <?php
  62. }
  63. }
  64. // DELETE ALIAS DOMAIN
  65. elseif (
  66. isset($_GET["aliasdomain"]) &&
  67. is_valid_domain_name($_GET["aliasdomain"]) &&
  68. !empty($_GET["aliasdomain"])) {
  69. $alias_domain = strtolower(trim($_GET["aliasdomain"]));
  70. try {
  71. $stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain`
  72. WHERE `alias_domain`= :alias_domain");
  73. $stmt->execute(array(':alias_domain' => $alias_domain));
  74. $DomainData = $stmt->fetch(PDO::FETCH_ASSOC);
  75. }
  76. catch(PDOException $e) {
  77. $_SESSION['return'] = array(
  78. 'type' => 'danger',
  79. 'msg' => 'MySQL: '.$e
  80. );
  81. }
  82. if (hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $DomainData['target_domain'])) {
  83. ?>
  84. <div class="alert alert-warning" role="alert"><?=sprintf($lang['delete']['remove_domainalias_warning'], htmlspecialchars($_GET["aliasdomain"]));?></div>
  85. <form class="form-horizontal" role="form" method="post" action="/mailbox.php">
  86. <input type="hidden" name="alias_domain" value="<?php echo htmlspecialchars($alias_domain) ?>">
  87. <div class="form-group">
  88. <div class="col-sm-offset-1 col-sm-10">
  89. <button type="submit" name="trigger_mailbox_action" value="deletealiasdomain" class="btn btn-default btn-sm"><?=$lang['delete']['remove_button'];?></button>
  90. </div>
  91. </div>
  92. </form>
  93. <?php
  94. }
  95. else {
  96. ?>
  97. <div class="alert alert-info" role="alert"><?=$lang['info']['no_action'];?></div>
  98. <?php
  99. }
  100. }
  101. // DELETE DOMAIN ADMIN
  102. elseif (isset($_GET["domainadmin"]) &&
  103. ctype_alnum(str_replace(array('_', '.', '-'), '', $_GET["domainadmin"])) &&
  104. !empty($_GET["domainadmin"]) &&
  105. $_SESSION['mailcow_cc_role'] == "admin") {
  106. $domain_admin = $_GET["domainadmin"];
  107. ?>
  108. <div class="alert alert-warning" role="alert"><?=sprintf($lang['delete']['remove_domainadmin_warning'], htmlspecialchars($_GET["domainadmin"]));?></div>
  109. <form class="form-horizontal" role="form" method="post" action="/admin.php">
  110. <input type="hidden" name="username" value="<?=htmlspecialchars($domain_admin);?>">
  111. <div class="form-group">
  112. <div class="col-sm-offset-1 col-sm-10">
  113. <button type="submit" name="trigger_delete_domain_admin" class="btn btn-default btn-sm"><?=$lang['delete']['remove_button'];?></button>
  114. </div>
  115. </div>
  116. </form>
  117. <?php
  118. }
  119. // DELETE MAILBOX
  120. elseif (isset($_GET["mailbox"]) &&
  121. filter_var($_GET["mailbox"], FILTER_VALIDATE_EMAIL) &&
  122. !empty($_GET["mailbox"])) {
  123. $mailbox = $_GET["mailbox"];
  124. $domain = substr(strrchr($mailbox, "@"), 1);
  125. if (hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) {
  126. ?>
  127. <div class="alert alert-warning" role="alert"><?=sprintf($lang['delete']['remove_mailbox_warning'], htmlspecialchars($_GET["mailbox"]));?></div>
  128. <p><?=$lang['delete']['remove_mailbox_details'];?></p>
  129. <form class="form-horizontal" role="form" method="post" action="/mailbox.php">
  130. <input type="hidden" name="username" value="<?=htmlspecialchars($mailbox);?>">
  131. <div class="form-group">
  132. <div class="col-sm-offset-1 col-sm-10">
  133. <button type="submit" name="trigger_mailbox_action" value="deletemailbox" class="btn btn-default btn-sm"><?=$lang['delete']['remove_button'];?></button>
  134. </div>
  135. </div>
  136. </form>
  137. <?php
  138. }
  139. else {
  140. ?>
  141. <div class="alert alert-info" role="alert"><?=$lang['info']['no_action'];?></div>
  142. <?php
  143. }
  144. }
  145. else {
  146. ?>
  147. <div class="alert alert-info" role="alert"><?=$lang['info']['no_action'];?></div>
  148. <?php
  149. }
  150. }
  151. elseif (isset($_SESSION['mailcow_cc_role']) && ($_SESSION['mailcow_cc_role'] == "user")) {
  152. // DELETE SYNCJOB
  153. if (isset($_GET["syncjob"]) &&
  154. is_numeric($_GET["syncjob"]) &&
  155. filter_var($_SESSION['mailcow_cc_username'], FILTER_VALIDATE_EMAIL)) {
  156. try {
  157. $stmt = $pdo->prepare("SELECT `user2` FROM `imapsync`
  158. WHERE `id` = :id AND user2 = :user2");
  159. $stmt->execute(array(':id' => $_GET["syncjob"], ':user2' => $_SESSION['mailcow_cc_username']));
  160. $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
  161. }
  162. catch(PDOException $e) {
  163. $_SESSION['return'] = array(
  164. 'type' => 'danger',
  165. 'msg' => 'MySQL: '.$e
  166. );
  167. }
  168. if ($num_results != 0 && !empty($num_results)) {
  169. ?>
  170. <div class="alert alert-warning" role="alert"><?=sprintf($lang['delete']['remove_syncjob_warning'], htmlspecialchars($_SESSION['mailcow_cc_username']));?></div>
  171. <p><?=$lang['delete']['remove_syncjob_details'];?></p>
  172. <form class="form-horizontal" role="form" method="post" action="/user.php">
  173. <input type="hidden" name="username" value="<?=htmlspecialchars($mailbox);?>">
  174. <div class="form-group">
  175. <div class="col-sm-offset-1 col-sm-10">
  176. <input type="hidden" name="id" value="<?=$_GET["syncjob"];?>">
  177. <button type="submit" name="trigger_delete_syncjob" value="1" class="btn btn-default btn-sm"><?=$lang['delete']['remove_button'];?></button>
  178. </div>
  179. </div>
  180. </form>
  181. <?php
  182. }
  183. else {
  184. ?>
  185. <div class="alert alert-info" role="alert"><?=$lang['info']['no_action'];?></div>
  186. <?php
  187. }
  188. }
  189. else {
  190. ?>
  191. <div class="alert alert-info" role="alert"><?=$lang['info']['no_action'];?></div>
  192. <?php
  193. }
  194. }
  195. else {
  196. ?>
  197. <div class="alert alert-danger" role="alert"><?=$lang['danger']['access_denied'];?></div>
  198. <?php
  199. }
  200. ?>
  201. </div>
  202. </div>
  203. </div>
  204. </div>
  205. <a href="<?=$_SESSION['return_to'];?>">&#8592; <?=$lang['delete']['previous'];?></a>
  206. </div> <!-- /container -->
  207. <?php
  208. require_once("inc/footer.inc.php");
  209. ?>