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.
148 lines
3.1 KiB
148 lines
3.1 KiB
<?php
|
|
use function Hestiacp\quoteshellarg\quoteshellarg;
|
|
|
|
$TAB = "WEB";
|
|
|
|
// Main include
|
|
include $_SERVER["DOCUMENT_ROOT"] . "/inc/main.php";
|
|
|
|
// Prepare values
|
|
if (!empty($_GET["domain"])) {
|
|
$v_domain = $_GET["domain"];
|
|
} else {
|
|
$v_domain = "example.tld";
|
|
}
|
|
|
|
$v_aliases = "";
|
|
$v_email = "";
|
|
$v_country = "US";
|
|
$v_state = "California";
|
|
$v_locality = "San Francisco";
|
|
$v_org = "MyCompany Inc.";
|
|
$v_org_unit = "IT";
|
|
|
|
// Back uri
|
|
$_SESSION["back"] = "";
|
|
|
|
// Check POST
|
|
if (!isset($_POST["generate"])) {
|
|
render_page($user, $TAB, "generate_ssl");
|
|
exit();
|
|
}
|
|
|
|
// Check token
|
|
verify_csrf($_POST);
|
|
|
|
// Check input
|
|
if (empty($_POST["v_domain"])) {
|
|
$errors[] = _("Domain");
|
|
}
|
|
if (empty($_POST["v_country"])) {
|
|
$errors[] = _("Country");
|
|
}
|
|
if (empty($_POST["v_state"])) {
|
|
$errors[] = _("State");
|
|
}
|
|
if (empty($_POST["v_locality"])) {
|
|
$errors[] = _("City");
|
|
}
|
|
if (empty($_POST["v_org"])) {
|
|
$errors[] = _("Organization");
|
|
}
|
|
$v_domain = $_POST["v_domain"];
|
|
$v_aliases = $_POST["v_aliases"];
|
|
$v_email = $_POST["v_email"];
|
|
$v_country = $_POST["v_country"];
|
|
$v_state = $_POST["v_state"];
|
|
$v_locality = $_POST["v_locality"];
|
|
$v_org = $_POST["v_org"];
|
|
|
|
// Check for errors
|
|
if (!empty($errors[0])) {
|
|
foreach ($errors as $i => $error) {
|
|
if ($i == 0) {
|
|
$error_msg = $error;
|
|
} else {
|
|
$error_msg = $error_msg . ", " . $error;
|
|
}
|
|
}
|
|
$_SESSION["error_msg"] = sprintf(_('Field "%s" can not be blank.'), $error_msg);
|
|
render_page($user, $TAB, "generate_ssl");
|
|
unset($_SESSION["error_msg"]);
|
|
exit();
|
|
}
|
|
|
|
// Protect input
|
|
$v_domain = quoteshellarg($_POST["v_domain"]);
|
|
$waliases = preg_replace("/\n/", " ", $_POST["v_aliases"]);
|
|
$waliases = preg_replace("/,/", " ", $waliases);
|
|
$waliases = preg_replace("/\s+/", " ", $waliases);
|
|
$waliases = trim($waliases);
|
|
$aliases = explode(" ", $waliases);
|
|
$v_aliases = quoteshellarg(str_replace(" ", "\n", $waliases));
|
|
|
|
$v_email = quoteshellarg($_POST["v_email"]);
|
|
$v_country = quoteshellarg($_POST["v_country"]);
|
|
$v_state = quoteshellarg($_POST["v_state"]);
|
|
$v_locality = quoteshellarg($_POST["v_locality"]);
|
|
$v_org = quoteshellarg($_POST["v_org"]);
|
|
|
|
exec(
|
|
HESTIA_CMD .
|
|
"v-generate-ssl-cert " .
|
|
$v_domain .
|
|
" " .
|
|
$v_email .
|
|
" " .
|
|
$v_country .
|
|
" " .
|
|
$v_state .
|
|
" " .
|
|
$v_locality .
|
|
" " .
|
|
$v_org .
|
|
" IT " .
|
|
$v_aliases .
|
|
" json",
|
|
$output,
|
|
$return_var,
|
|
);
|
|
|
|
// Revert to raw values
|
|
$v_domain = $_POST["v_domain"];
|
|
$v_email = $_POST["v_email"];
|
|
$v_country = $_POST["v_country"];
|
|
$v_state = $_POST["v_state"];
|
|
$v_locality = $_POST["v_locality"];
|
|
$v_org = $_POST["v_org"];
|
|
|
|
// Check return code
|
|
if ($return_var != 0) {
|
|
$error = implode("<br>", $output);
|
|
if (empty($error)) {
|
|
$error = sprintf(_("Error code: %s"), $return_var);
|
|
}
|
|
$_SESSION["error_msg"] = $error;
|
|
render_page($user, $TAB, "generate_ssl");
|
|
unset($_SESSION["error_msg"]);
|
|
exit();
|
|
}
|
|
|
|
// OK message
|
|
$_SESSION["ok_msg"] = _("Certificate has been generated successfully.");
|
|
|
|
// Parse output
|
|
$data = json_decode(implode("", $output), true);
|
|
unset($output);
|
|
$v_crt = $data[$v_domain]["CRT"];
|
|
$v_key = $data[$v_domain]["KEY"];
|
|
$v_csr = $data[$v_domain]["CSR"];
|
|
|
|
// Back uri
|
|
$_SESSION["back"] = $_SERVER["REQUEST_URI"];
|
|
|
|
// Render page
|
|
render_page($user, $TAB, "list_ssl");
|
|
|
|
unset($_SESSION["ok_msg"]);
|