Serghey Rodin 13 лет назад
Родитель
Сommit
2d12f47a73

+ 76 - 0
bin/v_add_dns_on_web_alias

@@ -0,0 +1,76 @@
+#!/bin/bash
+# info: add dns domain or dns record based on web domain alias
+# options: user domain
+#
+# The function adds dns domain or dns record based on web domain alias.
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Argument defenition
+user=$1
+domain=$(idn -t --quiet -u "$2" )
+domain_idn=$(idn -t --quiet -a "$domain")
+
+# Includes
+source $VESTA/conf/vesta.conf
+source $VESTA/func/main.sh
+source $VESTA/func/domain.sh
+
+
+#----------------------------------------------------------#
+#                    Verifications                         #
+#----------------------------------------------------------#
+
+check_args '2' "$#" 'user domain'
+validate_format 'user' 'domain'
+is_system_enabled "$WEB_SYSTEM"
+is_system_enabled "$DNS_SYSTEM"
+is_object_valid 'user' 'USER' "$user"
+is_object_unsuspended 'user' 'USER' "$user"
+is_object_valid 'web' 'DOMAIN' "$domain"
+is_object_unsuspended 'web' 'DOMAIN' "$domain"
+
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+# Parsing domain values
+get_domain_values 'web'
+
+OLD_IFS=$IFS
+IFS=','
+for web_alias in $ALIAS; do
+    # Check if parent dns domain exist
+    sub_domain=$(echo $web_alias | cut -f1 -d .)
+    pr_domain=$(echo $web_alias | sed -e "s/^$sub_domain.//" )
+    check_parent=$(grep "DOMAIN='$pr_domain'" $USER_DATA/dns.conf)
+    if [ -z "$check_parent" ]; then
+        check_dom=$(grep "DOMAIN='$web_alias'" $USER_DATA/dns.conf)
+        if [ -z "$check_dom" ]; then
+            $BIN/v_add_dns_domain $user $web_alias $IP
+        fi
+    else
+        check_rec=$(grep "RECORD='$sub_domain'" $USER_DATA/dns/$pr_domain.conf)
+        if [ -z "$check_rec" ]; then
+            $BIN/v_add_dns_domain_record $user $pr_domain $sub_domain A $IP
+        fi
+    fi
+done
+
+
+#----------------------------------------------------------#
+#                       Vesta                              #
+#----------------------------------------------------------#
+
+# Restart web server
+$BIN/v_restart_dns "$EVENT"
+
+# Logging
+log_history "$EVENT"
+log_event "$OK" "$EVENT"
+
+exit

+ 6 - 3
bin/v_add_web_domain

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: add web domain
-# options: user domain ip [template]
+# options: user domain ip [template] [restart]
 #
 # The function adds virtual host to a server. In cases when a template is
 # undefined in the script, the template "default" will be used. The alias of
@@ -21,6 +21,7 @@ domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
 domain_idn=$(idn -t --quiet -a "$domain")
 ip=$3
 template=${4-default}
+restart=$5
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -33,7 +34,7 @@ source $VESTA/func/ip.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '3' "$#" 'user domain ip [template]'
+check_args '3' "$#" 'user domain ip [template] [restart]'
 validate_format 'user' 'domain' 'ip' 'template'
 is_system_enabled "$WEB_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -190,7 +191,9 @@ echo "$str" >> $USER_DATA/web.conf
 chmod 660 $USER_DATA/web.conf
 
 # Restart web server
-$BIN/v_restart_web "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
 
 # Logging
 log_history "$EVENT"

+ 6 - 3
bin/v_add_web_domain_alias

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: add web domain alias
-# options: user domain alias
+# options: user domain alias [restart]
 #
 # The call is intended for adding aliases to a domain (it is also called
 # "domain parking"). The function supports wildcards *.domain.tpl.
@@ -18,6 +18,7 @@ domain_idn=$(idn -t --quiet -a "$domain")
 dom_alias=$(idn -t --quiet -u "$3" )
 dom_alias=$(echo $dom_alias | tr '[:upper:]' '[:lower:]')
 dom_alias_idn=$(idn -t --quiet -a "$dom_alias" )
