$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); } // Validate email if (empty($_SESSION["error_msg"]) && !filter_var($_POST["v_email"], FILTER_VALIDATE_EMAIL)) { $_SESSION["error_msg"] = _("Please enter valid email address."); } // Check password length if (empty($_SESSION["error_msg"])) { if (!validate_password($_POST["v_password"])) { $_SESSION["error_msg"] = _("Password does not match the minimum requirements"); } } // Protect input $v_username = quoteshellarg($_POST["v_username"]); $v_email = quoteshellarg($_POST["v_email"]); $v_package = quoteshellarg($_POST["v_package"]); $v_language = quoteshellarg($_POST["v_language"]); $v_name = quoteshellarg($_POST["v_name"]); $v_notify = $_POST["v_notify"]; // Add user if (empty($_SESSION["error_msg"])) { $v_password = tempnam("/tmp", "vst"); $fp = fopen($v_password, "w"); fwrite($fp, $_POST["v_password"] . "\n"); fclose($fp); exec( HESTIA_CMD . "v-add-user " . $v_username . " " . $v_password . " " . $v_email . " " . $v_package . " " . $v_name, $output, $return_var, ); check_return_code($return_var, $output); unset($output); unlink($v_password); $v_password = quoteshellarg($_POST["v_password"]); } // Set language if (empty($_SESSION["error_msg"])) { exec( HESTIA_CMD . "v-change-user-language " . $v_username . " " . $v_language, $output, $return_var, ); check_return_code($return_var, $output); unset($output); } // Set Role if (empty($_SESSION["error_msg"])) { $v_role = quoteshellarg($_POST["v_role"]); exec( HESTIA_CMD . "v-change-user-role " . $v_username . " " . $v_role, $output, $return_var, ); check_return_code($return_var, $output); unset($output); } // Set login restriction if (empty($_SESSION["error_msg"])) { if (!empty($_POST["v_login_disabled"])) { $_POST["v_login_disabled"] = "yes"; exec( HESTIA_CMD . "v-change-user-config-value " . $v_username . " LOGIN_DISABLED " . quoteshellarg($_POST["v_login_disabled"]), $output, $return_var, ); check_return_code($return_var, $output); unset($output); } } // Send email to the new user if (empty($_SESSION["error_msg"]) && !empty($v_notify)) { $to = $_POST["v_notify"]; // send email in "users" language putenv("LANGUAGE=" . $_POST["v_language"]); $subject = _("Welcome to Hestia Control Panel"); $hostname = get_hostname(); unset($output); $from = "noreply@" . $hostname; $from_name = _("Hestia Control Panel"); if (!empty($_POST["v_name"])) { $mailtext = sprintf(_("GREETINGS_GORDON"), $_POST["v_name"]) . "\r\n"; } else { $mailtext = _("GREETINGS") . "\r\n"; } $mailtext .= sprintf( _("ACCOUNT_READY"), $_SERVER["HTTP_HOST"], $_POST["v_username"], $_POST["v_password"], ); send_email($to, $subject, $mailtext, $from, $from_name, $_POST["name"]); putenv("LANGUAGE=" . detect_user_language()); } // Flush field values on success if (empty($_SESSION["error_msg"])) { $_SESSION["ok_msg"] = sprintf( _("USER_CREATED_OK"), htmlentities($_POST["v_username"]), htmlentities($_POST["v_username"]), ); $_SESSION["ok_msg"] .= " / " . _("login as") . " " . htmlentities($_POST["v_username"]) . ""; unset($v_username); unset($v_password); unset($v_email); unset($v_name); unset($v_notify); } } // List hosting packages exec(HESTIA_CMD . "v-list-user-packages json", $output, $return_var); check_error($return_var); $data = json_decode(implode("", $output), true); unset($output); // List languages exec(HESTIA_CMD . "v-list-sys-languages json", $output, $return_var); $language = json_decode(implode("", $output), true); foreach ($language as $lang) { $languages[$lang] = translate_json($lang); } asort($languages); if (empty($v_username)) { $v_username = ""; } if (empty($v_name)) { $v_name = ""; } if (empty($v_email)) { $v_email = ""; } if (empty($v_password)) { $v_password = ""; } if (empty($v_login_disabled)) { $v_login_disabled = ""; } if (empty($v_role)) { $v_role = ""; } if (empty($v_notify)) { $v_notify = ""; } // Render page render_page($user, $TAB, "add_user"); // Flush session messages unset($_SESSION["error_msg"]); unset($_SESSION["ok_msg"]);