Blame


1 4db75ba3 2022-09-05 mischa <?php
2 4db75ba3 2022-09-05 mischa //
3 4db75ba3 2022-09-05 mischa // OpenSMTPD Admin
4 4db75ba3 2022-09-05 mischa // by Mischa Peters <mischa at high5 dot nl>
5 4db75ba3 2022-09-05 mischa // Copyright (c) 2022 High5!
6 4db75ba3 2022-09-05 mischa // License Info: LICENSE.TXT
7 4db75ba3 2022-09-05 mischa //
8 4db75ba3 2022-09-05 mischa // File: domain.php
9 4db75ba3 2022-09-05 mischa //
10 4db75ba3 2022-09-05 mischa // Template File: domain.tpl
11 4db75ba3 2022-09-05 mischa //
12 4db75ba3 2022-09-05 mischa // Template Variables:
13 4db75ba3 2022-09-05 mischa //
14 4db75ba3 2022-09-05 mischa // action
15 4db75ba3 2022-09-05 mischa // message
16 4db75ba3 2022-09-05 mischa // domain
17 4db75ba3 2022-09-05 mischa // description
18 4db75ba3 2022-09-05 mischa // aliases
19 4db75ba3 2022-09-05 mischa // mailboxes
20 4db75ba3 2022-09-05 mischa //
21 4db75ba3 2022-09-05 mischa // POST / GET Variables:
22 4db75ba3 2022-09-05 mischa //
23 4db75ba3 2022-09-05 mischa // domain
24 4db75ba3 2022-09-05 mischa // description
25 4db75ba3 2022-09-05 mischa // aliases
26 4db75ba3 2022-09-05 mischa // mailboxes
27 4db75ba3 2022-09-05 mischa //
28 4db75ba3 2022-09-05 mischa require_once './functions.inc.php';
29 4db75ba3 2022-09-05 mischa include './languages/' . check_language() . '.lang';
30 4db75ba3 2022-09-05 mischa
31 4db75ba3 2022-09-05 mischa $SESSID_USERNAME = check_session();
32 1575a178 2022-09-06 mischa $ROLE = check_role($SESSID_USERNAME);
33 4db75ba3 2022-09-05 mischa
34 080e0cc0 2022-09-05 mischa if ($ROLE != ADMIN_ROLE) {
35 4db75ba3 2022-09-05 mischa header("Location: list-domain.php");
36 4db75ba3 2022-09-05 mischa die();
37 4db75ba3 2022-09-05 mischa }
38 4db75ba3 2022-09-05 mischa
39 4db75ba3 2022-09-05 mischa $list_domains = list_domains();
40 4db75ba3 2022-09-05 mischa
41 4db75ba3 2022-09-05 mischa if ($_SERVER['REQUEST_METHOD'] == "GET") {
42 4db75ba3 2022-09-05 mischa $action = filter_input(INPUT_GET, 'action', FILTER_DEFAULT) ?? 'add';
43 4db75ba3 2022-09-05 mischa if ($action == 'edit') {
44 4db75ba3 2022-09-05 mischa $domain = filter_input(INPUT_GET, 'domain', FILTER_VALIDATE_DOMAIN);
45 4db75ba3 2022-09-05 mischa $domain_key = array_search($domain, array_column($list_domains, 'domain'));
46 4db75ba3 2022-09-05 mischa $description = $list_domains[$domain_key]['description'];
47 4db75ba3 2022-09-05 mischa $aliases = $list_domains[$domain_key]['aliases'];
48 4db75ba3 2022-09-05 mischa $mailboxes = $list_domains[$domain_key]['mailboxes'];
49 4db75ba3 2022-09-05 mischa }
50 4db75ba3 2022-09-05 mischa }
51 4db75ba3 2022-09-05 mischa
52 4db75ba3 2022-09-05 mischa if ($_SERVER['REQUEST_METHOD'] == "POST") {
53 4db75ba3 2022-09-05 mischa $action = filter_input(INPUT_GET, 'action', FILTER_DEFAULT) ?? 'add';
54 4db75ba3 2022-09-05 mischa $domain = strtolower(filter_input(INPUT_POST, 'domain', FILTER_VALIDATE_DOMAIN));
55 4db75ba3 2022-09-05 mischa $description = filter_input(INPUT_POST, 'description', FILTER_CALLBACK, array('options' => 'htmlspecialchars'));
56 4db75ba3 2022-09-05 mischa $aliases = filter_input(INPUT_POST, 'aliases', FILTER_VALIDATE_INT);
57 4db75ba3 2022-09-05 mischa $mailboxes = filter_input(INPUT_POST, 'mailboxes', FILTER_VALIDATE_INT);
58 4db75ba3 2022-09-05 mischa
59 4db75ba3 2022-09-05 mischa if (!in_array($domain, array_column($list_domains, 'domain'))) {
60 4db75ba3 2022-09-05 mischa try {
61 4db75ba3 2022-09-05 mischa $dbh = pdo_connect();
62 4db75ba3 2022-09-05 mischa $sth = $dbh->prepare("INSERT INTO domain (domain,description,aliases,mailboxes,created,modified) VALUES (?,?,?,?,NOW(),NOW())");
63 4db75ba3 2022-09-05 mischa $sth->bindParam(1, $domain, PDO::PARAM_STR);
64 4db75ba3 2022-09-05 mischa $sth->bindParam(2, $description, PDO::PARAM_STR);
65 4db75ba3 2022-09-05 mischa $sth->bindParam(3, $aliases, PDO::PARAM_INT);
66 4db75ba3 2022-09-05 mischa $sth->bindParam(4, $mailboxes, PDO::PARAM_INT);
67 4db75ba3 2022-09-05 mischa $sth->execute();
68 4db75ba3 2022-09-05 mischa $message = $LANG['AdminAdd_domain_result_succes'] . "<br />($domain)</br />";
69 4db75ba3 2022-09-05 mischa } catch(PDOException $e) {
70 4db75ba3 2022-09-05 mischa $message = $LANG['AdminAdd_domain_result_error'] . "<br />($domain)<br />";
71 4db75ba3 2022-09-05 mischa }
72 4db75ba3 2022-09-05 mischa } else {
73 4db75ba3 2022-09-05 mischa $message = $LANG['AdminAdd_domain_domain_text_error'];
74 4db75ba3 2022-09-05 mischa }
75 4db75ba3 2022-09-05 mischa
76 4db75ba3 2022-09-05 mischa if (in_array($domain, array_column($list_domains, 'domain')) && $action == 'edit') {
77 4db75ba3 2022-09-05 mischa try {
78 4db75ba3 2022-09-05 mischa $dbh = pdo_connect();
79 4db75ba3 2022-09-05 mischa $sth = $dbh->prepare("UPDATE domain SET description=?,aliases=?,mailboxes=?,modified=NOW() WHERE domain=?");
80 4db75ba3 2022-09-05 mischa $sth->bindParam(1, $description, PDO::PARAM_STR);
81 4db75ba3 2022-09-05 mischa $sth->bindParam(2, $aliases, PDO::PARAM_INT);
82 4db75ba3 2022-09-05 mischa $sth->bindParam(3, $mailboxes, PDO::PARAM_INT);
83 4db75ba3 2022-09-05 mischa $sth->bindParam(4, $domain, PDO::PARAM_STR);
84 4db75ba3 2022-09-05 mischa $sth->execute();
85 4db75ba3 2022-09-05 mischa header("Location: list-domain.php");
86 4db75ba3 2022-09-05 mischa } catch(PDOException $e) {
87 4db75ba3 2022-09-05 mischa $message = $LANG['AdminEdit_domain_result_error'];
88 4db75ba3 2022-09-05 mischa }
89 4db75ba3 2022-09-05 mischa }
90 4db75ba3 2022-09-05 mischa }
91 4db75ba3 2022-09-05 mischa
92 4db75ba3 2022-09-05 mischa include './templates/header.tpl';
93 4db75ba3 2022-09-05 mischa include './templates/menu.tpl';
94 4db75ba3 2022-09-05 mischa include './templates/domain.tpl';
95 4db75ba3 2022-09-05 mischa include './templates/footer.tpl';
96 4db75ba3 2022-09-05 mischa ?>