+restart="$4"
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -29,7 +30,7 @@ source $VESTA/func/domain.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '3' "$#" 'user domain dom_alias'
+check_args '3' "$#" 'user domain dom_alias [restart]'
 validate_format 'user' 'domain' 'dom_alias'
 is_system_enabled "$WEB_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -98,7 +99,9 @@ update_object_value 'web' 'DOMAIN' "$domain" '$ALIAS' "$ALIAS"
 increase_user_value "$user" '$U_WEB_ALIASES'
 
 # Adding task to the vesta pipe
-$BIN/v_restart_web "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
 
 log_history "$EVENT"
 log_event "$OK" "$EVENT"

+ 10 - 4
bin/v_add_web_domain_elog

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: add error logging for domain
-# options: user domain
+# options: user domain [restart]
 #
 # The function enables a separate ErrorLog file for a domain, accessible for
 # reading by users.
@@ -14,6 +14,7 @@
 user=$1
 domain=$(idn -t --quiet -u "$2" )
 domain_idn=$(idn -t --quiet -a "$domain")
+restart="$3"
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -25,14 +26,13 @@ source $VESTA/func/domain.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '2' "$#" 'user domain'
+check_args '2' "$#" 'user domain [restart]'
 validate_format 'user' 'domain'
 is_system_enabled "$WEB_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
 is_object_unsuspended 'user' 'USER' "$user"
 is_object_valid 'web' 'DOMAIN' "$domain"
 is_object_unsuspended 'web' 'DOMAIN' "$domain"
-is_object_value_empty 'web' 'DOMAIN' "$domain" '$ELOG'
 
 
 #----------------------------------------------------------#
@@ -41,6 +41,10 @@ is_object_value_empty 'web' 'DOMAIN' "$domain" '$ELOG'
 
 # Parsing domain values
 get_domain_values 'web'
+if [ $ELOG == 'yes' ]; then
+    exit 0
+fi
+
 tpl_file="$WEBTPL/apache_$TPL.tpl"
 conf="$HOMEDIR/$user/conf/web/httpd.conf"
 ELOG='yes'
@@ -85,7 +89,9 @@ fi
 update_object_value 'web' 'DOMAIN' "$domain" '$ELOG' 'yes'
 
 # Adding task to the vesta pipe
-$BIN/v_restart_web "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
 
 # Logging
 log_history "$EVENT"

+ 6 - 3
bin/v_add_web_domain_nginx

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: add webdomain nginx support
-# options: user domain
+# options: user domain [template] [extentions] [restart]
 #
 # The function enables nginx support for a domain. It can significantly improve
 # website speed.
@@ -18,6 +18,7 @@ template=${3-default}
 default_extentions="jpg,jpeg,gif,png,ico,css,zip,tgz,gz,rar,bz2,doc,xls,exe,\
 pdf,ppt,txt,tar,wav,bmp,rtf,js,mp3,avi,mpeg,html,htm"
 extentions=${4-$default_extentions}
+restart="$5"
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -29,7 +30,7 @@ source $VESTA/func/domain.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '2' "$#" 'user domain [template] [extentions]'
+check_args '2' "$#" 'user domain [template] [extentions] [restart]'
 validate_format 'user' 'domain' 'template' 'extentions'
 is_system_enabled "$PROXY_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -94,7 +95,9 @@ update_object_value 'web' 'DOMAIN' "$domain" '$NGINX' "$NGINX"
 update_object_value 'web' 'DOMAIN' "$domain" '$NGINX_EXT' "$extentions"
 
 # Restart web server
-$BIN/v_restart_web "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
 
 log_history "$EVENT"
 log_event "$OK" "$EVENT"

+ 7 - 4
bin/v_add_web_domain_ssl

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: adding ssl for domain
-# options: user domain ssl_dir [ssl_home]
+# options: user domain ssl_dir [ssl_home] [restart]
 #
 # The function turns on SSL support for a domain. Parameter ssl_dir is a path
 # to directory where 2 or 3 ssl files can be found. Certificate file 
@@ -19,7 +19,8 @@ user=$1
 domain=$(idn -t --quiet -u "$2" )
 domain_idn=$(idn -t --quiet -a "$domain")
 ssl_dir=$3
