diff --git a/web/add/web/index.php b/web/add/web/index.php
index 0c13cf58..63d8d792 100644
--- a/web/add/web/index.php
+++ b/web/add/web/index.php
@@ -4,277 +4,350 @@ error_reporting(NULL);
ob_start();
session_start();
$TAB = 'WEB';
+
include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+// Check POST request
+if (!empty($_POST['ok'])) {
+
+ // Check for empty fields
+ if (empty($_POST['v_domain'])) $errors[] = __('domain');
+ if (empty($_POST['v_ip'])) $errors[] = __('ip');
+ if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_crt']))) $errors[] = __('ssl certificate');
+ if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_key']))) $errors[] = __('ssl key');
+ if (!empty($errors[0])) {
+ foreach ($errors as $i => $error) {
+ if ( $i == 0 ) {
+ $error_msg = $error;
+ } else {
+ $error_msg = $error_msg.", ".$error;
+ }
+ }
+ $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
+ }
+
+ // Check stats password length
+ if ((!empty($v_stats)) && (empty($_SESSION['error_msg']))) {
+ if (!empty($_POST['v_stats_user'])) {
+ $pw_len = strlen($_POST['v_stats_password']);
+ if ($pw_len < 6 ) $_SESSION['error_msg'] = __('Password is too short.',$error_msg);
+ }
+ }
+
+ // Default proxy extention list
+ $v_proxy_ext = 'jpeg, jpg, png, gif, bmp, ico, svg, tif, tiff, css, js, htm, html, ttf, ';
+ $v_proxy_ext .= 'otf, webp, woff, txt, csv, rtf, doc, docx, xls, xlsx, ppt, pptx, odf, ';
+ $v_proxy_ext .= 'odp, ods, odt, pdf, psd, ai, eot, eps, ps, zip, tar, tgz, gz, rar, ';
+ $v_proxy_ext .= 'bz2, 7z, aac, m4a, mp3, mp4, ogg, wav, wma, 3gp, avi, flv, m4v, mkv, ';
+ $v_proxy_ext .= 'mov, mp4, mpeg, mpg, wmv, exe, iso, dmg, swf';
+
+ // Set advanced option checkmark
+ if (empty($_POST['v_proxy'])) $v_adv = 'yes';
+ if (!empty($_POST['v_ftp'])) $v_adv = 'yes';
+ if ($_POST['v_proxy_ext'] != $v_proxy_ext) $v_adv = 'yes';
+
+ // Set domain name to lowercase and remove www prefix
+ $v_domain = preg_replace("/^www\./i", "", $_POST['v_domain']);
+ $v_domain = escapeshellarg($v_domain);
+ $v_domain = strtolower($v_domain);
+
+ // Prepare domain values
+ $v_ip = escapeshellarg($_POST['v_ip']);
+ if ((!empty($_POST['v_aliases'])) && ($_POST['v_aliases'] != 'www.'.$_POST['v_domain'])) $v_adv = 'yes';
+ if ((!empty($_POST['v_ssl'])) || (!empty($_POST['v_elog']))) $v_adv = 'yes';
+ if ((!empty($_POST['v_ssl_crt'])) || (!empty($_POST['v_ssl_key']))) $v_adv = 'yes';
+ if ((!empty($_POST['v_ssl_ca'])) || ($_POST['v_stats'] != 'none')) $v_adv = 'yes';
+ if (!empty($v_domain)) $v_ftp_user_prepath .= $v_domain;
+ if (empty($_POST['v_dns'])) $v_dns = 'off';
+ if (empty($_POST['v_mail'])) $v_mail = 'off';
+ if (empty($_POST['v_proxy'])) $v_proxy = 'off';
+ $v_aliases = $_POST['v_aliases'];
+ $v_elog = $_POST['v_elog'];
+ $v_ssl = $_POST['v_ssl'];
+ $v_ssl_crt = $_POST['v_ssl_crt'];
+ $v_ssl_key = $_POST['v_ssl_key'];
+ $v_ssl_ca = $_POST['v_ssl_ca'];
+ $v_ssl_home = $data[$v_domain]['SSL_HOME'];
+ $v_stats = escapeshellarg($_POST['v_stats']);
+ $v_stats_user = $data[$v_domain]['STATS_USER'];
+ $v_stats_password = $data[$v_domain]['STATS_PASSWORD'];
+ $v_proxy_ext = preg_replace("/\n/", " ", $_POST['v_proxy_ext']);
+ $v_proxy_ext = preg_replace("/,/", " ", $v_proxy_ext);
+ $v_proxy_ext = preg_replace('/\s+/', ' ',$v_proxy_ext);
+ $v_proxy_ext = trim($v_proxy_ext);
+ $v_proxy_ext = str_replace(' ', ", ", $v_proxy_ext);
+ $v_ftp = $_POST['v_ftp'];
+ $v_ftp_user = $_POST['v_ftp_user'];
+ $v_ftp_password = $_POST['v_ftp_password'];
+ $v_ftp_email = $_POST['v_ftp_email'];
+
+
+ // Add web domain
+ if (empty($_SESSION['error_msg'])) {
+ exec (VESTA_CMD."v-add-web-domain ".$user." ".$v_domain." ".$v_ip." 'no'", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ $domain_added = empty($_SESSION['error_msg']);
+ }
+
+ // Add DNS domain
+ if (($_POST['v_dns'] == 'on') && (empty($_SESSION['error_msg']))) {
+ exec (VESTA_CMD."v-add-dns-domain ".$user." ".$v_domain." ".$v_ip, $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Add mail domain
+ if (($_POST['v_mail'] == 'on') && (empty($_SESSION['error_msg']))) {
+ exec (VESTA_CMD."v-add-mail-domain ".$user." ".$v_domain, $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Add domain aliases
+ if ((!empty($_POST['v_aliases'])) && (empty($_SESSION['error_msg']))) {
+ $valiases = preg_replace("/\n/", " ", $_POST['v_aliases']);
+ $valiases = preg_replace("/,/", " ", $valiases);
+ $valiases = preg_replace('/\s+/', ' ',$valiases);
+ $valiases = trim($valiases);
+ $aliases = explode(" ", $valiases);
+ foreach ($aliases as $alias) {
+ if ($alias == 'www.'.$_POST['v_domain']) {
+ $www_alias = 'yes';
+ } else {
+ $alias = escapeshellarg($alias);
+ if (empty($_SESSION['error_msg'])) {
+ exec (VESTA_CMD."v-add-web-domain-alias ".$user." ".$v_domain." ".$alias." 'no'", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+ if (($_POST['v_dns'] == 'on') && (empty($_SESSION['error_msg']))) {
+ exec (VESTA_CMD."v-add-dns-on-web-alias ".$user." ".$v_domain." ".$alias." 'no'", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+ }
+ }
+ }
+
+ // Delete www. alias if it wasn't found
+ if ((empty($www_alias)) && (empty($_SESSION['error_msg']))) {
+ $alias = preg_replace("/^www./i", "", $_POST['v_domain']);
+ $alias = 'www.'.$alias;
+ $alias = escapeshellarg($alias);
+ exec (VESTA_CMD."v-delete-web-domain-alias ".$user." ".$v_domain." ".$alias." 'no'", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Add proxy support
+ if (($_POST['v_proxy'] == 'on') && (empty($_SESSION['error_msg']))) {
+ $ext = str_replace(' ', '', $v_proxy_ext);
+ $ext = escapeshellarg($ext);
+ exec (VESTA_CMD."v-add-web-domain-proxy ".$user." ".$v_domain." '' ".$ext." 'no'", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Add SSL certificates
+ if ((!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
+ exec ('mktemp -d', $output, $return_var);
+ $tmpdir = $output[0];
+ unset($output);
+
+ // Save certificate
+ if (!empty($_POST['v_ssl_crt'])) {
+ $fp = fopen($tmpdir."/".$_POST['v_domain'].".crt", 'w');
+ fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_crt']));
+ fwrite($fp, "\n");
+ fclose($fp);
+ }
+
+ // Save private key
+ if (!empty($_POST['v_ssl_key'])) {
+ $fp = fopen($tmpdir."/".$_POST['v_domain'].".key", 'w');
+ fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_key']));
+ fwrite($fp, "\n");
+ fclose($fp);
+ }
+
+ // Save CA bundle
+ if (!empty($_POST['v_ssl_ca'])) {
+ $fp = fopen($tmpdir."/".$_POST['v_domain'].".ca", 'w');
+ fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_ca']));
+ fwrite($fp, "\n");
+ fclose($fp);
+ }
+
+ $v_ssl_home = escapeshellarg($_POST['v_ssl_home']);
+ exec (VESTA_CMD."v-add-web-domain-ssl ".$user." ".$v_domain." ".$tmpdir." ".$v_ssl_home." 'no'", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Add web stats
+ if ((!empty($_POST['v_stats'])) && ($_POST['v_stats'] != 'none' ) && (empty($_SESSION['error_msg']))) {
+ $v_stats = escapeshellarg($_POST['v_stats']);
+ exec (VESTA_CMD."v-add-web-domain-stats ".$user." ".$v_domain." ".$v_stats, $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Add web stats password
+ if ((!empty($_POST['v_stats_user'])) && (empty($_SESSION['error_msg']))) {
+ $v_stats_user = escapeshellarg($_POST['v_stats_user']);
+ $v_stats_password = escapeshellarg($_POST['v_stats_password']);
+ exec (VESTA_CMD."v-add-web-domain-stats-user ".$user." ".$v_domain." ".$v_stats_user." ".$v_stats_password, $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Restart DNS server
+ if (($_POST['v_dns'] == 'on') && (empty($_SESSION['error_msg']))) {
+ exec (VESTA_CMD."v-restart-dns", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Restart web server
+ if (empty($_SESSION['error_msg'])) {
+ exec (VESTA_CMD."v-restart-web", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Restart proxy server
+ if (($_POST['v_proxy'] == 'on') && (empty($_SESSION['error_msg']))) {
+ exec (VESTA_CMD."v-restart-proxy", $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ }
+
+ // Add FTP
+ if ((!empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
+ $v_ftp_users_updated = array();
+ foreach ($_POST['v_ftp_user'] as $i => $v_ftp_user_data) {
+ if ($v_ftp_user_data['is_new'] == 1) {
+ 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($v_ftp_user_data['v_ftp_password'])) $errors[] = 'ftp user password';
+ if (!empty($errors[0])) {
+ foreach ($errors as $i => $error) {
+ if ( $i == 0 ) {
+ $error_msg = $error;
+ } else {
+ $error_msg = $error_msg.", ".$error;
+ }
+ }
+ $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
+ }
+
+ // Validate email
+ 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.');
+ }
+
+ // Check ftp password length
+ if ((!empty($v_ftp_user_data['v_ftp']))) {
+ if (!empty($v_ftp_user_data['v_ftp_user'])) {
+ $pw_len = strlen($v_ftp_user_data['v_ftp_password']);
+ if ($pw_len < 6 ) $_SESSION['error_msg'] = __('Password is too short.',$error_msg);
+ }
+ }
+
+ $v_ftp_user_data['v_ftp_user'] = preg_replace("/^".$user."_/i", "", $v_ftp_user_data['v_ftp_user']);
+ $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_user_data['v_ftp_user']);
+ $v_ftp_password = escapeshellarg($v_ftp_user_data['v_ftp_password']);
+
+ if ($domain_added) {
+ exec (VESTA_CMD."v-add-web-domain-ftp ".$user." ".$v_domain." ".$v_ftp_username." ".$v_ftp_password . " " . $v_ftp_user_data['v_ftp_path'], $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($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");
+ $from = __('MAIL_FROM',$_POST['v_domain']);
+ $mailtext = __('FTP_ACCOUNT_READY',$_POST['v_domain'],$user,$v_ftp_user_data['v_ftp_user'],$v_ftp_user_data['v_ftp_password']);
+ send_email($to, $subject, $mailtext, $from);
+ unset($v_ftp_email);
+ }
+ } else {
+ $return_var = -1;
+ }
+
+ if ($return_var == 0) {
+ $v_ftp_password = "••••••••";
+ $v_ftp_user_data['is_new'] = 0;
+ } else {
+ $v_ftp_user_data['is_new'] = 1;
+ }
+
+ $v_ftp_username = preg_replace("/^".$user."_/", "", $v_ftp_user_data['v_ftp_user']);
+ $v_ftp_users_updated[] = array(
+ 'is_new' => $v_ftp_user_data['is_new'],
+ 'v_ftp_user' => $return_var == 0 ? $v_ftp_username_full : $v_ftp_username,
+ '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;
+ }
+ }
+
+ if (!empty($_SESSION['error_msg']) && $domain_added) {
+ $_SESSION['ok_msg'] = __('WEB_DOMAIN_CREATED_OK',$_POST[v_domain],$_POST[v_domain]);
+ $_SESSION['flash_error_msg'] = $_SESSION['error_msg'];
+ $url = '/edit/web/?domain='.strtolower(preg_replace("/^www\./i", "", $_POST['v_domain']));
+ header('Location: ' . $url);
+ exit;
+ }
+ }
+
+ // Flush field values on success
+ if (empty($_SESSION['error_msg'])) {
+ $_SESSION['ok_msg'] = __('WEB_DOMAIN_CREATED_OK',$_POST[v_domain],$_POST[v_domain]);
+ unset($v_domain);
+ unset($v_aliases);
+ unset($v_ssl);
+ unset($v_ssl_crt);
+ unset($v_ssl_key);
+ unset($v_ssl_ca);
+ unset($v_stats_user);
+ unset($v_stats_password);
+ unset($v_ftp);
+ }
+}
+
+
// Header
include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
// Panel
top_panel($user,$TAB);
+
+// Define user variables
+$v_ftp_user_prepath = $panel[$user]['HOME'] . "/web";
$v_ftp_email = $panel[$user]['CONTACT'];
- if (!empty($_POST['ok'])) {
- // Check input
- if (empty($_POST['v_domain'])) $errors[] = __('domain');
- if (empty($_POST['v_ip'])) $errors[] = __('ip');
- if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_crt']))) $errors[] = __('ssl certificate');
- if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_key']))) $errors[] = __('ssl key');
- if ((!empty($_POST['v_aliases'])) && ($_POST['v_aliases'] != 'www.'.$_POST['v_domain'])) $v_adv = 'yes';
- if ((!empty($_POST['v_ssl'])) || (!empty($_POST['v_elog']))) $v_adv = 'yes';
- if ((!empty($_POST['v_ssl_crt'])) || (!empty($_POST['v_ssl_key']))) $v_adv = 'yes';
- if ((!empty($_POST['v_ssl_ca'])) || ($_POST['v_stats'] != 'none')) $v_adv = 'yes';
- if (empty($_POST['v_proxy'])) $v_adv = 'yes';
- if (!empty($_POST['v_ftp'])) $v_adv = 'yes';
- $v_proxy_ext = 'jpeg, jpg, png, gif, bmp, ico, svg, tif, tiff, css, js, htm, html, ttf,';
- $v_proxy_ext .= 'otf, webp, woff, txt, csv, rtf, doc, docx, xls, xlsx, ppt, pptx, odf, ';
- $v_proxy_ext .= 'odp, ods, odt, pdf, psd, ai, eot, eps, ps, zip, tar, tgz, gz, rar, ';
- $v_proxy_ext .= 'bz2, 7z, aac, m4a, mp3, mp4, ogg, wav, wma, 3gp, avi, flv, m4v, mkv, ';
- $v_proxy_ext .= 'mov, mp4, mpeg, mpg, wmv, exe, iso, dmg, swf';
- if ($_POST['v_proxy_ext'] != $v_proxy_ext) $v_adv = 'yes';
+// List IP addresses
+exec (VESTA_CMD."v-list-user-ips ".$user." json", $output, $return_var);
+$ips = json_decode(implode('', $output), true);
+unset($output);
- // Protect input
- $v_domain = preg_replace("/^www\./i", "", $_POST['v_domain']);
- $v_domain = escapeshellarg($v_domain);
- $v_domain = strtolower($v_domain);
- $v_ip = escapeshellarg($_POST['v_ip']);
- if (empty($_POST['v_dns'])) $v_dns = 'off';
- if (empty($_POST['v_mail'])) $v_mail = 'off';
- if (empty($_POST['v_proxy'])) $v_proxy = 'off';
- $v_aliases = $_POST['v_aliases'];
- $v_elog = $_POST['v_elog'];
- $v_ssl = $_POST['v_ssl'];
- $v_ssl_crt = $_POST['v_ssl_crt'];
- $v_ssl_key = $_POST['v_ssl_key'];
- $v_ssl_ca = $_POST['v_ssl_ca'];
- $v_ssl_home = $data[$v_domain]['SSL_HOME'];
- $v_stats = escapeshellarg($_POST['v_stats']);
- $v_stats_user = $data[$v_domain]['STATS_USER'];
- $v_stats_password = $data[$v_domain]['STATS_PASSWORD'];
- $v_proxy_ext = preg_replace("/\n/", " ", $_POST['v_proxy_ext']);
- $v_proxy_ext = preg_replace("/,/", " ", $v_proxy_ext);
- $v_proxy_ext = preg_replace('/\s+/', ' ',$v_proxy_ext);
- $v_proxy_ext = trim($v_proxy_ext);
- $v_proxy_ext = str_replace(' ', ", ", $v_proxy_ext);
- $v_ftp = $_POST['v_ftp'];
- $v_ftp_user = $_POST['v_ftp_user'];
- $v_ftp_password = $_POST['v_ftp_password'];
- $v_ftp_email = $_POST['v_ftp_email'];
+// List web stat engines
+exec (VESTA_CMD."v-list-web-stats json", $output, $return_var);
+$stats = json_decode(implode('', $output), true);
+unset($output);
- // Validate email
- if ((!empty($_POST['v_ftp_email'])) && (!filter_var($_POST['v_ftp_email'], FILTER_VALIDATE_EMAIL))) {
- $_SESSION['error_msg'] = __('Please enter valid email address.');
- }
+// Display body
+include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_web.html');
- // Check ftp password length
- if ((!empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
- if (!empty($_POST['v_ftp_user'])) {
- $pw_len = strlen($_POST['v_ftp_password']);
- if ($pw_len < 6 ) $_SESSION['error_msg'] = __('Password is too short.',$error_msg);
- }
- }
-
- // Check stats password length
- if ((!empty($v_stats)) && (empty($_SESSION['error_msg']))) {
- if (!empty($_POST['v_stats_user'])) {
- $pw_len = strlen($_POST['v_stats_password']);
- if ($pw_len < 6 ) $_SESSION['error_msg'] = __('Password is too short.',$error_msg);
- }
- }
-
- // 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'] = __('Field "%s" can not be blank.',$error_msg);
- }
-
- if (empty($_SESSION['error_msg'])) {
- // Add WEB
- exec (VESTA_CMD."v-add-web-domain ".$user." ".$v_domain." ".$v_ip." 'no'", $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
-
- // Add DNS
- if (($_POST['v_dns'] == 'on') && (empty($_SESSION['error_msg']))) {
- exec (VESTA_CMD."v-add-dns-domain ".$user." ".$v_domain." ".$v_ip, $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- }
-
- // Add Mail
- if (($_POST['v_mail'] == 'on') && (empty($_SESSION['error_msg']))) {
- exec (VESTA_CMD."v-add-mail-domain ".$user." ".$v_domain, $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- }
-
- // Add Aliases
- if ((!empty($_POST['v_aliases'])) && (empty($_SESSION['error_msg']))) {
- $valiases = preg_replace("/\n/", " ", $_POST['v_aliases']);
- $valiases = preg_replace("/,/", " ", $valiases);
- $valiases = preg_replace('/\s+/', ' ',$valiases);
- $valiases = trim($valiases);
- $aliases = explode(" ", $valiases);
- foreach ($aliases as $alias) {
- if ($alias == 'www.'.$_POST['v_domain']) {
- $www_alias = 'yes';
- } else {
- $alias = escapeshellarg($alias);
- if (empty($_SESSION['error_msg'])) {
- exec (VESTA_CMD."v-add-web-domain-alias ".$user." ".$v_domain." ".$alias." 'no'", $output, $return_var);
- check_return_code($return_var,$output);
- }
- unset($output);
- if (($_POST['v_dns'] == 'on') && (empty($_SESSION['error_msg']))) {
- exec (VESTA_CMD."v-add-dns-on-web-alias ".$user." ".$v_domain." ".$alias." 'no'", $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- }
- }
- }
- }
- if ((empty($www_alias)) && (empty($_SESSION['error_msg']))) {
- $alias = preg_replace("/^www./i", "", $_POST['v_domain']);
- $alias = 'www.'.$alias;
- $alias = escapeshellarg($alias);
- exec (VESTA_CMD."v-delete-web-domain-alias ".$user." ".$v_domain." ".$alias." 'no'", $output, $return_var);
- check_return_code($return_var,$output);
- }
-
-
- // Add proxy
- if (($_POST['v_proxy'] == 'on') && (empty($_SESSION['error_msg']))) {
- $ext = str_replace(' ', '', $v_proxy_ext);
- $ext = escapeshellarg($ext);
- exec (VESTA_CMD."v-add-web-domain-proxy ".$user." ".$v_domain." '' ".$ext." 'no'", $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- }
-
- // Add SSL
- if (!empty($_POST['v_ssl'])) {
- exec ('mktemp -d', $output, $return_var);
- $tmpdir = $output[0];
-
- // Certificate
- if (!empty($_POST['v_ssl_crt'])) {
- $fp = fopen($tmpdir."/".$_POST['v_domain'].".crt", 'w');
- fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_crt']));
- fwrite($fp, "\n");
- fclose($fp);
- }
-
- // Key
- if (!empty($_POST['v_ssl_key'])) {
- $fp = fopen($tmpdir."/".$_POST['v_domain'].".key", 'w');
- fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_key']));
- fwrite($fp, "\n");
- fclose($fp);
- }
-
- // CA
- if (!empty($_POST['v_ssl_ca'])) {
- $fp = fopen($tmpdir."/".$_POST['v_domain'].".ca", 'w');
- fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_ca']));
- fwrite($fp, "\n");
- fclose($fp);
- }
-
- $v_ssl_home = escapeshellarg($_POST['v_ssl_home']);
- exec (VESTA_CMD."v-add-web-domain-ssl ".$user." ".$v_domain." ".$tmpdir." ".$v_ssl_home." 'no'", $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- }
-
- // Add WebStats
- if ((!empty($_POST['v_stats'])) && ($_POST['v_stats'] != 'none' ) && (empty($_SESSION['error_msg']))) {
- $v_stats = escapeshellarg($_POST['v_stats']);
- exec (VESTA_CMD."v-add-web-domain-stats ".$user." ".$v_domain." ".$v_stats, $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
-
- if ((!empty($_POST['v_stats_user'])) && (empty($_SESSION['error_msg']))) {
- $v_stats_user = escapeshellarg($_POST['v_stats_user']);
- $v_stats_password = escapeshellarg($_POST['v_stats_password']);
- exec (VESTA_CMD."v-add-web-domain-stats-user ".$user." ".$v_domain." ".$v_stats_user." ".$v_stats_password, $output, $return_var);
- check_return_code($return_var,$output);
- unset($v_stats_user);
- unset($v_stats_password);
- unset($output);
- }
- }
-
-
- // Add FTP
- if ((!empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
- $v_ftp_user = escapeshellarg($_POST['v_ftp_user']);
- $v_ftp_password = escapeshellarg($_POST['v_ftp_password']);
- exec (VESTA_CMD."v-add-web-domain-ftp ".$user." ".$v_domain." ".$v_ftp_user." ".$v_ftp_password, $output, $return_var);
- check_return_code($return_var,$output);
- if (empty($_SESSION['error_msg'])) {
- if (!empty($v_ftp_email)) {
- $to = $_POST['v_ftp_email'];
- $subject = __("FTP login credentials");
- $hostname = exec('hostname');
- $from = __('MAIL_FROM',$hostname);
- $mailtext .= __('FTP_ACCOUNT_READY',$_POST['v_domain'],$user,$_POST['v_ftp_user'],$_POST['v_ftp_password']);
- send_email($to, $subject, $mailtext, $from);
- }
- }
- unset($v_ftp);
- unset($v_ftp_user);
- unset($v_ftp_password);
- unset($output);
- }
-
- if (($_POST['v_dns'] == 'on') && (empty($_SESSION['error_msg']))) {
- exec (VESTA_CMD."v-restart-dns", $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- }
-
- if (empty($_SESSION['error_msg'])) {
- exec (VESTA_CMD."v-restart-web", $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- }
-
- if (empty($_SESSION['error_msg'])) {
- exec (VESTA_CMD."v-restart-proxy", $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- }
-
- if (empty($_SESSION['error_msg'])) {
- unset($output);
- $_SESSION['ok_msg'] = __('WEB_DOMAIN_CREATED_OK',$_POST[v_domain],$_POST[v_domain]);
- unset($v_domain);
- unset($v_aliases);
- unset($v_ssl);
- unset($v_ssl_crt);
- unset($v_ssl_key);
- unset($v_ssl_ca);
- }
- }
- }
-
- exec (VESTA_CMD."v-list-user-ips ".$user." json", $output, $return_var);
- $ips = json_decode(implode('', $output), true);
- unset($output);
-
- exec (VESTA_CMD."v-list-web-stats json", $output, $return_var);
- $stats = json_decode(implode('', $output), true);
- unset($output);
-
- include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_web.html');
- unset($_SESSION['error_msg']);
- unset($_SESSION['ok_msg']);
-//}
+// Flush session messages
+unset($_SESSION['error_msg']);
+unset($_SESSION['ok_msg']);
// Footer
include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
diff --git a/web/edit/web/index.php b/web/edit/web/index.php
index a607e546..fad41620 100644
--- a/web/edit/web/index.php
+++ b/web/edit/web/index.php
@@ -4,17 +4,11 @@ error_reporting(NULL);
ob_start();
session_start();
unset($_SESSION['error_msg']);
-
$TAB = 'WEB';
+
include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-// Check user argument?
+// Check domain argument
if (empty($_GET['domain'])) {
header("Location: /list/web/");
exit;
@@ -25,73 +19,77 @@ if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
$user=escapeshellarg($_GET['user']);
}
-// Check domain
+// List domain
$v_domain = escapeshellarg($_GET['domain']);
exec (VESTA_CMD."v-list-web-domain ".$user." ".$v_domain." json", $output, $return_var);
-check_return_code($return_var,$output);
-if (empty($_SESSION['error_msg'])) {
- $data = json_decode(implode('', $output), true);
- unset($output);
- $v_username = $user;
- $v_domain = $_GET['domain'];
- $v_ip = $data[$v_domain]['IP'];
- $v_template = $data[$v_domain]['TPL'];
- $v_aliases = str_replace(',', "\n", $data[$v_domain]['ALIAS']);
- $valiases = explode(",", $data[$v_domain]['ALIAS']);
- $v_tpl = $data[$v_domain]['IP'];
- $v_cgi = $data[$v_domain]['CGI'];
- $v_elog = $data[$v_domain]['ELOG'];
- $v_ssl = $data[$v_domain]['SSL'];
- if ( $v_ssl == 'yes' ) {
- exec (VESTA_CMD."v-list-web-domain-ssl ".$user." '".$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_home = $data[$v_domain]['SSL_HOME'];
- $v_proxy = $data[$v_domain]['PROXY'];
- $v_proxy_template = $data[$v_domain]['PROXY'];
- $v_proxy_ext = str_replace(',', ', ', $data[$v_domain]['PROXY_EXT']);
- $v_stats = $data[$v_domain]['STATS'];
- $v_stats_user = $data[$v_domain]['STATS_USER'];
- if (!empty($v_stats_user)) $v_stats_password = "••••••••";
- $v_ftp_user = $data[$v_domain]['FTP_USER'];
- if (!empty($v_ftp_user)) $v_ftp_password = "••••••••";
- $v_suspended = $data[$v_domain]['SUSPENDED'];
- if ( $v_suspended == 'yes' ) {
- $v_status = 'suspended';
- } else {
- $v_status = 'active';
- }
- $v_time = $data[$v_domain]['TIME'];
- $v_date = $data[$v_domain]['DATE'];
+$data = json_decode(implode('', $output), true);
+unset($output);
- exec (VESTA_CMD."v-list-user-ips ".$user." json", $output, $return_var);
- $ips = json_decode(implode('', $output), true);
- unset($output);
-
- exec (VESTA_CMD."v-list-web-templates json", $output, $return_var);
- $templates = json_decode(implode('', $output), true);
- unset($output);
-
- exec (VESTA_CMD."v-list-web-templates-proxy json", $output, $return_var);
- $proxy_templates = json_decode(implode('', $output), true);
- unset($output);
-
- exec (VESTA_CMD."v-list-web-stats json", $output, $return_var);
- $stats = json_decode(implode('', $output), true);
+// Parse domain
+$v_username = $user;
+$v_domain = $_GET['domain'];
+$v_ip = $data[$v_domain]['IP'];
+$v_template = $data[$v_domain]['TPL'];
+$v_aliases = str_replace(',', "\n", $data[$v_domain]['ALIAS']);
+$valiases = explode(",", $data[$v_domain]['ALIAS']);
+$v_tpl = $data[$v_domain]['IP'];
+$v_cgi = $data[$v_domain]['CGI'];
+$v_elog = $data[$v_domain]['ELOG'];
+$v_ssl = $data[$v_domain]['SSL'];
+if ( $v_ssl == 'yes' ) {
+ exec (VESTA_CMD."v-list-web-domain-ssl ".$user." '".$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'];
}
-
-
-// Action
+$v_ssl_home = $data[$v_domain]['SSL_HOME'];
+$v_proxy = $data[$v_domain]['PROXY'];
+$v_proxy_template = $data[$v_domain]['PROXY'];
+$v_proxy_ext = str_replace(',', ', ', $data[$v_domain]['PROXY_EXT']);
+$v_stats = $data[$v_domain]['STATS'];
+$v_stats_user = $data[$v_domain]['STATS_USER'];
+if (!empty($v_stats_user)) $v_stats_password = "••••••••";
+$v_ftp_user = $data[$v_domain]['FTP_USER'];
+if (!empty($v_ftp_user)) $v_ftp_password = "••••••••";
+$v_ftp_user_prepath = $data[$v_domain]['DOCUMENT_ROOT'];
+$v_ftp_user_prepath = str_replace('/public_html', '', $v_ftp_user_prepath, $occurance = 1);
$v_ftp_email = $panel[$user]['CONTACT'];
+$v_suspended = $data[$v_domain]['SUSPENDED'];
+if ( $v_suspended == 'yes' ) {
+ $v_status = 'suspended';
+} else {
+ $v_status = 'active';
+}
+$v_time = $data[$v_domain]['TIME'];
+$v_date = $data[$v_domain]['DATE'];
+
+// List ip addresses
+exec (VESTA_CMD."v-list-user-ips ".$user." json", $output, $return_var);
+$ips = json_decode(implode('', $output), true);
+unset($output);
+
+// List web templates
+exec (VESTA_CMD."v-list-web-templates json", $output, $return_var);
+$templates = json_decode(implode('', $output), true);
+unset($output);
+
+// List proxy templates
+exec (VESTA_CMD."v-list-web-templates-proxy json", $output, $return_var);
+$proxy_templates = json_decode(implode('', $output), true);
+unset($output);
+
+// List web stat engines
+exec (VESTA_CMD."v-list-web-stats json", $output, $return_var);
+$stats = json_decode(implode('', $output), true);
+unset($output);
+
+// Check POST request
if (!empty($_POST['save'])) {
$v_domain = escapeshellarg($_POST['v_domain']);
- // IP
+ // Change web domain IP
if (($v_ip != $_POST['v_ip']) && (empty($_SESSION['error_msg']))) {
$v_ip = escapeshellarg($_POST['v_ip']);
exec (VESTA_CMD."v-change-web-domain-ip ".$v_username." ".$v_domain." ".$v_ip." 'no'", $output, $return_var);
@@ -99,27 +97,36 @@ if (!empty($_POST['save'])) {
$restart_web = 'yes';
$restart_proxy = 'yes';
unset($output);
+ }
+
+ // Chane dns domain IP
+ if (empty($_SESSION['error_msg'])) {
exec (VESTA_CMD."v-list-dns-domain ".$v_username." ".$v_domain." json", $output, $return_var);
- if ((empty($_SESSION['error_msg'])) && ($return_var == 0 )) {
- unset($output);
+ unset($output);
+ if ($return_var == 0 ) {
exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." ".$v_domain." ".$v_ip." 'no'", $output, $return_var);
check_return_code($return_var,$output);
- $restart_dns = 'yes';
- }
- unset($output);
- foreach($valiases as $v_alias ){
- exec (VESTA_CMD."v-list-dns-domain ".$v_username." '".$v_alias."' json", $output, $return_var);
- if ((empty($_SESSION['error_msg'])) && ($return_var == 0 )) {
- exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." '".$v_alias."' ".$v_ip, $output, $return_var);
- check_return_code($return_var,$output);
- $restart_dns = 'yes';
- }
unset($output);
+ $restart_dns = 'yes';
}
}
- // Template
- if (( $_SESSION['user'] == 'admin') && ($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) {
+ // Change dns ip for each alias
+ if (empty($_SESSION['error_msg'])) {
+ foreach($valiases as $v_alias ){
+ exec (VESTA_CMD."v-list-dns-domain ".$v_username." '".$v_alias."' json", $output, $return_var);
+ unset($output);
+ if ($return_var == 0 ) {
+ exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." '".$v_alias."' ".$v_ip, $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+ $restart_dns = 'yes';
+ }
+ }
+ }
+
+ // Change template (admin only)
+ if (($v_template != $_POST['v_template']) && ( $_SESSION['user'] == 'admin') && (empty($_SESSION['error_msg']))) {
$v_template = escapeshellarg($_POST['v_template']);
exec (VESTA_CMD."v-change-web-domain-tpl ".$v_username." ".$v_domain." ".$v_template." 'no'", $output, $return_var);
check_return_code($return_var,$output);
@@ -127,7 +134,7 @@ if (!empty($_POST['save'])) {
$restart_web = 'yes';
}
- // Aliases
+ // Change aliases
if (empty($_SESSION['error_msg'])) {
$waliases = preg_replace("/\n/", " ", $_POST['v_aliases']);
$waliases = preg_replace("/,/", " ", $waliases);
@@ -151,9 +158,9 @@ if (!empty($_POST['save'])) {
if ($return_var == 0) {
exec (VESTA_CMD."v-delete-dns-on-web-alias ".$v_username." ".$v_domain." '".$alias."' 'no'", $output, $return_var);
check_return_code($return_var,$output);
+ unset($output);
$restart_dns = 'yes';
}
- unset($output);
}
}
}
@@ -173,15 +180,15 @@ if (!empty($_POST['save'])) {
if ($return_var == 0) {
exec (VESTA_CMD."v-add-dns-on-web-alias ".$v_username." ".$v_domain." '".$alias."' 'no'", $output, $return_var);
check_return_code($return_var,$output);
+ unset($output);
$restart_dns = 'yes';
}
}
- unset($output);
}
}
}
- // Proxy
+ // Delete proxy support
if ((!empty($v_proxy)) && (empty($_POST['v_proxy'])) && (empty($_SESSION['error_msg']))) {
exec (VESTA_CMD."v-delete-web-domain-proxy ".$v_username." ".$v_domain." 'no'", $output, $return_var);
check_return_code($return_var,$output);
@@ -189,6 +196,8 @@ if (!empty($_POST['save'])) {
unset($v_proxy);
$restart_proxy = 'yes';
}
+
+ // Change proxy template / Update extention list
if ((!empty($v_proxy)) && (!empty($_POST['v_proxy'])) && (empty($_SESSION['error_msg']))) {
$ext = preg_replace("/\n/", " ", $_POST['v_proxy_ext']);
$ext = preg_replace("/,/", " ", $ext);
@@ -205,6 +214,8 @@ if (!empty($_POST['save'])) {
$restart_proxy = 'yes';
}
}
+
+ // Add proxy support
if ((empty($v_proxy)) && (!empty($_POST['v_proxy'])) && (empty($_SESSION['error_msg']))) {
$v_proxy_template = $_POST['v_proxy_template'];
if (!empty($_POST['v_proxy_ext'])) {
@@ -221,7 +232,7 @@ if (!empty($_POST['save'])) {
$restart_proxy = 'yes';
}
- // SSL
+ // Delete SSL certificate
if (( $v_ssl == 'yes' ) && (empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
exec (VESTA_CMD."v-delete-web-domain-ssl ".$v_username." ".$v_domain." 'no'", $output, $return_var);
check_return_code($return_var,$output);
@@ -230,6 +241,8 @@ if (!empty($_POST['save'])) {
$restart_web = 'yes';
$restart_proxy = 'yes';
}
+
+ // Change SSL certificate
if (($v_ssl == 'yes') && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
if (( $v_ssl_crt != str_replace("\r\n", "\n", $_POST['v_ssl_crt'])) || ( $v_ssl_key != str_replace("\r\n", "\n", $_POST['v_ssl_key'])) || ( $v_ssl_ca != str_replace("\r\n", "\n", $_POST['v_ssl_ca']))) {
exec ('mktemp -d', $mktemp_output, $return_var);
@@ -269,15 +282,8 @@ if (!empty($_POST['save'])) {
$v_ssl_ca = $_POST['v_ssl_ca'];
}
}
- if (( $v_ssl == 'yes') && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
- if ( $v_ssl_home != $_POST['v_ssl_home'] ) {
- $v_ssl_home = escapeshellarg($_POST['v_ssl_home']);
- exec (VESTA_CMD."v-change-web-domain-sslhome ".$user." ".$v_domain." ".$v_ssl_home." 'no'", $output, $return_var);
- check_return_code($return_var,$output);
- $v_ssl_home = $_POST['v_ssl_home'];
- unset($output);
- }
- }
+
+ // Add SSL certificate
if (( $v_ssl == 'no') && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_crt']))) $errors[] = 'ssl certificate';
if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_key']))) $errors[] = 'ssl key';
@@ -329,19 +335,34 @@ if (!empty($_POST['save'])) {
}
}
- // Web Stats
+ // Change document root for ssl domain
+ if (( $v_ssl == 'yes') && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
+ if ( $v_ssl_home != $_POST['v_ssl_home'] ) {
+ $v_ssl_home = escapeshellarg($_POST['v_ssl_home']);
+ exec (VESTA_CMD."v-change-web-domain-sslhome ".$user." ".$v_domain." ".$v_ssl_home." 'no'", $output, $return_var);
+ check_return_code($return_var,$output);
+ $v_ssl_home = $_POST['v_ssl_home'];
+ unset($output);
+ }
+ }
+
+ // Delete web stats
if ((!empty($v_stats)) && ($_POST['v_stats'] == 'none') && (empty($_SESSION['error_msg']))) {
exec (VESTA_CMD."v-delete-web-domain-stats ".$v_username." ".$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 (VESTA_CMD."v-change-web-domain-stats ".$v_username." ".$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 (VESTA_CMD."v-add-web-domain-stats ".$v_username." ".$v_domain." ".$v_stats, $output, $return_var);
@@ -349,7 +370,7 @@ if (!empty($_POST['save'])) {
unset($output);
}
- // Web Stats Auth
+ // Delete web stats authorization
if ((!empty($v_stats_user)) && (empty($_POST['v_stats_auth'])) && (empty($_SESSION['error_msg']))) {
exec (VESTA_CMD."v-delete-web-domain-stats-user ".$v_username." ".$v_domain, $output, $return_var);
check_return_code($return_var,$output);
@@ -357,6 +378,8 @@ if (!empty($_POST['save'])) {
$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($_POST['v_stats_password'])) $errors[] = __('stats password');
@@ -378,6 +401,8 @@ if (!empty($_POST['save'])) {
$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($_POST['v_stats_password'])) $errors[] = __('stats password');
@@ -401,112 +426,203 @@ if (!empty($_POST['save'])) {
}
}
- // Delete FTP Account
- if ((!empty($v_ftp_user)) && (empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
- exec (VESTA_CMD."v-delete-web-domain-ftp ".$v_username." ".$v_domain, $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- $v_ftp= '';
- $v_ftp_user = '';
- $v_ftp_password = '';
- }
-
- // Change FTP Account
- if ((!empty($v_ftp_user)) && (!empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
- if (empty($_POST['v_ftp_user'])) $errors[] = __('ftp user');
- if (empty($_POST['v_ftp_password'])) $errors[] = __('ftp user password');
- if (!empty($errors[0])) {
- foreach ($errors as $i => $error) {
- if ( $i == 0 ) {
- $error_msg = $error;
- } else {
- $error_msg = $error_msg.", ".$error;
+ // Change ftp accounts
+ if (!empty($_POST['v_ftp_user'])) {
+ $v_ftp_users_updated = array();
+ foreach ($_POST['v_ftp_user'] as $i => $v_ftp_user_data) {
+ $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) {
+ 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($v_ftp_user_data['v_ftp_password'])) $errors[] = 'ftp user password';
+ if (!empty($errors[0])) {
+ foreach ($errors as $i => $error) {
+ if ( $i == 0 ) {
+ $error_msg = $error;
+ } else {
+ $error_msg = $error_msg.", ".$error;
+ }
+ }
+ $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
}
- }
- $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
- }
- if (($v_ftp_user != $_POST['v_ftp_user']) || ($_POST['v_ftp_password'] != "••••••••" ) && (empty($_SESSION['error_msg']))) {
- $v_ftp_user = preg_replace("/^".$user."_/", "", $_POST['v_ftp_user']);
- $v_ftp_user = escapeshellarg($v_ftp_user);
- $v_ftp_password = escapeshellarg($_POST['v_ftp_password']);
- exec (VESTA_CMD."v-add-web-domain-ftp ".$v_username." ".$v_domain." ".$v_ftp_user." ".$v_ftp_password, $output, $return_var);
- check_return_code($return_var,$output);
- unset($output);
- $v_ftp= '';
- $v_ftp_user = $user."_".preg_replace("/^".$user."_/", "", $_POST['v_ftp_user']);
- $v_ftp_password = "••••••••";
- }
- }
- // Add FTP Account
- if ((empty($v_ftp_user)) && (!empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
- if ((!empty($_POST['v_ftp_email'])) && (!filter_var($_POST['v_ftp_email'], FILTER_VALIDATE_EMAIL))) $_SESSION['error_msg'] = __('Please enter valid email address.');
- if (empty($_POST['v_ftp_user'])) $errors[] = 'ftp user';
- if (empty($_POST['v_ftp_password'])) $errors[] = 'ftp user password';
- if (!empty($errors[0])) {
- foreach ($errors as $i => $error) {
- if ( $i == 0 ) {
- $error_msg = $error;
- } else {
- $error_msg = $error_msg.", ".$error;
+ $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_password = escapeshellarg($v_ftp_user_data['v_ftp_password']);
+ if (empty($_SESSION['error_msg'])) {
+ exec (VESTA_CMD."v-add-web-domain-ftp ".$v_username." ".$v_domain." ".$v_ftp_username." ".$v_ftp_password . " " . $v_ftp_user_data['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 = __('MAIL_FROM',$hostname);
+ $mailtext = __('FTP_ACCOUNT_READY',$_GET['domain'],$user,$v_ftp_username,$v_ftp_user_data['v_ftp_password']);
+ send_email($to, $subject, $mailtext, $from);
+ unset($v_ftp_email);
+ }
+ unset($output);
}
+
+ 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;
}
- $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
- }
- if (empty($_SESSION['error_msg'])) {
- $v_ftp_user = escapeshellarg($_POST['v_ftp_user']);
- $v_ftp_password = escapeshellarg($_POST['v_ftp_password']);
- exec (VESTA_CMD."v-add-web-domain-ftp ".$v_username." ".$v_domain." ".$v_ftp_user." ".$v_ftp_password, $output, $return_var);
- check_return_code($return_var,$output);
- if ((!empty($_POST['v_ftp_email'])) && (empty($_SESSION['error_msg']))) {
- $to = $_POST['v_ftp_email'];
- $subject = __("FTP login credentials");
- $hostname = exec('hostname');
- $from = __('MAIL_FROM',$hostname);
- $mailtext .= __('FTP_ACCOUNT_READY',$_GET['domain'],$user,$_POST['v_ftp_user'],$_POST['v_ftp_password']);
- send_email($to, $subject, $mailtext, $from);
- unset($v_ftp_email);
+
+
+ if ($v_ftp_user_data['delete'] == 1) {
+ $v_ftp_username = $user . '_' . $v_ftp_user_data['v_ftp_user'];
+ exec (VESTA_CMD."v-delete-web-domain-ftp ".$v_username." ".$v_domain." ".$v_ftp_username, $output, $return_var);
+ check_return_code($return_var,$output);
+ unset($output);
+
+ continue;
}
+
+ // Change FTP Account
+ if (empty($v_ftp_user_data['v_ftp_user'])) $errors[] = __('ftp user');
+ if (empty($v_ftp_user_data['v_ftp_password'])) $errors[] = __('ftp user password');
+ if (!empty($errors[0])) {
+ foreach ($errors as $i => $error) {
+ if ( $i == 0 ) {
+ $error_msg = $error;
+ } else {
+ $error_msg = $error_msg.", ".$error;
+ }
+ }
+ $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
+ }
+
+ $v_ftp_username = $user . '_' . $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_user_data['v_ftp_password'] = escapeshellarg(trim($v_ftp_user_data['v_ftp_password']));
+ exec (VESTA_CMD."v-change-web-domain-ftp-path ".$v_username." ".$v_domain." ".$v_ftp_username." ".$v_ftp_user_data['v_ftp_path'], $output, $return_var);
+ if ($v_ftp_user_data['v_ftp_password'] != "••••••••" && !empty($v_ftp_user_data['v_ftp_password'])) {
+ exec (VESTA_CMD."v-change-web-domain-ftp-password ".$v_username." ".$v_domain." ".$v_ftp_username." ".$v_ftp_user_data['v_ftp_password'], $output, $return_var);
+ }
+ check_return_code($return_var, $output);
unset($output);
- $v_ftp_user = $user."_".$_POST['v_ftp_user'];
+
$v_ftp_password = "••••••••";
+
+ $v_ftp_users_updated[] = array(
+ 'is_new' => 0,
+ 'v_ftp_user' => $v_ftp_username,
+ '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
+ );
}
}
- // Restart web
+ // Restart web server
if (!empty($restart_web) && (empty($_SESSION['error_msg']))) {
exec (VESTA_CMD."v-restart-web", $output, $return_var);
check_return_code($return_var,$output);
unset($output);
}
- // Restart proxy
+ // Restart proxy server
if (!empty($restart_proxy) && (empty($_SESSION['error_msg']))) {
exec (VESTA_CMD."v-restart-proxy", $output, $return_var);
check_return_code($return_var,$output);
unset($output);
}
- // Restart dns
+ // Restart dns server
if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) {
exec (VESTA_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.');
}
}
+
+
+$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' => $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
+ );
+ }
+}
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+// Display body
if ($_SESSION['user'] == 'admin') {
include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_web.html');
} else {
include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_web.html');
}
+
+// Flush session messages
unset($_SESSION['error_msg']);
unset($_SESSION['ok_msg']);
-
// Footer
include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
diff --git a/web/templates/admin/add_web.html b/web/templates/admin/add_web.html
index 6f50d67a..b8522c1a 100644
--- a/web/templates/admin/add_web.html
+++ b/web/templates/admin/add_web.html
@@ -42,7 +42,7 @@
document.v_add_web.v_stats_password.value = webrandom;
}
- function FTPrandom() {
+ function FTPrandom(elm) {
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var string_length = 10;
var ftprandomstring = '';
@@ -50,7 +50,7 @@
var rnum = Math.floor(Math.random() * chars.length);
ftprandomstring += chars.substring(rnum,rnum+1);
}
- document.v_add_web.v_ftp_password.value = ftprandomstring;
+ $(elm).parents('.ftptable').find('.v-ftp-user-psw').val(ftprandomstring);
}
function elementHideShow(elementToHideOrShow){
@@ -75,7 +75,7 @@
-
+ |
|
@@ -144,25 +134,20 @@
-
-
- |
-
-
-
- onclick="javascript:elementHideShow('proxytable');">
+ |
+
|
-
+ |
|
-
+ |
|
@@ -170,26 +155,21 @@
-
- /
+ |
+ /
|
-
-
- onclick="javascript:elementHideShow('ssltable');">
- |
-
+
+
+
+
diff --git a/web/templates/admin/edit_web.html b/web/templates/admin/edit_web.html
index 3ef86150..dd2696ce 100644
--- a/web/templates/admin/edit_web.html
+++ b/web/templates/admin/edit_web.html
@@ -10,12 +10,15 @@
|
→ ".$_SESSION['ok_msg']."";
+ }
if (!empty($_SESSION['error_msg'])) {
echo " → ".$_SESSION['error_msg']."";
- } else {
- if (!empty($_SESSION['ok_msg'])) {
- echo " → ".$_SESSION['ok_msg']."";
- }
+ }
+ if (!empty($_SESSION['flash_error_msg'])) {
+ echo " / FTP USER ".$_SESSION['flash_error_msg']."";
+ unset($_SESSION['flash_error_msg']);
}
?>
|
@@ -36,7 +39,7 @@
document.v_edit_web.v_stats_password.value = webrandom;
}
- function FTPrandom() {
+ function FTPrandom(elm) {
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var string_length = 10;
var ftprandomstring = '';
@@ -44,7 +47,8 @@
var rnum = Math.floor(Math.random() * chars.length);
ftprandomstring += chars.substring(rnum,rnum+1);
}
- document.v_edit_web.v_ftp_password.value = ftprandomstring;
+
+ $(elm).parents('.ftptable').find('.v-ftp-user-psw').val(ftprandomstring);
}
function elementHideShow(elementToHideOrShow){
@@ -72,7 +76,7 @@
-
+ |
|
@@ -82,7 +86,7 @@
-
+ |
|
@@ -105,7 +109,7 @@
-
+ |
|
@@ -115,7 +119,7 @@
-
+ |
|
@@ -136,20 +140,15 @@
-
-
+ |
+
|
-
- onclick="javascript:elementHideShow('proxytable');">
- |
-
-
-
+ |
-
+ |
|
@@ -173,7 +172,7 @@
-
+ |
|
@@ -186,21 +185,16 @@
-
- /
+ |
+ /
|
-
- onclick="javascript:elementHideShow('ssltable');">
- |
-
-
-
+ |
-
+ |
|
@@ -218,7 +212,7 @@
-
+ |
|
@@ -228,7 +222,7 @@
-
+ |
|
@@ -238,7 +232,7 @@
-
+ |
()
|
@@ -251,7 +245,7 @@
-
+ |
|
@@ -273,20 +267,15 @@
-
-
+ |
+
|
-
- onclick="javascript:elementHideShow('statstable');">
- |
-
-
-
+ |
|
-
-
+ |
+
|
- onclick="javascript:elementHideShow('ftptable');">
- |
-
-
-
-
+
+ |
+
+
+
+
+
|
+
+
+
+
diff --git a/web/templates/user/edit_web.html b/web/templates/user/edit_web.html
index 1b0998fe..80e67bb4 100644
--- a/web/templates/user/edit_web.html
+++ b/web/templates/user/edit_web.html
@@ -10,12 +10,15 @@
|
→ ".$_SESSION['ok_msg']."";
+ }
if (!empty($_SESSION['error_msg'])) {
echo " → ".$_SESSION['error_msg']."";
- } else {
- if (!empty($_SESSION['ok_msg'])) {
- echo " → ".$_SESSION['ok_msg']."";
- }
+ }
+ if (!empty($_SESSION['flash_error_msg'])) {
+ echo " → ".$_SESSION['flash_error_msg']."";
+ unset($_SESSION['flash_error_msg']);
}
?>
|
@@ -36,7 +39,7 @@
document.v_edit_web.v_stats_password.value = webrandom;
}
- function FTPrandom() {
+ function FTPrandom(elm) {
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var string_length = 10;
var ftprandomstring = '';
@@ -44,7 +47,8 @@
var rnum = Math.floor(Math.random() * chars.length);
ftprandomstring += chars.substring(rnum,rnum+1);
}
- document.v_edit_web.v_ftp_password.value = ftprandomstring;
+
+ $(elm).parents('.ftptable').find('.v-ftp-user-psw').val(ftprandomstring);
}
function elementHideShow(elementToHideOrShow){
@@ -72,7 +76,7 @@
-
+ |
|
@@ -82,7 +86,7 @@
-
+ |
|
@@ -105,7 +109,7 @@
-
+ |
|
@@ -115,17 +119,12 @@
-
-
+ |
+
|
-
- onclick="javascript:elementHideShow('proxytable');">
- |
-
-
-
+ |
@@ -141,21 +140,16 @@
|
-
- /
+ |
+ /
|
-
- onclick="javascript:elementHideShow('ssltable');">
- |
-
-
-
+ |
-
+ |
|
@@ -164,7 +158,7 @@
| | | | | | |