// Copyright (c) 2022 High5! // License Info: LICENSE.TXT // // File: add-mailbox.php // // Template File: add-mailbox.tpl // // Template Variables: // // message // username // name // domain // // Form POST \ GET Variables: // // username // password1 // password2 // name // domain // require_once '../functions.inc.php'; include '../languages/' . check_language() . '.lang'; $list_domains = list_domains(); $admin = $SESSID_USERNAME ?? ADMIN_EMAIL; if ($_SERVER['REQUEST_METHOD'] == "GET") { $domain = filter_input(INPUT_GET, 'domain', FILTER_VALIDATE_DOMAIN); $domain_key = array_search($domain, array_column($list_domains, 'domain')); $domain_exist = in_array($domain, array_column($list_domains, 'domain')); } if ($_SERVER['REQUEST_METHOD'] == "POST") { $username = strtolower(filter_input(INPUT_POST, 'username', FILTER_DEFAULT)); $domain = filter_input(INPUT_POST, 'domain', FILTER_VALIDATE_DOMAIN); $password1 = filter_input(INPUT_POST, 'password1', FILTER_DEFAULT); $password2 = filter_input(INPUT_POST, 'password2', FILTER_DEFAULT); $name = filter_input(INPUT_POST, 'name', FILTER_DEFAULT); $domain_key = array_search($domain, array_column($list_domains, 'domain')); $domain_exist = in_array($domain, array_column($list_domains, 'domain')); $from = filter_var($username . '@' . $domain, FILTER_VALIDATE_EMAIL); if ($list_domains[$domain_key]['mailboxes'] != 0 && $list_domains[$domain_key]['mailbox_count'] >= $list_domains[$domain_key]['mailboxes']) { $message = $LANG['Create_mailbox_username_text_error3']; } if (empty($username)) { $message = $LANG['Create_mailbox_username_text_error1']; } if (empty($password1) or ($password1 != $password2)) { $message = $LANG['Create_mailbox_password_text_error']; } if ($domain_exist && empty($message)) { $hashed = bcrypt($password1); $maildir = $from . "/"; try { $dbh = connect_db(); $sth = $dbh->prepare("INSERT INTO alias (address,goto,domain,created,modified) VALUES (?,'vmail',?,NOW(),NOW())"); $sth->bindParam(1, $from, PDO::PARAM_STR); $sth->bindParam(2, $domain, PDO::PARAM_STR); $sth->execute(); $username = ''; } catch(PDOException $e) { $message = $LANG['Create_alias_result_error'] . "
($from) - $e
"; } try { $dbh = connect_db(); $sth = $dbh->prepare("INSERT INTO mailbox (username,password,name,maildir,domain,created,modified) VALUES (?,?,?,?,?,NOW(),NOW())"); $sth->bindParam(1, $from, PDO::PARAM_STR); $sth->bindParam(2, $hashed, PDO::PARAM_STR); $sth->bindParam(3, $name, PDO::PARAM_STR); $sth->bindParam(4, $maildir, PDO::PARAM_STR); $sth->bindParam(5, $domain, PDO::PARAM_STR); $sth->execute(); logging($admin, $domain, "create mailbox", "$from"); $message = $LANG['Create_mailbox_result_succes'] . "
($from)"; $username = ''; $name = ''; } catch(PDOException $e) { $message = $LANG['Create_alias_result_error'] . "
($from) - $e
"; } } } include '../templates/header.tpl'; include '../templates/admin_menu.tpl'; include '../templates/add-mailbox.tpl'; include '../templates/footer.tpl'; ?>