-ssl_home=${4-single}
+ssl_home=${4-same}
+restart="$5"
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -32,7 +33,7 @@ source $VESTA/func/ip.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '3' "$#" 'user domain ssl_dir [ssl_home]'
+check_args '3' "$#" 'user domain ssl_dir [ssl_home] [restart]'
 validate_format 'user' 'domain' 'ssl_dir'
 is_system_enabled "$WEB_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -124,7 +125,9 @@ update_object_value 'web' 'DOMAIN' "$domain" '$SSL_HOME' "$SSL_HOME"
 update_object_value 'web' 'DOMAIN' "$domain" '$SSL' "yes"
 
 # Restart web server
-$BIN/v_restart_web "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
 
 # Logging
 log_history "$EVENT"

+ 66 - 0
bin/v_list_web_stats

@@ -0,0 +1,66 @@
+#!/bin/bash
+# info: list web statistics
+# options: [format]
+#
+# The function for obtaining the list of system shells.
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Argument defenition
+format=${1-shell}
+
+# Includes
+source $VESTA/func/main.sh
+source $VESTA/conf/vesta.conf
+
+# Json function
+json_list_st() {
+    stats=$(echo "${STATS_SYSTEM//,/ } none")
+    st_counter=$(echo "$stats" | wc -w)
+    i=1
+    echo '['
+    for st in $stats; do
+        if [ "$i" -lt "$st_counter" ]; then
+            echo -e  "\t\"$st\","
+        else
+            echo -e  "\t\"$st\""
+        fi
+        (( ++i))
+    done
+    echo "]"
+}
+
+# Shell function
+shell_list_st() {
+    stats=$(echo "none ${STATS_SYSTEM//,/ }")
+    if [ -z "$nohead" ]; then
+        echo "STATS"
+        echo "----------"
+    fi
+    for st in $stats; do
+        echo "$st"
+    done
+}
+
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+# Listing domains
+case $format in 
+    json)   json_list_st ;;
+    plain)  nohead=1; shell_list_st ;;
+    shell)  shell_list_st ;;
+    *)      check_args '1' '0' '[format]' ;;
+esac
+
+
+#----------------------------------------------------------#
+#                       Vesta                              #
+#----------------------------------------------------------#
+
+exit

+ 4 - 0
web/add/user/index.php

@@ -6,6 +6,10 @@ session_start();
 $TAB = 'USER';
 include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
 
+if (empty($_SESSION['user'])) {
+    header("Location: /login/");
+}
+
 // Header
 include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
 

+ 228 - 0
web/add/web/index.php

