Blame


1 386bf42a 2022-08-18 mischa <?php
2 386bf42a 2022-08-18 mischa //
3 386bf42a 2022-08-18 mischa // OpenSMTPD Admin
4 386bf42a 2022-08-18 mischa // by Mischa Peters <mischa at high5 dot nl>
5 386bf42a 2022-08-18 mischa // Copyright (c) 2022 High5!
6 386bf42a 2022-08-18 mischa // License Info: LICENSE.TXT
7 386bf42a 2022-08-18 mischa //
8 386bf42a 2022-08-18 mischa // File: delete.php
9 386bf42a 2022-08-18 mischa //
10 386bf42a 2022-08-18 mischa // Template File: message.tpl
11 386bf42a 2022-08-18 mischa //
12 386bf42a 2022-08-18 mischa // Template Variables:
13 386bf42a 2022-08-18 mischa //
14 e6bb18d3 2022-09-04 mischa // message
15 386bf42a 2022-08-18 mischa //
16 ff6266ff 2022-09-05 mischa // POST / GET Variables:
17 386bf42a 2022-08-18 mischa //
18 e6bb18d3 2022-09-04 mischa // table
19 e6bb18d3 2022-09-04 mischa // where
20 e6bb18d3 2022-09-04 mischa // delete
21 e6bb18d3 2022-09-04 mischa // domain
22 386bf42a 2022-08-18 mischa //
23 e6bb18d3 2022-09-04 mischa require_once './functions.inc.php';
24 e6bb18d3 2022-09-04 mischa include './languages/' . check_language() . '.lang';
25 386bf42a 2022-08-18 mischa
26 386bf42a 2022-08-18 mischa $SESSID_USERNAME = check_session();
27 1575a178 2022-09-06 mischa $ROLE = check_role($SESSID_USERNAME);
28 386bf42a 2022-08-18 mischa
29 050fa4a1 2022-09-05 mischa if ($ROLE == ADMIN_ROLE) {
30 050fa4a1 2022-09-05 mischa $list_domains = list_domains();
31 050fa4a1 2022-09-05 mischa } else {
32 050fa4a1 2022-09-05 mischa $list_domains = list_domains($SESSID_USERNAME);
33 050fa4a1 2022-09-05 mischa }
34 050fa4a1 2022-09-05 mischa
35 386bf42a 2022-08-18 mischa if ($_SERVER['REQUEST_METHOD'] == "GET") {
36 826796d1 2022-09-04 mischa $table = filter_input(INPUT_GET, 'table', FILTER_DEFAULT);
37 e6bb18d3 2022-09-04 mischa $delete = filter_input(INPUT_GET, 'delete', FILTER_DEFAULT);
38 e6bb18d3 2022-09-04 mischa $domain = filter_input(INPUT_GET, 'domain', FILTER_VALIDATE_DOMAIN);
39 e6bb18d3 2022-09-04 mischa $domain_key = array_search($domain, array_column($list_domains, 'domain'));
40 826796d1 2022-09-04 mischa $domain_exist = in_array($domain, array_column($list_domains, 'domain'));
41 386bf42a 2022-08-18 mischa
42 050fa4a1 2022-09-05 mischa if ($ROLE == ADMIN_ROLE && $domain_exist && $table == "domain") {
43 050fa4a1 2022-09-05 mischa try {
44 050fa4a1 2022-09-05 mischa $dbh = pdo_connect();
45 050fa4a1 2022-09-05 mischa $dbh->beginTransaction();
46 050fa4a1 2022-09-05 mischa
47 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("SELECT COUNT(*) FROM log WHERE domain=?");
48 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
49 050fa4a1 2022-09-05 mischa $count_log = $sth->fetchColumn();
50 050fa4a1 2022-09-05 mischa
51 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("DELETE FROM log WHERE domain=?");
52 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
53 050fa4a1 2022-09-05 mischa if ($sth->rowCount() != $count_log) {
54 050fa4a1 2022-09-05 mischa throw new RuntimeException('Unable to delete entries from the logs table.');
55 050fa4a1 2022-09-05 mischa }
56 050fa4a1 2022-09-05 mischa
57 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("SELECT COUNT(*) FROM vacation WHERE domain=?");
58 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
59 050fa4a1 2022-09-05 mischa $count_vacation = $sth->fetchColumn();
60 050fa4a1 2022-09-05 mischa
61 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("DELETE FROM vacation WHERE domain=?");
62 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
63 050fa4a1 2022-09-05 mischa if ($sth->rowCount() != $count_vacation) {
64 050fa4a1 2022-09-05 mischa throw new RuntimeException('Unable to delete entries from the vacation table.');
65 050fa4a1 2022-09-05 mischa }
66 050fa4a1 2022-09-05 mischa
67 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("SELECT COUNT(*) FROM alias WHERE domain=?");
68 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
69 050fa4a1 2022-09-05 mischa $count_alias = $sth->fetchColumn();
70 050fa4a1 2022-09-05 mischa
71 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("DELETE FROM alias WHERE domain=?");
72 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
73 050fa4a1 2022-09-05 mischa if ($sth->rowCount() != $count_alias) {
74 050fa4a1 2022-09-05 mischa throw new RuntimeException('Unable to delete entries from the alias table.');
75 050fa4a1 2022-09-05 mischa }
76 050fa4a1 2022-09-05 mischa
77 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("SELECT COUNT(*) FROM mailbox WHERE domain=?");
78 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
79 050fa4a1 2022-09-05 mischa $count_mailbox = $sth->fetchColumn();
80 050fa4a1 2022-09-05 mischa
81 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("DELETE FROM mailbox WHERE domain=?");
82 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
83 050fa4a1 2022-09-05 mischa if ($sth->rowCount() != $count_mailbox) {
84 050fa4a1 2022-09-05 mischa throw new RuntimeException('Unable to delete entries from the mailbox table.');
85 050fa4a1 2022-09-05 mischa }
86 050fa4a1 2022-09-05 mischa
87 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("SELECT COUNT(*) FROM domain_admins WHERE domain=?");
88 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
89 050fa4a1 2022-09-05 mischa $count_domain_admins = $sth->fetchColumn();
90 050fa4a1 2022-09-05 mischa
91 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("DELETE FROM domain_admins WHERE domain=?");
92 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
93 050fa4a1 2022-09-05 mischa if ($sth->rowCount() != $count_domain_admins) {
94 050fa4a1 2022-09-05 mischa throw new RuntimeException('Unable to delete entries from the domain_admins table.');
95 050fa4a1 2022-09-05 mischa }
96 050fa4a1 2022-09-05 mischa
97 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("SELECT COUNT(*) FROM domain WHERE domain=?");
98 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
99 050fa4a1 2022-09-05 mischa $count_domain = $sth->fetchColumn();
100 050fa4a1 2022-09-05 mischa
101 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("DELETE FROM domain WHERE domain=?");
102 050fa4a1 2022-09-05 mischa $sth->execute(array($domain));
103 050fa4a1 2022-09-05 mischa if ($sth->rowCount() != $count_domain) {
104 050fa4a1 2022-09-05 mischa throw new RuntimeException('Unable to delete entry from the domain table.');
105 050fa4a1 2022-09-05 mischa }
106 050fa4a1 2022-09-05 mischa
107 050fa4a1 2022-09-05 mischa $dbh->commit();
108 050fa4a1 2022-09-05 mischa header("Location: list-domain.php");
109 050fa4a1 2022-09-05 mischa } catch (RuntimeException $e) {
110 050fa4a1 2022-09-05 mischa $message = $e->getMessage();
111 050fa4a1 2022-09-05 mischa $dbh->rollBack();
112 050fa4a1 2022-09-05 mischa } catch (PDOException $e) {
113 050fa4a1 2022-09-05 mischa $message = $e->getMessage();
114 050fa4a1 2022-09-05 mischa }
115 050fa4a1 2022-09-05 mischa }
116 050fa4a1 2022-09-05 mischa
117 050fa4a1 2022-09-05 mischa if ($ROLE == ADMIN_ROLE && $table == "admin") {
118 050fa4a1 2022-09-05 mischa try {
119 050fa4a1 2022-09-05 mischa $dbh = pdo_connect();
120 050fa4a1 2022-09-05 mischa $dbh->beginTransaction();
121 050fa4a1 2022-09-05 mischa
122 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("SELECT COUNT(*) FROM admin WHERE username=?");
123 050fa4a1 2022-09-05 mischa $sth->execute(array($delete));
124 050fa4a1 2022-09-05 mischa $count_admin = $sth->fetchColumn();
125 050fa4a1 2022-09-05 mischa
126 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("DELETE FROM admin WHERE username=?");
127 050fa4a1 2022-09-05 mischa $sth->execute(array($delete));
128 050fa4a1 2022-09-05 mischa if ($sth->rowCount() != $count_admin) {
129 050fa4a1 2022-09-05 mischa throw new RuntimeException('Unable to delete entry from the admin table.');
130 050fa4a1 2022-09-05 mischa }
131 050fa4a1 2022-09-05 mischa
132 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("SELECT COUNT(*) FROM domain_admins WHERE username=?");
133 050fa4a1 2022-09-05 mischa $sth->execute(array($delete));
134 050fa4a1 2022-09-05 mischa $count_domain_admins = $sth->fetchColumn();
135 050fa4a1 2022-09-05 mischa
136 050fa4a1 2022-09-05 mischa $sth = $dbh->prepare("DELETE FROM domain_admins WHERE username=?");
137 050fa4a1 2022-09-05 mischa $sth->execute(array($delete));
138 050fa4a1 2022-09-05 mischa if ($sth->rowCount() != $count_domain_admins) {
139 050fa4a1 2022-09-05 mischa throw new RuntimeException('Unable to delete entries from the domain_admins table.');
140 050fa4a1 2022-09-05 mischa }
141 050fa4a1 2022-09-05 mischa
142 050fa4a1 2022-09-05 mischa $dbh->commit();
143 050fa4a1 2022-09-05 mischa header("Location: list-admin.php");
144 050fa4a1 2022-09-05 mischa } catch (RuntimeException $e) {
145 050fa4a1 2022-09-05 mischa $message = $e->getMessage();
146 050fa4a1 2022-09-05 mischa $dbh->rollBack();
147 050fa4a1 2022-09-05 mischa } catch (PDOException $e) {
148 050fa4a1 2022-09-05 mischa $message = $e->getMessage();
149 050fa4a1 2022-09-05 mischa $dbh->rollBack();
150 050fa4a1 2022-09-05 mischa }
151 050fa4a1 2022-09-05 mischa }
152 050fa4a1 2022-09-05 mischa
153 826796d1 2022-09-04 mischa if ($domain_exist && ($table == 'alias' || $table == 'mailbox')) {
154 e6bb18d3 2022-09-04 mischa try {
155 759223e7 2022-09-04 mischa $dbh = pdo_connect();
156 e6bb18d3 2022-09-04 mischa $sth = $dbh->prepare("DELETE FROM alias WHERE address=? AND domain=?");
157 e6bb18d3 2022-09-04 mischa $sth->bindParam(1, $delete, PDO::PARAM_STR);
158 e6bb18d3 2022-09-04 mischa $sth->bindParam(2, $domain, PDO::PARAM_STR);
159 e6bb18d3 2022-09-04 mischa $sth->execute();
160 e6bb18d3 2022-09-04 mischa if ($sth->rowCount() != 1) {
161 e6bb18d3 2022-09-04 mischa throw new RuntimeException('alias');
162 e6bb18d3 2022-09-04 mischa }
163 080e0cc0 2022-09-05 mischa logging($SESSID_USERNAME, $domain, $LANG['Logging_alias_delete'], $delete);
164 386bf42a 2022-08-18 mischa
165 e6bb18d3 2022-09-04 mischa header("Location: list-virtual.php?domain=$domain");
166 e6bb18d3 2022-09-04 mischa } catch (RuntimeException $e) {
167 e6bb18d3 2022-09-04 mischa $message = $LANG['Delete_delete_error'] . "<b>$delete</b> (" . $e->getMessage() . ")!</span>";
168 e6bb18d3 2022-09-04 mischa } catch (PDOException $e) {
169 e6bb18d3 2022-09-04 mischa $message = $LANG['Delete_delete_error'] . "<b>$delete</b> (alias)!</span> " . $e-getMessage();
170 386bf42a 2022-08-18 mischa }
171 386bf42a 2022-08-18 mischa
172 e6bb18d3 2022-09-04 mischa try {
173 759223e7 2022-09-04 mischa $dbh = pdo_connect();
174 e6bb18d3 2022-09-04 mischa $sth = $dbh->prepare("DELETE FROM mailbox WHERE username=? AND domain=?");
175 e6bb18d3 2022-09-04 mischa $sth->bindParam(1, $delete, PDO::PARAM_STR);
176 e6bb18d3 2022-09-04 mischa $sth->bindParam(2, $domain, PDO::PARAM_STR);
177 e6bb18d3 2022-09-04 mischa $sth->execute();
178 e6bb18d3 2022-09-04 mischa if ($sth->rowCount() != 1) {
179 e6bb18d3 2022-09-04 mischa throw new RuntimeException('mailbox');
180 386bf42a 2022-08-18 mischa }
181 080e0cc0 2022-09-05 mischa logging($SESSID_USERNAME, $domain, $LANG['Logging_mailbox_delete'], $delete);
182 386bf42a 2022-08-18 mischa
183 e6bb18d3 2022-09-04 mischa $sth = $dbh->prepare("DELETE FROM vacation WHERE email=? AND domain=?");
184 e6bb18d3 2022-09-04 mischa $sth->bindParam(1, $delete, PDO::PARAM_STR);
185 e6bb18d3 2022-09-04 mischa $sth->bindParam(2, $domain, PDO::PARAM_STR);
186 e6bb18d3 2022-09-04 mischa $sth->execute();
187 e6bb18d3 2022-09-04 mischa header("Location: list-virtual.php?domain=$domain");
188 e6bb18d3 2022-09-04 mischa } catch (RuntimeException $e) {
189 e6bb18d3 2022-09-04 mischa $message = $LANG['Delete_delete_error'] . "<b>$delete</b> (" . $e->getMessage() . ")!</span>";
190 e6bb18d3 2022-09-04 mischa } catch (PDOException $e) {
191 e6bb18d3 2022-09-04 mischa $message = $LANG['Delete_delete_error'] . "<b>$delete</b> (mailbox)!</span>";
192 e6bb18d3 2022-09-04 mischa }
193 e6bb18d3 2022-09-04 mischa }
194 386bf42a 2022-08-18 mischa }
195 e6bb18d3 2022-09-04 mischa include './templates/header.tpl';
196 e6bb18d3 2022-09-04 mischa include './templates/menu.tpl';
197 e6bb18d3 2022-09-04 mischa include './templates/message.tpl';
198 e6bb18d3 2022-09-04 mischa include './templates/footer.tpl';
199 386bf42a 2022-08-18 mischa ?>