You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
356 lines
8.4 KiB
356 lines
8.4 KiB
<?php
|
|
use function Hestiacp\quoteshellarg\quoteshellarg;
|
|
|
|
ob_start();
|
|
$TAB = "DNS";
|
|
|
|
// Main include
|
|
include $_SERVER["DOCUMENT_ROOT"] . "/inc/main.php";
|
|
|
|
// Check domain name
|
|
if (empty($_GET["domain"])) {
|
|
header("Location: /list/dns/");
|
|
exit();
|
|
}
|
|
|
|
// Edit as someone else?
|
|
if ($_SESSION["userContext"] === "admin" && !empty($_GET["user"])) {
|
|
$user = quoteshellarg($_GET["user"]);
|
|
$user_plain = htmlentities($_GET["user"]);
|
|
}
|
|
|
|
// List ip addresses
|
|
exec(HESTIA_CMD . "v-list-user-ips " . $user . " json", $output, $return_var);
|
|
$v_ips = json_decode(implode("", $output), true);
|
|
unset($output);
|
|
|
|
// List dns domain
|
|
if (!empty($_GET["domain"]) && empty($_GET["record_id"])) {
|
|
$v_domain = quoteshellarg($_GET["domain"]);
|
|
exec(
|
|
HESTIA_CMD . "v-list-dns-domain " . $user . " " . $v_domain . " json",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code_redirect($return_var, $output, "/list/dns/");
|
|
$data = json_decode(implode("", $output), true);
|
|
unset($output);
|
|
|
|
// Parse dns domain
|
|
$v_username = $user;
|
|
$v_domain = $_GET["domain"];
|
|
$v_ip = $data[$v_domain]["IP"];
|
|
$v_template = $data[$v_domain]["TPL"];
|
|
$v_ttl = $data[$v_domain]["TTL"];
|
|
$v_dnssec = $data[$v_domain]["DNSSEC"];
|
|
$v_exp = $data[$v_domain]["EXP"];
|
|
$v_soa = $data[$v_domain]["SOA"];
|
|
$v_date = $data[$v_domain]["DATE"];
|
|
$v_time = $data[$v_domain]["TIME"];
|
|
$v_suspended = $data[$v_domain]["SUSPENDED"];
|
|
if ($v_suspended == "yes") {
|
|
$v_status = "suspended";
|
|
} else {
|
|
$v_status = "active";
|
|
}
|
|
|
|
// List dns templates
|
|
exec(HESTIA_CMD . "v-list-dns-templates json", $output, $return_var);
|
|
$templates = json_decode(implode("", $output), true);
|
|
unset($output);
|
|
}
|
|
|
|
// List dns record
|
|
if (!empty($_GET["domain"]) && !empty($_GET["record_id"])) {
|
|
$v_domain = quoteshellarg($_GET["domain"]);
|
|
$v_record_id = quoteshellarg($_GET["record_id"]);
|
|
exec(
|
|
HESTIA_CMD . "v-list-dns-records " . $user . " " . $v_domain . " 'json'",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code_redirect($return_var, $output, "/list/dns/");
|
|
$data = json_decode(implode("", $output), true);
|
|
unset($output);
|
|
// Parse dns record
|
|
$v_username = $user;
|
|
$v_domain = $_GET["domain"];
|
|
$v_record_id = $_GET["record_id"];
|
|
$v_rec = $data[$v_record_id]["RECORD"];
|
|
$v_type = $data[$v_record_id]["TYPE"];
|
|
$v_val = $data[$v_record_id]["VALUE"];
|
|
$v_priority = $data[$v_record_id]["PRIORITY"];
|
|
$v_suspended = $data[$v_record_id]["SUSPENDED"];
|
|
if ($v_suspended == "yes") {
|
|
$v_status = "suspended";
|
|
} else {
|
|
$v_status = "active";
|
|
}
|
|
$v_date = $data[$v_record_id]["DATE"];
|
|
$v_time = $data[$v_record_id]["TIME"];
|
|
$v_ttl = $data[$v_record_id]["TTL"];
|
|
}
|
|
|
|
// Check POST request for dns domain
|
|
if (!empty($_POST["save"]) && !empty($_GET["domain"]) && empty($_GET["record_id"])) {
|
|
$v_domain = quoteshellarg($_POST["v_domain"]);
|
|
|
|
// Check token
|
|
verify_csrf($_POST);
|
|
|
|
// Change domain IP
|
|
if ($v_ip != $_POST["v_ip"] && empty($_SESSION["error_msg"])) {
|
|
$v_ip = quoteshellarg($_POST["v_ip"]);
|
|
exec(
|
|
HESTIA_CMD .
|
|
"v-change-dns-domain-ip " .
|
|
$user .
|
|
" " .
|
|
$v_domain .
|
|
" " .
|
|
$v_ip .
|
|
" 'no'",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
$restart_dns = "yes";
|
|
unset($output);
|
|
}
|
|
|
|
// Change domain template
|
|
if ($v_template != $_POST["v_template"] && empty($_SESSION["error_msg"])) {
|
|
$v_template = quoteshellarg($_POST["v_template"]);
|
|
exec(
|
|
HESTIA_CMD .
|
|
"v-change-dns-domain-tpl " .
|
|
$user .
|
|
" " .
|
|
$v_domain .
|
|
" " .
|
|
$v_template .
|
|
" 'no'",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
$restart_dns = "yes";
|
|
}
|
|
|
|
// Change SOA record
|
|
if ($v_soa != $_POST["v_soa"] && empty($_SESSION["error_msg"])) {
|
|
$v_soa = quoteshellarg($_POST["v_soa"]);
|
|
exec(
|
|
HESTIA_CMD .
|
|
"v-change-dns-domain-soa " .
|
|
$user .
|
|
" " .
|
|
$v_domain .
|
|
" " .
|
|
$v_soa .
|
|
" 'no'",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
$restart_dns = "yes";
|
|
}
|
|
|
|
// Change expiration date
|
|
if ($v_exp != $_POST["v_exp"] && empty($_SESSION["error_msg"])) {
|
|
$v_exp = quoteshellarg($_POST["v_exp"]);
|
|
exec(
|
|
HESTIA_CMD .
|
|
"v-change-dns-domain-exp " .
|
|
$user .
|
|
" " .
|
|
$v_domain .
|
|
" " .
|
|
$v_exp .
|
|
" 'no'",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
}
|
|
|
|
// Change domain ttl
|
|
if ($v_ttl != $_POST["v_ttl"] && empty($_SESSION["error_msg"])) {
|
|
$v_ttl = quoteshellarg($_POST["v_ttl"]);
|
|
exec(
|
|
HESTIA_CMD .
|
|
"v-change-dns-domain-ttl " .
|
|
$user .
|
|
" " .
|
|
$v_domain .
|
|
" " .
|
|
$v_ttl .
|
|
" 'no'",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
$restart_dns = "yes";
|
|
}
|
|
// Change domain dnssec
|
|
if ($_POST["v_dnssec"] == "" && $v_dnssec == "yes" && empty($_SESSION["error_msg"])) {
|
|
exec(
|
|
HESTIA_CMD . "v-change-dns-domain-dnssec " . $user . " " . $v_domain . " 'no'",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
$v_dnssec = "no";
|
|
$restart_dns = "yes";
|
|
}
|
|
|
|
// Change domain dnssec
|
|
if ($_POST["v_dnssec"] == "yes" && $v_dnssec !== "yes" && empty($_SESSION["error_msg"])) {
|
|
exec(
|
|
HESTIA_CMD . "v-change-dns-domain-dnssec " . $user . " " . $v_domain . " 'yes'",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
$v_dnssec = "yes";
|
|
$restart_dns = "yes";
|
|
}
|
|
|
|
// Restart dns server
|
|
if (!empty($restart_dns) && empty($_SESSION["error_msg"])) {
|
|
exec(HESTIA_CMD . "v-restart-dns", $output, $return_var);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
}
|
|
|
|
// Set success message
|
|
if (empty($_SESSION["error_msg"])) {
|
|
$_SESSION["ok_msg"] = _("Changes have been saved.");
|
|
}
|
|
// Restart dns server
|
|
if (empty($_SESSION["error_msg"])) {
|
|
exec(HESTIA_CMD . "v-restart-dns", $output, $return_var);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
}
|
|
}
|
|
|
|
// Check POST request for dns record
|
|
if (!empty($_POST["save"]) && !empty($_GET["domain"]) && !empty($_GET["record_id"])) {
|
|
// Check token
|
|
verify_csrf($_POST);
|
|
|
|
// Protect input
|
|
$v_domain = quoteshellarg($_POST["v_domain"]);
|
|
$v_record_id = quoteshellarg($_POST["v_record_id"]);
|
|
|
|
// Change dns record
|
|
if (
|
|
$v_rec != $_POST["v_rec"] ||
|
|
$v_type != $_POST["v_type"] ||
|
|
$v_val != $_POST["v_val"] ||
|
|
$v_priority != $_POST["v_priority"] ||
|
|
($v_ttl != $_POST["v_ttl"] && empty($_SESSION["error_msg"]))
|
|
) {
|
|
$v_rec = quoteshellarg($_POST["v_rec"]);
|
|
$v_type = quoteshellarg($_POST["v_type"]);
|
|
$v_val = quoteshellarg($_POST["v_val"]);
|
|
$v_priority = quoteshellarg($_POST["v_priority"]);
|
|
$v_ttl = quoteshellarg($_POST["v_ttl"]);
|
|
exec(
|
|
HESTIA_CMD .
|
|
"v-change-dns-record " .
|
|
$user .
|
|
" " .
|
|
$v_domain .
|
|
" " .
|
|
$v_record_id .
|
|
" " .
|
|
$v_rec .
|
|
" " .
|
|
$v_type .
|
|
" " .
|
|
$v_val .
|
|
" " .
|
|
$v_priority .
|
|
" yes " .
|
|
$v_ttl,
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
$v_rec = $_POST["v_rec"];
|
|
$v_type = $_POST["v_type"];
|
|
$v_val = $_POST["v_val"];
|
|
unset($output);
|
|
$restart_dns = "yes";
|
|
}
|
|
|
|
// Change dns record id
|
|
if ($_GET["record_id"] != $_POST["v_record_id"] && empty($_SESSION["error_msg"])) {
|
|
$v_old_record_id = quoteshellarg($_GET["record_id"]);
|
|
exec(
|
|
HESTIA_CMD .
|
|
"v-change-dns-record-id " .
|
|
$user .
|
|
" " .
|
|
$v_domain .
|
|
" " .
|
|
$v_old_record_id .
|
|
" " .
|
|
$v_record_id,
|
|
$output,
|
|
$return_var,
|
|
);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
$restart_dns = "yes";
|
|
}
|
|
|
|
// Restart dns server
|
|
if (!empty($restart_dns) && empty($_SESSION["error_msg"])) {
|
|
exec(HESTIA_CMD . "v-restart-dns", $output, $return_var);
|
|
check_return_code($return_var, $output);
|
|
unset($output);
|
|
}
|
|
|
|
// Set success message
|
|
if (empty($_SESSION["error_msg"])) {
|
|
$_SESSION["ok_msg"] = _("Changes have been saved.");
|
|
}
|
|
|
|
// Change url if record id was changed
|
|
if (empty($_SESSION["error_msg"]) && $_GET["record_id"] != $_POST["v_record_id"]) {
|
|
header(
|
|
"Location: /edit/dns/?domain=" .
|
|
$_GET["domain"] .
|
|
"&record_id=" .
|
|
$_POST["v_record_id"],
|
|
);
|
|
exit();
|
|
}
|
|
}
|
|
|
|
// Render page
|
|
if (empty($_GET["record_id"])) {
|
|
// Display body for dns domain
|
|
render_page($user, $TAB, "edit_dns");
|
|
} else {
|
|
if (empty($data[$_GET["record_id"]])) {
|
|
header("Location: /list/dns/");
|
|
$_SESSION["error_msg"] = _("Error: unknown record ID.");
|
|
}
|
|
// Display body for dns record
|
|
render_page($user, $TAB, "edit_dns_rec");
|
|
}
|
|
|
|
// Flush session messages
|
|
unset($_SESSION["error_msg"]);
|
|
unset($_SESSION["ok_msg"]);
|