@@ -0,0 +1,228 @@
+<?php
+// Init
+//error_reporting(NULL);
+ob_start();
+session_start();
+$TAB = 'WEB';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+// Are you admin?
+if ($_SESSION['user'] == 'admin') {
+
+    // Cancel
+    if (!empty($_POST['cancel'])) {
+        header("Location: /list/web/");
+    }
+
+    // OK
+    if (!empty($_POST['ok'])) {
+        // Check input
+        if (empty($_POST['v_domain'])) $errors[] = 'domain';
+        if (empty($_POST['v_ip'])) $errors[] = 'ip';
+        if (empty($_POST['v_template'])) $errors[] = 'template';
+        if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_cert']))) $errors[] = 'ssl certificate';
+        if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_key']))) $errors[] = 'ssl key';
+        if ((!empty($_POST['v_aliases'])) || (!empty($_POST['v_elog'])) || (!empty($_POST['v_ssl'])) || (!empty($_POST['v_ssl_cert'])) || (!empty($_POST['v_ssl_key'])) || (!empty($_POST['v_ssl_pem'])) || ($_POST['v_stats'] != 'none')) $v_adv = 'yes';
+
+        // Protect input
+        $v_domain = preg_replace("/^www./i", "", $_POST['v_domain']);
+        $v_domain = escapeshellarg($v_domain);
+        $v_ip = escapeshellarg($_POST['v_ip']);
+        $v_template = escapeshellarg($_POST['v_template']);
+        if (empty($_POST['v_dns'])) $v_dns = 'off';
+        if (empty($_POST['v_mail'])) $v_mail = 'off';
+        $v_aliases = $_POST['v_aliases'];
+        $v_elog = $_POST['v_elog'];
+        $v_nginx = $_POST['v_nginx'];
+        $v_ssl = $_POST['v_ssl'];
+        $v_ssl_cert = $_POST['v_ssl_cert'];
+        $v_ssl_key = $_POST['v_ssl_key'];
+        $v_ssl_pem = $_POST['v_ssl_pem'];
+        $v_stats = escapeshellarg($_POST['v_stats']);
+
+        // 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'] = "Error: field ".$error_msg." can not be blank.";
+        } else {
+            exec (VESTA_CMD."v_add_web_domain ".$user." ".$v_domain." ".$v_ip." ".$v_template." 'no'", $output, $return_var);
+            if ($return_var != 0) {
+                $error = implode('<br>', $output);
+                if (empty($error)) $error = 'Error: vesta did not return any output.';
+                $_SESSION['error_msg'] = $error;
+            }
+            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);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                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);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                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);
+
+                $aliases = explode(" ", $valiases);
+                foreach ($aliases as $alias) {
+                    $alias = escapeshellarg($alias);
+                    if (empty($_SESSION['error_msg'])) {
+                        exec (VESTA_CMD."v_add_web_domain_alias ".$user." ".$v_domain." ".$alias." 'no'", $output, $return_var);
+                        if ($return_var != 0) {
+                            $error = implode('<br>', $output);
+                            if (empty($error)) $error = 'Error: vesta did not return any output.';
+                            $_SESSION['error_msg'] = $error;
+                        }
+                    }
+                    unset($output);
+                }
+                if (($_POST['v_dns'] == 'on') && (empty($_SESSION['error_msg']))) {
+                    exec (VESTA_CMD."v_add_dns_on_web_alias ".$user." ".$v_domain." 'no'", $output, $return_var);
+                    if ($return_var != 0) {
+                        $error = implode('<br>', $output);
+                        if (empty($error)) $error = 'Error: vesta did not return any output.';
+                        $_SESSION['error_msg'] = $error;
+                    }
+                    unset($output);
+                }
+            }
+
+            // Add ErrorLog
+            if ((!empty($_POST['v_elog'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v_add_web_domain_elog ".$user." ".$v_domain." 'no'", $output, $return_var);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                unset($output);
+            }
+
+            // Add Nginx
+            if ((!empty($_POST['v_nginx'])) && (empty($_SESSION['error_msg']))) {
+                $nginx_ext = "'jpg,jpeg,gif,png,ico,css,zip,tgz,gz,rar,bz2,doc,xls,exe,pdf,ppt,txt,tar,wav,bmp,rtf,js,mp3,avi,mpeg,html,htm'";
+                exec (VESTA_CMD."v_add_web_domain_nginx ".$user." ".$v_domain." 'default' ".$nginx_ext." 'no'", $output, $return_var);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                unset($output);
+            }
+
+            // Add SSL
+            if (!empty($_POST['v_ssl'])) {
+                exec ('mktemp -d', $output, $return_var);
+                $tmpdir = $output[0];
+
+                // Certificate
+                if (!empty($_POST['v_ssl_cert'])) {
+                    $fp = fopen($tmpdir."/".$_POST['v_domain'].".crt", 'w');
+                    fwrite($fp, $_POST['v_ssl_cert']."\n");
+                    fclose($fp);
+                }
+
+                // Key
+                if (!empty($_POST['v_ssl_key'])) {
+                    $fp = fopen($tmpdir."/".$_POST['v_domain'].".key", 'w');
+                    fwrite($fp, $_POST['v_ssl_key']."\n");
+                    fclose($fp);
+                }
+
+                // Pem
+                if (!empty($_POST['v_ssl_pem'])) {
+                    $fp = fopen($tmpdir."/".$_POST['v_domain'].".pem", 'w');
+                    fwrite($fp, $_POST['v_ssl_pem']."\n");
+                    fclose($fp);
+                }
+
+                exec (VESTA_CMD."v_add_web_domain_ssl ".$user." ".$v_domain." ".$tmpdir." 'same' 'no'", $output, $return_var);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                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);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                unset($output);
+            }
+
+            if (empty($_SESSION['error_msg'])) {
+                exec (VESTA_CMD."v_restart_web", $output, $return_var);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = 'Error: vesta did not return any output.';
+                    $_SESSION['error_msg'] = $error;
+                }
+                unset($output);
+                $_SESSION['ok_msg'] = "OK: domain <b>".$_POST[v_domain]."</b> has been created successfully.";
+                unset($v_domain);
+                unset($v_aliases);
+                unset($v_ssl);
+                unset($v_ssl_cert);
+                unset($v_ssl_key);
+                unset($v_ssl_pem);
+            }
+        }
+    }
+
+    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 ".$user." json", $output, $return_var);
+    $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);
+    unset($output);
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/menu_add_web.html');
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_web.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 1 - 0
web/edit/user/index.php

