Blame


1 e0b946dd 2022-09-04 mischa <?php
2 e0b946dd 2022-09-04 mischa //
3 e0b946dd 2022-09-04 mischa // OpenSMTPD Admin
4 e0b946dd 2022-09-04 mischa // by Mischa Peters <mischa at high5 dot nl>
5 e0b946dd 2022-09-04 mischa // Copyright (c) 2022 High5!
6 e0b946dd 2022-09-04 mischa // License Info: LICENSE.TXT
7 e0b946dd 2022-09-04 mischa //
8 e6bb18d3 2022-09-04 mischa // File: add-alias.php
9 e0b946dd 2022-09-04 mischa //
10 e6bb18d3 2022-09-04 mischa // Template File: add-alias.tpl
11 e0b946dd 2022-09-04 mischa //
12 e0b946dd 2022-09-04 mischa // Template Variables:
13 e0b946dd 2022-09-04 mischa //
14 e6bb18d3 2022-09-04 mischa // message
15 e6bb18d3 2022-09-04 mischa // address
16 e6bb18d3 2022-09-04 mischa // domain
17 e6bb18d3 2022-09-04 mischa // goto
18 e0b946dd 2022-09-04 mischa //
19 ff6266ff 2022-09-05 mischa // POST / GET Variables:
20 e0b946dd 2022-09-04 mischa //
21 e6bb18d3 2022-09-04 mischa // address
22 e6bb18d3 2022-09-04 mischa // domain
23 e6bb18d3 2022-09-04 mischa // goto
24 e0b946dd 2022-09-04 mischa //
25 e6bb18d3 2022-09-04 mischa require_once './functions.inc.php';
26 e6bb18d3 2022-09-04 mischa include './languages/' . check_language() . '.lang';
27 e0b946dd 2022-09-04 mischa
28 e0b946dd 2022-09-04 mischa $SESSID_USERNAME = check_session();
29 1575a178 2022-09-06 mischa $ROLE = check_role($SESSID_USERNAME);
30 e0b946dd 2022-09-04 mischa
31 080e0cc0 2022-09-05 mischa if ($ROLE == ADMIN_ROLE) {
32 ff6266ff 2022-09-05 mischa $list_domains = list_domains();
33 ff6266ff 2022-09-05 mischa } else {
34 ff6266ff 2022-09-05 mischa $list_domains = list_domains($SESSID_USERNAME);
35 ff6266ff 2022-09-05 mischa }
36 ff6266ff 2022-09-05 mischa
37 e0b946dd 2022-09-04 mischa if ($_SERVER['REQUEST_METHOD'] == "GET") {
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 e0b946dd 2022-09-04 mischa }
41 e0b946dd 2022-09-04 mischa
42 e0b946dd 2022-09-04 mischa if ($_SERVER['REQUEST_METHOD'] == "POST") {
43 e6bb18d3 2022-09-04 mischa $address = strtolower(filter_input(INPUT_POST, 'address', FILTER_DEFAULT));
44 e6bb18d3 2022-09-04 mischa $domain = filter_input(INPUT_POST, 'domain', FILTER_VALIDATE_DOMAIN);
45 e6bb18d3 2022-09-04 mischa $goto = strtolower(filter_input(INPUT_POST, 'goto', FILTER_DEFAULT));
46 e6bb18d3 2022-09-04 mischa $domain_key = array_search($domain, array_column($list_domains, 'domain'));
47 e6bb18d3 2022-09-04 mischa $from = filter_var($address . '@' . $domain, FILTER_VALIDATE_EMAIL);
48 e0b946dd 2022-09-04 mischa
49 e6bb18d3 2022-09-04 mischa if (!str_contains($goto, '@')) {
50 e6bb18d3 2022-09-04 mischa $goto = $goto . "@" . $domain;
51 e0b946dd 2022-09-04 mischa }
52 e6bb18d3 2022-09-04 mischa $goto = filter_var($goto, FILTER_VALIDATE_EMAIL);
53 e0b946dd 2022-09-04 mischa
54 e6bb18d3 2022-09-04 mischa if ($list_domains[$domain_key]['aliases'] != 0 && $list_domains[$domain_key]['alias_count'] >= $list_domains[$domain_key]['aliases']) {
55 16de74e2 2022-09-04 mischa $message = $LANG['Add_alias_address_text_error2'];
56 e0b946dd 2022-09-04 mischa }
57 e0b946dd 2022-09-04 mischa
58 e6bb18d3 2022-09-04 mischa if (empty($address) || empty($goto)) {
59 16de74e2 2022-09-04 mischa $message = $LANG['Add_alias_address_text_error1'];
60 e0b946dd 2022-09-04 mischa }
61 e0b946dd 2022-09-04 mischa
62 aa2ebed3 2022-09-06 mischa if (empty($message) && in_array($domain, array_column($list_domains, 'domain'))) {
63 e6bb18d3 2022-09-04 mischa try {
64 759223e7 2022-09-04 mischa $dbh = pdo_connect();
65 e6bb18d3 2022-09-04 mischa $sth = $dbh->prepare("INSERT INTO alias (address,goto,domain,created,modified) VALUES (?,?,?,NOW(),NOW())");
66 e6bb18d3 2022-09-04 mischa $sth->bindParam(1, $from, PDO::PARAM_STR);
67 e6bb18d3 2022-09-04 mischa $sth->bindParam(2, $goto, PDO::PARAM_STR);
68 e6bb18d3 2022-09-04 mischa $sth->bindParam(3, $domain, PDO::PARAM_STR);
69 e6bb18d3 2022-09-04 mischa $sth->execute();
70 080e0cc0 2022-09-05 mischa logging($SESSID_USERNAME, $domain, $LANG['Logging_alias_add'], "$from -> $goto");
71 16de74e2 2022-09-04 mischa $message = $LANG['Add_alias_result_succes'] . "<br />($from -> $goto)</br />";
72 e6bb18d3 2022-09-04 mischa $address = '';
73 e6bb18d3 2022-09-04 mischa $goto = '';
74 e6bb18d3 2022-09-04 mischa } catch(PDOException $e) {
75 16de74e2 2022-09-04 mischa $message = $LANG['Add_alias_result_error'] . "<br />($from -> $goto)<br />";
76 e0b946dd 2022-09-04 mischa }
77 e0b946dd 2022-09-04 mischa }
78 e0b946dd 2022-09-04 mischa }
79 e6bb18d3 2022-09-04 mischa include './templates/header.tpl';
80 e6bb18d3 2022-09-04 mischa include './templates/menu.tpl';
81 e6bb18d3 2022-09-04 mischa include './templates/add-alias.tpl';
82 e6bb18d3 2022-09-04 mischa include './templates/footer.tpl';
83 e0b946dd 2022-09-04 mischa ?>