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
8 386bf42a 2022-08-18 mischa // File: edit-alias.php
10 386bf42a 2022-08-18 mischa // Template File: edit-alias.tpl
12 386bf42a 2022-08-18 mischa // Template Variables:
14 e6bb18d3 2022-09-04 mischa // message
17 ff6266ff 2022-09-05 mischa // POST / GET Variables:
19 e6bb18d3 2022-09-04 mischa // address
23 e6bb18d3 2022-09-04 mischa require_once './functions.inc.php';
24 e6bb18d3 2022-09-04 mischa include './languages/' . check_language() . '.lang';
26 386bf42a 2022-08-18 mischa $SESSID_USERNAME = check_session();
27 1575a178 2022-09-06 mischa $ROLE = check_role($SESSID_USERNAME);
29 080e0cc0 2022-09-05 mischa if ($ROLE == ADMIN_ROLE) {
30 ff6266ff 2022-09-05 mischa $list_domains = list_domains();
31 ff6266ff 2022-09-05 mischa $list_admins = list_admins();
33 ff6266ff 2022-09-05 mischa $list_domains = list_domains($SESSID_USERNAME);
36 386bf42a 2022-08-18 mischa if ($_SERVER['REQUEST_METHOD'] == "GET") {
37 e6bb18d3 2022-09-04 mischa $address = filter_input(INPUT_GET, 'address', FILTER_VALIDATE_EMAIL);
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'));
41 aa2ebed3 2022-09-06 mischa if (in_array($domain, array_column($list_domains, 'domain'))) {
43 759223e7 2022-09-04 mischa $dbh = pdo_connect();
44 826796d1 2022-09-04 mischa $sth = $dbh->prepare("SELECT goto FROM alias WHERE address=? AND domain=?");
45 826796d1 2022-09-04 mischa $sth->bindParam(1, $address, PDO::PARAM_STR);
46 826796d1 2022-09-04 mischa $sth->bindParam(2, $domain, PDO::PARAM_STR);
47 826796d1 2022-09-04 mischa $sth->execute();
48 826796d1 2022-09-04 mischa $goto = $sth->fetch(PDO::FETCH_COLUMN);
49 826796d1 2022-09-04 mischa $goto = explode(',', $goto);
50 826796d1 2022-09-04 mischa } catch(PDOException $e) {
51 826796d1 2022-09-04 mischa $message = $LANG['Edit_alias_address_error'];
56 386bf42a 2022-08-18 mischa if ($_SERVER['REQUEST_METHOD'] == "POST") {
57 e6bb18d3 2022-09-04 mischa $address = strtolower(filter_input(INPUT_GET, 'address', FILTER_VALIDATE_EMAIL));
58 e6bb18d3 2022-09-04 mischa $domain = strtolower(filter_input(INPUT_GET, 'domain', FILTER_VALIDATE_DOMAIN));
59 e6bb18d3 2022-09-04 mischa $goto = strtolower(filter_input(INPUT_POST, 'goto', FILTER_DEFAULT));
60 e6bb18d3 2022-09-04 mischa $domain_key = array_search($domain, array_column($list_domains, 'domain'));
62 e6bb18d3 2022-09-04 mischa if (empty($goto)) {
63 e6bb18d3 2022-09-04 mischa $goto = array();
64 e6bb18d3 2022-09-04 mischa $message = $LANG['Edit_alias_goto_text_error1'];
66 e6bb18d3 2022-09-04 mischa $goto = preg_replace('/\\\r\\\n/', ',', $goto);
67 e6bb18d3 2022-09-04 mischa $goto = preg_replace('/\r\n/', ',', $goto);
68 e6bb18d3 2022-09-04 mischa $goto = preg_replace('/[\s]+/i', '', $goto);
69 e6bb18d3 2022-09-04 mischa $goto = preg_replace('/\,*$/', '', $goto);
70 e6bb18d3 2022-09-04 mischa $validate_goto = explode(',', $goto);
71 e6bb18d3 2022-09-04 mischa foreach ($validate_goto as $row) {
72 e6bb18d3 2022-09-04 mischa if (!filter_var($row, FILTER_VALIDATE_EMAIL)) {
73 e6bb18d3 2022-09-04 mischa $goto = explode(',', $goto);
74 e6bb18d3 2022-09-04 mischa $message = $LANG['Edit_alias_goto_text_error2'] . "$row</div>";
79 aa2ebed3 2022-09-06 mischa if (empty($message) && in_array($domain, array_column($list_domains, 'domain'))) {
81 759223e7 2022-09-04 mischa $dbh = pdo_connect();
82 e6bb18d3 2022-09-04 mischa $sth = $dbh->prepare("UPDATE alias SET goto=?,modified=NOW() WHERE address=? AND domain=?");
83 e6bb18d3 2022-09-04 mischa $sth->bindParam(1, $goto, PDO::PARAM_STR);
84 e6bb18d3 2022-09-04 mischa $sth->bindParam(2, $address, PDO::PARAM_STR);
85 e6bb18d3 2022-09-04 mischa $sth->bindParam(3, $domain, PDO::PARAM_STR);
86 e6bb18d3 2022-09-04 mischa $sth->execute();
87 080e0cc0 2022-09-05 mischa logging($SESSID_USERNAME, $domain, $LANG['Logging_alias_edit'], "$address -> $goto");
88 e6bb18d3 2022-09-04 mischa header("Location: list-virtual.php?domain=$domain");
89 e6bb18d3 2022-09-04 mischa } catch(PDOException $e) {
90 e6bb18d3 2022-09-04 mischa $message = $LANG['Edit_alias_result_error'];
94 e6bb18d3 2022-09-04 mischa include './templates/header.tpl';
95 ff6266ff 2022-09-05 mischa include './templates/menu.tpl';
96 e6bb18d3 2022-09-04 mischa include './templates/edit-alias.tpl';
97 e6bb18d3 2022-09-04 mischa include './templates/footer.tpl';