@@ -3,6 +3,7 @@
 //error_reporting(NULL);
 ob_start();
 session_start();
+
 $TAB = 'USER';
 include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
 

+ 5 - 3
web/inc/main.php

@@ -2,18 +2,19 @@
 // Set timezone
 date_default_timezone_set('UTC');
 
-// Check user
+// Check user session
 if (!isset($_SESSION['user'])) {
+    $_SESSION['request_uri'] = $_SERVER['REQUEST_URI'];
     header("Location: /login/");
+    exit;
 }
 
-if (!empty($_SESSION['look'])&& $_SESSION['look'] != 'admin') {
+if (isset($_SESSION['look']) && ( $_SESSION['look'] != 'admin' )) {
     $user = $_SESSION['look'];
 } else {
     $user = $_SESSION['user'];
 }
 
-
 define('VESTA_CMD', '/usr/bin/sudo /usr/local/vesta/bin/');
 
 $i = 0;
@@ -22,6 +23,7 @@ $i = 0;
 function check_error($return_var){
     if ( $return_var > 0 ) {
         header("Location: /error/");
+        exit;
     }
 }
 

+ 9 - 2
web/login/index.php

@@ -14,8 +14,8 @@ if (isset($_SESSION['user'])) {
             $_SESSION['look_alert'] = $_GET['loginas'];
         }
     }
-    
     header("Location: /");
