$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); } else { exec('mktemp -d', $mktemp_output, $return_var); $tmpdir = $mktemp_output[0]; // Certificate if (!empty($_POST['v_ssl_crt'])) { $fp = fopen($tmpdir."/".$v_domain.".crt", 'w'); fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_crt'])); fclose($fp); } // Key if (!empty($_POST['v_ssl_key'])) { $fp = fopen($tmpdir."/".$v_domain.".key", 'w'); fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_key'])); fclose($fp); } // CA if (!empty($_POST['v_ssl_ca'])) { $fp = fopen($tmpdir."/".$v_domain.".ca", 'w'); fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_ca'])); fclose($fp); } exec(HESTIA_CMD."v-add-web-domain-ssl ".$user." ".escapeshellarg($v_domain)." ".$tmpdir." ".$v_ssl_home." 'no'", $output, $return_var); check_return_code($return_var, $output); unset($output); $v_ssl = 'yes'; $restart_web = 'yes'; $restart_proxy = 'yes'; exec(HESTIA_CMD."v-list-web-domain-ssl ".$user." ".escapeshellarg($v_domain)." json", $output, $return_var); $ssl_str = json_decode(implode('', $output), true); unset($output); $v_ssl_crt = $ssl_str[$v_domain]['CRT']; $v_ssl_key = $ssl_str[$v_domain]['KEY']; $v_ssl_ca = $ssl_str[$v_domain]['CA']; $v_ssl_subject = $ssl_str[$v_domain]['SUBJECT']; $v_ssl_aliases = $ssl_str[$v_domain]['ALIASES']; $v_ssl_not_before = $ssl_str[$v_domain]['NOT_BEFORE']; $v_ssl_not_after = $ssl_str[$v_domain]['NOT_AFTER']; $v_ssl_signature = $ssl_str[$v_domain]['SIGNATURE']; $v_ssl_pub_key = $ssl_str[$v_domain]['PUB_KEY']; $v_ssl_issuer = $ssl_str[$v_domain]['ISSUER']; // Cleanup certificate tempfiles if (!empty($_POST['v_ssl_crt'])) { unlink($tmpdir."/".$v_domain.".crt"); } if (!empty($_POST['v_ssl_key'])) { unlink($tmpdir."/".$v_domain.".key"); } if (!empty($_POST['v_ssl_ca'])) { unlink($tmpdir."/".$v_domain.".ca"); } rmdir($tmpdir); } } // Add Force SSL if ((!empty($_POST['v_ssl_forcessl'])) && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) { exec(HESTIA_CMD."v-add-web-domain-ssl-force ".$user." ".escapeshellarg($v_domain), $output, $return_var); check_return_code($return_var, $output); unset($output); $v_ssl_forcessl = 'yes'; $restart_web = 'yes'; $restart_proxy = 'yes'; } // Add SSL HSTS if ((!empty($_POST['v_ssl_hsts'])) && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) { exec(HESTIA_CMD."v-add-web-domain-ssl-hsts ".$user." ".escapeshellarg($v_domain), $output, $return_var); check_return_code($return_var, $output); unset($output); $v_ssl_hsts = 'yes'; $restart_web = 'yes'; $restart_proxy = 'yes'; } // Delete Force SSL if (($v_ssl_forcessl == 'yes') && (empty($_POST['v_ssl_forcessl'])) && (empty($_SESSION['error_msg']))) { exec(HESTIA_CMD."v-delete-web-domain-ssl-force ".$user." ".escapeshellarg($v_domain), $output, $return_var); check_return_code($return_var, $output); unset($output); $v_ssl_forcessl = 'no'; $restart_web = 'yes'; $restart_proxy = 'yes'; } // Delete SSL HSTS if (($v_ssl_hsts == 'yes') && (empty($_POST['v_ssl_hsts'])) && (empty($_SESSION['error_msg']))) { exec(HESTIA_CMD."v-delete-web-domain-ssl-hsts ".$user." ".escapeshellarg($v_domain), $output, $return_var); check_return_code($return_var, $output); unset($output); $v_ssl_hsts = 'no'; $restart_web = 'yes'; $restart_proxy = 'yes'; } // Delete web stats if ((!empty($v_stats)) && ($_POST['v_stats'] == 'none') && (empty($_SESSION['error_msg']))) { exec(HESTIA_CMD."v-delete-web-domain-stats ".$user." ".escapeshellarg($v_domain), $output, $return_var); check_return_code($return_var, $output); unset($output); $v_stats = ''; } // Change web stats engine if ((!empty($v_stats)) && ($_POST['v_stats'] != $v_stats) && (empty($_SESSION['error_msg']))) { $v_stats = escapeshellarg($_POST['v_stats']); exec(HESTIA_CMD."v-change-web-domain-stats ".$user." ".escapeshellarg($v_domain)." ".$v_stats, $output, $return_var); check_return_code($return_var, $output); unset($output); } // Add web stats if ((empty($v_stats)) && ($_POST['v_stats'] != 'none') && (empty($_SESSION['error_msg']))) { $v_stats = escapeshellarg($_POST['v_stats']); exec(HESTIA_CMD."v-add-web-domain-stats ".$user." ".escapeshellarg($v_domain)." ".$v_stats, $output, $return_var); check_return_code($return_var, $output); unset($output); } // Delete web stats authorization if ((!empty($v_stats_user)) && (empty($_POST['v_stats_auth'])) && (empty($_SESSION['error_msg']))) { exec(HESTIA_CMD."v-delete-web-domain-stats-user ".$user." ".escapeshellarg($v_domain), $output, $return_var); check_return_code($return_var, $output); unset($output); $v_stats_user = ''; $v_stats_password = ''; } // Change web stats user or password if ((empty($v_stats_user)) && (!empty($_POST['v_stats_auth'])) && (empty($_SESSION['error_msg']))) { if (empty($_POST['v_stats_user'])) { $errors[] = _('stats username'); } 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); } else { $v_stats_user = escapeshellarg($_POST['v_stats_user']); $v_stats_password = tempnam("/tmp", "vst"); $fp = fopen($v_stats_password, "w"); fwrite($fp, $_POST['v_stats_password']."\n"); fclose($fp); exec(HESTIA_CMD."v-add-web-domain-stats-user ".$user." ".escapeshellarg($v_domain)." ".$v_stats_user." ".$v_stats_password, $output, $return_var); check_return_code($return_var, $output); unset($output); unlink($v_stats_password); $v_stats_password = escapeshellarg($_POST['v_stats_password']); } } // Add web stats authorization if ((!empty($v_stats_user)) && (!empty($_POST['v_stats_auth'])) && (empty($_SESSION['error_msg']))) { if (empty($_POST['v_stats_user'])) { $errors[] = _('stats user'); } 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); } if (($v_stats_user != $_POST['v_stats_user']) || (!empty($_POST['v_stats_password'])) && (empty($_SESSION['error_msg']))) { $v_stats_user = escapeshellarg($_POST['v_stats_user']); $v_stats_password = tempnam("/tmp", "vst"); $fp = fopen($v_stats_password, "w"); fwrite($fp, $_POST['v_stats_password']."\n"); fclose($fp); exec(HESTIA_CMD."v-add-web-domain-stats-user ".$user." ".escapeshellarg($v_domain)." ".$v_stats_user." ".$v_stats_password, $output, $return_var); check_return_code($return_var, $output); unset($output); unlink($v_stats_password); $v_stats_password = escapeshellarg($_POST['v_stats_password']); } } // Update ftp account if (!empty($_POST['v_ftp_user'])) { $v_ftp_users_updated = array(); foreach ($_POST['v_ftp_user'] as $i => $v_ftp_user_data) { if (empty($v_ftp_user_data['v_ftp_user'])) { continue; } $v_ftp_user_data['v_ftp_user'] = preg_replace("/^".$user."_/i", "", $v_ftp_user_data['v_ftp_user']); if ($v_ftp_user_data['is_new'] == 1 && !empty($_POST['v_ftp'])) { if ((!empty($v_ftp_user_data['v_ftp_email'])) && (!filter_var($v_ftp_user_data['v_ftp_email'], FILTER_VALIDATE_EMAIL))) { $_SESSION['error_msg'] = _('Please enter valid email address.'); } if (empty($v_ftp_user_data['v_ftp_user'])) { $errors[] = 'ftp user'; } 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); } // Add ftp account $v_ftp_username = $v_ftp_user_data['v_ftp_user']; $v_ftp_username_full = $user . '_' . $v_ftp_user_data['v_ftp_user']; $v_ftp_user = escapeshellarg($v_ftp_username); $v_ftp_path = escapeshellarg(trim($v_ftp_user_data['v_ftp_path'])); if (empty($_SESSION['error_msg'])) { $v_ftp_password = tempnam("/tmp", "vst"); $fp = fopen($v_ftp_password, "w"); fwrite($fp, $v_ftp_user_data['v_ftp_password']."\n"); fclose($fp); exec(HESTIA_CMD."v-add-web-domain-ftp ".$user." ".escapeshellarg($v_domain)." ".$v_ftp_user." ".$v_ftp_password . " " . $v_ftp_path, $output, $return_var); check_return_code($return_var, $output); if ((!empty($v_ftp_user_data['v_ftp_email'])) && (empty($_SESSION['error_msg']))) { $to = $v_ftp_user_data['v_ftp_email']; $subject = _("FTP login credentials"); $hostname = exec('hostname'); $from = "noreply@".$hostname; $from_name = _('Hestia Control Panel'); $mailtext = sprintf(_('FTP_ACCOUNT_READY'), escapeshellarg($_GET['domain']), $user, $v_ftp_username, $v_ftp_user_data['v_ftp_password']); send_email($to, $subject, $mailtext, $from, $from_name); unset($v_ftp_email); } unset($output); unlink($v_ftp_password); $v_ftp_password = escapeshellarg($v_ftp_user_data['v_ftp_password']); } if ($return_var == 0) { $v_ftp_password = ""; $v_ftp_user_data['is_new'] = 0; } else { $v_ftp_user_data['is_new'] = 1; } $v_ftp_users_updated[] = array( 'is_new' => empty($_SESSION['error_msg']) ? 0 : 1, 'v_ftp_user' => $v_ftp_username_full, 'v_ftp_password' => $v_ftp_password, 'v_ftp_path' => $v_ftp_user_data['v_ftp_path'], 'v_ftp_email' => $v_ftp_user_data['v_ftp_email'], 'v_ftp_pre_path' => $v_ftp_user_prepath ); continue; } // Delete FTP account if ($v_ftp_user_data['delete'] == 1) { $v_ftp_username = $user_plain . '_' . $v_ftp_user_data['v_ftp_user']; exec(HESTIA_CMD."v-delete-web-domain-ftp ".$user." ".escapeshellarg($v_domain)." ".escapeshellarg($v_ftp_username), $output, $return_var); check_return_code($return_var, $output); unset($output); continue; } if (!empty($_POST['v_ftp'])) { if (empty($v_ftp_user_data['v_ftp_user'])) { $errors[] = _('ftp user'); } 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); } // Change FTP account path $v_ftp_username_for_emailing = $v_ftp_user_data['v_ftp_user']; $v_ftp_username = $user_plain . '_' . $v_ftp_user_data['v_ftp_user']; //preg_replace("/^".$user."_/", "", $v_ftp_user_data['v_ftp_user']); $v_ftp_username = escapeshellarg($v_ftp_username); $v_ftp_path = escapeshellarg(trim($v_ftp_user_data['v_ftp_path'])); if (escapeshellarg(trim($v_ftp_user_data['v_ftp_path_prev'])) != $v_ftp_path) { exec(HESTIA_CMD."v-change-web-domain-ftp-path ".$user." ".escapeshellarg($v_domain)." ".$v_ftp_username." ".$v_ftp_path, $output, $return_var); check_return_code($return_var, $output); unset($output); } // Change FTP account password if (!empty($v_ftp_user_data['v_ftp_password'])) { $v_ftp_password = tempnam("/tmp", "vst"); $fp = fopen($v_ftp_password, "w"); fwrite($fp, $v_ftp_user_data['v_ftp_password']."\n"); fclose($fp); exec(HESTIA_CMD."v-change-web-domain-ftp-password ".$user." ".escapeshellarg($v_domain)." ".$v_ftp_username." ".$v_ftp_password, $output, $return_var); unlink($v_ftp_password); $to = $v_ftp_user_data['v_ftp_email']; $subject = _("FTP login credentials"); $hostname = exec('hostname'); $from = "noreply@".$hostname; $from_name = _('Hestia Control Panel'); $mailtext = sprintf(_('FTP_ACCOUNT_READY'), escapeshellarg($_GET['domain']), $user, $v_ftp_username_for_emailing, $v_ftp_user_data['v_ftp_password']); send_email($to, $subject, $mailtext, $from, $from_name); unset($v_ftp_email); } if (empty($v_ftp_user_data['v_ftp_email'])) { $v_ftp_user_data['v_ftp_email'] = ''; } $v_ftp_users_updated[] = array( 'is_new' => 0, 'v_ftp_user' => $v_ftp_username, 'v_ftp_password' => $v_ftp_user_data['v_ftp_password'], 'v_ftp_path' => $v_ftp_user_data['v_ftp_path'], 'v_ftp_email' => $v_ftp_user_data['v_ftp_email'], 'v_ftp_pre_path' => $v_ftp_user_prepath ); } } } //custom docoot with check box disabled if (!empty($v_custom_doc_root) && empty($_POST['v_custom_doc_root_check'])) { exec(HESTIA_CMD."v-change-web-domain-docroot ".$user." ".escapeshellarg($v_domain)." default", $output, $return_var); check_return_code($return_var, $output); unset($output); unset($_POST['v-custom-doc-domain'], $_POST['v-custom-doc-folder']); $restart_web = 'yes'; $restart_proxy = 'yes'; } if (!empty($_POST['v-custom-doc-domain']) && !empty($_POST['v_custom_doc_root_check']) && $v_custom_doc_root_prepath.$v_custom_doc_domain.'/public_html'.$v_custom_doc_folder != $v_custom_doc_root) { if ($_POST['v-custom-doc-domain'] == $v_domain && empty($_POST['v-custom-doc-folder'])) { exec(HESTIA_CMD."v-change-web-domain-docroot ".$user." ".escapeshellarg($v_domain)." default", $output, $return_var); check_return_code($return_var, $output); unset($output); } else { $v_custom_doc_folder = escapeshellarg(rtrim($_POST['v-custom-doc-folder'], '/')); $v_custom_doc_domain = escapeshellarg($_POST['v-custom-doc-domain']); exec(HESTIA_CMD."v-change-web-domain-docroot ".$user." ".escapeshellarg($v_domain)." ".$v_custom_doc_domain." ".$v_custom_doc_folder ." yes", $output, $return_var); check_return_code($return_var, $output); unset($output); $v_custom_doc_root = 1; } $restart_web = 'yes'; $restart_proxy = 'yes'; } else { unset($v_custom_doc_root); } if (!empty($v_redirect) && empty($_POST['v-redirect-checkbox'])) { exec(HESTIA_CMD."v-delete-web-domain-redirect ".$user." ".escapeshellarg($v_domain), $output, $return_var); check_return_code($return_var, $output); unset($output); unset($_POST['v-redirect']); $restart_web = 'yes'; $restart_proxy = 'yes'; } if (!empty($_POST['v-redirect']) && !empty($_POST['v-redirect-checkbox'])) { if (empty($v_redirect)) { if ($_POST['v-redirect'] == 'custom' && empty($_POST['v-redirect-custom'])) { } else { if ($_POST['v-redirect'] == 'custom') { $_POST['v-redirect'] = $_POST['v-redirect-custom']; } exec(HESTIA_CMD."v-add-web-domain-redirect ".$user." ".escapeshellarg($v_domain)." ".escapeshellarg($_POST['v-redirect'])." ".escapeshellarg($_POST['v-redirect-code']), $output, $return_var); check_return_code($return_var, $output); unset($output); $restart_web = 'yes'; $restart_proxy = 'yes'; } } else { if ($_POST['v-redirect'] == 'custom') { $_POST['v-redirect'] = $_POST['v-redirect-custom']; } if ($_POST['v-redirect'] != $v_redirect || $_POST['v-redirect-code'] != $v_redirect_code) { exec(HESTIA_CMD."v-add-web-domain-redirect ".$user." ".escapeshellarg($v_domain)." ".escapeshellarg($_POST['v-redirect'])." ".escapeshellarg($_POST['v-redirect-code']), $output, $return_var); check_return_code($return_var, $output); unset($output); $restart_web = 'yes'; $restart_proxy = 'yes'; } } } // Restart web server if (!empty($restart_web) && (empty($_SESSION['error_msg']))) { exec(HESTIA_CMD."v-restart-web", $output, $return_var); check_return_code($return_var, $output); unset($output); } // Restart proxy server if ((!empty($_SESSION['PROXY_SYSTEM'])) && !empty($restart_proxy) && (empty($_SESSION['error_msg']))) { exec(HESTIA_CMD."v-restart-proxy", $output, $return_var); check_return_code($return_var, $output); unset($output); } // 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 has been saved.'); header("Location: /edit/web/?domain=" . $v_domain); exit(); } } $v_ftp_users_raw = explode(':', $v_ftp_user); $v_ftp_users_paths_raw = explode(':', $data[$v_domain]['FTP_PATH']); $v_ftp_users = array(); foreach ($v_ftp_users_raw as $v_ftp_user_index => $v_ftp_user_val) { if (empty($v_ftp_user_val)) { continue; } $v_ftp_users[] = array( 'is_new' => 0, 'v_ftp_user' => preg_replace("/^".$user_plain."_/", "", $v_ftp_user_val), 'v_ftp_password' => $v_ftp_password, 'v_ftp_path' => (isset($v_ftp_users_paths_raw[$v_ftp_user_index]) ? $v_ftp_users_paths_raw[$v_ftp_user_index] : ''), 'v_ftp_email' => $v_ftp_email, 'v_ftp_pre_path' => $v_ftp_user_prepath ); } if (empty($v_ftp_users)) { $v_ftp_user = null; $v_ftp_users[] = array( 'is_new' => 1, 'v_ftp_user' => '', 'v_ftp_password' => '', 'v_ftp_path' => (isset($v_ftp_users_paths_raw[$v_ftp_user_index]) ? $v_ftp_users_paths_raw[$v_ftp_user_index] : ''), 'v_ftp_email' => '', 'v_ftp_pre_path' => $v_ftp_user_prepath ); } // set default pre path for newly created users $v_ftp_pre_path_new_user = $v_ftp_user_prepath; if (isset($v_ftp_users_updated)) { $v_ftp_users = $v_ftp_users_updated; if (empty($v_ftp_users_updated)) { $v_ftp_user = null; $v_ftp_users[] = array( 'is_new' => 1, 'v_ftp_user' => '', 'v_ftp_password' => '', 'v_ftp_path' => (isset($v_ftp_users_paths_raw[$v_ftp_user_index]) ? $v_ftp_users_paths_raw[$v_ftp_user_index] : ''), 'v_ftp_email' => '', 'v_ftp_pre_path' => $v_ftp_user_prepath ); } } // Render page render_page($user, $TAB, 'edit_web'); // Flush session messages unset($_SESSION['error_msg']); unset($_SESSION['ok_msg']);