+    exit;
 } else {
     if (isset($_POST['user']) && isset($_POST['password'])) {
         $cmd="/usr/bin/sudo /usr/local/vesta/bin/";
@@ -25,7 +25,14 @@ if (isset($_SESSION['user'])) {
             $ERROR = "<a class=\"error\">ERROR: Invalid username or password</a>";
         } else {
             $_SESSION['user'] = $_POST['user'];
-            header("Location: /");
+            if (!empty($_SESSION['request_uri'])) {
+                header("Location: ".$_SESSION['request_uri']);
+                unset($_SESSION['request_uri']);
+                exit;
+            } else {
+                header("Location: /");
+                exit;
+            }
         }
     }
     require_once '../templates/login.html';

+ 1 - 1
web/logout/index.php

@@ -8,5 +8,5 @@ if (!empty($_SESSION['look'])) {
 }
 
 header("Location: /");
-
+exit;
 ?>

+ 100 - 0
web/templates/admin/add_web.html

@@ -0,0 +1,100 @@
+<script language="javascript">
+  function elementHideShow(elementToHideOrShow)
+    {
+      var el = document.getElementById(elementToHideOrShow);
+      if (el.style.display == "block") {
+        el.style.display = "none";
+      } else {
+        el.style.display = "block";
+      }
+    }
+</script>
+
+
+<table class='data'>
+<tr class="data-add">
+    <td class="data-dotted" style="padding: 0px 10px 0px 0px" width="150">
+        <table class="data-col1">
+            <tr><td style="padding: 18 0 4 18;"></td></tr>
+        </table>
+    </td>
+    <td class="data-dotted" width="830px" style="vertical-align:top;">
+        <table width="830px"><tr>
+            <td></td>
+        </tr></table>
+        <table class="data-col2" width="600px">
+            <form method="post" name="v_add_user">
+            <tr><td class="add-text" style="padding: 10 0 0 2px;">Domain</td></tr>
+            <tr><td><input type="text" size="20" class="add-input" name="v_domain" <?php if (!empty($v_domain)) echo "value=".$v_domain;  ?> ></td></tr>
+            <tr><td class="add-text" style="padding: 10px 0 0 2px;">IP address</td></tr>
+            <tr><td><select class="add-list" name="v_ip">
+            <?php
+                foreach ($ips as $key => $value) {
+                echo "\t\t\t\t<option value=\"".$key."\"";
+                    if ((!empty($v_ip)) && ( $key == $_POST['v_ip'])){
+                        echo ' selected';
+                    }
+                    echo ">".$key."</option>\n";
+                }
+            ?>
+                </select></td></tr>
+
+            <tr><td class="add-text" style="padding: 10px 0 0 2px;">Template</td></tr>
+            <tr><td><select class="add-list" name="v_template">
+            <?php
+                foreach ($templates as $key => $value) {
+                    echo "\t\t\t\t<option value=\"".$key."\"";
+                    if ((!empty($v_template)) && ( $key == $_POST['v_template'])){
+                        echo ' selected' ;
+                    }
+                    echo ">".$key."</option>\n";
+                }
+            ?>
+                </select></td></tr>
+            <tr><td class="add-text" style="padding: 10 0 0 2px;">DNS support</td></tr>
+            <tr><td><input type="checkbox" size="20" class="add-checkbox" name="v_dns" <?php if (empty($v_dns)) echo "checked=yes"; ?>></tr>
+
+            <tr><td class="add-text" style="padding: 10 0 0 2px;">Mail support</td></tr>
+            <tr><td><input type="checkbox" size="20" class="add-checkbox" name="v_mail" <?php if (empty($v_mail)) echo "checked=yes"; ?>></tr>
+            <tr><td class="add-text" style="padding: 10 0 0 2px;"><a href="javascript:elementHideShow('advtable');" class="add-advanced">Advanced Options ⇢</a></td></tr>
+            <tr><td class="add-text" style="padding: 10 0 0 0px;">
+                <table style="display:<?php if (empty($v_adv)) echo 'none';?> ;" id="advtable">
+                    <tr><td class="add-text" style="padding: 0 0 0 2px;">Aliases</td></tr>
+                    <tr><td><textarea size="20" class="add-input" name="v_aliases"><?php if (!empty($v_aliases)) echo $v_aliases;  ?></textarea></td></tr>
+                    <tr><td class="add-text" style="padding: 10px 0 0 2px;">Error Logging</td></tr>
+                    <tr><td><input type="checkbox" size="20" class="add-checkbox" name="v_elog" <?php if (!empty($v_elog)) echo "checked=yes" ?>></tr>
+                    <tr><td class="add-text" style="padding: 10px 0 0 2px;">Nginx Support</td></tr>
+                    <tr><td><input type="checkbox" size="20" class="add-checkbox" name="v_nginx" <?php if (!empty($v_nginx)) echo "checked=yes" ?>></tr>
+                    <tr><td class="add-text" style="padding: 10px 0 0 2px;">SSL Support</td></tr>
+                    <tr><td><input type="checkbox" size="20" class="add-checkbox" name="v_ssl" <?php if (!empty($v_ssl)) echo "checked=yes" ?>></tr>
+                    <tr><td class="add-text" style="padding: 10px 0 0 2px;">SSL Certificate</td></tr>
+                    <tr><td><textarea size="20" class="add-input" name="v_ssl_cert"><?php if (!empty($v_ssl_cert)) echo $v_ssl_cert;  ?></textarea></tr>
+                    <tr><td class="add-text" style="padding: 10px 0 0 2px;">SSL Key</td></tr>
+                    <tr><td><textarea size="20" class="add-input" name="v_ssl_key"><?php if (!empty($v_ssl_key)) echo $v_ssl_key;  ?></textarea></tr>
+                    <tr><td class="add-text" style="padding: 10px 0 0 2px;">SSL PEM</td></tr>
+                    <tr><td><textarea size="20" class="add-input" name="v_ssl_pem"><?php if (!empty($v_ssl_pem)) echo $v_ssl_pem;  ?></textarea></tr>
+                    <tr><td class="add-text" style="padding: 10px 0 0 2px;">Web Statistics</td></tr>
+                    <tr><td><select class="add-list" name="v_stats">
+                    <?php
+                        foreach ($stats as $key => $value) {
+                            $svalue = "'".$value."'";
+                            echo "\t\t\t\t<option value=\"".$value."\"";
+                            if (empty($v_stats)) $v_stats = 'none';
+                            if (( $value == $v_stats ) || ($svalue == $v_stats )){
+                                echo ' selected' ;
+                            }
+                            echo ">".$value."</option>\n";
+                        }
+                    ?>
+                    </select></td></tr>
+                </table>
+            </td></tr>
+            <tr><td style="padding: 24px 0 0 0;">
+                <input type="submit" name="ok" value="OK" class="add-button">
+                <input type="submit" class="add-button" name="cancel" value="Cancel">
+            </td></tr>
+            </form>
+        </table>
+    </td>
+</tr>
+</table>

+ 15 - 0
web/templates/admin/menu_add_web.html

@@ -0,0 +1,15 @@
+<table class="sub-menu">
+<tr>
+    <td style="padding: 10px 2px 28px 0;" ><a class="add-name"><i>Adding Web Domain</i></a>
+    <?php 
+        if (!empty($_SESSION['error_msg'])) {
+            echo "<a class=\"add-error\"><i> → ".$_SESSION['error_msg']."</i></a>";
+        } else {
+            if (!empty($_SESSION['ok_msg'])) {
+                echo "<a class=\"add-ok\"><i> → ".$_SESSION['ok_msg']."</i></a>";
+            }
+        }
+    ?>
+    </td>
+</tr>
+</table>

+ 1 - 1
web/templates/admin/menu_web.html

@@ -1,6 +1,6 @@
 <table class="sub-menu">
 <tr>
-    <td style="padding: 4px 0 10px 0;"><a href="#" class="add"><img style="padding: 0 6px 0 18px;" src="/images/plus.png" width="12px" height="12px">Add Web Domain</a></td>
+    <td style="padding: 4px 0 10px 0;"><a href="/add/web/" class="add"><img style="padding: 0 6px 0 18px;" src="/images/plus.png" width="12px" height="12px">Add Web Domain</a></td>
     <td style="text-align: right;"><input type="text" size="30" style="border: 2px solid #D3ECF8; padding: 2px 80px 3px 0;"> <button> Search </button></td>
 </tr><tr>
     <td style="padding: 0 0 0 18;"><input type="checkbox" onclick="checkAll(this)"> <a style="padding: 0 4px 0 2px"> toggle all</a>

+ 17 - 0
web/templates/header.html

@@ -464,6 +464,7 @@ if (!empty($_SESSION['look'])) {
         padding: 4px;
         font-size: 14pt;
         color: #555;
+        font-family: Arial, Helvetica, sans-serif;
     }
 
     .add-list {
@@ -472,6 +473,11 @@ if (!empty($_SESSION['look'])) {
         color: #555;
     }
 
+    .add-checkbox {
+        padding: 4px;
+        font-size: 12pt;
+    }
+
     .add-button {
         padding: 4px;
         margin: 0 6px 0 0;
@@ -490,6 +496,17 @@ if (!empty($_SESSION['look'])) {
         color: #80C376;
     }
 
+    .add-advanced {
+        color: #34536A;
+        font-size: 10pt;
+        font-family: Arial, Helvetica, sans-serif;
+        letter-spacing: 0.1em;
+    }
+
+    .add-advanced:hover {
+        color: #80C376;
+    }
+
     </style>
     <link type="text/css" href="/css/jquery-custom-dialogs.css" rel="stylesheet" />
     <script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script>

+ 1 - 5
web/test.php

@@ -1,7 +1,3 @@
 <?php
 
-$arg1 = escapeshellarg($_GET['arg1']);
-$arg2 = escapeshellarg($_GET['arg2']);
-
-echo "/root/bin/test.sh ".$arg1." ".$arg2."\n";
-
+echo $_SERVER['REQUEST_URI'];