ZonD80 пре 13 година
родитељ
комит
758ec7d94c

+ 77 - 77
web/add/cron/index.php

@@ -1,77 +1,77 @@
-<?php
-// Init
-//error_reporting(NULL);
-ob_start();
-session_start();
-$TAB = 'CRON';
-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') {
-    if (!empty($_POST['ok'])) {
-        // Check input
-        if (empty($_POST['v_min'])) $errors[] = _('minute');
-        if (empty($_POST['v_hour'])) $errors[] = _('hour');
-        if (empty($_POST['v_day'])) $errors[] = _('day');
-        if (empty($_POST['v_month'])) $errors[] = _('month');
-        if (empty($_POST['v_wday'])) $errors[] = _('day of week');
-        if (empty($_POST['v_cmd'])) $errors[] = _('cmd');
-
-        // Protect input
-        $v_min = escapeshellarg($_POST['v_min']);
-        $v_hour = escapeshellarg($_POST['v_hour']);
-        $v_day = escapeshellarg($_POST['v_day']);
-        $v_month = escapeshellarg($_POST['v_month']);
-        $v_wday = escapeshellarg($_POST['v_wday']);
-        $v_cmd = escapeshellarg($_POST['v_cmd']);
-
-        // 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 "%s" can not be blank.',$error_msg);
-        } else {
-            // Add Cron Job
-            exec (VESTA_CMD."v-add-cron-job ".$user." ".$v_min." ".$v_hour." ".$v_day." ".$v_month." ".$v_wday." ".$v_cmd, $output, $return_var);
-            $v_type = $_POST['v_type'];
-            $v_charset = $_POST['v_charset'];
-            if ($return_var != 0) {
-                $error = implode('<br>', $output);
-                if (empty($error)) $error = _('Error: vesta did not return any output.');
-                $_SESSION['error_msg'] = $error;
-                unset($v_password);
-                unset($output);
-            } else {
-                $_SESSION['ok_msg'] = _("OK: cron job has been created successfully.");
-                unset($v_min);
-                unset($v_hour);
-                unset($v_day);
-                unset($v_month);
-                unset($v_wday);
-                unset($v_cmd);
-                unset($output);
-            }
-        }
-    }
-    exec (VESTA_CMD."v-list-database-types 'json'", $output, $return_var);
-    $db_types = json_decode(implode('', $output), true);
-    unset($output);
-
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_cron.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+//error_reporting(NULL);
+ob_start();
+session_start();
+$TAB = 'CRON';
+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') {
+    if (!empty($_POST['ok'])) {
+        // Check input
+        if (empty($_POST['v_min'])) $errors[] = _('minute');
+        if (empty($_POST['v_hour'])) $errors[] = _('hour');
+        if (empty($_POST['v_day'])) $errors[] = _('day');
+        if (empty($_POST['v_month'])) $errors[] = _('month');
+        if (empty($_POST['v_wday'])) $errors[] = _('day of week');
+        if (empty($_POST['v_cmd'])) $errors[] = _('cmd');
+
+        // Protect input
+        $v_min = escapeshellarg($_POST['v_min']);
+        $v_hour = escapeshellarg($_POST['v_hour']);
+        $v_day = escapeshellarg($_POST['v_day']);
+        $v_month = escapeshellarg($_POST['v_month']);
+        $v_wday = escapeshellarg($_POST['v_wday']);
+        $v_cmd = escapeshellarg($_POST['v_cmd']);
+
+        // 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 "%s" can not be blank.',$error_msg);
+        } else {
+            // Add Cron Job
+            exec (VESTA_CMD."v-add-cron-job ".$user." ".$v_min." ".$v_hour." ".$v_day." ".$v_month." ".$v_wday." ".$v_cmd, $output, $return_var);
+            $v_type = $_POST['v_type'];
+            $v_charset = $_POST['v_charset'];
+            if ($return_var != 0) {
+                $error = implode('<br>', $output);
+                if (empty($error)) $error = _('Error: vesta did not return any output.');
+                $_SESSION['error_msg'] = $error;
+                unset($v_password);
+                unset($output);
+            } else {
+                $_SESSION['ok_msg'] = _("OK: cron job has been created successfully.");
+                unset($v_min);
+                unset($v_hour);
+                unset($v_day);
+                unset($v_month);
+                unset($v_wday);
+                unset($v_cmd);
+                unset($output);
+            }
+        }
+    }
+    exec (VESTA_CMD."v-list-database-types 'json'", $output, $return_var);
+    $db_types = json_decode(implode('', $output), true);
+    unset($output);
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_cron.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 108 - 108
web/add/db/index.php

@@ -1,109 +1,109 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-$TAB = 'DB';
-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') {
-if (!empty($_POST['ok'])) {
-    // Check input
-    if (empty($_POST['v_database'])) $errors[] = _('database');
-    if (empty($_POST['v_dbuser'])) $errors[] = _('username');
-    if (empty($_POST['v_password'])) $errors[] = _('password');
-    if (empty($_POST['v_type'])) $errors[] = _('type');
-    if (empty($_POST['v_charset'])) $errors[] = _('charset');
-
-        // Protect input
-        $v_database = escapeshellarg($_POST['v_database']);
-        $v_dbuser = escapeshellarg($_POST['v_dbuser']);
-        $v_password = escapeshellarg($_POST['v_password']);
-        $v_type = $_POST['v_type'];
-        $v_charset = $_POST['v_charset'];
-        if (empty($_POST['v_notify'])) $v_notify = 'off';
-
-    // 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 "%s" can not be blank.',$error_msg);
-    } else {
-        // Add Database
-        $v_type = escapeshellarg($_POST['v_type']);
-        $v_charset = escapeshellarg($_POST['v_charset']);
-        exec (VESTA_CMD."v-add-database ".$user." ".$v_database." ".$v_dbuser." ".$v_password." ".$v_type." 'default' ".$v_charset, $output, $return_var);
-        $v_type = $_POST['v_type'];
-        $v_charset = $_POST['v_charset'];
-        if ($return_var != 0) {
-            $error = implode('<br>', $output);
-            if (empty($error)) $error = _('Error: vesta did not return any output.');
-            $_SESSION['error_msg'] = $error;
-            unset($v_password);
-            unset($output);
-        } else {
-            // Add Database
-            $v_type = escapeshellarg($_POST['v_type']);
-            $v_charset = escapeshellarg($_POST['v_charset']);
-            exec (VESTA_CMD."v-add-database ".$user." ".$v_database." ".$v_dbuser." ".$v_password." ".$v_type." 'default' ".$v_charset, $output, $return_var);
-            $v_type = $_POST['v_type'];
-            $v_charset = $_POST['v_charset'];
-            if ($return_var != 0) {
-                $error = implode('<br>', $output);
-                if (empty($error)) $error = _('Error: vesta did not return any output.');
-                $_SESSION['error_msg'] = $error;
-                unset($v_password);
-                unset($output);
-            }
-            else {
-            if (empty($v_notify)) {
-                list($http_host, $port) = explode(':', $_SERVER["HTTP_HOST"]);
-                if ($_POST['v_type'] == 'mysql') $db_admin_link = "http://".$http_host."/phpMyAdmin/";
-                if ($_POST['v_type'] == 'pgsql') $db_admin_link = "http://".$http_host."/phpPgAdmin/";
-
-                $to = $panel[$user]['CONTACT'];
-                $subject = _("Database Credentials");
-                $hostname = exec('hostname');
-                $from = _('MAIL_FROM',$hostname);
-                $mailtext = _('DATABASE_READY',$panel[$user]['FNAME'],$panel[$user]['LNAME'],$_POST['v_type'],$user,$_POST['v_database'],$user,$_POST['v_dbuser'],$_POST['v_password']);
-                $mailtext .= $db_admin_link."\n\n";
-
-                $mailtext .= "--\n"._('Vesta Control Panel')."\n";
-                send_email($to, $subject, $mailtext, $from);
-                
-            }
-            $_SESSION['ok_msg'] = _('DATABASE_CREATED_OK',$user."_".$_POST['v_database'],$user."_".$_POST['v_database']);
-            unset($v_database);
-            unset($v_dbuser);
-            unset($v_password);
-            unset($v_type);
-            unset($v_charset);
-            unset($output);
-        }
-    }
-}
-}
-exec (VESTA_CMD."v-list-database-types 'json'", $output, $return_var);
-$db_types = json_decode(implode('', $output), true);
-unset($output);
-
-include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_db.html');
-unset($_SESSION['error_msg']);
-unset($_SESSION['ok_msg']);
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+$TAB = 'DB';
+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') {
+if (!empty($_POST['ok'])) {
+    // Check input
+    if (empty($_POST['v_database'])) $errors[] = _('database');
+    if (empty($_POST['v_dbuser'])) $errors[] = _('username');
+    if (empty($_POST['v_password'])) $errors[] = _('password');
+    if (empty($_POST['v_type'])) $errors[] = _('type');
+    if (empty($_POST['v_charset'])) $errors[] = _('charset');
+
+        // Protect input
+        $v_database = escapeshellarg($_POST['v_database']);
+        $v_dbuser = escapeshellarg($_POST['v_dbuser']);
+        $v_password = escapeshellarg($_POST['v_password']);
+        $v_type = $_POST['v_type'];
+        $v_charset = $_POST['v_charset'];
+        if (empty($_POST['v_notify'])) $v_notify = 'off';
+
+    // 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 "%s" can not be blank.',$error_msg);
+    } else {
+        // Add Database
+        $v_type = escapeshellarg($_POST['v_type']);
+        $v_charset = escapeshellarg($_POST['v_charset']);
+        exec (VESTA_CMD."v-add-database ".$user." ".$v_database." ".$v_dbuser." ".$v_password." ".$v_type." 'default' ".$v_charset, $output, $return_var);
+        $v_type = $_POST['v_type'];
+        $v_charset = $_POST['v_charset'];
+        if ($return_var != 0) {
+            $error = implode('<br>', $output);
+            if (empty($error)) $error = _('Error: vesta did not return any output.');
+            $_SESSION['error_msg'] = $error;
+            unset($v_password);
+            unset($output);
+        } else {
+            // Add Database
+            $v_type = escapeshellarg($_POST['v_type']);
+            $v_charset = escapeshellarg($_POST['v_charset']);
+            exec (VESTA_CMD."v-add-database ".$user." ".$v_database." ".$v_dbuser." ".$v_password." ".$v_type." 'default' ".$v_charset, $output, $return_var);
+            $v_type = $_POST['v_type'];
+            $v_charset = $_POST['v_charset'];
+            if ($return_var != 0) {
+                $error = implode('<br>', $output);
+                if (empty($error)) $error = _('Error: vesta did not return any output.');
+                $_SESSION['error_msg'] = $error;
+                unset($v_password);
+                unset($output);
+            }
+            else {
+            if (empty($v_notify)) {
+                list($http_host, $port) = explode(':', $_SERVER["HTTP_HOST"]);
+                if ($_POST['v_type'] == 'mysql') $db_admin_link = "http://".$http_host."/phpMyAdmin/";
+                if ($_POST['v_type'] == 'pgsql') $db_admin_link = "http://".$http_host."/phpPgAdmin/";
+
+                $to = $panel[$user]['CONTACT'];
+                $subject = _("Database Credentials");
+                $hostname = exec('hostname');
+                $from = _('MAIL_FROM',$hostname);
+                $mailtext = _('DATABASE_READY',$panel[$user]['FNAME'],$panel[$user]['LNAME'],$_POST['v_type'],$user,$_POST['v_database'],$user,$_POST['v_dbuser'],$_POST['v_password']);
+                $mailtext .= $db_admin_link."\n\n";
+
+                $mailtext .= "--\n"._('Vesta Control Panel')."\n";
+                send_email($to, $subject, $mailtext, $from);
+                
+            }
+            $_SESSION['ok_msg'] = _('DATABASE_CREATED_OK',$user."_".$_POST['v_database'],$user."_".$_POST['v_database']);
+            unset($v_database);
+            unset($v_dbuser);
+            unset($v_password);
+            unset($v_type);
+            unset($v_charset);
+            unset($output);
+        }
+    }
+}
+}
+exec (VESTA_CMD."v-list-database-types 'json'", $output, $return_var);
+$db_types = json_decode(implode('', $output), true);
+unset($output);
+
+include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_db.html');
+unset($_SESSION['error_msg']);
+unset($_SESSION['ok_msg']);
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
 ?>

+ 171 - 171
web/add/dns/index.php

@@ -1,171 +1,171 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-$TAB = 'DNS';
-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') {
-    if (!empty($_POST['ok'])) {
-        // Check input
-        if (empty($_POST['v_domain'])) $errors[] = _('domain');
-        if (empty($_POST['v_ip'])) $errors[] = _('ip');
-
-        // Protect input
-        $v_domain = preg_replace("/^www./i", "", $_POST['v_domain']);
-        $v_domain = escapeshellarg($v_domain);
-        $v_ip = escapeshellarg($_POST['v_ip']);
-        if ($_SESSION['user'] == 'admin') {
-            $v_template = escapeshellarg($_POST['v_template']);
-        } else {
-            $v_template = "''";
-        }
-        if (!empty($_POST['v_ns1'])) $v_ns1 = escapeshellarg($_POST['v_ns1']);
-        if (!empty($_POST['v_ns2'])) $v_ns2 = escapeshellarg($_POST['v_ns2']);
-        if (!empty($_POST['v_ns3'])) $v_ns3 = escapeshellarg($_POST['v_ns3']);
-        if (!empty($_POST['v_ns4'])) $v_ns4 = escapeshellarg($_POST['v_ns4']);
-
-        // 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 "%s" can not be blank.',$error_msg);
-        } else {
-
-            // Add DNS
-            exec (VESTA_CMD."v-add-dns-domain ".$user." ".$v_domain." ".$v_ip." ".$v_template." ".$v_ns1." ".$v_ns2." ".$v_ns3." ".$ns4, $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);
-
-            // Change Expiriation date
-            if ((!empty($_POST['v_exp'])) && ($_POST['v_exp'] != date('Y-m-d', strtotime('+1 year')))) {
-                $v_exp = escapeshellarg($_POST['v_exp']);
-                exec (VESTA_CMD."v-change-dns-domain-exp ".$user." ".$v_domain." ".$v_exp, $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);
-            }
-
-            // Change TTL
-            if ((!empty($_POST['v_ttl'])) && ($_POST['v_ttl'] != '14400')) {
-                $v_ttl = escapeshellarg($_POST['v_ttl']);
-                exec (VESTA_CMD."v-change-dns-domain-ttl ".$user." ".$v_domain." ".$v_ttl, $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'])) {
-                $_SESSION['ok_msg'] = _('DOMAIN_CREATED_OK',$_POST[v_domain],$_POST[v_domain]);
-                unset($v_domain);
-            }
-        }
-    }
-
-
-    // DNS Record
-    if (!empty($_POST['ok_rec'])) {
-        // Check input
-        if (empty($_POST['v_domain'])) $errors[] = 'domain';
-        if (empty($_POST['v_rec'])) $errors[] = 'record';
-        if (empty($_POST['v_type'])) $errors[] = 'type';
-        if (empty($_POST['v_val'])) $errors[] = 'value';
-
-        // Protect input
-        $v_domain = escapeshellarg($_POST['v_domain']);
-        $v_rec = escapeshellarg($_POST['v_rec']);
-        $v_type = escapeshellarg($_POST['v_type']);
-        $v_val = escapeshellarg($_POST['v_val']);
-        $v_priority = escapeshellarg($_POST['v_priority']);
-
-        // 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 "%s" can not be blank.',$error_msg);
-        } else {
-            // Add DNS Record
-            exec (VESTA_CMD."v-add-dns-domain-record ".$user." ".$v_domain." ".$v_rec." ".$v_type." ".$v_val." ".$v_priority, $output, $return_var);
-            $v_type = $_POST['v_type'];
-            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'])) {
-                $_SESSION['ok_msg'] = _('RECORD_CREATED_OK',$_POST[v_rec],$_POST[v_domain]);
-                unset($v_domain);
-                unset($v_rec);
-                unset($v_val);
-                unset($v_priority);
-            }
-        }
-    }
-
-
-    if ((empty($_GET['domain'])) && (empty($_POST['domain'])))  {
-        exec (VESTA_CMD."v-get-user-value ".$user." 'TEMPLATE'", $output, $return_var);
-        $template = $output[0] ;
-        unset($output);
-
-        exec (VESTA_CMD."v-list-dns-templates json", $output, $return_var);
-        $templates = json_decode(implode('', $output), true);
-        unset($output);
-
-        if ((empty($v_ns1)) && (empty($v_ns2))) {
-            exec (VESTA_CMD."v-list-user-ns ".$user." json", $output, $return_var);
-            $nameservers = json_decode(implode('', $output), true);
-            $v_ns1 = $nameservers[0];
-            $v_ns2 = $nameservers[1];
-            $v_ns3 = $nameservers[2];
-            $v_ns4 = $nameservers[3];
-            unset($output);
-        }
-        if (empty($v_ttl)) $v_ttl = 14400;
-        if (empty($v_exp)) $v_exp = date('Y-m-d', strtotime('+1 year'));
-        if ($_SESSION['user'] == 'admin') {
-            include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_dns.html');
-        } else {
-            include($_SERVER['DOCUMENT_ROOT'].'/templates/user/add_dns.html');
-        }
-        unset($_SESSION['error_msg']);
-        unset($_SESSION['ok_msg']);
-    } else {
-        $v_domain = $_GET['domain'];
-        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_dns_rec.html');
-        unset($_SESSION['error_msg']);
-        unset($_SESSION['ok_msg']);
-    }
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+$TAB = 'DNS';
+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') {
+    if (!empty($_POST['ok'])) {
+        // Check input
+        if (empty($_POST['v_domain'])) $errors[] = _('domain');
+        if (empty($_POST['v_ip'])) $errors[] = _('ip');
+
+        // Protect input
+        $v_domain = preg_replace("/^www./i", "", $_POST['v_domain']);
+        $v_domain = escapeshellarg($v_domain);
+        $v_ip = escapeshellarg($_POST['v_ip']);
+        if ($_SESSION['user'] == 'admin') {
+            $v_template = escapeshellarg($_POST['v_template']);
+        } else {
+            $v_template = "''";
+        }
+        if (!empty($_POST['v_ns1'])) $v_ns1 = escapeshellarg($_POST['v_ns1']);
+        if (!empty($_POST['v_ns2'])) $v_ns2 = escapeshellarg($_POST['v_ns2']);
+        if (!empty($_POST['v_ns3'])) $v_ns3 = escapeshellarg($_POST['v_ns3']);
+        if (!empty($_POST['v_ns4'])) $v_ns4 = escapeshellarg($_POST['v_ns4']);
+
+        // 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 "%s" can not be blank.',$error_msg);
+        } else {
+
+            // Add DNS
+            exec (VESTA_CMD."v-add-dns-domain ".$user." ".$v_domain." ".$v_ip." ".$v_template." ".$v_ns1." ".$v_ns2." ".$v_ns3." ".$ns4, $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);
+
+            // Change Expiriation date
+            if ((!empty($_POST['v_exp'])) && ($_POST['v_exp'] != date('Y-m-d', strtotime('+1 year')))) {
+                $v_exp = escapeshellarg($_POST['v_exp']);
+                exec (VESTA_CMD."v-change-dns-domain-exp ".$user." ".$v_domain." ".$v_exp, $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);
+            }
+
+            // Change TTL
+            if ((!empty($_POST['v_ttl'])) && ($_POST['v_ttl'] != '14400')) {
+                $v_ttl = escapeshellarg($_POST['v_ttl']);
+                exec (VESTA_CMD."v-change-dns-domain-ttl ".$user." ".$v_domain." ".$v_ttl, $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'])) {
+                $_SESSION['ok_msg'] = _('DOMAIN_CREATED_OK',$_POST[v_domain],$_POST[v_domain]);
+                unset($v_domain);
+            }
+        }
+    }
+
+
+    // DNS Record
+    if (!empty($_POST['ok_rec'])) {
+        // Check input
+        if (empty($_POST['v_domain'])) $errors[] = 'domain';
+        if (empty($_POST['v_rec'])) $errors[] = 'record';
+        if (empty($_POST['v_type'])) $errors[] = 'type';
+        if (empty($_POST['v_val'])) $errors[] = 'value';
+
+        // Protect input
+        $v_domain = escapeshellarg($_POST['v_domain']);
+        $v_rec = escapeshellarg($_POST['v_rec']);
+        $v_type = escapeshellarg($_POST['v_type']);
+        $v_val = escapeshellarg($_POST['v_val']);
+        $v_priority = escapeshellarg($_POST['v_priority']);
+
+        // 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 "%s" can not be blank.',$error_msg);
+        } else {
+            // Add DNS Record
+            exec (VESTA_CMD."v-add-dns-domain-record ".$user." ".$v_domain." ".$v_rec." ".$v_type." ".$v_val." ".$v_priority, $output, $return_var);
+            $v_type = $_POST['v_type'];
+            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'])) {
+                $_SESSION['ok_msg'] = _('RECORD_CREATED_OK',$_POST[v_rec],$_POST[v_domain]);
+                unset($v_domain);
+                unset($v_rec);
+                unset($v_val);
+                unset($v_priority);
+            }
+        }
+    }
+
+
+    if ((empty($_GET['domain'])) && (empty($_POST['domain'])))  {
+        exec (VESTA_CMD."v-get-user-value ".$user." 'TEMPLATE'", $output, $return_var);
+        $template = $output[0] ;
+        unset($output);
+
+        exec (VESTA_CMD."v-list-dns-templates json", $output, $return_var);
+        $templates = json_decode(implode('', $output), true);
+        unset($output);
+
+        if ((empty($v_ns1)) && (empty($v_ns2))) {
+            exec (VESTA_CMD."v-list-user-ns ".$user." json", $output, $return_var);
+            $nameservers = json_decode(implode('', $output), true);
+            $v_ns1 = $nameservers[0];
+            $v_ns2 = $nameservers[1];
+            $v_ns3 = $nameservers[2];
+            $v_ns4 = $nameservers[3];
+            unset($output);
+        }
+        if (empty($v_ttl)) $v_ttl = 14400;
+        if (empty($v_exp)) $v_exp = date('Y-m-d', strtotime('+1 year'));
+        if ($_SESSION['user'] == 'admin') {
+            include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_dns.html');
+        } else {
+            include($_SERVER['DOCUMENT_ROOT'].'/templates/user/add_dns.html');
+        }
+        unset($_SESSION['error_msg']);
+        unset($_SESSION['ok_msg']);
+    } else {
+        $v_domain = $_GET['domain'];
+        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_dns_rec.html');
+        unset($_SESSION['error_msg']);
+        unset($_SESSION['ok_msg']);
+    }
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 86 - 86
web/add/ip/index.php

@@ -1,86 +1,86 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-$TAB = 'IP';
-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') {
-    if (!empty($_POST['ok'])) {
-        // Check input
-        if (empty($_POST['v_ip'])) $errors[] = _('ip address');
-        if (empty($_POST['v_netmask'])) $errors[] = _('netmask');
-        if (empty($_POST['v_interface'])) $errors[] = _('interface');
-        if (empty($_POST['v_owner'])) $errors[] = _('assigned user');
-
-        // Protect input
-        $v_ip = escapeshellarg($_POST['v_ip']);
-        $v_netmask = escapeshellarg($_POST['v_netmask']);
-        $v_name = escapeshellarg($_POST['v_name']);
-
-        $v_interface = $_POST['v_interface'];
-        $v_shared = $_POST['v_shared'];
-        if ($v_shared == 'on') {
-            $ip_status = 'shared';
-        } else {
-            $ip_status = 'dedicated';
-            $v_dedicated = 'yes';
-        }
-
-        $v_owner = $_POST['v_owner'];
-
-        // 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 "%s" can not be blank.',$error_msg);
-        } else {
-            // Add IP
-            $v_interface = escapeshellarg($_POST['v_interface']);
-            $v_owner = $_POST['v_owner'];
-            exec (VESTA_CMD."v-add-sys-ip ".$v_ip." ".$v_netmask." ".$v_interface."  ".$v_owner." '".$ip_status."' ".$v_name, $output, $return_var);
-            $v_owner = $_POST['v_owner'];
-            $v_interface = $_POST['v_interface'];
-            if ($return_var != 0) {
-                $error = implode('<br>', $output);
-                if (empty($error)) $error = _('Error: vesta did not return any output.');
-                $_SESSION['error_msg'] = $error;
-                unset($v_password);
-                unset($output);
-            } else {
-                $_SESSION['ok_msg'] = _('IP_CREATED_OK',$_POST['v_ip'],$_POST['v_ip']);
-                unset($v_ip);
-                unset($v_netmask);
-                unset($v_name);
-                unset($output);
-            }
-        }
-    }
-    exec (VESTA_CMD."v-list-sys-interfaces 'json'", $output, $return_var);
-    $interfaces = json_decode(implode('', $output), true);
-    unset($output);
-
-    exec (VESTA_CMD."v-list-sys-users 'json'", $output, $return_var);
-    $users = json_decode(implode('', $output), true);
-    unset($output);
-
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_ip.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+$TAB = 'IP';
+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') {
+    if (!empty($_POST['ok'])) {
+        // Check input
+        if (empty($_POST['v_ip'])) $errors[] = _('ip address');
+        if (empty($_POST['v_netmask'])) $errors[] = _('netmask');
+        if (empty($_POST['v_interface'])) $errors[] = _('interface');
+        if (empty($_POST['v_owner'])) $errors[] = _('assigned user');
+
+        // Protect input
+        $v_ip = escapeshellarg($_POST['v_ip']);
+        $v_netmask = escapeshellarg($_POST['v_netmask']);
+        $v_name = escapeshellarg($_POST['v_name']);
+
+        $v_interface = $_POST['v_interface'];
+        $v_shared = $_POST['v_shared'];
+        if ($v_shared == 'on') {
+            $ip_status = 'shared';
+        } else {
+            $ip_status = 'dedicated';
+            $v_dedicated = 'yes';
+        }
+
+        $v_owner = $_POST['v_owner'];
+
+        // 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 "%s" can not be blank.',$error_msg);
+        } else {
+            // Add IP
+            $v_interface = escapeshellarg($_POST['v_interface']);
+            $v_owner = $_POST['v_owner'];
+            exec (VESTA_CMD."v-add-sys-ip ".$v_ip." ".$v_netmask." ".$v_interface."  ".$v_owner." '".$ip_status."' ".$v_name, $output, $return_var);
+            $v_owner = $_POST['v_owner'];
+            $v_interface = $_POST['v_interface'];
+            if ($return_var != 0) {
+                $error = implode('<br>', $output);
+                if (empty($error)) $error = _('Error: vesta did not return any output.');
+                $_SESSION['error_msg'] = $error;
+                unset($v_password);
+                unset($output);
+            } else {
+                $_SESSION['ok_msg'] = _('IP_CREATED_OK',$_POST['v_ip'],$_POST['v_ip']);
+                unset($v_ip);
+                unset($v_netmask);
+                unset($v_name);
+                unset($output);
+            }
+        }
+    }
+    exec (VESTA_CMD."v-list-sys-interfaces 'json'", $output, $return_var);
+    $interfaces = json_decode(implode('', $output), true);
+    unset($output);
+
+    exec (VESTA_CMD."v-list-sys-users 'json'", $output, $return_var);
+    $users = json_decode(implode('', $output), true);
+    unset($output);
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_ip.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 178 - 178
web/add/mail/index.php

@@ -1,178 +1,178 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-$TAB = 'MAIL';
-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') {
-    // Mail Domain
-    if (!empty($_POST['ok'])) {
-        if (empty($_POST['v_domain'])) $errors[] = _('domain');
-        if (!empty($_POST['v_antispam'])) {
-            $v_antispam = 'yes';
-        } else {
-            $v_antispam = 'no';
-        }
-
-        if (!empty($_POST['v_antivirus'])) {
-            $v_antivirus = 'yes';
-        } else {
-            $v_antivirus = 'no';
-        }
-
-        if (!empty($_POST['v_dkim'])) {
-            $v_dkim = 'yes';
-        } else {
-            $v_dkim = 'no';
-        }
-
-        // Protect input
-        $v_domain = preg_replace("/^www./i", "", $_POST['v_domain']);
-        $v_domain = escapeshellarg($v_domain);
-
-        // 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 "%s" can not be blank.',$error_msg);
-        } else {
-
-            // Add mail domain
-            exec (VESTA_CMD."v-add-mail-domain ".$user." ".$v_domain." ".$v_antispam." ".$v_antivirus." ".$v_dkim, $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'])) {
-                $_SESSION['ok_msg'] = _("DOMAIN_MAIL_CREATED_OK",$_POST['v_domain'],$_POST['v_domain']);
-                unset($v_domain);
-            }
-        }
-    }
-
-
-    // Mail Account
-    if (!empty($_POST['ok_acc'])) {
-        // Check input
-        if (empty($_POST['v_domain'])) $errors[] = _('domain');
-        if (empty($_POST['v_account'])) $errors[] = _('account');
-        if (empty($_POST['v_password'])) $errors[] = _('password');
-
-        // Protect input
-        $v_domain = escapeshellarg($_POST['v_domain']);
-        $v_account = escapeshellarg($_POST['v_account']);
-        $v_password = escapeshellarg($_POST['v_password']);
-        $v_quota = escapeshellarg($_POST['v_quota']);
-        $v_aliases = $_POST['v_aliases'];
-        $v_fwd = $_POST['v_fwd'];
-
-        if (empty($_POST['v_quota'])) $v_quota = 0;
-        if ((!empty($_POST['v_quota'])) || (!empty($_POST['v_aliases'])) || (!empty($_POST['v_fwd'])) ) $v_adv = 'yes';
-
-        // 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 "%s" can not be blank.',$error_msg);
-        } else {
-            // Add Mail Account
-            exec (VESTA_CMD."v-add-mail-account ".$user." ".$v_domain." ".$v_account." ".$v_password." ".$v_quota, $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;
-            }
-
-            // 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) {
-                    $alias = escapeshellarg($alias);
-                    if (empty($_SESSION['error_msg'])) {
-                        exec (VESTA_CMD."v-add-mail-account-alias ".$user." ".$v_domain." ".$v_account." ".$alias, $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 Forwads
-            if ((!empty($_POST['v_fwd'])) && (empty($_SESSION['error_msg']))) {
-                $vfwd = preg_replace("/\n/", " ", $_POST['v_fwd']);
-                $vfwd = preg_replace("/,/", " ", $vfwd);
-                $vfwd = preg_replace('/\s+/', ' ',$vfwd);
-                $vfwd = trim($vfwd);
-                $fwd = explode(" ", $vfwd);
-                foreach ($fwd as $forward) {
-                    $forward = escapeshellarg($forward);
-                    if (empty($_SESSION['error_msg'])) {
-                        exec (VESTA_CMD."v-add-mail-account-forward ".$user." ".$v_domain." ".$v_account." ".$forward, $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);
-                }
-            }
-
-            unset($output);
-            if (empty($_SESSION['error_msg'])) {
-                $_SESSION['ok_msg'] = _('MAIL_ACCOUNT_CREATED_OK',$_POST['v_account'],$_POST[v_domain],$_POST['v_account'],$_POST[v_domain]);
-                unset($v_account);
-                unset($v_password);
-                unset($v_password);
-                unset($v_aliases);
-                unset($v_fwd);
-                unset($v_quota);
-            }
-        }
-    }
-
-
-    if ((empty($_GET['domain'])) && (empty($_POST['domain'])))  {
-        $v_domain = (isset($_GET['domain'])?$_GET['domain']:'');
-        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_mail.html');
-        unset($_SESSION['error_msg']);
-        unset($_SESSION['ok_msg']);
-    } else {
-        $v_domain = $_GET['domain'];
-        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_mail_acc.html');
-        unset($_SESSION['error_msg']);
-        unset($_SESSION['ok_msg']);
-    }
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+$TAB = 'MAIL';
+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') {
+    // Mail Domain
+    if (!empty($_POST['ok'])) {
+        if (empty($_POST['v_domain'])) $errors[] = _('domain');
+        if (!empty($_POST['v_antispam'])) {
+            $v_antispam = 'yes';
+        } else {
+            $v_antispam = 'no';
+        }
+
+        if (!empty($_POST['v_antivirus'])) {
+            $v_antivirus = 'yes';
+        } else {
+            $v_antivirus = 'no';
+        }
+
+        if (!empty($_POST['v_dkim'])) {
+            $v_dkim = 'yes';
+        } else {
+            $v_dkim = 'no';
+        }
+
+        // Protect input
+        $v_domain = preg_replace("/^www./i", "", $_POST['v_domain']);
+        $v_domain = escapeshellarg($v_domain);
+
+        // 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 "%s" can not be blank.',$error_msg);
+        } else {
+
+            // Add mail domain
+            exec (VESTA_CMD."v-add-mail-domain ".$user." ".$v_domain." ".$v_antispam." ".$v_antivirus." ".$v_dkim, $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'])) {
+                $_SESSION['ok_msg'] = _("DOMAIN_MAIL_CREATED_OK",$_POST['v_domain'],$_POST['v_domain']);
+                unset($v_domain);
+            }
+        }
+    }
+
+
+    // Mail Account
+    if (!empty($_POST['ok_acc'])) {
+        // Check input
+        if (empty($_POST['v_domain'])) $errors[] = _('domain');
+        if (empty($_POST['v_account'])) $errors[] = _('account');
+        if (empty($_POST['v_password'])) $errors[] = _('password');
+
+        // Protect input
+        $v_domain = escapeshellarg($_POST['v_domain']);
+        $v_account = escapeshellarg($_POST['v_account']);
+        $v_password = escapeshellarg($_POST['v_password']);
+        $v_quota = escapeshellarg($_POST['v_quota']);
+        $v_aliases = $_POST['v_aliases'];
+        $v_fwd = $_POST['v_fwd'];
+
+        if (empty($_POST['v_quota'])) $v_quota = 0;
+        if ((!empty($_POST['v_quota'])) || (!empty($_POST['v_aliases'])) || (!empty($_POST['v_fwd'])) ) $v_adv = 'yes';
+
+        // 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 "%s" can not be blank.',$error_msg);
+        } else {
+            // Add Mail Account
+            exec (VESTA_CMD."v-add-mail-account ".$user." ".$v_domain." ".$v_account." ".$v_password." ".$v_quota, $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;
+            }
+
+            // 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) {
+                    $alias = escapeshellarg($alias);
+                    if (empty($_SESSION['error_msg'])) {
+                        exec (VESTA_CMD."v-add-mail-account-alias ".$user." ".$v_domain." ".$v_account." ".$alias, $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 Forwads
+            if ((!empty($_POST['v_fwd'])) && (empty($_SESSION['error_msg']))) {
+                $vfwd = preg_replace("/\n/", " ", $_POST['v_fwd']);
+                $vfwd = preg_replace("/,/", " ", $vfwd);
+                $vfwd = preg_replace('/\s+/', ' ',$vfwd);
+                $vfwd = trim($vfwd);
+                $fwd = explode(" ", $vfwd);
+                foreach ($fwd as $forward) {
+                    $forward = escapeshellarg($forward);
+                    if (empty($_SESSION['error_msg'])) {
+                        exec (VESTA_CMD."v-add-mail-account-forward ".$user." ".$v_domain." ".$v_account." ".$forward, $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);
+                }
+            }
+
+            unset($output);
+            if (empty($_SESSION['error_msg'])) {
+                $_SESSION['ok_msg'] = _('MAIL_ACCOUNT_CREATED_OK',$_POST['v_account'],$_POST[v_domain],$_POST['v_account'],$_POST[v_domain]);
+                unset($v_account);
+                unset($v_password);
+                unset($v_password);
+                unset($v_aliases);
+                unset($v_fwd);
+                unset($v_quota);
+            }
+        }
+    }
+
+
+    if ((empty($_GET['domain'])) && (empty($_POST['domain'])))  {
+        $v_domain = (isset($_GET['domain'])?$_GET['domain']:'');
+        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_mail.html');
+        unset($_SESSION['error_msg']);
+        unset($_SESSION['ok_msg']);
+    } else {
+        $v_domain = $_GET['domain'];
+        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_mail_acc.html');
+        unset($_SESSION['error_msg']);
+        unset($_SESSION['ok_msg']);
+    }
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 164 - 164
web/add/package/index.php

@@ -1,164 +1,164 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-$TAB = 'PACKAGE';
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-if (empty($_SESSION['user'])) {
-    header("Location: /login/");
-}
-
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-// Are you admin?
-if ($_SESSION['user'] == 'admin') {
-    if (!empty($_POST['ok'])) {
-        // Check input
-        if (empty($_POST['v_package'])) $errors[] = _('package');
-        if (empty($_POST['v_template'])) $errors[] = _('template');
-        if (empty($_POST['v_shell'])) $errrors[] = _('shell');
-        if (!isset($_POST['v_web_domains'])) $errors[] = _('web domains');
-        if (!isset($_POST['v_web_aliases'])) $errors[] = _('web aliases');
-        if (!isset($_POST['v_dns_domains'])) $errors[] = _('dns domains');
-        if (!isset($_POST['v_dns_records'])) $errors[] = _('dns records');
-        if (!isset($_POST['v_mail_domains'])) $errors[] = _('mail domains');
-        if (!isset($_POST['v_mail_accounts'])) $errors[] = _('mail accounts');
-        if (!isset($_POST['v_databases'])) $errors[] = _('databases');
-        if (!isset($_POST['v_cron_jobs'])) $errors[] = _('cron jobs');
-        if (!isset($_POST['v_backups'])) $errors[] = _('backups');
-        if (!isset($_POST['v_disk_quota'])) $errors[] = _('quota');
-        if (!isset($_POST['v_bandwidth'])) $errors[] = _('bandwidth');
-        if (empty($_POST['v_ns1'])) $errors[] = _('ns1');
-        if (empty($_POST['v_ns2'])) $errors[] = _('ns2');
-
-
-        // Protect input
-        $v_package = escapeshellarg($_POST['v_package']);
-        $v_template = escapeshellarg($_POST['v_template']);
-        $v_shell = escapeshellarg($_POST['v_shell']);
-        $v_web_domains = escapeshellarg($_POST['v_web_domains']);
-        $v_web_aliases = escapeshellarg($_POST['v_web_aliases']);
-        $v_dns_domains = escapeshellarg($_POST['v_dns_domains']);
-        $v_dns_records = escapeshellarg($_POST['v_dns_records']);
-        $v_mail_domains = escapeshellarg($_POST['v_mail_domains']);
-        $v_mail_accounts = escapeshellarg($_POST['v_mail_accounts']);
-        $v_databases = escapeshellarg($_POST['v_databases']);
-        $v_cron_jobs = escapeshellarg($_POST['v_cron_jobs']);
-        $v_backups = escapeshellarg($_POST['v_backups']);
-        $v_disk_quota = escapeshellarg($_POST['v_disk_quota']);
-        $v_bandwidth = escapeshellarg($_POST['v_bandwidth']);
-        $v_ns1 = trim($_POST['v_ns1'], '.');
-        $v_ns2 = trim($_POST['v_ns2'], '.');
-        $v_ns3 = trim($_POST['v_ns3'], '.');
-        $v_ns4 = trim($_POST['v_ns4'], '.');
-        $v_ns = $v_ns1.",".$v_ns2;
-        if (!empty($v_ns3)) $v_ns .= ",".$v_ns3;
-        if (!empty($v_ns4)) $v_ns .= ",".$v_ns4;
-        $v_ns = escapeshellarg($v_ns);
-        $v_time = escapeshellarg(date('H:i:s'));
-        $v_date = escapeshellarg(date('Y-m-d'));
-
-        // 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 "%s" can not be blank.',$error_msg);
-        } else {
-            exec ('mktemp -d', $output, $return_var);
-            $tmpdir = $output[0];
-            unset($output);
-
-            // Create package
-            $pkg = "TEMPLATE=".$v_template."\n";
-            $pkg .= "WEB_DOMAINS=".$v_web_domains."\n";
-            $pkg .= "WEB_ALIASES=".$v_web_aliases."\n";
-            $pkg .= "DNS_DOMAINS=".$v_dns_domains."\n";
-            $pkg .= "DNS_RECORDS=".$v_dns_records."\n";
-            $pkg .= "MAIL_DOMAINS=".$v_mail_domains."\n";
-            $pkg .= "MAIL_ACCOUNTS=".$v_mail_accounts."\n";
-            $pkg .= "DATABASES=".$v_databases."\n";
-            $pkg .= "CRON_JOBS=".$v_cron_jobs."\n";
-            $pkg .= "DISK_QUOTA=".$v_disk_quota."\n";
-            $pkg .= "BANDWIDTH=".$v_bandwidth."\n";
-            $pkg .= "NS=".$v_ns."\n";
-            $pkg .= "SHELL=".$v_shell."\n";
-            $pkg .= "BACKUPS=".$v_backups."\n";
-            $pkg .= "TIME=".$v_time."\n";
-            $pkg .= "DATE=".$v_date."\n";
-
-            // Write package
-            $fp = fopen($tmpdir."/".$_POST['v_package'].".pkg", 'w');
-            fwrite($fp, $pkg);
-            fclose($fp);
-
-            // Add new package
-            if (empty($_SESSION['error_msg'])) {
-                exec (VESTA_CMD."v-add-user-package ".$tmpdir." ".$v_package, $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);
-            }
-
-            // Remove tmpdir 
-            exec ('rm -rf '.$tmpdir, $output, $return_var);
-            unset($output);
-
-            // Check output
-            if (empty($_SESSION['error_msg'])) {
-                $_SESSION['ok_msg'] = _('PACKAGE_CREATED_OK',$_POST['v_package'],$_POST['v_package']);
-                unset($v_package);
-            }
-
-        }
-    }
-
-
-    exec (VESTA_CMD."v-list-web-templates json", $output, $return_var);
-    check_error($return_var);
-    $templates = json_decode(implode('', $output), true);
-    unset($output);
-
-    exec (VESTA_CMD."v-list-sys-shells json", $output, $return_var);
-    check_error($return_var);
-    $shells = json_decode(implode('', $output), true);
-    unset($output);
-
-    // Set default values
-    if (empty($v_template)) $v_template = 'default';
-    if (empty($v_shell)) $v_shell = 'nologin';
-    if (empty($v_web_domains)) $v_web_domains = "'0'";
-    if (empty($v_web_aliases)) $v_web_aliases = "'0'";
-    if (empty($v_dns_domains)) $v_dns_domains = "'0'";
-    if (empty($v_dns_records)) $v_dns_records = "'0'";
-    if (empty($v_mail_domains)) $v_mail_domains = "'0'";
-    if (empty($v_mail_accounts)) $v_mail_accounts = "'0'";
-    if (empty($v_databases)) $v_databases = "'0'";
-    if (empty($v_cron_jobs)) $v_cron_jobs = "'0'";
-    if (empty($v_backups)) $v_backups = "'0'";
-    if (empty($v_disk_quota)) $v_disk_quota = "'0'";
-    if (empty($v_bandwidth)) $v_bandwidth = "'0'";
-    if (empty($v_ns1)) $v_ns1 = 'ns1.example.ltd';
-    if (empty($v_ns2)) $v_ns2 = 'ns2.example.ltd';
-
-
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_package.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+$TAB = 'PACKAGE';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+if (empty($_SESSION['user'])) {
+    header("Location: /login/");
+}
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+// Are you admin?
+if ($_SESSION['user'] == 'admin') {
+    if (!empty($_POST['ok'])) {
+        // Check input
+        if (empty($_POST['v_package'])) $errors[] = _('package');
+        if (empty($_POST['v_template'])) $errors[] = _('template');
+        if (empty($_POST['v_shell'])) $errrors[] = _('shell');
+        if (!isset($_POST['v_web_domains'])) $errors[] = _('web domains');
+        if (!isset($_POST['v_web_aliases'])) $errors[] = _('web aliases');
+        if (!isset($_POST['v_dns_domains'])) $errors[] = _('dns domains');
+        if (!isset($_POST['v_dns_records'])) $errors[] = _('dns records');
+        if (!isset($_POST['v_mail_domains'])) $errors[] = _('mail domains');
+        if (!isset($_POST['v_mail_accounts'])) $errors[] = _('mail accounts');
+        if (!isset($_POST['v_databases'])) $errors[] = _('databases');
+        if (!isset($_POST['v_cron_jobs'])) $errors[] = _('cron jobs');
+        if (!isset($_POST['v_backups'])) $errors[] = _('backups');
+        if (!isset($_POST['v_disk_quota'])) $errors[] = _('quota');
+        if (!isset($_POST['v_bandwidth'])) $errors[] = _('bandwidth');
+        if (empty($_POST['v_ns1'])) $errors[] = _('ns1');
+        if (empty($_POST['v_ns2'])) $errors[] = _('ns2');
+
+
+        // Protect input
+        $v_package = escapeshellarg($_POST['v_package']);
+        $v_template = escapeshellarg($_POST['v_template']);
+        $v_shell = escapeshellarg($_POST['v_shell']);
+        $v_web_domains = escapeshellarg($_POST['v_web_domains']);
+        $v_web_aliases = escapeshellarg($_POST['v_web_aliases']);
+        $v_dns_domains = escapeshellarg($_POST['v_dns_domains']);
+        $v_dns_records = escapeshellarg($_POST['v_dns_records']);
+        $v_mail_domains = escapeshellarg($_POST['v_mail_domains']);
+        $v_mail_accounts = escapeshellarg($_POST['v_mail_accounts']);
+        $v_databases = escapeshellarg($_POST['v_databases']);
+        $v_cron_jobs = escapeshellarg($_POST['v_cron_jobs']);
+        $v_backups = escapeshellarg($_POST['v_backups']);
+        $v_disk_quota = escapeshellarg($_POST['v_disk_quota']);
+        $v_bandwidth = escapeshellarg($_POST['v_bandwidth']);
+        $v_ns1 = trim($_POST['v_ns1'], '.');
+        $v_ns2 = trim($_POST['v_ns2'], '.');
+        $v_ns3 = trim($_POST['v_ns3'], '.');
+        $v_ns4 = trim($_POST['v_ns4'], '.');
+        $v_ns = $v_ns1.",".$v_ns2;
+        if (!empty($v_ns3)) $v_ns .= ",".$v_ns3;
+        if (!empty($v_ns4)) $v_ns .= ",".$v_ns4;
+        $v_ns = escapeshellarg($v_ns);
+        $v_time = escapeshellarg(date('H:i:s'));
+        $v_date = escapeshellarg(date('Y-m-d'));
+
+        // 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 "%s" can not be blank.',$error_msg);
+        } else {
+            exec ('mktemp -d', $output, $return_var);
+            $tmpdir = $output[0];
+            unset($output);
+
+            // Create package
+            $pkg = "TEMPLATE=".$v_template."\n";
+            $pkg .= "WEB_DOMAINS=".$v_web_domains."\n";
+            $pkg .= "WEB_ALIASES=".$v_web_aliases."\n";
+            $pkg .= "DNS_DOMAINS=".$v_dns_domains."\n";
+            $pkg .= "DNS_RECORDS=".$v_dns_records."\n";
+            $pkg .= "MAIL_DOMAINS=".$v_mail_domains."\n";
+            $pkg .= "MAIL_ACCOUNTS=".$v_mail_accounts."\n";
+            $pkg .= "DATABASES=".$v_databases."\n";
+            $pkg .= "CRON_JOBS=".$v_cron_jobs."\n";
+            $pkg .= "DISK_QUOTA=".$v_disk_quota."\n";
+            $pkg .= "BANDWIDTH=".$v_bandwidth."\n";
+            $pkg .= "NS=".$v_ns."\n";
+            $pkg .= "SHELL=".$v_shell."\n";
+            $pkg .= "BACKUPS=".$v_backups."\n";
+            $pkg .= "TIME=".$v_time."\n";
+            $pkg .= "DATE=".$v_date."\n";
+
+            // Write package
+            $fp = fopen($tmpdir."/".$_POST['v_package'].".pkg", 'w');
+            fwrite($fp, $pkg);
+            fclose($fp);
+
+            // Add new package
+            if (empty($_SESSION['error_msg'])) {
+                exec (VESTA_CMD."v-add-user-package ".$tmpdir." ".$v_package, $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);
+            }
+
+            // Remove tmpdir 
+            exec ('rm -rf '.$tmpdir, $output, $return_var);
+            unset($output);
+
+            // Check output
+            if (empty($_SESSION['error_msg'])) {
+                $_SESSION['ok_msg'] = _('PACKAGE_CREATED_OK',$_POST['v_package'],$_POST['v_package']);
+                unset($v_package);
+            }
+
+        }
+    }
+
+
+    exec (VESTA_CMD."v-list-web-templates json", $output, $return_var);
+    check_error($return_var);
+    $templates = json_decode(implode('', $output), true);
+    unset($output);
+
+    exec (VESTA_CMD."v-list-sys-shells json", $output, $return_var);
+    check_error($return_var);
+    $shells = json_decode(implode('', $output), true);
+    unset($output);
+
+    // Set default values
+    if (empty($v_template)) $v_template = 'default';
+    if (empty($v_shell)) $v_shell = 'nologin';
+    if (empty($v_web_domains)) $v_web_domains = "'0'";
+    if (empty($v_web_aliases)) $v_web_aliases = "'0'";
+    if (empty($v_dns_domains)) $v_dns_domains = "'0'";
+    if (empty($v_dns_records)) $v_dns_records = "'0'";
+    if (empty($v_mail_domains)) $v_mail_domains = "'0'";
+    if (empty($v_mail_accounts)) $v_mail_accounts = "'0'";
+    if (empty($v_databases)) $v_databases = "'0'";
+    if (empty($v_cron_jobs)) $v_cron_jobs = "'0'";
+    if (empty($v_backups)) $v_backups = "'0'";
+    if (empty($v_disk_quota)) $v_disk_quota = "'0'";
+    if (empty($v_bandwidth)) $v_bandwidth = "'0'";
+    if (empty($v_ns1)) $v_ns1 = 'ns1.example.ltd';
+    if (empty($v_ns2)) $v_ns2 = 'ns2.example.ltd';
+
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_package.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 99 - 99
web/add/user/index.php

@@ -1,99 +1,99 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-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');
-
-// Panel
-top_panel($user,$TAB);
-
-// Are you admin?
-if ($_SESSION['user'] == 'admin') {
-    if (!empty($_POST['ok'])) {
-        // Check input
-        if (empty($_POST['v_username'])) $errors[] = _('user');
-        if (empty($_POST['v_password'])) $errors[] = _('password');
-        if (empty($_POST['v_package'])) $errrors[] = _('package');
-        if (empty($_POST['v_email'])) $errors[] = _('email');
-        if (empty($_POST['v_fname'])) $errors[] = _('first name');
-        if (empty($_POST['v_lname'])) $errors[] = _('last name');
-
-        // Protect input
-        $v_username = escapeshellarg($_POST['v_username']);
-        $v_password = escapeshellarg($_POST['v_password']);
-        $v_package = escapeshellarg($_POST['v_package']);
-        $v_email = escapeshellarg($_POST['v_email']);
-        $v_fname = escapeshellarg($_POST['v_fname']);
-        $v_lname = escapeshellarg($_POST['v_lname']);
-        if (empty($_POST['v_notify'])) $v_notify = 'off';
-
-        // Validate email
-        if (!filter_var($_POST['v_email'], FILTER_VALIDATE_EMAIL)) {
-            $_SESSION['error_msg'] = _('Please enter valid email address.');
-        }
-
-        // 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 "%s" can not be blank.',$error_msg);
-        }
-
-        if (empty($_SESSION['error_msg'])) {
-            exec (VESTA_CMD."v-add-user ".$v_username." ".$v_password." ".$v_email." ".$v_package." ".$v_fname." ".$v_lname, $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;
-            } else {
-                if (empty($v_notify)) {
-                    $to = $_POST['v_email'];
-                    $subject = _("Welcome to Vesta Control Panel");
-                    $hostname = exec('hostname');
-                    $from = _('MAIL_FROM',$hostname);
-                    if (!empty($_POST['v_fname'])) {
-                        $mailtext = _('GREETINGS_GORDON_FREEMAN',$_POST['v_fname'],$_POST['v_lname']);
-                    } else {
-                        $mailtext = _('GREETINGS');
-                    }
-                    $mailtext .= _('ACCOUNT_READY',$_SERVER['HTTP_HOST'],$_POST['v_username'],$_POST['v_password']);
-                    send_email($to, $subject, $mailtext, $from);
-                }
-
-                $_SESSION['ok_msg'] = _('ACCOUNT_CREATED_OK',$_POST[v_username],$_POST[v_username]);
-                unset($v_username);
-                unset($v_password);
-                unset($v_email);
-                unset($v_fname);
-                unset($v_lname);
-            }
-            unset($output);
-        }
-    }
-
-    exec (VESTA_CMD."v-list-user-packages json", $output, $return_var);
-    check_error($return_var);
-    $data = json_decode(implode('', $output), true);
-    unset($output);
-
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_user.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+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');
+
+// Panel
+top_panel($user,$TAB);
+
+// Are you admin?
+if ($_SESSION['user'] == 'admin') {
+    if (!empty($_POST['ok'])) {
+        // Check input
+        if (empty($_POST['v_username'])) $errors[] = _('user');
+        if (empty($_POST['v_password'])) $errors[] = _('password');
+        if (empty($_POST['v_package'])) $errrors[] = _('package');
+        if (empty($_POST['v_email'])) $errors[] = _('email');
+        if (empty($_POST['v_fname'])) $errors[] = _('first name');
+        if (empty($_POST['v_lname'])) $errors[] = _('last name');
+
+        // Protect input
+        $v_username = escapeshellarg($_POST['v_username']);
+        $v_password = escapeshellarg($_POST['v_password']);
+        $v_package = escapeshellarg($_POST['v_package']);
+        $v_email = escapeshellarg($_POST['v_email']);
+        $v_fname = escapeshellarg($_POST['v_fname']);
+        $v_lname = escapeshellarg($_POST['v_lname']);
+        if (empty($_POST['v_notify'])) $v_notify = 'off';
+
+        // Validate email
+        if (!filter_var($_POST['v_email'], FILTER_VALIDATE_EMAIL)) {
+            $_SESSION['error_msg'] = _('Please enter valid email address.');
+        }
+
+        // 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 "%s" can not be blank.',$error_msg);
+        }
+
+        if (empty($_SESSION['error_msg'])) {
+            exec (VESTA_CMD."v-add-user ".$v_username." ".$v_password." ".$v_email." ".$v_package." ".$v_fname." ".$v_lname, $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;
+            } else {
+                if (empty($v_notify)) {
+                    $to = $_POST['v_email'];
+                    $subject = _("Welcome to Vesta Control Panel");
+                    $hostname = exec('hostname');
+                    $from = _('MAIL_FROM',$hostname);
+                    if (!empty($_POST['v_fname'])) {
+                        $mailtext = _('GREETINGS_GORDON_FREEMAN',$_POST['v_fname'],$_POST['v_lname']);
+                    } else {
+                        $mailtext = _('GREETINGS');
+                    }
+                    $mailtext .= _('ACCOUNT_READY',$_SERVER['HTTP_HOST'],$_POST['v_username'],$_POST['v_password']);
+                    send_email($to, $subject, $mailtext, $from);
+                }
+
+                $_SESSION['ok_msg'] = _('ACCOUNT_CREATED_OK',$_POST[v_username],$_POST[v_username]);
+                unset($v_username);
+                unset($v_password);
+                unset($v_email);
+                unset($v_fname);
+                unset($v_lname);
+            }
+            unset($output);
+        }
+    }
+
+    exec (VESTA_CMD."v-list-user-packages json", $output, $return_var);
+    check_error($return_var);
+    $data = json_decode(implode('', $output), true);
+    unset($output);
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_user.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 324 - 324
web/add/web/index.php

@@ -1,324 +1,324 @@
-<?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);
-
-    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_stats_user'])) && (empty($_POST['v_stats_password']))) $errors[] = _('stats user password');
-        if ((!empty($_POST['v_ftp_user'])) && (empty($_POST['v_ftp_password']))) $errors[] = _('ftp user password');
-
-        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_nginx'])) $v_adv = 'yes';
-        if (!empty($_POST['v_ftp'])) $v_adv = 'yes';
-
-        $v_nginx_ext = 'jpg, jpeg, gif, png, ico, svg, css, zip, tgz, gz, rar, bz2, exe, pdf, ';
-        $v_nginx_ext .= 'doc, xls, ppt, txt, odt, ods, odp, odf, tar, bmp, rtf, js, mp3, avi, ';
-        $v_nginx_ext .= 'mpeg, flv, html, htm';
-        if ($_POST['v_nginx_ext'] != $v_nginx_ext) $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']);
-        if ($_SESSION['user'] == 'admin') {
-            $v_template = escapeshellarg($_POST['v_template']);
-        } else {
-            $v_template = "''";
-        }
-        if (empty($_POST['v_dns'])) $v_dns = 'off';
-        if (empty($_POST['v_mail'])) $v_mail = 'off';
-        if (empty($_POST['v_nginx'])) $v_nginx = '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_nginx_ext = preg_replace("/\n/", " ", $_POST['v_nginx_ext']);
-        $v_nginx_ext = preg_replace("/,/", " ", $v_nginx_ext);
-        $v_nginx_ext = preg_replace('/\s+/', ' ',$v_nginx_ext);
-        $v_nginx_ext = trim($v_nginx_ext);
-        $v_nginx_ext = str_replace(' ', ", ", $v_nginx_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'];
-
-        // 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.');
-        }
-
-        // 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 "%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." ".$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);
-                $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);
-                            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." ".$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 ((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);
-                if ($return_var != 0) {
-                    $error = implode('<br>', $output);
-                    if (empty($error)) $error = _('Error: vesta did not return any output.');
-                    $_SESSION['error_msg'] = $error;
-                }
-            }
-
-
-            // Add Nginx
-            if (($_POST['v_nginx'] == 'on') && (empty($_SESSION['error_msg']))) {
-                $ext = str_replace(' ', '', $v_nginx_ext);
-                $ext = escapeshellarg($ext);
-                exec (VESTA_CMD."v-add-web-domain-nginx ".$user." ".$v_domain." 'default' ".$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_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);
-                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($_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);
-                    if ($return_var != 0) {
-                        $error = implode('<br>', $output);
-                        if (empty($error)) $error = _('Error: vesta did not return any output.');
-                        $_SESSION['error_msg'] = $error;
-                    }
-                    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);
-                if ($return_var != 0) {
-                    $error = implode('<br>', $output);
-                    if (empty($error)) $error = _('Error: vesta did not return any output.');
-                    $_SESSION['error_msg'] = $error;
-                } else {
-                    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_email);
-                    }
-                }
-                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);
-                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'] = _('HOSTING_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-get-user-value ".$user." 'TEMPLATE'", $output, $return_var);
-    $template = $output[0] ;
-    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-stats json", $output, $return_var);
-    $stats = json_decode(implode('', $output), true);
-    unset($output);
-
-// Are you admin?
-if ($_SESSION['user'] == 'admin') {
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_web.html');
-} else {
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/user/add_web.html');
-}
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?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);
+
+    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_stats_user'])) && (empty($_POST['v_stats_password']))) $errors[] = _('stats user password');
+        if ((!empty($_POST['v_ftp_user'])) && (empty($_POST['v_ftp_password']))) $errors[] = _('ftp user password');
+
+        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_nginx'])) $v_adv = 'yes';
+        if (!empty($_POST['v_ftp'])) $v_adv = 'yes';
+
+        $v_nginx_ext = 'jpg, jpeg, gif, png, ico, svg, css, zip, tgz, gz, rar, bz2, exe, pdf, ';
+        $v_nginx_ext .= 'doc, xls, ppt, txt, odt, ods, odp, odf, tar, bmp, rtf, js, mp3, avi, ';
+        $v_nginx_ext .= 'mpeg, flv, html, htm';
+        if ($_POST['v_nginx_ext'] != $v_nginx_ext) $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']);
+        if ($_SESSION['user'] == 'admin') {
+            $v_template = escapeshellarg($_POST['v_template']);
+        } else {
+            $v_template = "''";
+        }
+        if (empty($_POST['v_dns'])) $v_dns = 'off';
+        if (empty($_POST['v_mail'])) $v_mail = 'off';
+        if (empty($_POST['v_nginx'])) $v_nginx = '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_nginx_ext = preg_replace("/\n/", " ", $_POST['v_nginx_ext']);
+        $v_nginx_ext = preg_replace("/,/", " ", $v_nginx_ext);
+        $v_nginx_ext = preg_replace('/\s+/', ' ',$v_nginx_ext);
+        $v_nginx_ext = trim($v_nginx_ext);
+        $v_nginx_ext = str_replace(' ', ", ", $v_nginx_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'];
+
+        // 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.');
+        }
+
+        // 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 "%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." ".$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);
+                $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);
+                            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." ".$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 ((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);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = _('Error: vesta did not return any output.');
+                    $_SESSION['error_msg'] = $error;
+                }
+            }
+
+
+            // Add Nginx
+            if (($_POST['v_nginx'] == 'on') && (empty($_SESSION['error_msg']))) {
+                $ext = str_replace(' ', '', $v_nginx_ext);
+                $ext = escapeshellarg($ext);
+                exec (VESTA_CMD."v-add-web-domain-nginx ".$user." ".$v_domain." 'default' ".$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_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);
+                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($_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);
+                    if ($return_var != 0) {
+                        $error = implode('<br>', $output);
+                        if (empty($error)) $error = _('Error: vesta did not return any output.');
+                        $_SESSION['error_msg'] = $error;
+                    }
+                    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);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = _('Error: vesta did not return any output.');
+                    $_SESSION['error_msg'] = $error;
+                } else {
+                    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_email);
+                    }
+                }
+                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);
+                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'] = _('HOSTING_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-get-user-value ".$user." 'TEMPLATE'", $output, $return_var);
+    $template = $output[0] ;
+    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-stats json", $output, $return_var);
+    $stats = json_decode(implode('', $output), true);
+    unset($output);
+
+// Are you admin?
+if ($_SESSION['user'] == 'admin') {
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/add_web.html');
+} else {
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/user/add_web.html');
+}
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 28 - 28
web/bulk/service/index.php

@@ -1,28 +1,28 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-$service = $_POST['service'];
-$action = $_POST['action'];
-
-if ($_SESSION['user'] == 'admin') {
-    switch ($action) {
-        case 'stop': $cmd='v-stop-service';
-            break;
-        case 'start': $cmd='v-start-service';
-            break;
-        case 'restart': $cmd='v-restart-service';
-            break;
-        default: header("Location: /list/services/"); exit;
-    }
-    foreach ($service as $value) {
-        $value = escapeshellarg($value);
-        exec (VESTA_CMD.$cmd." ".$value, $output, $return_var);
-    }
-}
-
-header("Location: /list/services/");
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+$service = $_POST['service'];
+$action = $_POST['action'];
+
+if ($_SESSION['user'] == 'admin') {
+    switch ($action) {
+        case 'stop': $cmd='v-stop-service';
+            break;
+        case 'start': $cmd='v-start-service';
+            break;
+        case 'restart': $cmd='v-restart-service';
+            break;
+        default: header("Location: /list/services/"); exit;
+    }
+    foreach ($service as $value) {
+        $value = escapeshellarg($value);
+        exec (VESTA_CMD.$cmd." ".$value, $output, $return_var);
+    }
+}
+
+header("Location: /list/services/");

+ 545 - 545
web/css/jquery-custom-dialogs.css

@@ -1,546 +1,546 @@
-/*!
- * jQuery UI CSS Framework 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
-.ui-helper-clearfix:after { clear: both; }
-.ui-helper-clearfix { zoom: 1; }
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #e6e6e6;}
-
-
-/*!
- * jQuery UI CSS Framework 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial, Helvetica, sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Arial, Helvetica, sans-serif; font-size: 12pt; }
-.ui-widget .ui-widget { font-size: 10pt; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; }
-.ui-widget-content { border: 1px solid #aaaaaa; color: #222222; }
-.ui-widget-content a { color: #222222; }
-.ui-widget-header { border: 1px solid #d6d4c9; background: #ebe9dc; color: #777777; font-size: 10pt; font-weight: bold;}
-.ui-widget-header a { color: #222222; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
-
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { opacity: .30;filter:Alpha(Opacity=30); }
-.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*!
- * jQuery UI Resizable 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*!
- * jQuery UI Selectable 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
-/*!
- * jQuery UI Accordion 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-/* IE/Win - Fix animation bug - #4615 */
-.ui-accordion { width: 100%; }
-.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
-.ui-accordion .ui-accordion-li-fix { display: inline; }
-.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
-.ui-accordion .ui-accordion-header a { display: block; font-size: 10pt; padding: .5em .5em .5em .7em; }
-.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 10pt 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }
-/*!
- * jQuery UI Autocomplete 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }	
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu 1.8.20
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
-	list-style:none;
-	padding: 2px;
-	margin: 0;
-	display:block;
-	float: left;
-}
-.ui-menu .ui-menu {
-	margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-	margin:0;
-	padding: 0;
-	zoom: 1;
-	float: left;
-	clear: left;
-	width: 100%;
-}
-.ui-menu .ui-menu-item a {
-	text-decoration:none;
-	display:block;
-	padding:.2em .4em;
-	line-height:1.5;
-	zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-	font-weight: normal;
-	margin: -1px;
-}
-/*!
- * jQuery UI Button 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .10pt; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; } 
-button.ui-button-icons-only { width: 3.7em; } 
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4;  }
-.ui-button-text-only .ui-button-text { padding: .4em 10pt; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 10pt .4em 2.10pt; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.10pt .4em 10pt; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.10pt; padding-right: 2.10pt; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 10pt; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-/*!
- * jQuery UI Dialog 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; background: #fff; }
-.ui-dialog .ui-dialog-titlebar { padding: .4em 10pt; position: relative;  }
-.ui-dialog .ui-dialog-title { float: left; margin: .10pt 16px .10pt 0;  font-family: Arial; color: #323232;} 
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 10pt; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 0 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 10pt .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { margin: 0 0 0 70px; }
-.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-/*!
- * jQuery UI Slider 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }/*!
- * jQuery UI Tabs 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 10pt; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 10pt 1.4em; background: none; }
-.ui-tabs .ui-tabs-hide { display: none !important; }
-/*!
- * jQuery UI Datepicker 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:10pt; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month, 
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}/*!
- * jQuery UI Progressbar 1.8.20
- *
- * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+/*!
+ * jQuery UI CSS Framework 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #e6e6e6;}
+
+
+/*!
+ * jQuery UI CSS Framework 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial, Helvetica, sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Arial, Helvetica, sans-serif; font-size: 12pt; }
+.ui-widget .ui-widget { font-size: 10pt; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; }
+.ui-widget-content { border: 1px solid #aaaaaa; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #d6d4c9; background: #ebe9dc; color: #777777; font-size: 10pt; font-weight: bold;}
+.ui-widget-header a { color: #222222; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*!
+ * jQuery UI Resizable 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*!
+ * jQuery UI Selectable 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*!
+ * jQuery UI Accordion 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 10pt; padding: .5em .5em .5em .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 10pt 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }
+/*!
+ * jQuery UI Autocomplete 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.20
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*!
+ * jQuery UI Button 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .10pt; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .4em 10pt; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 10pt .4em 2.10pt; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.10pt .4em 10pt; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.10pt; padding-right: 2.10pt; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 10pt; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*!
+ * jQuery UI Dialog 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; background: #fff; }
+.ui-dialog .ui-dialog-titlebar { padding: .4em 10pt; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .10pt 16px .10pt 0;  font-family: Arial; color: #323232;} 
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 10pt; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 0 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 10pt .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { margin: 0 0 0 70px; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*!
+ * jQuery UI Slider 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/*!
+ * jQuery UI Tabs 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 10pt; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 10pt 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*!
+ * jQuery UI Datepicker 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:10pt; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*!
+ * jQuery UI Progressbar 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
 .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }

+ 34 - 34
web/delete/backup/index.php

@@ -1,34 +1,34 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-    // Delete as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=$_GET['user'];
-    }
-
-    if (!empty($_GET['backup'])) {
-        $v_username = escapeshellarg($user);
-        $v_backup = escapeshellarg($_GET['backup']);
-        exec (VESTA_CMD."v-delete-user-backup ".$v_username." ".$v_backup, $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);
-
-//}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/backup/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+    // Delete as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=$_GET['user'];
+    }
+
+    if (!empty($_GET['backup'])) {
+        $v_username = escapeshellarg($user);
+        $v_backup = escapeshellarg($_GET['backup']);
+        exec (VESTA_CMD."v-delete-user-backup ".$v_username." ".$v_backup, $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);
+
+//}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/backup/");
+exit;

+ 34 - 34
web/delete/cron/index.php

@@ -1,34 +1,34 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-    // Delete as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=$_GET['user'];
-    }
-
-    if (!empty($_GET['job'])) {
-        $v_username = escapeshellarg($user);
-        $v_job = escapeshellarg($_GET['job']);
-        exec (VESTA_CMD."v-delete-cron-job ".$v_username." ".$v_job, $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);
-
-//}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/cron/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+    // Delete as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=$_GET['user'];
+    }
+
+    if (!empty($_GET['job'])) {
+        $v_username = escapeshellarg($user);
+        $v_job = escapeshellarg($_GET['job']);
+        exec (VESTA_CMD."v-delete-cron-job ".$v_username." ".$v_job, $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);
+
+//}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/cron/");
+exit;

+ 34 - 34
web/delete/db/index.php

@@ -1,34 +1,34 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-    // Delete as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=$_GET['user'];
-    }
-
-    if (!empty($_GET['database'])) {
-        $v_username = escapeshellarg($user);
-        $v_database = escapeshellarg($_GET['database']);
-        exec (VESTA_CMD."v-delete-database ".$v_username." ".$v_database, $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);
-
-//}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/db/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+    // Delete as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=$_GET['user'];
+    }
+
+    if (!empty($_GET['database'])) {
+        $v_username = escapeshellarg($user);
+        $v_database = escapeshellarg($_GET['database']);
+        exec (VESTA_CMD."v-delete-database ".$v_username." ".$v_database, $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);
+
+//}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/db/");
+exit;

+ 63 - 63
web/delete/dns/index.php

@@ -1,63 +1,63 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-    // Delete as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=$_GET['user'];
-    }
-
-    // DNS domain
-    if ((!empty($_GET['domain'])) && (empty($_GET['record_id'])))  {
-        $v_username = escapeshellarg($user);
-        $v_domain = escapeshellarg($_GET['domain']);
-        exec (VESTA_CMD."v-delete-dns-domain ".$v_username." ".$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);
-
-        $back = $_SESSION['back'];
-        if (!empty($back)) {
-            header("Location: ".$back);
-            exit;
-        }
-        header("Location: /list/dns/");
-        exit;
-    }
-
-    // DNS record
-    if ((!empty($_GET['domain'])) && (!empty($_GET['record_id'])))  {
-        $v_username = escapeshellarg($user);
-        $v_domain = escapeshellarg($_GET['domain']);
-        $v_record_id = escapeshellarg($_GET['record_id']);
-        exec (VESTA_CMD."v-delete-dns-domain-record ".$v_username." ".$v_domain." ".$v_record_id, $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);
-        $back = $_SESSION['back'];
-        if (!empty($back)) {
-            header("Location: ".$back);
-            exit;
-        }	
-        header("Location: /list/dns/?domain=".$_GET['domain']);
-        exit;
-    }
-//}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/dns/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+    // Delete as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=$_GET['user'];
+    }
+
+    // DNS domain
+    if ((!empty($_GET['domain'])) && (empty($_GET['record_id'])))  {
+        $v_username = escapeshellarg($user);
+        $v_domain = escapeshellarg($_GET['domain']);
+        exec (VESTA_CMD."v-delete-dns-domain ".$v_username." ".$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);
+
+        $back = $_SESSION['back'];
+        if (!empty($back)) {
+            header("Location: ".$back);
+            exit;
+        }
+        header("Location: /list/dns/");
+        exit;
+    }
+
+    // DNS record
+    if ((!empty($_GET['domain'])) && (!empty($_GET['record_id'])))  {
+        $v_username = escapeshellarg($user);
+        $v_domain = escapeshellarg($_GET['domain']);
+        $v_record_id = escapeshellarg($_GET['record_id']);
+        exec (VESTA_CMD."v-delete-dns-domain-record ".$v_username." ".$v_domain." ".$v_record_id, $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);
+        $back = $_SESSION['back'];
+        if (!empty($back)) {
+            header("Location: ".$back);
+            exit;
+        }	
+        header("Location: /list/dns/?domain=".$_GET['domain']);
+        exit;
+    }
+//}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/dns/");
+exit;

+ 29 - 29
web/delete/ip/index.php

@@ -1,29 +1,29 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-if ($_SESSION['user'] == 'admin') {
-    if (!empty($_GET['ip'])) {
-        $v_ip = escapeshellarg($_GET['ip']);
-        exec (VESTA_CMD."v-delete-sys-ip ".$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);
-
-}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/ip/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+if ($_SESSION['user'] == 'admin') {
+    if (!empty($_GET['ip'])) {
+        $v_ip = escapeshellarg($_GET['ip']);
+        exec (VESTA_CMD."v-delete-sys-ip ".$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);
+
+}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/ip/");
+exit;

+ 62 - 62
web/delete/mail/index.php

@@ -1,62 +1,62 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-    // Delete as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=$_GET['user'];
-    }
-
-    // Mail domain
-    if ((!empty($_GET['domain'])) && (empty($_GET['account'])))  {
-        $v_username = escapeshellarg($user);
-        $v_domain = escapeshellarg($_GET['domain']);
-        exec (VESTA_CMD."v-delete-mail-domain ".$v_username." ".$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);
-        $back = $_SESSION['back'];
-        if (!empty($back)) {
-            header("Location: ".$back);
-            exit;
-        }
-        header("Location: /list/mail/");
-        exit;
-    }
-
-    // Mail account
-    if ((!empty($_GET['domain'])) && (!empty($_GET['account'])))  {
-        $v_username = escapeshellarg($user);
-        $v_domain = escapeshellarg($_GET['domain']);
-        $v_account = escapeshellarg($_GET['account']);
-        exec (VESTA_CMD."v-delete-mail-account ".$v_username." ".$v_domain." ".$v_account, $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);
-        $back = $_SESSION['back'];
-        if (!empty($back)) {
-	    header("Location: ".$back);
-            exit;
-	}
-        header("Location: /list/mail/?domain=".$_GET['domain']);
-        exit;
-    }
-//}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/mail/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+    // Delete as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=$_GET['user'];
+    }
+
+    // Mail domain
+    if ((!empty($_GET['domain'])) && (empty($_GET['account'])))  {
+        $v_username = escapeshellarg($user);
+        $v_domain = escapeshellarg($_GET['domain']);
+        exec (VESTA_CMD."v-delete-mail-domain ".$v_username." ".$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);
+        $back = $_SESSION['back'];
+        if (!empty($back)) {
+            header("Location: ".$back);
+            exit;
+        }
+        header("Location: /list/mail/");
+        exit;
+    }
+
+    // Mail account
+    if ((!empty($_GET['domain'])) && (!empty($_GET['account'])))  {
+        $v_username = escapeshellarg($user);
+        $v_domain = escapeshellarg($_GET['domain']);
+        $v_account = escapeshellarg($_GET['account']);
+        exec (VESTA_CMD."v-delete-mail-account ".$v_username." ".$v_domain." ".$v_account, $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);
+        $back = $_SESSION['back'];
+        if (!empty($back)) {
+	    header("Location: ".$back);
+            exit;
+	}
+        header("Location: /list/mail/?domain=".$_GET['domain']);
+        exit;
+    }
+//}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/mail/");
+exit;

+ 28 - 28
web/delete/package/index.php

@@ -1,28 +1,28 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-if ($_SESSION['user'] == 'admin') {
-    if (!empty($_GET['package'])) {
-        $v_package = escapeshellarg($_GET['package']);
-        exec (VESTA_CMD."v-delete-user-package ".$v_package, $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);
-}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/package/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+if ($_SESSION['user'] == 'admin') {
+    if (!empty($_GET['package'])) {
+        $v_package = escapeshellarg($_GET['package']);
+        exec (VESTA_CMD."v-delete-user-package ".$v_package, $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);
+}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/package/");
+exit;

+ 28 - 28
web/delete/user/index.php

@@ -1,28 +1,28 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-if ($_SESSION['user'] == 'admin') {
-    if (!empty($_GET['user'])) {
-        $v_username = escapeshellarg($_GET['user']);
-        exec (VESTA_CMD."v-delete-user ".$v_username, $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);
-}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/user/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+if ($_SESSION['user'] == 'admin') {
+    if (!empty($_GET['user'])) {
+        $v_username = escapeshellarg($_GET['user']);
+        exec (VESTA_CMD."v-delete-user ".$v_username, $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);
+}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/user/");
+exit;

+ 60 - 60
web/delete/web/index.php

@@ -1,60 +1,60 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-    // Delete as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=$_GET['user'];
-    }
-
-if (!empty($_GET['domain'])) {
-    $v_username = escapeshellarg($user);
-    $v_domain = escapeshellarg($_GET['domain']);
-    exec (VESTA_CMD."v-delete-web-domain ".$v_username." ".$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);
-
-    // DNS
-    if ($return_var == 0) {
-        exec (VESTA_CMD."v-list-dns-domain ".$v_username." ".$v_domain." json", $output, $lreturn_var);
-        if ($lreturn_var == 0 ) {
-            exec (VESTA_CMD."v-delete-dns-domain ".$v_username." ".$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);
-        }
-    }
-
-    // Mail
-    if ($return_var == 0) {
-        exec (VESTA_CMD."v-list-mail-domain ".$v_username." ".$v_domain." json", $output, $lreturn_var);
-        if ($lreturn_var == 0 ) {
-            exec (VESTA_CMD."v-delete-mail-domain ".$v_username." ".$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);
-        }
-    }
-}
-
-$back = $_SESSION['back'];
-if (!empty($back)) {
-    header("Location: ".$back);
-    exit;
-}
-
-header("Location: /list/web/");
-exit;
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+    // Delete as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=$_GET['user'];
+    }
+
+if (!empty($_GET['domain'])) {
+    $v_username = escapeshellarg($user);
+    $v_domain = escapeshellarg($_GET['domain']);
+    exec (VESTA_CMD."v-delete-web-domain ".$v_username." ".$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);
+
+    // DNS
+    if ($return_var == 0) {
+        exec (VESTA_CMD."v-list-dns-domain ".$v_username." ".$v_domain." json", $output, $lreturn_var);
+        if ($lreturn_var == 0 ) {
+            exec (VESTA_CMD."v-delete-dns-domain ".$v_username." ".$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);
+        }
+    }
+
+    // Mail
+    if ($return_var == 0) {
+        exec (VESTA_CMD."v-list-mail-domain ".$v_username." ".$v_domain." json", $output, $lreturn_var);
+        if ($lreturn_var == 0 ) {
+            exec (VESTA_CMD."v-delete-mail-domain ".$v_username." ".$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);
+        }
+    }
+}
+
+$back = $_SESSION['back'];
+if (!empty($back)) {
+    header("Location: ".$back);
+    exit;
+}
+
+header("Location: /list/web/");
+exit;

+ 85 - 85
web/edit/cron/index.php

@@ -1,85 +1,85 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-
-$TAB = 'CRON';
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-    // Edit as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=escapeshellarg($_GET['user']);
-    }
-
-    // Check user argument?
-    if (empty($_GET['job'])) {
-        header("Location: /list/cron/");
-        exit;
-    }
-
-    $v_job = escapeshellarg($_GET['job']);
-    exec (VESTA_CMD."v-list-cron-job ".$user." ".$v_job." 'json'", $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;
-    } else {
-        $data = json_decode(implode('', $output), true);
-        unset($output);
-        $v_username = $user;
-        $v_job = $_GET['job'];
-        $v_min = $data[$v_job]['MIN'];
-        $v_hour = $data[$v_job]['HOUR'];
-        $v_day = $data[$v_job]['DAY'];
-        $v_month = $data[$v_job]['MONTH'];
-        $v_wday = $data[$v_job]['WDAY'];
-        $v_cmd = $data[$v_job]['CMD'];
-        $v_date = $data[$v_job]['DATE'];
-        $v_time = $data[$v_job]['TIME'];
-        $v_suspended = $data[$v_job]['SUSPENDED'];
-        if ( $v_suspended == 'yes' ) {
-            $v_status =  'suspended';
-        } else {
-            $v_status =  'active';
-        }
-
-        // Action
-        if (!empty($_POST['save'])) {
-            $v_username = $user;
-            // Change job
-            if (($v_min != $_POST['v_min']) || ($v_hour != $_POST['v_hour']) || ($v_day != $_POST['v_day']) || ($v_month != $_POST['v_month']) || ($v_wday != $_POST['v_wday']) || ($v_cmd != $_POST['v_cmd']) &&(empty($_SESSION['error_msg']))) {
-                $v_min = escapeshellarg($_POST['v_min']);
-                $v_hour = escapeshellarg($_POST['v_hour']);
-                $v_day = escapeshellarg($_POST['v_day']);
-                $v_month = escapeshellarg($_POST['v_month']);
-                $v_wday = escapeshellarg($_POST['v_wday']);
-                $v_cmd = escapeshellarg($_POST['v_cmd']);
-                exec (VESTA_CMD."v-change-cron-job ".$v_username." ".$v_job." ".$v_min." ".$v_hour." ".$v_day." ".$v_month." ".$v_wday." ".$v_cmd, $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);
-                $v_cmd = $_POST['v_cmd'];
-            }
-            if (empty($_SESSION['error_msg'])) {
-                $_SESSION['ok_msg'] = _("OK: changes has been saved.");
-            }
-        }
-    }
-
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_cron.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+$TAB = 'CRON';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+    // Edit as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=escapeshellarg($_GET['user']);
+    }
+
+    // Check user argument?
+    if (empty($_GET['job'])) {
+        header("Location: /list/cron/");
+        exit;
+    }
+
+    $v_job = escapeshellarg($_GET['job']);
+    exec (VESTA_CMD."v-list-cron-job ".$user." ".$v_job." 'json'", $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;
+    } else {
+        $data = json_decode(implode('', $output), true);
+        unset($output);
+        $v_username = $user;
+        $v_job = $_GET['job'];
+        $v_min = $data[$v_job]['MIN'];
+        $v_hour = $data[$v_job]['HOUR'];
+        $v_day = $data[$v_job]['DAY'];
+        $v_month = $data[$v_job]['MONTH'];
+        $v_wday = $data[$v_job]['WDAY'];
+        $v_cmd = $data[$v_job]['CMD'];
+        $v_date = $data[$v_job]['DATE'];
+        $v_time = $data[$v_job]['TIME'];
+        $v_suspended = $data[$v_job]['SUSPENDED'];
+        if ( $v_suspended == 'yes' ) {
+            $v_status =  'suspended';
+        } else {
+            $v_status =  'active';
+        }
+
+        // Action
+        if (!empty($_POST['save'])) {
+            $v_username = $user;
+            // Change job
+            if (($v_min != $_POST['v_min']) || ($v_hour != $_POST['v_hour']) || ($v_day != $_POST['v_day']) || ($v_month != $_POST['v_month']) || ($v_wday != $_POST['v_wday']) || ($v_cmd != $_POST['v_cmd']) &&(empty($_SESSION['error_msg']))) {
+                $v_min = escapeshellarg($_POST['v_min']);
+                $v_hour = escapeshellarg($_POST['v_hour']);
+                $v_day = escapeshellarg($_POST['v_day']);
+                $v_month = escapeshellarg($_POST['v_month']);
+                $v_wday = escapeshellarg($_POST['v_wday']);
+                $v_cmd = escapeshellarg($_POST['v_cmd']);
+                exec (VESTA_CMD."v-change-cron-job ".$v_username." ".$v_job." ".$v_min." ".$v_hour." ".$v_day." ".$v_month." ".$v_wday." ".$v_cmd, $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);
+                $v_cmd = $_POST['v_cmd'];
+            }
+            if (empty($_SESSION['error_msg'])) {
+                $_SESSION['ok_msg'] = _("OK: changes has been saved.");
+            }
+        }
+    }
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_cron.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 79 - 79
web/edit/db/index.php

@@ -1,79 +1,79 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-
-$TAB = 'DB';
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-    // Check user argument?
-    if (empty($_GET['database'])) {
-        header("Location: /list/db/");
-        exit;
-    }
-
-    // Edit as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=escapeshellarg($_GET['user']);
-    }
-
-    $v_database = escapeshellarg($_GET['database']);
-    exec (VESTA_CMD."v-list-database ".$user." ".$v_database." 'json'", $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;
-    } else {
-        $data = json_decode(implode('', $output), true);
-        unset($output);
-        $v_username = $user;
-        $v_database = $_GET['database'];
-        $v_dbuser = $data[$v_database]['DBUSER'];
-        $v_password = "••••••••";
-        $v_host = $data[$v_database]['HOST'];
-        $v_type = $data[$v_database]['TYPE'];
-        $v_charset = $data[$v_database]['CHARSET'];
-        $v_date = $data[$v_database]['DATE'];
-        $v_time = $data[$v_database]['TIME'];
-        $v_suspended = $data[$v_database]['SUSPENDED'];
-        if ( $v_suspended == 'yes' ) {
-            $v_status =  'suspended';
-        } else {
-            $v_status =  'active';
-        }
-
-        // Action
-        if (!empty($_POST['save'])) {
-            $v_username = $user;
-            // Change password
-            if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
-                $v_password = escapeshellarg($_POST['v_password']);
-                exec (VESTA_CMD."v-change-database-password ".$v_username." ".$v_database." ".$v_password, $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;
-                }
-                $v_password = "••••••••";
-                unset($output);
-            }
-            if (empty($_SESSION['error_msg'])) {
-                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-            }
-        }
-    }
-
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_db.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+$TAB = 'DB';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+    // Check user argument?
+    if (empty($_GET['database'])) {
+        header("Location: /list/db/");
+        exit;
+    }
+
+    // Edit as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=escapeshellarg($_GET['user']);
+    }
+
+    $v_database = escapeshellarg($_GET['database']);
+    exec (VESTA_CMD."v-list-database ".$user." ".$v_database." 'json'", $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;
+    } else {
+        $data = json_decode(implode('', $output), true);
+        unset($output);
+        $v_username = $user;
+        $v_database = $_GET['database'];
+        $v_dbuser = $data[$v_database]['DBUSER'];
+        $v_password = "••••••••";
+        $v_host = $data[$v_database]['HOST'];
+        $v_type = $data[$v_database]['TYPE'];
+        $v_charset = $data[$v_database]['CHARSET'];
+        $v_date = $data[$v_database]['DATE'];
+        $v_time = $data[$v_database]['TIME'];
+        $v_suspended = $data[$v_database]['SUSPENDED'];
+        if ( $v_suspended == 'yes' ) {
+            $v_status =  'suspended';
+        } else {
+            $v_status =  'active';
+        }
+
+        // Action
+        if (!empty($_POST['save'])) {
+            $v_username = $user;
+            // Change password
+            if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
+                $v_password = escapeshellarg($_POST['v_password']);
+                exec (VESTA_CMD."v-change-database-password ".$v_username." ".$v_database." ".$v_password, $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;
+                }
+                $v_password = "••••••••";
+                unset($output);
+            }
+            if (empty($_SESSION['error_msg'])) {
+                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+            }
+        }
+    }
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_db.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 210 - 210
web/edit/dns/index.php

@@ -1,210 +1,210 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-
-$TAB = 'DNS';
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-    // Check user argument?
-    if (empty($_GET['domain'])) {
-        header("Location: /list/dns/");
-        exit;
-    }
-
-    // Edit as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=escapeshellarg($_GET['user']);
-    }
-
-    // Check domain
-    if ((!empty($_GET['domain'])) && (empty($_GET['record_id'])))  {
-        $v_domain = escapeshellarg($_GET['domain']);
-        exec (VESTA_CMD."v-list-dns-domain ".$user." ".$v_domain." json", $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;
-        } else {
-            $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_ttl = $data[$v_domain]['TTL'];
-            $v_exp = $data[$v_domain]['EXP'];
-            $v_soa = $data[$v_domain]['SOA'];
-            $v_date = $data[$v_domain]['DATE'];
-            $v_time = $data[$v_domain]['TIME'];
-            $v_suspended = $data[$v_domain]['SUSPENDED'];
-            if ( $v_suspended == 'yes' ) {
-                $v_status =  'suspended';
-            } else {
-                $v_status =  'active';
-            }
-
-            exec (VESTA_CMD."v-list-dns-templates json", $output, $return_var);
-            $templates = json_decode(implode('', $output), true);
-            unset($output);
-        }
-
-        // Action
-        if (!empty($_POST['save'])) {
-            $v_domain = escapeshellarg($_POST['v_domain']);
-
-            // IP
-            if (($v_ip != $_POST['v_ip']) && (empty($_SESSION['error_msg']))) {
-                $v_ip = escapeshellarg($_POST['v_ip']);
-                exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." ".$v_domain." ".$v_ip." '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;
-                }
-                $restart_dns = 'yes';
-                unset($output);
-            }
-
-            // Template
-            if (( $_SESSION['user'] == 'admin') && ($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) {
-                $v_template = escapeshellarg($_POST['v_template']);
-                exec (VESTA_CMD."v-change-dns-domain-tpl ".$v_username." ".$v_domain." ".$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);
-                $restart_dns = 'yes';
-            }
-
-            // SOA
-            if (($v_soa != $_POST['v_soa']) && (empty($_SESSION['error_msg']))) {
-                $v_soa = escapeshellarg($_POST['v_soa']);
-                exec (VESTA_CMD."v-change-dns-domain-soa ".$v_username." ".$v_domain." ".$v_soa." '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);
-                $restart_dns = 'yes';
-            }
-
-            // EXP
-            if (($v_exp != $_POST['v_exp']) && (empty($_SESSION['error_msg']))) {
-                $v_exp = escapeshellarg($_POST['v_exp']);
-                exec (VESTA_CMD."v-change-dns-domain-exp ".$v_username." ".$v_domain." ".$v_exp." '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);
-                $restart_dns = 'yes';
-            }
-
-            // TTL
-            if (($v_ttl != $_POST['v_ttl']) && (empty($_SESSION['error_msg']))) {
-                $v_ttl = escapeshellarg($_POST['v_ttl']);
-                exec (VESTA_CMD."v-change-dns-domain-ttl ".$v_username." ".$v_domain." ".$v_ttl." '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);
-                $restart_dns = 'yes';
-            }
-    
-            // Restart dns
-            if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-restart-dns", $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;
-                }
-            }
-    
-            if (empty($_SESSION['error_msg'])) {
-                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-            }
-
-        }
-        if ($_SESSION['user'] == 'admin') {
-            include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns.html');
-        } else {
-            include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_dns.html');
-        }
-        unset($_SESSION['error_msg']);
-        unset($_SESSION['ok_msg']);
-    } else {
-        $v_domain = escapeshellarg($_GET['domain']);
-        $v_record_id = escapeshellarg($_GET['record_id']);
-        exec (VESTA_CMD."v-list-dns-domain-records ".$user." ".$v_domain." 'json'", $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;
-        } else {
-            $data = json_decode(implode('', $output), true);
-            unset($output);
-            $v_username = $user;
-            $v_domain = $_GET['domain'];
-            $v_record_id = $_GET['record_id'];
-            $v_rec = $data[$v_record_id]['RECORD'];
-            $v_type = $data[$v_record_id]['TYPE'];
-            $v_val = $data[$v_record_id]['VALUE'];
-            $v_priority = $data[$v_record_id]['PRIORITY'];
-            $v_suspended = $data[$v_record_id]['SUSPENDED'];
-            if ( $v_suspended == 'yes' ) {
-                $v_status =  'suspended';
-            } else {
-                $v_status =  'active';
-            }
-            $v_date = $data[$v_record_id]['DATE'];
-            $v_time = $data[$v_record_id]['TIME'];
-        }
-
-        // Action
-        if (!empty($_POST['save'])) {
-            $v_domain = escapeshellarg($_POST['v_domain']);
-            $v_record_id = escapeshellarg($_POST['v_record_id']);
-
-            if (($v_val != $_POST['v_val']) || ($v_priority != $_POST['v_priority']) && (empty($_SESSION['error_msg']))) {
-                $v_val = escapeshellarg($_POST['v_val']);
-                $v_priority = escapeshellarg($_POST['v_priority']);
-                exec (VESTA_CMD."v-change-dns-domain-record ".$v_username." ".$v_domain." ".$v_record_id." ".$v_val." ".$v_priority, $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;
-                }
-                $v_val = $_POST['v_val'];
-                $restart_dns = 'yes';
-                unset($output);
-            }
-    
-            if (empty($_SESSION['error_msg'])) {
-                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-            }
-
-        }
-        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns_rec.html');
-        unset($_SESSION['error_msg']);
-        unset($_SESSION['ok_msg']);
-    }
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+$TAB = 'DNS';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+    // Check user argument?
+    if (empty($_GET['domain'])) {
+        header("Location: /list/dns/");
+        exit;
+    }
+
+    // Edit as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=escapeshellarg($_GET['user']);
+    }
+
+    // Check domain
+    if ((!empty($_GET['domain'])) && (empty($_GET['record_id'])))  {
+        $v_domain = escapeshellarg($_GET['domain']);
+        exec (VESTA_CMD."v-list-dns-domain ".$user." ".$v_domain." json", $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;
+        } else {
+            $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_ttl = $data[$v_domain]['TTL'];
+            $v_exp = $data[$v_domain]['EXP'];
+            $v_soa = $data[$v_domain]['SOA'];
+            $v_date = $data[$v_domain]['DATE'];
+            $v_time = $data[$v_domain]['TIME'];
+            $v_suspended = $data[$v_domain]['SUSPENDED'];
+            if ( $v_suspended == 'yes' ) {
+                $v_status =  'suspended';
+            } else {
+                $v_status =  'active';
+            }
+
+            exec (VESTA_CMD."v-list-dns-templates json", $output, $return_var);
+            $templates = json_decode(implode('', $output), true);
+            unset($output);
+        }
+
+        // Action
+        if (!empty($_POST['save'])) {
+            $v_domain = escapeshellarg($_POST['v_domain']);
+
+            // IP
+            if (($v_ip != $_POST['v_ip']) && (empty($_SESSION['error_msg']))) {
+                $v_ip = escapeshellarg($_POST['v_ip']);
+                exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." ".$v_domain." ".$v_ip." '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;
+                }
+                $restart_dns = 'yes';
+                unset($output);
+            }
+
+            // Template
+            if (( $_SESSION['user'] == 'admin') && ($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) {
+                $v_template = escapeshellarg($_POST['v_template']);
+                exec (VESTA_CMD."v-change-dns-domain-tpl ".$v_username." ".$v_domain." ".$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);
+                $restart_dns = 'yes';
+            }
+
+            // SOA
+            if (($v_soa != $_POST['v_soa']) && (empty($_SESSION['error_msg']))) {
+                $v_soa = escapeshellarg($_POST['v_soa']);
+                exec (VESTA_CMD."v-change-dns-domain-soa ".$v_username." ".$v_domain." ".$v_soa." '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);
+                $restart_dns = 'yes';
+            }
+
+            // EXP
+            if (($v_exp != $_POST['v_exp']) && (empty($_SESSION['error_msg']))) {
+                $v_exp = escapeshellarg($_POST['v_exp']);
+                exec (VESTA_CMD."v-change-dns-domain-exp ".$v_username." ".$v_domain." ".$v_exp." '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);
+                $restart_dns = 'yes';
+            }
+
+            // TTL
+            if (($v_ttl != $_POST['v_ttl']) && (empty($_SESSION['error_msg']))) {
+                $v_ttl = escapeshellarg($_POST['v_ttl']);
+                exec (VESTA_CMD."v-change-dns-domain-ttl ".$v_username." ".$v_domain." ".$v_ttl." '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);
+                $restart_dns = 'yes';
+            }
+    
+            // Restart dns
+            if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-restart-dns", $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;
+                }
+            }
+    
+            if (empty($_SESSION['error_msg'])) {
+                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+            }
+
+        }
+        if ($_SESSION['user'] == 'admin') {
+            include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns.html');
+        } else {
+            include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_dns.html');
+        }
+        unset($_SESSION['error_msg']);
+        unset($_SESSION['ok_msg']);
+    } else {
+        $v_domain = escapeshellarg($_GET['domain']);
+        $v_record_id = escapeshellarg($_GET['record_id']);
+        exec (VESTA_CMD."v-list-dns-domain-records ".$user." ".$v_domain." 'json'", $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;
+        } else {
+            $data = json_decode(implode('', $output), true);
+            unset($output);
+            $v_username = $user;
+            $v_domain = $_GET['domain'];
+            $v_record_id = $_GET['record_id'];
+            $v_rec = $data[$v_record_id]['RECORD'];
+            $v_type = $data[$v_record_id]['TYPE'];
+            $v_val = $data[$v_record_id]['VALUE'];
+            $v_priority = $data[$v_record_id]['PRIORITY'];
+            $v_suspended = $data[$v_record_id]['SUSPENDED'];
+            if ( $v_suspended == 'yes' ) {
+                $v_status =  'suspended';
+            } else {
+                $v_status =  'active';
+            }
+            $v_date = $data[$v_record_id]['DATE'];
+            $v_time = $data[$v_record_id]['TIME'];
+        }
+
+        // Action
+        if (!empty($_POST['save'])) {
+            $v_domain = escapeshellarg($_POST['v_domain']);
+            $v_record_id = escapeshellarg($_POST['v_record_id']);
+
+            if (($v_val != $_POST['v_val']) || ($v_priority != $_POST['v_priority']) && (empty($_SESSION['error_msg']))) {
+                $v_val = escapeshellarg($_POST['v_val']);
+                $v_priority = escapeshellarg($_POST['v_priority']);
+                exec (VESTA_CMD."v-change-dns-domain-record ".$v_username." ".$v_domain." ".$v_record_id." ".$v_val." ".$v_priority, $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;
+                }
+                $v_val = $_POST['v_val'];
+                $restart_dns = 'yes';
+                unset($output);
+            }
+    
+            if (empty($_SESSION['error_msg'])) {
+                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+            }
+
+        }
+        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns_rec.html');
+        unset($_SESSION['error_msg']);
+        unset($_SESSION['ok_msg']);
+    }
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 119 - 119
web/edit/ip/index.php

@@ -1,119 +1,119 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-
-$TAB = 'IP';
-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') {
-
-    // Check user argument?
-    if (empty($_GET['ip'])) {
-        header("Location: /list/ip/");
-        exit;
-    }
-
-    $v_ip = escapeshellarg($_GET['ip']);
-    exec (VESTA_CMD."v-list-sys-ip ".$v_ip." 'json'", $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;
-    } else {
-        $data = json_decode(implode('', $output), true);
-        unset($output);
-        $v_username = $user;
-        $v_ip = $_GET['ip'];
-        $v_netmask = $data[$v_ip]['NETMASK'];
-        $v_interace = $data[$v_ip]['INTERFACE'];
-        $v_name = $data[$v_ip]['NAME'];
-        $v_ipstatus = $data[$v_ip]['STATUS'];
-        if ($v_ipstatus == 'dedicated') $v_dedicated = 'yes';
-        $v_owner = $data[$v_ip]['OWNER'];
-        $v_date = $data[$v_ip]['DATE'];
-        $v_time = $data[$v_ip]['TIME'];
-        $v_suspended = $data[$v_ip]['SUSPENDED'];
-        if ( $v_suspended == 'yes' ) {
-            $v_status =  'suspended';
-        } else {
-            $v_status =  'active';
-        }
-
-        exec (VESTA_CMD."v-list-sys-users 'json'", $output, $return_var);
-        $users = json_decode(implode('', $output), true);
-        unset($output);
-
-        // Action
-        if (!empty($_POST['save'])) {
-            $v_username = $user;
-            $v_ip = escapeshellarg($_POST['v_ip']);
-
-            // Change Status
-            if (($v_ipstatus == 'shared') && (empty($_POST['v_shared'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-change-sys-ip-status ".$v_ip." 'dedicated'", $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);
-                $v_dedicated = 'yes'; 
-            }
-            if (($v_ipstatus == 'dedicated') && (!empty($_POST['v_shared'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-change-sys-ip-status ".$v_ip." 'shared'", $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);
-                unset($v_dedicated);
-            }
-
-            // Change owner
-            if (($v_owner != $_POST['v_owner']) && (empty($_SESSION['error_msg']))) {
-                $v_owner = escapeshellarg($_POST['v_owner']);
-                exec (VESTA_CMD."v-change-sys-ip-owner ".$v_ip." ".$v_owner, $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;
-                }
-                $v_owner = $_POST['v_owner'];
-                unset($output);
-            }
-
-            // Change Name
-            if (($v_name != $_POST['v_name']) && (empty($_SESSION['error_msg']))) {
-                $v_name = escapeshellarg($_POST['v_name']);
-                exec (VESTA_CMD."v-change-sys-ip-name ".$v_ip." ".$v_name, $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'])) {
-                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-            }
-        }
-    }
-
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_ip.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+$TAB = 'IP';
+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') {
+
+    // Check user argument?
+    if (empty($_GET['ip'])) {
+        header("Location: /list/ip/");
+        exit;
+    }
+
+    $v_ip = escapeshellarg($_GET['ip']);
+    exec (VESTA_CMD."v-list-sys-ip ".$v_ip." 'json'", $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;
+    } else {
+        $data = json_decode(implode('', $output), true);
+        unset($output);
+        $v_username = $user;
+        $v_ip = $_GET['ip'];
+        $v_netmask = $data[$v_ip]['NETMASK'];
+        $v_interace = $data[$v_ip]['INTERFACE'];
+        $v_name = $data[$v_ip]['NAME'];
+        $v_ipstatus = $data[$v_ip]['STATUS'];
+        if ($v_ipstatus == 'dedicated') $v_dedicated = 'yes';
+        $v_owner = $data[$v_ip]['OWNER'];
+        $v_date = $data[$v_ip]['DATE'];
+        $v_time = $data[$v_ip]['TIME'];
+        $v_suspended = $data[$v_ip]['SUSPENDED'];
+        if ( $v_suspended == 'yes' ) {
+            $v_status =  'suspended';
+        } else {
+            $v_status =  'active';
+        }
+
+        exec (VESTA_CMD."v-list-sys-users 'json'", $output, $return_var);
+        $users = json_decode(implode('', $output), true);
+        unset($output);
+
+        // Action
+        if (!empty($_POST['save'])) {
+            $v_username = $user;
+            $v_ip = escapeshellarg($_POST['v_ip']);
+
+            // Change Status
+            if (($v_ipstatus == 'shared') && (empty($_POST['v_shared'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-change-sys-ip-status ".$v_ip." 'dedicated'", $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);
+                $v_dedicated = 'yes'; 
+            }
+            if (($v_ipstatus == 'dedicated') && (!empty($_POST['v_shared'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-change-sys-ip-status ".$v_ip." 'shared'", $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);
+                unset($v_dedicated);
+            }
+
+            // Change owner
+            if (($v_owner != $_POST['v_owner']) && (empty($_SESSION['error_msg']))) {
+                $v_owner = escapeshellarg($_POST['v_owner']);
+                exec (VESTA_CMD."v-change-sys-ip-owner ".$v_ip." ".$v_owner, $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;
+                }
+                $v_owner = $_POST['v_owner'];
+                unset($output);
+            }
+
+            // Change Name
+            if (($v_name != $_POST['v_name']) && (empty($_SESSION['error_msg']))) {
+                $v_name = escapeshellarg($_POST['v_name']);
+                exec (VESTA_CMD."v-change-sys-ip-name ".$v_ip." ".$v_name, $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'])) {
+                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+            }
+        }
+    }
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_ip.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 370 - 370
web/edit/mail/index.php

@@ -1,370 +1,370 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-
-$TAB = 'MAIL';
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-    // Check user argument?
-    if (empty($_GET['domain'])) {
-        header("Location: /list/mail/");
-        exit;
-    }
-
-    // Edit as someone else?
-    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-        $user=escapeshellarg($_GET['user']);
-    }
-
-    // Check domain
-    if ((!empty($_GET['domain'])) && (empty($_GET['account'])))  {
-        $v_domain = escapeshellarg($_GET['domain']);
-        exec (VESTA_CMD."v-list-mail-domain ".$user." ".$v_domain." json", $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;
-        } else {
-            $data = json_decode(implode('', $output), true);
-            unset($output);
-            $v_username = $user;
-            $v_domain = $_GET['domain'];
-            $v_antispam = $data[$v_domain]['ANTISPAM'];
-            $v_antivirus = $data[$v_domain]['ANTIVIRUS'];
-            $v_dkim = $data[$v_domain]['DKIM'];
-            $v_catchall = $data[$v_domain]['CATCHALL'];
-            $v_date = $data[$v_domain]['DATE'];
-            $v_time = $data[$v_domain]['TIME'];
-            $v_suspended = $data[$v_domain]['SUSPENDED'];
-            if ( $v_suspended == 'yes' ) {
-                $v_status =  'suspended';
-            } else {
-                $v_status =  'active';
-            }
-        }
-
-        // Action
-        if (!empty($_POST['save'])) {
-            $v_domain = escapeshellarg($_POST['v_domain']);
-
-            // Antispam
-            if (($v_antispam == 'yes') && (empty($_POST['v_antispam'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-delete-mail-domain-antispam ".$v_username." ".$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;
-                }
-                $v_antispam = 'no';
-                unset($output);
-            }
-            if (($v_antispam == 'no') && (!empty($_POST['v_antispam'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-add-mail-domain-antispam ".$v_username." ".$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;
-                }
-                $v_antispam = 'yes';
-                unset($output);
-            }
-
-            // Antivirus
-            if (($v_antivirus == 'yes') && (empty($_POST['v_antivirus'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-delete-mail-domain-antivirus ".$v_username." ".$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;
-                }
-                $v_antivirus = 'no';
-                unset($output);
-            }
-            if (($v_antivirus == 'no') && (!empty($_POST['v_antivirus'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-add-mail-domain-antivirus ".$v_username." ".$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;
-                }
-                $v_antivirus = 'yes';
-                unset($output);
-            }
-
-            if (empty($_SESSION['error_msg'])) {
-                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-            }
-
-            // DKIM
-            if (($v_dkim == 'yes') && (empty($_POST['v_dkim'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-delete-mail-domain-dkim ".$v_username." ".$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;
-                }
-                $v_dkim = 'no';
-                unset($output);
-            }
-            if (($v_dkim == 'no') && (!empty($_POST['v_dkim'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-add-mail-domain-dkim ".$v_username." ".$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;
-                }
-                $v_dkim = 'yes';
-                unset($output);
-            }
-
-            // Catchall
-            if ((!empty($v_catchall)) && (empty($_POST['v_catchall'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-delete-mail-domain-catchall ".$v_username." ".$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;
-                }
-                $v_catchall = '';
-                unset($output);
-            }
-
-            if ((!empty($v_catchall)) && (!empty($_POST['v_catchall'])) && (empty($_SESSION['error_msg']))) {
-                if ($v_catchall != $_POST['v_catchall']) {
-                    $v_catchall = escapeshellarg($_POST['v_catchall']);
-                    exec (VESTA_CMD."v-change-mail-domain-catchall ".$v_username." ".$v_domain." ".$v_catchall, $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($v_catchall)) && (!empty($_POST['v_catchall'])) && (empty($_SESSION['error_msg']))) {
-                $v_catchall = escapeshellarg($_POST['v_catchall']);
-                exec (VESTA_CMD."v-add-mail-domain-catchall ".$v_username." ".$v_domain." ".$v_catchall, $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'])) {
-                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-            }
-        }
-        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_mail.html');
-        unset($_SESSION['error_msg']);
-        unset($_SESSION['ok_msg']);
-    } else {
-
-        $v_username = $user;
-        $v_domain = escapeshellarg($_GET['domain']);
-        $v_account = escapeshellarg($_GET['account']);
-        exec (VESTA_CMD."v-list-mail-account ".$user." ".$v_domain." ".$v_account." 'json'", $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;
-        } else {
-            $data = json_decode(implode('', $output), true);
-            unset($output);
-            $v_username = $user;
-            $v_domain = $_GET['domain'];
-            $v_account = $_GET['account'];
-            $v_password = "••••••••";
-            $v_aliases = str_replace(',', "\n", $data[$v_account]['ALIAS']);
-            $valiases = explode(",", $data[$v_account]['ALIAS']);
-            $v_fwd = str_replace(',', "\n", $data[$v_account]['FWD']);
-            $vfwd = explode(",", $data[$v_account]['FWD']);
-            $v_quota = $data[$v_account]['QUOTA'];
-            $v_autoreply = $data[$v_account]['AUTOREPLY'];
-            if ( $v_autoreply == 'yes' ) {
-                exec (VESTA_CMD."v-list-mail-account-autoreply ".$user." '".$v_domain."' '".$v_account."' json", $output, $return_var);
-                $autoreply_str = json_decode(implode('', $output), true);
-                unset($output);
-                $v_autoreply_message = $autoreply_str[$v_account]['MSG'];
-            }
-            $v_suspended = $data[$v_account]['SUSPENDED'];
-            if ( $v_suspended == 'yes' ) {
-                $v_status =  'suspended';
-            } else {
-                $v_status =  'active';
-            }
-            $v_date = $data[$v_account]['DATE'];
-            $v_time = $data[$v_account]['TIME'];
-        }
-
-        // Action
-        if (!empty($_POST['save'])) {
-            $v_domain = escapeshellarg($_POST['v_domain']);
-            $v_account = escapeshellarg($_POST['v_account']);
-
-            // Password
-            if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
-                $v_password = escapeshellarg($_POST['v_password']);
-                exec (VESTA_CMD."v-change-mail-account-password ".$v_username." ".$v_domain." ".$v_account." ".$v_password, $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;
-                }
-                $v_password = "••••••••";
-                unset($output);
-            }
-
-            // Quota
-            if (($v_quota != $_POST['v_quota']) && (empty($_SESSION['error_msg']))) {
-                if (empty($_POST['v_quota'])) {
-                    $v_quota = 0; 
-                } else {
-                    $v_quota = escapeshellarg($_POST['v_quota']);
-                }
-                exec (VESTA_CMD."v-change-mail-account-quota ".$v_username." ".$v_domain." ".$v_account." ".$v_quota, $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);
-            }
-
-
-            // Aliases
-            if (empty($_SESSION['error_msg'])) {
-                $waliases = preg_replace("/\n/", " ", $_POST['v_aliases']);
-                $waliases = preg_replace("/,/", " ", $waliases);
-                $waliases = preg_replace('/\s+/', ' ',$waliases);
-                $waliases = trim($waliases);
-                $aliases = explode(" ", $waliases);
-                $v_aliases = str_replace(' ', "\n", $waliases);
-                $result = array_diff($valiases, $aliases);
-                foreach ($result as $alias) {
-                    if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
-                        exec (VESTA_CMD."v-delete-mail-account-alias ".$v_username." ".$v_domain." ".$v_account." '".$alias."'", $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);
-                    }
-                }
-                $result = array_diff($aliases, $valiases);
-                foreach ($result as $alias) {
-                    if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
-                        exec (VESTA_CMD."v-add-mail-account-alias ".$v_username." ".$v_domain." ".$v_account." '".$alias."'", $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);
-                    }
-                }
-            }
-
-            // Forwarders
-            if (empty($_SESSION['error_msg'])) {
-                $wfwd = preg_replace("/\n/", " ", $_POST['v_fwd']);
-                $wfwd = preg_replace("/,/", " ", $wfwd);
-                $wfwd = preg_replace('/\s+/', ' ',$wfwd);
-                $wfwd = trim($wfwd);
-                $fwd = explode(" ", $wfwd);
-                $v_fwd = str_replace(' ', "\n", $wfwd);
-                $result = array_diff($vfwd, $fwd);
-                foreach ($result as $forward) {
-                    if ((empty($_SESSION['error_msg'])) && (!empty($forward))) {
-                        exec (VESTA_CMD."v-delete-mail-account-forward ".$v_username." ".$v_domain." ".$v_account." '".$forward."'", $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);
-                    }
-                }
-                $result = array_diff($fwd, $vfwd);
-                foreach ($result as $forward) {
-                    if ((empty($_SESSION['error_msg'])) && (!empty($forward))) {
-                        exec (VESTA_CMD."v-add-mail-account-forward ".$v_username." ".$v_domain." ".$v_account." '".$forward."'", $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);
-                    }
-                }
-            }
-
-            // Autoreply
-            if (($v_autoreply == 'yes') && (empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
-                exec (VESTA_CMD."v-delete-mail-account-autoreply ".$v_username." ".$v_domain." ".$v_account, $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);
-                $v_autoreply = 'no';
-		$v_autoreply_message = '';
-            }
-            if (($v_autoreply == 'yes') && (!empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
-                if ( $v_autoreply_message != str_replace("\r\n", "\n", $_POST['v_autoreply_message'])) {
-                    $v_autoreply_message = str_replace("\r\n", "\n", $_POST['v_autoreply_message']);
-                    $v_autoreply_message = escapeshellarg($v_autoreply_message);
-                    exec (VESTA_CMD."v-add-mail-account-autoreply ".$v_username." ".$v_domain." ".$v_account." ".$v_autoreply_message, $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);
-                    $v_autoreply_message = $_POST['v_autoreply_message'];
-                }
-            }
-
-            if (($v_autoreply == 'no') && (!empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
-                if (empty($_POST['v_autoreply_message'])) $_SESSION['error_msg'] = "Error: field atoreply message  can not be blank.";
-                if (empty($_SESSION['error_msg'])) {
-                    $v_autoreply_message = str_replace("\r\n", "\n", $_POST['v_autoreply_message']);
-                    $v_autoreply_message = escapeshellarg($v_autoreply_message);
-                    exec (VESTA_CMD."v-add-mail-account-autoreply ".$v_username." ".$v_domain." ".$v_account." ".$v_autoreply_message, $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);
-                    $v_autoreply = 'yes';
-                    $v_autoreply_message = $_POST['v_autoreply_message'];
-                }
-            }
-
-
-            if (empty($_SESSION['error_msg'])) {
-                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-            }
-
-        }
-        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_mail_acc.html');
-        unset($_SESSION['error_msg']);
-        unset($_SESSION['ok_msg']);
-    }
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+$TAB = 'MAIL';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+    // Check user argument?
+    if (empty($_GET['domain'])) {
+        header("Location: /list/mail/");
+        exit;
+    }
+
+    // Edit as someone else?
+    if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+        $user=escapeshellarg($_GET['user']);
+    }
+
+    // Check domain
+    if ((!empty($_GET['domain'])) && (empty($_GET['account'])))  {
+        $v_domain = escapeshellarg($_GET['domain']);
+        exec (VESTA_CMD."v-list-mail-domain ".$user." ".$v_domain." json", $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;
+        } else {
+            $data = json_decode(implode('', $output), true);
+            unset($output);
+            $v_username = $user;
+            $v_domain = $_GET['domain'];
+            $v_antispam = $data[$v_domain]['ANTISPAM'];
+            $v_antivirus = $data[$v_domain]['ANTIVIRUS'];
+            $v_dkim = $data[$v_domain]['DKIM'];
+            $v_catchall = $data[$v_domain]['CATCHALL'];
+            $v_date = $data[$v_domain]['DATE'];
+            $v_time = $data[$v_domain]['TIME'];
+            $v_suspended = $data[$v_domain]['SUSPENDED'];
+            if ( $v_suspended == 'yes' ) {
+                $v_status =  'suspended';
+            } else {
+                $v_status =  'active';
+            }
+        }
+
+        // Action
+        if (!empty($_POST['save'])) {
+            $v_domain = escapeshellarg($_POST['v_domain']);
+
+            // Antispam
+            if (($v_antispam == 'yes') && (empty($_POST['v_antispam'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-delete-mail-domain-antispam ".$v_username." ".$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;
+                }
+                $v_antispam = 'no';
+                unset($output);
+            }
+            if (($v_antispam == 'no') && (!empty($_POST['v_antispam'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-add-mail-domain-antispam ".$v_username." ".$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;
+                }
+                $v_antispam = 'yes';
+                unset($output);
+            }
+
+            // Antivirus
+            if (($v_antivirus == 'yes') && (empty($_POST['v_antivirus'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-delete-mail-domain-antivirus ".$v_username." ".$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;
+                }
+                $v_antivirus = 'no';
+                unset($output);
+            }
+            if (($v_antivirus == 'no') && (!empty($_POST['v_antivirus'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-add-mail-domain-antivirus ".$v_username." ".$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;
+                }
+                $v_antivirus = 'yes';
+                unset($output);
+            }
+
+            if (empty($_SESSION['error_msg'])) {
+                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+            }
+
+            // DKIM
+            if (($v_dkim == 'yes') && (empty($_POST['v_dkim'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-delete-mail-domain-dkim ".$v_username." ".$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;
+                }
+                $v_dkim = 'no';
+                unset($output);
+            }
+            if (($v_dkim == 'no') && (!empty($_POST['v_dkim'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-add-mail-domain-dkim ".$v_username." ".$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;
+                }
+                $v_dkim = 'yes';
+                unset($output);
+            }
+
+            // Catchall
+            if ((!empty($v_catchall)) && (empty($_POST['v_catchall'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-delete-mail-domain-catchall ".$v_username." ".$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;
+                }
+                $v_catchall = '';
+                unset($output);
+            }
+
+            if ((!empty($v_catchall)) && (!empty($_POST['v_catchall'])) && (empty($_SESSION['error_msg']))) {
+                if ($v_catchall != $_POST['v_catchall']) {
+                    $v_catchall = escapeshellarg($_POST['v_catchall']);
+                    exec (VESTA_CMD."v-change-mail-domain-catchall ".$v_username." ".$v_domain." ".$v_catchall, $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($v_catchall)) && (!empty($_POST['v_catchall'])) && (empty($_SESSION['error_msg']))) {
+                $v_catchall = escapeshellarg($_POST['v_catchall']);
+                exec (VESTA_CMD."v-add-mail-domain-catchall ".$v_username." ".$v_domain." ".$v_catchall, $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'])) {
+                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+            }
+        }
+        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_mail.html');
+        unset($_SESSION['error_msg']);
+        unset($_SESSION['ok_msg']);
+    } else {
+
+        $v_username = $user;
+        $v_domain = escapeshellarg($_GET['domain']);
+        $v_account = escapeshellarg($_GET['account']);
+        exec (VESTA_CMD."v-list-mail-account ".$user." ".$v_domain." ".$v_account." 'json'", $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;
+        } else {
+            $data = json_decode(implode('', $output), true);
+            unset($output);
+            $v_username = $user;
+            $v_domain = $_GET['domain'];
+            $v_account = $_GET['account'];
+            $v_password = "••••••••";
+            $v_aliases = str_replace(',', "\n", $data[$v_account]['ALIAS']);
+            $valiases = explode(",", $data[$v_account]['ALIAS']);
+            $v_fwd = str_replace(',', "\n", $data[$v_account]['FWD']);
+            $vfwd = explode(",", $data[$v_account]['FWD']);
+            $v_quota = $data[$v_account]['QUOTA'];
+            $v_autoreply = $data[$v_account]['AUTOREPLY'];
+            if ( $v_autoreply == 'yes' ) {
+                exec (VESTA_CMD."v-list-mail-account-autoreply ".$user." '".$v_domain."' '".$v_account."' json", $output, $return_var);
+                $autoreply_str = json_decode(implode('', $output), true);
+                unset($output);
+                $v_autoreply_message = $autoreply_str[$v_account]['MSG'];
+            }
+            $v_suspended = $data[$v_account]['SUSPENDED'];
+            if ( $v_suspended == 'yes' ) {
+                $v_status =  'suspended';
+            } else {
+                $v_status =  'active';
+            }
+            $v_date = $data[$v_account]['DATE'];
+            $v_time = $data[$v_account]['TIME'];
+        }
+
+        // Action
+        if (!empty($_POST['save'])) {
+            $v_domain = escapeshellarg($_POST['v_domain']);
+            $v_account = escapeshellarg($_POST['v_account']);
+
+            // Password
+            if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
+                $v_password = escapeshellarg($_POST['v_password']);
+                exec (VESTA_CMD."v-change-mail-account-password ".$v_username." ".$v_domain." ".$v_account." ".$v_password, $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;
+                }
+                $v_password = "••••••••";
+                unset($output);
+            }
+
+            // Quota
+            if (($v_quota != $_POST['v_quota']) && (empty($_SESSION['error_msg']))) {
+                if (empty($_POST['v_quota'])) {
+                    $v_quota = 0; 
+                } else {
+                    $v_quota = escapeshellarg($_POST['v_quota']);
+                }
+                exec (VESTA_CMD."v-change-mail-account-quota ".$v_username." ".$v_domain." ".$v_account." ".$v_quota, $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);
+            }
+
+
+            // Aliases
+            if (empty($_SESSION['error_msg'])) {
+                $waliases = preg_replace("/\n/", " ", $_POST['v_aliases']);
+                $waliases = preg_replace("/,/", " ", $waliases);
+                $waliases = preg_replace('/\s+/', ' ',$waliases);
+                $waliases = trim($waliases);
+                $aliases = explode(" ", $waliases);
+                $v_aliases = str_replace(' ', "\n", $waliases);
+                $result = array_diff($valiases, $aliases);
+                foreach ($result as $alias) {
+                    if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
+                        exec (VESTA_CMD."v-delete-mail-account-alias ".$v_username." ".$v_domain." ".$v_account." '".$alias."'", $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);
+                    }
+                }
+                $result = array_diff($aliases, $valiases);
+                foreach ($result as $alias) {
+                    if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
+                        exec (VESTA_CMD."v-add-mail-account-alias ".$v_username." ".$v_domain." ".$v_account." '".$alias."'", $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);
+                    }
+                }
+            }
+
+            // Forwarders
+            if (empty($_SESSION['error_msg'])) {
+                $wfwd = preg_replace("/\n/", " ", $_POST['v_fwd']);
+                $wfwd = preg_replace("/,/", " ", $wfwd);
+                $wfwd = preg_replace('/\s+/', ' ',$wfwd);
+                $wfwd = trim($wfwd);
+                $fwd = explode(" ", $wfwd);
+                $v_fwd = str_replace(' ', "\n", $wfwd);
+                $result = array_diff($vfwd, $fwd);
+                foreach ($result as $forward) {
+                    if ((empty($_SESSION['error_msg'])) && (!empty($forward))) {
+                        exec (VESTA_CMD."v-delete-mail-account-forward ".$v_username." ".$v_domain." ".$v_account." '".$forward."'", $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);
+                    }
+                }
+                $result = array_diff($fwd, $vfwd);
+                foreach ($result as $forward) {
+                    if ((empty($_SESSION['error_msg'])) && (!empty($forward))) {
+                        exec (VESTA_CMD."v-add-mail-account-forward ".$v_username." ".$v_domain." ".$v_account." '".$forward."'", $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);
+                    }
+                }
+            }
+
+            // Autoreply
+            if (($v_autoreply == 'yes') && (empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
+                exec (VESTA_CMD."v-delete-mail-account-autoreply ".$v_username." ".$v_domain." ".$v_account, $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);
+                $v_autoreply = 'no';
+		$v_autoreply_message = '';
+            }
+            if (($v_autoreply == 'yes') && (!empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
+                if ( $v_autoreply_message != str_replace("\r\n", "\n", $_POST['v_autoreply_message'])) {
+                    $v_autoreply_message = str_replace("\r\n", "\n", $_POST['v_autoreply_message']);
+                    $v_autoreply_message = escapeshellarg($v_autoreply_message);
+                    exec (VESTA_CMD."v-add-mail-account-autoreply ".$v_username." ".$v_domain." ".$v_account." ".$v_autoreply_message, $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);
+                    $v_autoreply_message = $_POST['v_autoreply_message'];
+                }
+            }
+
+            if (($v_autoreply == 'no') && (!empty($_POST['v_autoreply'])) && (empty($_SESSION['error_msg']))) {
+                if (empty($_POST['v_autoreply_message'])) $_SESSION['error_msg'] = "Error: field atoreply message  can not be blank.";
+                if (empty($_SESSION['error_msg'])) {
+                    $v_autoreply_message = str_replace("\r\n", "\n", $_POST['v_autoreply_message']);
+                    $v_autoreply_message = escapeshellarg($v_autoreply_message);
+                    exec (VESTA_CMD."v-add-mail-account-autoreply ".$v_username." ".$v_domain." ".$v_account." ".$v_autoreply_message, $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);
+                    $v_autoreply = 'yes';
+                    $v_autoreply_message = $_POST['v_autoreply_message'];
+                }
+            }
+
+
+            if (empty($_SESSION['error_msg'])) {
+                $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+            }
+
+        }
+        include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_mail_acc.html');
+        unset($_SESSION['error_msg']);
+        unset($_SESSION['ok_msg']);
+    }
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 190 - 190
web/edit/package/index.php

@@ -1,190 +1,190 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-
-$TAB = 'PACKAGE';
-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') {
-
-    // Check user argument?
-    if (empty($_GET['package'])) {
-        header("Location: /list/package/");
-        exit;
-    }
-
-    $v_package = escapeshellarg($_GET['package']);
-    exec (VESTA_CMD."v-list-user-package ".$v_package." 'json'", $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;
-    } else {
-        $data = json_decode(implode('', $output), true);
-        unset($output);
-
-        $v_package = $_GET['package'];
-        $v_template = $data[$v_package]['TEMPLATE'];
-        $v_web_domains = $data[$v_package]['WEB_DOMAINS'];
-        $v_web_aliases = $data[$v_package]['WEB_ALIASES'];
-        $v_dns_domains = $data[$v_package]['DNS_DOMAINS'];
-        $v_dns_records = $data[$v_package]['DNS_RECORDS'];
-        $v_mail_domains = $data[$v_package]['MAIL_DOMAINS'];
-        $v_mail_accounts = $data[$v_package]['MAIL_ACCOUNTS'];
-        $v_databases = $data[$v_package]['DATABASES'];
-        $v_cron_jobs = $data[$v_package]['CRON_JOBS'];
-        $v_disk_quota = $data[$v_package]['DISK_QUOTA'];
-        $v_bandwidth = $data[$v_package]['BANDWIDTH'];
-        $v_shell = $data[$v_package]['SHELL'];
-        $v_ns = $data[$v_package]['NS'];
-        $nameservers = explode(", ", $v_ns);
-        $v_ns1 = $nameservers[0];
-        $v_ns2 = $nameservers[1];
-        $v_ns3 = $nameservers[2];
-        $v_ns4 = $nameservers[3];
-        $v_backups = $data[$v_package]['BACKUPS'];
-        $v_date = $data[$v_package]['DATE'];
-        $v_time = $data[$v_package]['TIME'];
-        $v_status =  'active';
-
-
-        exec (VESTA_CMD."v-list-web-templates json", $output, $return_var);
-        check_error($return_var);
-        $templates = json_decode(implode('', $output), true);
-        unset($output);
-
-        exec (VESTA_CMD."v-list-sys-shells json", $output, $return_var);
-        check_error($return_var);
-        $shells = json_decode(implode('', $output), true);
-        unset($output);
-
-        // Action
-        if (!empty($_POST['save'])) {
-            // Check input
-            if (empty($_POST['v_package'])) $errors[] = _('package');
-            if (empty($_POST['v_template'])) $errors[] = _('template');
-            if (empty($_POST['v_shell'])) $errrors[] = _('shell');
-            if (!isset($_POST['v_web_domains'])) $errors[] = _('web domains');
-            if (!isset($_POST['v_web_aliases'])) $errors[] = _('web aliases');
-            if (!isset($_POST['v_dns_domains'])) $errors[] = _('dns domains');
-            if (!isset($_POST['v_dns_records'])) $errors[] = _('dns records');
-            if (!isset($_POST['v_mail_domains'])) $errors[] = _('mail domains');
-            if (!isset($_POST['v_mail_accounts'])) $errors[] = _('mail accounts');
-            if (!isset($_POST['v_databases'])) $errors[] = _('databases');
-            if (!isset($_POST['v_cron_jobs'])) $errors[] = _('cron jobs');
-            if (!isset($_POST['v_backups'])) $errors[] = _('backups');
-            if (!isset($_POST['v_disk_quota'])) $errors[] = _('quota');
-            if (!isset($_POST['v_bandwidth'])) $errors[] = _('bandwidth');
-            if (empty($_POST['v_ns1'])) $errors[] = _('ns1');
-            if (empty($_POST['v_ns2'])) $errors[] = _('ns2');
-
-            // Protect input
-            $v_package = escapeshellarg($_POST['v_package']);
-            $v_template = escapeshellarg($_POST['v_template']);
-            $v_shell = escapeshellarg($_POST['v_shell']);
-            $v_web_domains = escapeshellarg($_POST['v_web_domains']);
-            $v_web_aliases = escapeshellarg($_POST['v_web_aliases']);
-            $v_dns_domains = escapeshellarg($_POST['v_dns_domains']);
-            $v_dns_records = escapeshellarg($_POST['v_dns_records']);
-            $v_mail_domains = escapeshellarg($_POST['v_mail_domains']);
-            $v_mail_accounts = escapeshellarg($_POST['v_mail_accounts']);
-            $v_databases = escapeshellarg($_POST['v_databases']);
-            $v_cron_jobs = escapeshellarg($_POST['v_cron_jobs']);
-            $v_backups = escapeshellarg($_POST['v_backups']);
-            $v_disk_quota = escapeshellarg($_POST['v_disk_quota']);
-            $v_bandwidth = escapeshellarg($_POST['v_bandwidth']);
-            $v_ns1 = trim($_POST['v_ns1'], '.');
-            $v_ns2 = trim($_POST['v_ns2'], '.');
-            $v_ns3 = trim($_POST['v_ns3'], '.');
-            $v_ns4 = trim($_POST['v_ns4'], '.');
-            $v_ns = $v_ns1.",".$v_ns2;
-            if (!empty($v_ns3)) $v_ns .= ",".$v_ns3;
-            if (!empty($v_ns4)) $v_ns .= ",".$v_ns4;
-            $v_ns = escapeshellarg($v_ns);
-            $v_time = escapeshellarg(date('H:i:s'));
-            $v_date = escapeshellarg(date('Y-m-d'));
-
-            // 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 "%s" can not be blank.',$error_msg);
-            } else {
-                exec ('mktemp -d', $output, $return_var);
-                $tmpdir = $output[0];
-                unset($output);
-
-                // Create package
-                $pkg = "TEMPLATE=".$v_template."\n";
-                $pkg .= "WEB_DOMAINS=".$v_web_domains."\n";
-                $pkg .= "WEB_ALIASES=".$v_web_aliases."\n";
-                $pkg .= "DNS_DOMAINS=".$v_dns_domains."\n";
-                $pkg .= "DNS_RECORDS=".$v_dns_records."\n";
-                $pkg .= "MAIL_DOMAINS=".$v_mail_domains."\n";
-                $pkg .= "MAIL_ACCOUNTS=".$v_mail_accounts."\n";
-                $pkg .= "DATABASES=".$v_databases."\n";
-                $pkg .= "CRON_JOBS=".$v_cron_jobs."\n";
-                $pkg .= "DISK_QUOTA=".$v_disk_quota."\n";
-                $pkg .= "BANDWIDTH=".$v_bandwidth."\n";
-                $pkg .= "NS=".$v_ns."\n";
-                $pkg .= "SHELL=".$v_shell."\n";
-                $pkg .= "BACKUPS=".$v_backups."\n";
-                $pkg .= "TIME=".$v_time."\n";
-                $pkg .= "DATE=".$v_date."\n";
-
-                // Write package
-                $fp = fopen($tmpdir."/".$_POST['v_package'].".pkg", 'w');
-                fwrite($fp, $pkg);
-                fclose($fp);
-
-                // Rewrite package
-                if (empty($_SESSION['error_msg'])) {
-                    exec (VESTA_CMD."v-add-user-package ".$tmpdir." ".$v_package." 'yes'", $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);
-                }
-
-                // Remove tmpdir
-                exec ('rm -rf '.$tmpdir, $output, $return_var);
-                unset($output);
-
-                // Propogate new package
-                exec (VESTA_CMD."v-update-user-package ".$v_package." 'json'", $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;
-                }
-
-                if (empty($_SESSION['error_msg'])) {
-                    $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-                }
-            }
-        }
-    }
-
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_package.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+$TAB = 'PACKAGE';
+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') {
+
+    // Check user argument?
+    if (empty($_GET['package'])) {
+        header("Location: /list/package/");
+        exit;
+    }
+
+    $v_package = escapeshellarg($_GET['package']);
+    exec (VESTA_CMD."v-list-user-package ".$v_package." 'json'", $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;
+    } else {
+        $data = json_decode(implode('', $output), true);
+        unset($output);
+
+        $v_package = $_GET['package'];
+        $v_template = $data[$v_package]['TEMPLATE'];
+        $v_web_domains = $data[$v_package]['WEB_DOMAINS'];
+        $v_web_aliases = $data[$v_package]['WEB_ALIASES'];
+        $v_dns_domains = $data[$v_package]['DNS_DOMAINS'];
+        $v_dns_records = $data[$v_package]['DNS_RECORDS'];
+        $v_mail_domains = $data[$v_package]['MAIL_DOMAINS'];
+        $v_mail_accounts = $data[$v_package]['MAIL_ACCOUNTS'];
+        $v_databases = $data[$v_package]['DATABASES'];
+        $v_cron_jobs = $data[$v_package]['CRON_JOBS'];
+        $v_disk_quota = $data[$v_package]['DISK_QUOTA'];
+        $v_bandwidth = $data[$v_package]['BANDWIDTH'];
+        $v_shell = $data[$v_package]['SHELL'];
+        $v_ns = $data[$v_package]['NS'];
+        $nameservers = explode(", ", $v_ns);
+        $v_ns1 = $nameservers[0];
+        $v_ns2 = $nameservers[1];
+        $v_ns3 = $nameservers[2];
+        $v_ns4 = $nameservers[3];
+        $v_backups = $data[$v_package]['BACKUPS'];
+        $v_date = $data[$v_package]['DATE'];
+        $v_time = $data[$v_package]['TIME'];
+        $v_status =  'active';
+
+
+        exec (VESTA_CMD."v-list-web-templates json", $output, $return_var);
+        check_error($return_var);
+        $templates = json_decode(implode('', $output), true);
+        unset($output);
+
+        exec (VESTA_CMD."v-list-sys-shells json", $output, $return_var);
+        check_error($return_var);
+        $shells = json_decode(implode('', $output), true);
+        unset($output);
+
+        // Action
+        if (!empty($_POST['save'])) {
+            // Check input
+            if (empty($_POST['v_package'])) $errors[] = _('package');
+            if (empty($_POST['v_template'])) $errors[] = _('template');
+            if (empty($_POST['v_shell'])) $errrors[] = _('shell');
+            if (!isset($_POST['v_web_domains'])) $errors[] = _('web domains');
+            if (!isset($_POST['v_web_aliases'])) $errors[] = _('web aliases');
+            if (!isset($_POST['v_dns_domains'])) $errors[] = _('dns domains');
+            if (!isset($_POST['v_dns_records'])) $errors[] = _('dns records');
+            if (!isset($_POST['v_mail_domains'])) $errors[] = _('mail domains');
+            if (!isset($_POST['v_mail_accounts'])) $errors[] = _('mail accounts');
+            if (!isset($_POST['v_databases'])) $errors[] = _('databases');
+            if (!isset($_POST['v_cron_jobs'])) $errors[] = _('cron jobs');
+            if (!isset($_POST['v_backups'])) $errors[] = _('backups');
+            if (!isset($_POST['v_disk_quota'])) $errors[] = _('quota');
+            if (!isset($_POST['v_bandwidth'])) $errors[] = _('bandwidth');
+            if (empty($_POST['v_ns1'])) $errors[] = _('ns1');
+            if (empty($_POST['v_ns2'])) $errors[] = _('ns2');
+
+            // Protect input
+            $v_package = escapeshellarg($_POST['v_package']);
+            $v_template = escapeshellarg($_POST['v_template']);
+            $v_shell = escapeshellarg($_POST['v_shell']);
+            $v_web_domains = escapeshellarg($_POST['v_web_domains']);
+            $v_web_aliases = escapeshellarg($_POST['v_web_aliases']);
+            $v_dns_domains = escapeshellarg($_POST['v_dns_domains']);
+            $v_dns_records = escapeshellarg($_POST['v_dns_records']);
+            $v_mail_domains = escapeshellarg($_POST['v_mail_domains']);
+            $v_mail_accounts = escapeshellarg($_POST['v_mail_accounts']);
+            $v_databases = escapeshellarg($_POST['v_databases']);
+            $v_cron_jobs = escapeshellarg($_POST['v_cron_jobs']);
+            $v_backups = escapeshellarg($_POST['v_backups']);
+            $v_disk_quota = escapeshellarg($_POST['v_disk_quota']);
+            $v_bandwidth = escapeshellarg($_POST['v_bandwidth']);
+            $v_ns1 = trim($_POST['v_ns1'], '.');
+            $v_ns2 = trim($_POST['v_ns2'], '.');
+            $v_ns3 = trim($_POST['v_ns3'], '.');
+            $v_ns4 = trim($_POST['v_ns4'], '.');
+            $v_ns = $v_ns1.",".$v_ns2;
+            if (!empty($v_ns3)) $v_ns .= ",".$v_ns3;
+            if (!empty($v_ns4)) $v_ns .= ",".$v_ns4;
+            $v_ns = escapeshellarg($v_ns);
+            $v_time = escapeshellarg(date('H:i:s'));
+            $v_date = escapeshellarg(date('Y-m-d'));
+
+            // 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 "%s" can not be blank.',$error_msg);
+            } else {
+                exec ('mktemp -d', $output, $return_var);
+                $tmpdir = $output[0];
+                unset($output);
+
+                // Create package
+                $pkg = "TEMPLATE=".$v_template."\n";
+                $pkg .= "WEB_DOMAINS=".$v_web_domains."\n";
+                $pkg .= "WEB_ALIASES=".$v_web_aliases."\n";
+                $pkg .= "DNS_DOMAINS=".$v_dns_domains."\n";
+                $pkg .= "DNS_RECORDS=".$v_dns_records."\n";
+                $pkg .= "MAIL_DOMAINS=".$v_mail_domains."\n";
+                $pkg .= "MAIL_ACCOUNTS=".$v_mail_accounts."\n";
+                $pkg .= "DATABASES=".$v_databases."\n";
+                $pkg .= "CRON_JOBS=".$v_cron_jobs."\n";
+                $pkg .= "DISK_QUOTA=".$v_disk_quota."\n";
+                $pkg .= "BANDWIDTH=".$v_bandwidth."\n";
+                $pkg .= "NS=".$v_ns."\n";
+                $pkg .= "SHELL=".$v_shell."\n";
+                $pkg .= "BACKUPS=".$v_backups."\n";
+                $pkg .= "TIME=".$v_time."\n";
+                $pkg .= "DATE=".$v_date."\n";
+
+                // Write package
+                $fp = fopen($tmpdir."/".$_POST['v_package'].".pkg", 'w');
+                fwrite($fp, $pkg);
+                fclose($fp);
+
+                // Rewrite package
+                if (empty($_SESSION['error_msg'])) {
+                    exec (VESTA_CMD."v-add-user-package ".$tmpdir." ".$v_package." 'yes'", $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);
+                }
+
+                // Remove tmpdir
+                exec ('rm -rf '.$tmpdir, $output, $return_var);
+                unset($output);
+
+                // Propogate new package
+                exec (VESTA_CMD."v-update-user-package ".$v_package." 'json'", $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;
+                }
+
+                if (empty($_SESSION['error_msg'])) {
+                    $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+                }
+            }
+        }
+    }
+
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_package.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 275 - 275
web/edit/user/index.php

@@ -1,275 +1,275 @@
-<?php
-// Init
-error_reporting(NULL);
-ob_start();
-session_start();
-
-$TAB = 'USER';
-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') {
-
-    // Check user argument?
-    if (empty($_GET['user'])) {
-        header("Location: /list/user/");
-        exit;
-    }
-
-    // Check user
-    $v_username = escapeshellarg($_GET['user']);
-    exec (VESTA_CMD."v-list-user ".$v_username." json", $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;
-    } else {
-        $data = json_decode(implode('', $output), true);
-        unset($output);
-        $v_username = $_GET['user'];
-        $v_password = "••••••••";
-        $v_email = $data[$v_username]['CONTACT'];
-        $v_template = $data[$v_username]['TEMPLATE'];
-        $v_package = $data[$v_username]['PACKAGE'];
-        $v_fname = $data[$v_username]['FNAME'];
-        $v_lname = $data[$v_username]['LNAME'];
-        $v_shell = $data[$v_username]['SHELL'];
-        $v_ns = $data[$v_username]['NS'];
-        $nameservers = explode(", ", $v_ns);
-        $v_ns1 = $nameservers[0];
-        $v_ns2 = $nameservers[1];
-        $v_ns3 = $nameservers[2];
-        $v_ns4 = $nameservers[3];
-        $v_suspended = $data[$v_username]['SUSPENDED'];
-        if ( $v_suspended == 'yes' ) {
-            $v_status =  'suspended';
-        } else {
-            $v_status =  'active';
-        }
-        $v_time = $data[$v_username]['TIME'];
-        $v_date = $data[$v_username]['DATE'];
-
-        exec (VESTA_CMD."v-list-user-packages json", $output, $return_var);
-        $packages = 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-sys-shells json", $output, $return_var);
-        $shells = json_decode(implode('', $output), true);
-        unset($output);
-    }
-
-    // Action
-    if (!empty($_POST['save'])) {
-        $v_username = escapeshellarg($_POST['v_username']);
-
-        // Change password
-        if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
-            $v_password = escapeshellarg($_POST['v_password']);
-            exec (VESTA_CMD."v-change-user-password ".$v_username." ".$v_password, $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;
-            }
-            $v_password = "••••••••";
-            unset($output);
-        }
-
-        // Change package
-        if (($v_package != $_POST['v_package']) && (empty($_SESSION['error_msg']))) {
-            $v_package = escapeshellarg($_POST['v_package']);
-            exec (VESTA_CMD."v-change-user-package ".$v_username." ".$v_package, $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);
-        }
-
-        // Change template
-        if (($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) {
-            $v_template = escapeshellarg($_POST['v_template']);
-            exec (VESTA_CMD."v-change-user-template ".$v_username." ".$v_template, $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);
-        }
-
-        // Change shell
-        if (($v_shell != $_POST['v_shell']) && (empty($_SESSION['error_msg']))) {
-            $v_shell = escapeshellarg($_POST['v_shell']);
-            exec (VESTA_CMD."v-change-user-shell ".$v_username." ".$v_shell, $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);
-        }
-
-        // Change contact email
-        if (($v_email != $_POST['v_email']) && (empty($_SESSION['error_msg']))) {
-            // Validate email
-            if (!filter_var($_POST['v_email'], FILTER_VALIDATE_EMAIL)) {
-                $_SESSION['error_msg'] = _('Please enter valid email address.');
-            } else {
-                $v_email = escapeshellarg($_POST['v_email']);
-                exec (VESTA_CMD."v-change-user-contact ".$v_username." ".$v_email, $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);
-        }
-
-        // Change Name
-        if (($v_fname != $_POST['v_fname']) || ($v_lname != $_POST['v_lname']) && (empty($_SESSION['error_msg']))) {
-            $v_fname = escapeshellarg($_POST['v_fname']);
-            $v_lname = escapeshellarg($_POST['v_lname']);
-            exec (VESTA_CMD."v-change-user-name ".$v_username." ".$v_fname." ".$v_lname, $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);
-        }
-
-        // Change NameServers
-        if (($v_ns1 != $_POST['v_ns1']) || ($v_ns2 != $_POST['v_ns2']) || ($v_ns3 != $_POST['v_ns3']) || ($v_ns4 != $_POST['v_ns4']) && (empty($_SESSION['error_msg']))) {
-            $v_ns1 = escapeshellarg($_POST['v_ns1']);
-            $v_ns2 = escapeshellarg($_POST['v_ns2']);
-            $v_ns3 = escapeshellarg($_POST['v_ns3']);
-            $v_ns4 = escapeshellarg($_POST['v_ns4']);
-            $ns_cmd = VESTA_CMD."v-change-user-ns ".$v_username." ".$v_ns1." ".$v_ns2;
-            if (!empty($_POST['v_ns3'])) $ns_cmd = $ns_cmd." ".$v_ns3;
-            if (!empty($_POST['v_ns4'])) $ns_cmd = $ns_cmd." ".$v_ns4;
-            exec ($ns_cmd, $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'])) {
-            $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-        }
-    }
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_user.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-} else {
-    // Check user argument?
-    if (empty($_GET['user'])) {
-        header("Location: /list/user/");
-        exit;
-    }
-
-    // Check user
-    $v_username = escapeshellarg($_GET['user']);
-    exec (VESTA_CMD."v-list-user ".$v_username." json", $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;
-    } else {
-        $data = json_decode(implode('', $output), true);
-        unset($output);
-        $v_username = $_GET['user'];
-        $v_password = "••••••••";
-        $v_email = $data[$v_username]['CONTACT'];
-        $v_fname = $data[$v_username]['FNAME'];
-        $v_lname = $data[$v_username]['LNAME'];
-        $v_ns = $data[$v_username]['NS'];
-        $nameservers = explode(", ", $v_ns);
-        $v_ns1 = $nameservers[0];
-        $v_ns2 = $nameservers[1];
-        $v_ns3 = $nameservers[2];
-        $v_ns4 = $nameservers[3];
-        $v_suspended = $data[$v_username]['SUSPENDED'];
-        if ( $v_suspended == 'yes' ) {
-            $v_status =  'suspended';
-        } else {
-            $v_status =  'active';
-        }
-        $v_time = $data[$v_username]['TIME'];
-        $v_date = $data[$v_username]['DATE'];
-
-    }
-
-    // Action
-    if (!empty($_POST['save'])) {
-        $v_username = escapeshellarg($_POST['v_username']);
-
-        // Change password
-        if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
-            $v_password = escapeshellarg($_POST['v_password']);
-            exec (VESTA_CMD."v-change-user-password ".$v_username." ".$v_password, $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;
-            }
-            $v_password = "••••••••";
-            unset($output);
-        }
-
-        // Change contact email
-        if (($v_email != $_POST['v_email']) && (empty($_SESSION['error_msg']))) {
-            $v_email = escapeshellarg($_POST['v_email']);
-            exec (VESTA_CMD."v-change-user-contact ".$v_username." ".$v_email, $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);
-        }
-
-        // Change NameServers
-        if (($v_ns1 != $_POST['v_ns1']) || ($v_ns2 != $_POST['v_ns2']) || ($v_ns3 != $_POST['v_ns3']) || ($v_ns4 != $_POST['v_ns4']) && (empty($_SESSION['error_msg']))) {
-            $v_ns1 = escapeshellarg($_POST['v_ns1']);
-            $v_ns2 = escapeshellarg($_POST['v_ns2']);
-            $v_ns3 = escapeshellarg($_POST['v_ns3']);
-            $v_ns4 = escapeshellarg($_POST['v_ns4']);
-            $ns_cmd = VESTA_CMD."v-change-user-ns ".$v_username." ".$v_ns1." ".$v_ns2;
-            if (!empty($_POST['v_ns3'])) $ns_cmd = $ns_cmd." ".$v_ns3;
-            if (!empty($_POST['v_ns4'])) $ns_cmd = $ns_cmd." ".$v_ns4;
-            exec ($ns_cmd, $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'])) {
-            $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-        }
-    }
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_user.html');
-    unset($_SESSION['error_msg']);
-    unset($_SESSION['ok_msg']);
-}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+$TAB = 'USER';
+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') {
+
+    // Check user argument?
+    if (empty($_GET['user'])) {
+        header("Location: /list/user/");
+        exit;
+    }
+
+    // Check user
+    $v_username = escapeshellarg($_GET['user']);
+    exec (VESTA_CMD."v-list-user ".$v_username." json", $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;
+    } else {
+        $data = json_decode(implode('', $output), true);
+        unset($output);
+        $v_username = $_GET['user'];
+        $v_password = "••••••••";
+        $v_email = $data[$v_username]['CONTACT'];
+        $v_template = $data[$v_username]['TEMPLATE'];
+        $v_package = $data[$v_username]['PACKAGE'];
+        $v_fname = $data[$v_username]['FNAME'];
+        $v_lname = $data[$v_username]['LNAME'];
+        $v_shell = $data[$v_username]['SHELL'];
+        $v_ns = $data[$v_username]['NS'];
+        $nameservers = explode(", ", $v_ns);
+        $v_ns1 = $nameservers[0];
+        $v_ns2 = $nameservers[1];
+        $v_ns3 = $nameservers[2];
+        $v_ns4 = $nameservers[3];
+        $v_suspended = $data[$v_username]['SUSPENDED'];
+        if ( $v_suspended == 'yes' ) {
+            $v_status =  'suspended';
+        } else {
+            $v_status =  'active';
+        }
+        $v_time = $data[$v_username]['TIME'];
+        $v_date = $data[$v_username]['DATE'];
+
+        exec (VESTA_CMD."v-list-user-packages json", $output, $return_var);
+        $packages = 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-sys-shells json", $output, $return_var);
+        $shells = json_decode(implode('', $output), true);
+        unset($output);
+    }
+
+    // Action
+    if (!empty($_POST['save'])) {
+        $v_username = escapeshellarg($_POST['v_username']);
+
+        // Change password
+        if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
+            $v_password = escapeshellarg($_POST['v_password']);
+            exec (VESTA_CMD."v-change-user-password ".$v_username." ".$v_password, $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;
+            }
+            $v_password = "••••••••";
+            unset($output);
+        }
+
+        // Change package
+        if (($v_package != $_POST['v_package']) && (empty($_SESSION['error_msg']))) {
+            $v_package = escapeshellarg($_POST['v_package']);
+            exec (VESTA_CMD."v-change-user-package ".$v_username." ".$v_package, $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);
+        }
+
+        // Change template
+        if (($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) {
+            $v_template = escapeshellarg($_POST['v_template']);
+            exec (VESTA_CMD."v-change-user-template ".$v_username." ".$v_template, $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);
+        }
+
+        // Change shell
+        if (($v_shell != $_POST['v_shell']) && (empty($_SESSION['error_msg']))) {
+            $v_shell = escapeshellarg($_POST['v_shell']);
+            exec (VESTA_CMD."v-change-user-shell ".$v_username." ".$v_shell, $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);
+        }
+
+        // Change contact email
+        if (($v_email != $_POST['v_email']) && (empty($_SESSION['error_msg']))) {
+            // Validate email
+            if (!filter_var($_POST['v_email'], FILTER_VALIDATE_EMAIL)) {
+                $_SESSION['error_msg'] = _('Please enter valid email address.');
+            } else {
+                $v_email = escapeshellarg($_POST['v_email']);
+                exec (VESTA_CMD."v-change-user-contact ".$v_username." ".$v_email, $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);
+        }
+
+        // Change Name
+        if (($v_fname != $_POST['v_fname']) || ($v_lname != $_POST['v_lname']) && (empty($_SESSION['error_msg']))) {
+            $v_fname = escapeshellarg($_POST['v_fname']);
+            $v_lname = escapeshellarg($_POST['v_lname']);
+            exec (VESTA_CMD."v-change-user-name ".$v_username." ".$v_fname." ".$v_lname, $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);
+        }
+
+        // Change NameServers
+        if (($v_ns1 != $_POST['v_ns1']) || ($v_ns2 != $_POST['v_ns2']) || ($v_ns3 != $_POST['v_ns3']) || ($v_ns4 != $_POST['v_ns4']) && (empty($_SESSION['error_msg']))) {
+            $v_ns1 = escapeshellarg($_POST['v_ns1']);
+            $v_ns2 = escapeshellarg($_POST['v_ns2']);
+            $v_ns3 = escapeshellarg($_POST['v_ns3']);
+            $v_ns4 = escapeshellarg($_POST['v_ns4']);
+            $ns_cmd = VESTA_CMD."v-change-user-ns ".$v_username." ".$v_ns1." ".$v_ns2;
+            if (!empty($_POST['v_ns3'])) $ns_cmd = $ns_cmd." ".$v_ns3;
+            if (!empty($_POST['v_ns4'])) $ns_cmd = $ns_cmd." ".$v_ns4;
+            exec ($ns_cmd, $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'])) {
+            $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+        }
+    }
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_user.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+} else {
+    // Check user argument?
+    if (empty($_GET['user'])) {
+        header("Location: /list/user/");
+        exit;
+    }
+
+    // Check user
+    $v_username = escapeshellarg($_GET['user']);
+    exec (VESTA_CMD."v-list-user ".$v_username." json", $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;
+    } else {
+        $data = json_decode(implode('', $output), true);
+        unset($output);
+        $v_username = $_GET['user'];
+        $v_password = "••••••••";
+        $v_email = $data[$v_username]['CONTACT'];
+        $v_fname = $data[$v_username]['FNAME'];
+        $v_lname = $data[$v_username]['LNAME'];
+        $v_ns = $data[$v_username]['NS'];
+        $nameservers = explode(", ", $v_ns);
+        $v_ns1 = $nameservers[0];
+        $v_ns2 = $nameservers[1];
+        $v_ns3 = $nameservers[2];
+        $v_ns4 = $nameservers[3];
+        $v_suspended = $data[$v_username]['SUSPENDED'];
+        if ( $v_suspended == 'yes' ) {
+            $v_status =  'suspended';
+        } else {
+            $v_status =  'active';
+        }
+        $v_time = $data[$v_username]['TIME'];
+        $v_date = $data[$v_username]['DATE'];
+
+    }
+
+    // Action
+    if (!empty($_POST['save'])) {
+        $v_username = escapeshellarg($_POST['v_username']);
+
+        // Change password
+        if (($v_password != $_POST['v_password']) && (empty($_SESSION['error_msg']))) {
+            $v_password = escapeshellarg($_POST['v_password']);
+            exec (VESTA_CMD."v-change-user-password ".$v_username." ".$v_password, $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;
+            }
+            $v_password = "••••••••";
+            unset($output);
+        }
+
+        // Change contact email
+        if (($v_email != $_POST['v_email']) && (empty($_SESSION['error_msg']))) {
+            $v_email = escapeshellarg($_POST['v_email']);
+            exec (VESTA_CMD."v-change-user-contact ".$v_username." ".$v_email, $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);
+        }
+
+        // Change NameServers
+        if (($v_ns1 != $_POST['v_ns1']) || ($v_ns2 != $_POST['v_ns2']) || ($v_ns3 != $_POST['v_ns3']) || ($v_ns4 != $_POST['v_ns4']) && (empty($_SESSION['error_msg']))) {
+            $v_ns1 = escapeshellarg($_POST['v_ns1']);
+            $v_ns2 = escapeshellarg($_POST['v_ns2']);
+            $v_ns3 = escapeshellarg($_POST['v_ns3']);
+            $v_ns4 = escapeshellarg($_POST['v_ns4']);
+            $ns_cmd = VESTA_CMD."v-change-user-ns ".$v_username." ".$v_ns1." ".$v_ns2;
+            if (!empty($_POST['v_ns3'])) $ns_cmd = $ns_cmd." ".$v_ns3;
+            if (!empty($_POST['v_ns4'])) $ns_cmd = $ns_cmd." ".$v_ns4;
+            exec ($ns_cmd, $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'])) {
+            $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+        }
+    }
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_user.html');
+    unset($_SESSION['error_msg']);
+    unset($_SESSION['ok_msg']);
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 616 - 616
web/edit/web/index.php

@@ -1,616 +1,616 @@
-<?php
-// Init
-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?
-if (empty($_GET['domain'])) {
-    header("Location: /list/web/");
-    exit;
-}
-
-// Edit as someone else?
-if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
-    $user=escapeshellarg($_GET['user']);
-}
-
-
-// Check domain
-$v_domain = escapeshellarg($_GET['domain']);
-exec (VESTA_CMD."v-list-web-domain ".$user." ".$v_domain." json", $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;
-} else {
-    $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_nginx = $data[$v_domain]['NGINX'];
-    $v_nginx_ext = str_replace(',', ', ', $data[$v_domain]['NGINX_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'];
-
-    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-stats json", $output, $return_var);
-    $stats = json_decode(implode('', $output), true);
-    unset($output);
-}
-
-// Action
-if (!empty($_POST['save'])) {
-    $v_domain = escapeshellarg($_POST['v_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);
-        if ($return_var != 0) {
-            $error = implode('<br>', $output);
-            if (empty($error)) $error = _('Error: vesta did not return any output.');
-            $_SESSION['error_msg'] = $error;
-        }
-        $restart_web = 'yes';
-        unset($output);
-        exec (VESTA_CMD."v-list-dns-domain ".$v_username." ".$v_domain." json", $output, $return_var);
-        if ((empty($_SESSION['error_msg'])) && ($return_var == 0 )) {
-            exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." ".$v_domain." ".$v_ip." '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;
-            }
-            $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);
-                if ($return_var != 0) {
-                    $error = implode('<br>', $output);
-                    if (empty($error)) $error = _('Error: vesta did not return any output.');
-                    $_SESSION['error_msg'] = $error;
-                }
-                $restart_dns = 'yes';
-            }
-            unset($output);
-        }
-    }
-
-    // Template
-    if (( $_SESSION['user'] == 'admin') && ($v_template != $_POST['v_template']) && (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);
-        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);
-        $restart_web = 'yes';
-    }
-
-    // Aliases
-    if (empty($_SESSION['error_msg'])) {
-        $waliases = preg_replace("/\n/", " ", $_POST['v_aliases']);
-        $waliases = preg_replace("/,/", " ", $waliases);
-        $waliases = preg_replace('/\s+/', ' ',$waliases);
-        $waliases = trim($waliases);
-        $aliases = explode(" ", $waliases);
-        $v_aliases = str_replace(' ', "\n", $waliases);
-        $result = array_diff($valiases, $aliases);
-        foreach ($result as $alias) {
-            if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
-                $restart_web = 'yes';
-                $v_template = escapeshellarg($_POST['v_template']);
-                exec (VESTA_CMD."v-delete-web-domain-alias ".$v_username." ".$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 (empty($_SESSION['error_msg'])) {
-                    exec (VESTA_CMD."v-delete-dns-on-web-alias ".$v_username." ".$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;
-                    }
-                    $restart_dns = 'yes';
-                }
-                unset($output);
-            }
-        }
-
-        $result = array_diff($aliases, $valiases);
-        foreach ($result as $alias) {
-            if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
-                $restart_web = 'yes';
-                $v_template = escapeshellarg($_POST['v_template']);
-                exec (VESTA_CMD."v-add-web-domain-alias ".$v_username." ".$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 (empty($_SESSION['error_msg'])) {
-                    exec (VESTA_CMD."v-add-dns-on-web-alias ".$v_username." ".$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;
-                    }
-                    $restart_dns = 'yes';
-                }
-                unset($output);
-            }
-        }
-    }
-
-    // Nginx
-    if ((!empty($v_nginx)) && (empty($_POST['v_nginx'])) && (empty($_SESSION['error_msg']))) {
-        exec (VESTA_CMD."v-delete-web-domain-nginx ".$v_username." ".$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);
-        unset($v_nginx);
-        $restart_web = 'yes';
-    }
-    if ((!empty($v_nginx)) && (!empty($_POST['v_nginx'])) && (empty($_SESSION['error_msg']))) {
-        $ext = preg_replace("/\n/", " ", $_POST['v_nginx_ext']);
-        $ext = preg_replace("/,/", " ", $ext);
-        $ext = preg_replace('/\s+/', ' ',$ext);
-        $ext = trim($ext);
-        $ext = str_replace(' ', ", ", $ext);
-        if ( $v_nginx_ext != $ext ) {
-            $ext = str_replace(', ', ",", $ext);
-            exec (VESTA_CMD."v-change-web-domain-nginx-tpl ".$v_username." ".$v_domain." 'default' ".escapeshellarg($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;
-            }
-            $v_nginx_ext = str_replace(',', ', ', $ext);
-            unset($output);
-            $restart_web = 'yes';
-        }
-    }
-    if ((empty($v_nginx)) && (!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'";
-        if (!empty($_POST['v_nginx_ext'])) {
-            $ext = preg_replace("/\n/", " ", $_POST['v_nginx_ext']);
-            $ext = preg_replace("/,/", " ", $ext);
-            $ext = preg_replace('/\s+/', ' ',$ext);
-            $ext = trim($ext);
-            $ext = str_replace(' ', ",", $ext);
-            $v_nginx_ext = str_replace(',', ', ', $ext);
-        }
-        exec (VESTA_CMD."v-add-web-domain-nginx ".$v_username." ".$v_domain." 'default' ".escapeshellarg($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);
-        $v_nginx = 'default';
-        $restart_web = 'yes';
-    }
-
-    // SSL
-    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);
-        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);
-        $v_ssl = 'no';
-        $restart_web = 'yes';
-    }
-    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);
-            $tmpdir = $mktemp_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);
-            }
-
-            exec (VESTA_CMD."v-change-web-domain-sslcert ".$user." ".$v_domain." ".$tmpdir." '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);
-            $restart_web = 'yes';
-            $v_ssl_crt = $_POST['v_ssl_crt'];
-            $v_ssl_key = $_POST['v_ssl_key'];
-            $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);
-            if ($return_var != 0) {
-                $error = implode('<br>', $output);
-                if (empty($error)) $error = _('Error: vesta did not return any output.');
-                $_SESSION['error_msg'] = $error;
-            }
-            $v_ssl_home = $_POST['v_ssl_home'];
-            unset($output);
-        }
-    }
-    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';
-        if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_home']))) $errors[] = 'ssl home';
-        $v_ssl_home = escapeshellarg($_POST['v_ssl_home']);
-        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 "%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."/".$_POST['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."/".$_POST['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."/".$_POST['v_domain'].".ca", 'w');
-                fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_ca']));
-                fclose($fp);
-            }
-            exec (VESTA_CMD."v-add-web-domain-ssl ".$user." ".$v_domain." ".$tmpdir." ".$v_ssl_home." '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);
-            $v_ssl = 'yes';
-            $restart_web = 'yes';
-            $v_ssl_crt = $_POST['v_ssl_crt'];
-            $v_ssl_key = $_POST['v_ssl_key'];
-            $v_ssl_ca = $_POST['v_ssl_ca'];
-            $v_ssl_home = $_POST['v_ssl_home'];
-        }
-    }
-
-    // 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);
-        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);
-        $v_stats = '';
-    }
-    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);
-        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($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);
-        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);
-    }
-
-    // Web Stats Auth
-    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);
-        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);
-        $v_stats_user = '';
-        $v_stats_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');
-        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 "%s" can not be blank.',$error_msg);
-        } else {
-            $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 ".$v_username." ".$v_domain." ".$v_stats_user." ".$v_stats_password, $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);
-            $v_stats_password = "••••••••";
-        }
-    }
-    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');
-        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 "%s" can not be blank.',$error_msg);
-        }
-        if (($v_stats_user != $_POST['v_stats_user']) || ($_POST['v_stats_password'] != "••••••••" ) && (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 ".$v_username." ".$v_domain." ".$v_stats_user." ".$v_stats_password, $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);
-            $v_stats_password = "••••••••";
-        }
-    }
-
-    // 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);
-        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);
-        $v_ftp= '';
-        $v_ftp_user = '';
-        $v_ftp_password = '';
-    }
-    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;
-                }
-            }
-            $_SESSION['error_msg'] = _('Error: 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);
-            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);
-            $v_ftp= '';
-            $v_ftp_user = '';
-            $v_ftp_password = '';
-        }
-        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;
-                    }
-                }
-                $_SESSION['error_msg'] = _('Error: 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);
-                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);
-                $v_ftp_user =  $_POST['v_ftp_user'];
-                $v_ftp_password = "••••••••";
-            }
-        }
-    }
-
-    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;
-                }
-            }
-            $_SESSION['error_msg'] = _('Error: 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);
-            if ($return_var != 0) {
-                $error = implode('<br>', $output);
-                if (empty($error)) $error = _('Error: vesta did not return any output.');
-                $_SESSION['error_msg'] = $error;
-            } else {
-                if (!empty($_POST['v_ftp_email'])) {
-                    $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);
-                }
-            }
-            unset($output);
-            $v_ftp_user =  $user."_".$_POST['v_ftp_user'];
-            $v_ftp_password = "••••••••";
-        }
-    }
-
-    // Restart web
-    if (!empty($restart_web) && (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;
-        }
-    }
-
-    // Restart dns
-    if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) {
-        exec (VESTA_CMD."v-restart-dns", $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;
-        }
-    }
-
-    if (empty($_SESSION['error_msg'])) {
-        $_SESSION['ok_msg'] = _('OK: changes has been saved.');
-    }
-
-}
-if ($_SESSION['user'] == 'admin') {
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_web.html');
-} else {
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_web.html');
-}
-unset($_SESSION['error_msg']);
-unset($_SESSION['ok_msg']);
-//}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+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?
+if (empty($_GET['domain'])) {
+    header("Location: /list/web/");
+    exit;
+}
+
+// Edit as someone else?
+if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
+    $user=escapeshellarg($_GET['user']);
+}
+
+
+// Check domain
+$v_domain = escapeshellarg($_GET['domain']);
+exec (VESTA_CMD."v-list-web-domain ".$user." ".$v_domain." json", $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;
+} else {
+    $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_nginx = $data[$v_domain]['NGINX'];
+    $v_nginx_ext = str_replace(',', ', ', $data[$v_domain]['NGINX_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'];
+
+    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-stats json", $output, $return_var);
+    $stats = json_decode(implode('', $output), true);
+    unset($output);
+}
+
+// Action
+if (!empty($_POST['save'])) {
+    $v_domain = escapeshellarg($_POST['v_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);
+        if ($return_var != 0) {
+            $error = implode('<br>', $output);
+            if (empty($error)) $error = _('Error: vesta did not return any output.');
+            $_SESSION['error_msg'] = $error;
+        }
+        $restart_web = 'yes';
+        unset($output);
+        exec (VESTA_CMD."v-list-dns-domain ".$v_username." ".$v_domain." json", $output, $return_var);
+        if ((empty($_SESSION['error_msg'])) && ($return_var == 0 )) {
+            exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." ".$v_domain." ".$v_ip." '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;
+            }
+            $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);
+                if ($return_var != 0) {
+                    $error = implode('<br>', $output);
+                    if (empty($error)) $error = _('Error: vesta did not return any output.');
+                    $_SESSION['error_msg'] = $error;
+                }
+                $restart_dns = 'yes';
+            }
+            unset($output);
+        }
+    }
+
+    // Template
+    if (( $_SESSION['user'] == 'admin') && ($v_template != $_POST['v_template']) && (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);
+        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);
+        $restart_web = 'yes';
+    }
+
+    // Aliases
+    if (empty($_SESSION['error_msg'])) {
+        $waliases = preg_replace("/\n/", " ", $_POST['v_aliases']);
+        $waliases = preg_replace("/,/", " ", $waliases);
+        $waliases = preg_replace('/\s+/', ' ',$waliases);
+        $waliases = trim($waliases);
+        $aliases = explode(" ", $waliases);
+        $v_aliases = str_replace(' ', "\n", $waliases);
+        $result = array_diff($valiases, $aliases);
+        foreach ($result as $alias) {
+            if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
+                $restart_web = 'yes';
+                $v_template = escapeshellarg($_POST['v_template']);
+                exec (VESTA_CMD."v-delete-web-domain-alias ".$v_username." ".$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 (empty($_SESSION['error_msg'])) {
+                    exec (VESTA_CMD."v-delete-dns-on-web-alias ".$v_username." ".$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;
+                    }
+                    $restart_dns = 'yes';
+                }
+                unset($output);
+            }
+        }
+
+        $result = array_diff($aliases, $valiases);
+        foreach ($result as $alias) {
+            if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
+                $restart_web = 'yes';
+                $v_template = escapeshellarg($_POST['v_template']);
+                exec (VESTA_CMD."v-add-web-domain-alias ".$v_username." ".$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 (empty($_SESSION['error_msg'])) {
+                    exec (VESTA_CMD."v-add-dns-on-web-alias ".$v_username." ".$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;
+                    }
+                    $restart_dns = 'yes';
+                }
+                unset($output);
+            }
+        }
+    }
+
+    // Nginx
+    if ((!empty($v_nginx)) && (empty($_POST['v_nginx'])) && (empty($_SESSION['error_msg']))) {
+        exec (VESTA_CMD."v-delete-web-domain-nginx ".$v_username." ".$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);
+        unset($v_nginx);
+        $restart_web = 'yes';
+    }
+    if ((!empty($v_nginx)) && (!empty($_POST['v_nginx'])) && (empty($_SESSION['error_msg']))) {
+        $ext = preg_replace("/\n/", " ", $_POST['v_nginx_ext']);
+        $ext = preg_replace("/,/", " ", $ext);
+        $ext = preg_replace('/\s+/', ' ',$ext);
+        $ext = trim($ext);
+        $ext = str_replace(' ', ", ", $ext);
+        if ( $v_nginx_ext != $ext ) {
+            $ext = str_replace(', ', ",", $ext);
+            exec (VESTA_CMD."v-change-web-domain-nginx-tpl ".$v_username." ".$v_domain." 'default' ".escapeshellarg($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;
+            }
+            $v_nginx_ext = str_replace(',', ', ', $ext);
+            unset($output);
+            $restart_web = 'yes';
+        }
+    }
+    if ((empty($v_nginx)) && (!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'";
+        if (!empty($_POST['v_nginx_ext'])) {
+            $ext = preg_replace("/\n/", " ", $_POST['v_nginx_ext']);
+            $ext = preg_replace("/,/", " ", $ext);
+            $ext = preg_replace('/\s+/', ' ',$ext);
+            $ext = trim($ext);
+            $ext = str_replace(' ', ",", $ext);
+            $v_nginx_ext = str_replace(',', ', ', $ext);
+        }
+        exec (VESTA_CMD."v-add-web-domain-nginx ".$v_username." ".$v_domain." 'default' ".escapeshellarg($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);
+        $v_nginx = 'default';
+        $restart_web = 'yes';
+    }
+
+    // SSL
+    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);
+        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);
+        $v_ssl = 'no';
+        $restart_web = 'yes';
+    }
+    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);
+            $tmpdir = $mktemp_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);
+            }
+
+            exec (VESTA_CMD."v-change-web-domain-sslcert ".$user." ".$v_domain." ".$tmpdir." '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);
+            $restart_web = 'yes';
+            $v_ssl_crt = $_POST['v_ssl_crt'];
+            $v_ssl_key = $_POST['v_ssl_key'];
+            $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);
+            if ($return_var != 0) {
+                $error = implode('<br>', $output);
+                if (empty($error)) $error = _('Error: vesta did not return any output.');
+                $_SESSION['error_msg'] = $error;
+            }
+            $v_ssl_home = $_POST['v_ssl_home'];
+            unset($output);
+        }
+    }
+    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';
+        if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_home']))) $errors[] = 'ssl home';
+        $v_ssl_home = escapeshellarg($_POST['v_ssl_home']);
+        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 "%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."/".$_POST['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."/".$_POST['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."/".$_POST['v_domain'].".ca", 'w');
+                fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_ca']));
+                fclose($fp);
+            }
+            exec (VESTA_CMD."v-add-web-domain-ssl ".$user." ".$v_domain." ".$tmpdir." ".$v_ssl_home." '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);
+            $v_ssl = 'yes';
+            $restart_web = 'yes';
+            $v_ssl_crt = $_POST['v_ssl_crt'];
+            $v_ssl_key = $_POST['v_ssl_key'];
+            $v_ssl_ca = $_POST['v_ssl_ca'];
+            $v_ssl_home = $_POST['v_ssl_home'];
+        }
+    }
+
+    // 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);
+        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);
+        $v_stats = '';
+    }
+    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);
+        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($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);
+        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);
+    }
+
+    // Web Stats Auth
+    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);
+        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);
+        $v_stats_user = '';
+        $v_stats_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');
+        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 "%s" can not be blank.',$error_msg);
+        } else {
+            $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 ".$v_username." ".$v_domain." ".$v_stats_user." ".$v_stats_password, $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);
+            $v_stats_password = "••••••••";
+        }
+    }
+    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');
+        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 "%s" can not be blank.',$error_msg);
+        }
+        if (($v_stats_user != $_POST['v_stats_user']) || ($_POST['v_stats_password'] != "••••••••" ) && (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 ".$v_username." ".$v_domain." ".$v_stats_user." ".$v_stats_password, $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);
+            $v_stats_password = "••••••••";
+        }
+    }
+
+    // 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);
+        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);
+        $v_ftp= '';
+        $v_ftp_user = '';
+        $v_ftp_password = '';
+    }
+    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;
+                }
+            }
+            $_SESSION['error_msg'] = _('Error: 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);
+            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);
+            $v_ftp= '';
+            $v_ftp_user = '';
+            $v_ftp_password = '';
+        }
+        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;
+                    }
+                }
+                $_SESSION['error_msg'] = _('Error: 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);
+                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);
+                $v_ftp_user =  $_POST['v_ftp_user'];
+                $v_ftp_password = "••••••••";
+            }
+        }
+    }
+
+    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;
+                }
+            }
+            $_SESSION['error_msg'] = _('Error: 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);
+            if ($return_var != 0) {
+                $error = implode('<br>', $output);
+                if (empty($error)) $error = _('Error: vesta did not return any output.');
+                $_SESSION['error_msg'] = $error;
+            } else {
+                if (!empty($_POST['v_ftp_email'])) {
+                    $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);
+                }
+            }
+            unset($output);
+            $v_ftp_user =  $user."_".$_POST['v_ftp_user'];
+            $v_ftp_password = "••••••••";
+        }
+    }
+
+    // Restart web
+    if (!empty($restart_web) && (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;
+        }
+    }
+
+    // Restart dns
+    if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) {
+        exec (VESTA_CMD."v-restart-dns", $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;
+        }
+    }
+
+    if (empty($_SESSION['error_msg'])) {
+        $_SESSION['ok_msg'] = _('OK: changes has been saved.');
+    }
+
+}
+if ($_SESSION['user'] == 'admin') {
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_web.html');
+} else {
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_web.html');
+}
+unset($_SESSION['error_msg']);
+unset($_SESSION['ok_msg']);
+//}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 26 - 26
web/error/index.html

@@ -1,26 +1,26 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-    <title><?php print _('505');?></title>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-    <meta name="description" content="<?php print _('505');?>"/>
-    <style type="text/css">
-        body {font-size:14px; color:#777777; font-family:arial; text-align:center; background: black;}
-        h1 {font-size:180px; color:#99A7AF; margin: 70px 0 0 0;}
-        h2 {color: #DE6C5D; font-family: arial; font-size: 24px; font-weight: bold; letter-spacing: -1px; padding: 40px 0 0 0;}
-        p {width:320px; text-align:center; margin-left:auto;margin-right:auto; margin-top: 30px }
-        div {width:320px; text-align:center; margin-left:auto;margin-right:auto;}
-        a:link {color: #34536A;}
-        a:visited {color: #34536A;}
-        a:active {color: #34536A;}
-        a:hover {color: #34536A;}
-    </style>
-</head>
-
-<body>
-    <h2><?php print _('An internal error occurred');?></h2>
-    <img src="/error/vesta.jpg">
-    <div>
-        <?php print _('GO_BACK_LINK');?>
-    </div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
+    <title><?php print _('505');?></title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    <meta name="description" content="<?php print _('505');?>"/>
+    <style type="text/css">
+        body {font-size:14px; color:#777777; font-family:arial; text-align:center; background: black;}
+        h1 {font-size:180px; color:#99A7AF; margin: 70px 0 0 0;}
+        h2 {color: #DE6C5D; font-family: arial; font-size: 24px; font-weight: bold; letter-spacing: -1px; padding: 40px 0 0 0;}
+        p {width:320px; text-align:center; margin-left:auto;margin-right:auto; margin-top: 30px }
+        div {width:320px; text-align:center; margin-left:auto;margin-right:auto;}
+        a:link {color: #34536A;}
+        a:visited {color: #34536A;}
+        a:active {color: #34536A;}
+        a:hover {color: #34536A;}
+    </style>
+</head>
+
+<body>
+    <h2><?php print _('An internal error occurred');?></h2>
+    <img src="/error/vesta.jpg">
+    <div>
+        <?php print _('GO_BACK_LINK');?>
+    </div>
+</body>
+</html>

+ 347 - 347
web/inc/i18n/en.php

@@ -1,348 +1,348 @@
-<?php
-/**
- * Vesta CP language file
- * Translated by ZonD80 (zond80@gmail.com)
- */
-
-if (!defined('LANGUAGE')) die('Direct access not allowed');
-
-$LANG = array(
-    'Hour'=>'Hour',
-    'Min'=>'Min',
-    'pb'=>'pb',
-    'tb'=>'tb',
-    'gb'=>'gb',
-    'mb'=>'mb',
-    'Error'=>'Error',
-    'minute'=>'minute',
-    'hour'=>'hour',
-    'day'=>'day',
-    'days'=>'days',
-    'hours'=>'hours',
-    'minutes'=>'minutes',
-    'month'=>'month',
-    'day of week'=>'day of week',
-    'cmd'=>'cmd',
-    'Error: field "%s" can not be blank.'=>'Error: Field "%s" can not be blank.',
-    _('Error: vesta did not return any output.')=>'Error: Vesta did not return any output',
-    'OK: cron job has been created successfully.'=>'Success: Cron Job has been created',
-    'database'=>'database',
-    'username'=>'username',
-    'password'=>'password',
-    'type'=>'type',
-    'charset'=>'charset',
-    'edit'=>'edit',
-    'DATABASE_CREATED_OK'=>'Success: Database <a href="/edit/db/?database=%s"><b>%s</b></a> has been created.',
-    'domain'=>'domain',
-    'ip'=>'IP',
-    'DOMAIN_CREATED_OK'=>'Success: Domain <a href="/list/dns/?domain=%s"><b>%s</b></a> has been created.',
-    'RECORD_CREATED_OK'=>'Success: Record <b>%s.%s</b> has been created.',
-    'ip address'=>'IP-address',
-    'netmask'=>'netmask',
-    'Netmask'=>'Netmask',
-    'interface'=>'interface',
-    'Interface'=>'Interface',
-    'assigned user'=>'assigned user',
-    'IP_CREATED_OK'=>'"Success: IP address <a href="/edit/ip/?ip=%s"><b>%s</b></a> has been created.',
-    'DOMAIN_MAIL_CREATED_OK'=>'Success: Mail for domain <a href="/list/mail/?domain=%s"><b>%s</b></a> has been created.',
-    'account'=>'account',
-    'Account'=>'Account',
-    'MAIL_ACCOUNT_CREATED_OK'=>'Success: Mail account <a href="/edit/mail/?account=%s&domain=%s"><b>%s@%s</b></a> has been created.',
-    'package'=>'package',
-    'template'=>'template',
-    'shell'=>'SSH',
-    'web domains'=>'web domains',
-    'Web Domains'=>'Web Domains',
-    'Web Aliases'=>'Web Aliases',
-    'per domain'=>'per domain',
-    'DNS domains'=>'DNS domains',
-    'DNS records count'=>'DNS records count',
-    'DNS Support'=>'DNS Support',
-    'Mail Support'=>'Mail Support',
-    'web aliases'=>'web aliases',
-    'dns records'=>'DNS records',
-    'mail domains'=>'mail domains',
-    'mail accounts'=>'mail accounts',
-    'Mail Domains'=>'Mail Domains',
-    'Mail Accounts'=>'Mail Accounts',
-    'accounts'=>'accounts',
-    'databases'=>'databases',
-    'Databases'=>'Databases',
-    'cron jobs'=>'cron jobs',
-    'Cron Jobs'=>'Cron Jobs',
-    'Backups'=>'Backups',
-    'backups'=>'backups',
-    'quota'=>'disk quota',
-    'bandwidth'=>'bandwidth',
-    'Bandwidth'=>'Bandwidth',
-    'ns1'=>'ns1',
-    'ns2'=>'ns2',
-    'PACKAGE_CREATED_OK'=>'Success: Package <a href="/edit/package/?package=%s"><b>%s</b></a> has been created.',
-    'user'=>'user',
-    'email'=>'email',
-    'Email'=>'Email',
-    'first name'=>'first name',
-    'last name'=>'last name',
-    'Please enter valid email address.'=>'Please enter valid email address.',
-    'Welcome to Vesta Control Panel'=>'Welcome to Vesta Control Panel',
-    'MAIL_FROM'=>'Vesta Control Panel <noreply@%s>',
-    'GREETINGS_GORDON_FREEMAN'=>"Hello, %s %s,\n",
-    'GREETINGS'=>"Hello,\n",
-    'ACCOUNT_READY'=>"You account has been created and ready for use.\n\nhttps://%s/login/\nUsername: %s\nPassword: %s\n\n--\nVesta Control Panel\n",
-    'ACCOUNT_CREATED_OK'=>'Success: User <a href="/edit/user/?user=%s"><b>%s</b></a> has been created.',
-    'ssl certificate'=>'SSL certificate',
-    'ssl key'=>'SSL key',
-    'SSL Support'=>'SSL Support',
-    'SSL Home Directory'=>'SSL Home Directory',
-    'SSL Certificate'=>'SSL Certificate',
-    'SSL Key'=>'SSL Key',
-    'SSL Certificate Authority / Intermediate'=>'SSL Certificate Authority / Intermediate',
-    'stats user password'=>'stats user password',
-    'stats username'=>'stats username',
-    'stats password'=>'stats password',
-    'ftp user password'=>'FTP user password',
-    'ftp user'=>'FTP user',
-    'FTP login credentials'=>'FTP login credentials',
-    'FTP_ACCOUNT_READY'=>"Your FTP account has been created and ready for use.\n\nHostname: %s\nUsername: %s_%s\nPassword: %s\n\n--\nVesta Control Panel\n",
-    'HOSTING_DOMAIN_CREATED_OK'=>'Success: Web domain <a href="/edit/web/?domain=%s"><b>%s</b></a> has been created.',
-    'OK: changes has been saved.'=>'Success: Changes have been saved.',
-    'FTP login credentials'=>'FTP login credentials',
-    '505'=>'505 &mdash; oops, internal error. Call an Ambulance!',
-    'An internal error occurred'=>'An internal error occurred',
-    'GO_BACK_LINK'=>'Try to go back to <a href="/">main page</a> or go to <a href="javascript:history.go(-1)">previous page</a>',
-    'ERROR: Invalid username or password'=>'Error: Invalid username or password',
-    'ERROR: Invalid username or code'=>'Error: Invalid username or reset code',
-    'MAIL_RESET_SUBJECT'=>'Password Reset at %s',
-    'PASSWORD_RESET_REQUEST'=>"You recently requested a password reset.\nTo coutinue to reset your password, visit this link:\nhttps://%s/reset/?action=confirm&user=%s&code=%s\n\nAlternatively, you can visit this link: https://%s/reset/?action=code&user=%s and enter the following reset code:\n%s\n\nIf you did not request password reset, please ignore this message and take out apologies.\n\n--\nVesta Control Panel\n",
-    'ERROR: Passwords not match'=>'Error: Passwords did not match',
-    'Adding Cron Job'=>'Adding Cron Job',
-    'Minute'=>'Minute',
-    'Day'=>'Day',
-    'Month'=>'Month',
-    'Day of week'=>'Day of week',
-    'Command'=>'Command',
-    'Add'=>'Add',
-    'Back'=>'Back',
-    'Adding database'=>'Adding database',
-    'DB_PREFIX_WILL_BE_ADDED'=>'Prefix %s will be automatically added to Database and User name',
-    'FTP_PREFIX_WILL_BE_ADDED'=>'Prefix %s will be automatically added to User name',
-    'Database'=>'Database',
-    'Username'=>'Username',
-    'Password'=>'Password',
-    'generate'=>'generate',
-    'Type'=>'Type',
-    'Charset'=>'Charset',
-    'Adding DNS Domain'=>'Adding DNS Domain',
-    'Domain'=>'Domain',
-    'IP-Address'=>'IP-Address',
-    'Advanced options'=>'Advanced options',
-    'Template'=>'Template',
-    'Expiration date'=>'Expiration date',
-    'Expire'=>'Expire',
-    'YYYY-MM-DD'=>'YYYY-MM-DD',
-    'Name servers'=>'Name servers',
-    'Name Servers'=>'Name Servers',
-    'Powered by Vesta Control Panel'=>'Powered by Vesta Control Panel',
-    'Vesta Control Panel'=>'Vesta Control Panel',
-    'Translation by ZonD80'=>'Translation by ZonD80',
-    'Forgot Password?'=>'Forgot Password?',
-    'Log in'=>'Log in',
-    'Log out'=>'Log out',
-    "RESET_NOTICE"=>"Please enter you username to continue.",
-    'Submit'=>'Submit',
-    'RESET_CODE_SENT'=>'Password reset code has been sent to your email address<br/>Please enter the code into field located below',
-    'Confirm'=>'Confirm',
-    'New Password'=>'New Password',
-    'Confirm Password'=>'Confirm Password',
-    'Reset'=>'Reset',
-    'Statistics'=>'Statistics',
-    'History Log'=>'History Log',
-    'Vesta logo'=>'Vesta logo',
-    'USER'=>'USER',
-    'logout'=>'logout',
-    'users'=>'users',
-    'Users'=>'Users',
-    'suspended'=>'suspended',
-    'WEB'=>'WEB',
-    'domains'=>'domains',
-    'aliases'=>'aliases',
-    'Aliases'=>'Aliases',
-    'DNS'=>'DNS',
-    'records'=>'records',
-    'Records'=>'Records',
-    'MAIL'=>'MAIL',
-    'DB'=>'DB',
-    'CRON'=>'CRON',
-    'BACKUP'=>'BACKUP',
-    'Packages'=>'Packages',
-    'IP Addresses'=>'IP Addresses',
-    'RRD Graphics'=>'RRD Graphics',
-    'jobs'=>'jobs',
-    'Reset Code'=>'Reset Code',
-    'disk'=>'disk',
-    'Disk'=>'Disk',
-    'traffic'=>'traffic',
-    'Database Credentials'=>'Database Credentials',
-    'DATABASE_READY'=>"Hello, %s %s,\nYour %s database has been created successfully.\n\nDatabase: %s_%s\nUser: %s_%s\nPassword: %s\n\n",
-    'Send credentials to'=>'Send credentials to',
-    'Adding DNS Record'=>'Adding DNS Record',
-    'Record'=>'Record',
-    'IP or Value'=>'IP-address or Valie',
-    'Priority'=>'Priority',
-    'optional'=>'optional',
-    'Adding IP Address'=>'Adding IP Address',
-    'Shared'=>'Shared',
-    'Assigned user'=>'Assigned user',
-    'Assigned domain'=>'Assigned domain',
-    'Adding Mail Domain'=>'Creatin Mail Domain',
-    'AntiSpam Support'=>'AntiSpam Support',
-    'AntiVirus Support'=>'AntiVirus Support',
-    'DKIM Support'=>'DKIM Support',
-    'Adding Mail Account'=>'Adding Mail Account',
-    'Advanced options'=>'Advanced options',
-    'Quota'=>'Quota',
-    'in megabytes'=>'in megabytes',
-    'use local-part'=>'use local-part',
-    'Forward to'=>'Forward to',
-    'one or more email addresses'=>'one or more email addresses',
-    'Adding Package'=>'Adding Package',
-    'Package Name'=>'Package Name',
-    'Package'=>'Package',
-    'Default Template'=>'Default Template',
-    'SSH Access'=>'SSH Access',
-    'Adding User'=>'Adding User',
-    'First Name'=>'First Name',
-    'Last Name'=>'Last Name',
-    'SEND_CREDENTIALS_NOTICE'=>'Send fresh credentials to user by email?',
-    'Adding Domain for hosting'=>'Adding Domain for hosting',
-    'Apache template'=>'Apache template',
-    'Nginx Support'=>'Nginx Support',
-    'Nginx Extentions'=>'Nginx Extentions',
-    'Nginx Template'=>'Nginx Template',
-    'Statistics Authorization'=>'Statistics Authorization',
-    'Additional FTP Account'=>'Additional FTP Account',
-    'Editing Cron Job'=>'Editing Cron Job',
-    'Save'=>'Save',
-    'Editing Database'=>'Editing Database',
-    'Editing DNS Domain'=>'Editing DNS Domain',
-    'Editing DNS Record'=>'Editing DNS Record',
-    'Editing IP Address'=>'Editing IP Address',
-    'Editing Mail Domain'=>'Editing Mail Domain',
-    'Catchall email'=>'Catchall email',
-    'Editing Mail Account'=>'Editing Mail Account',
-    'Autoreply'=>'Autoreply',
-    'Message'=>'Message',
-    'Editing Package'=>'Editing Package',
-    'Editing User'=>'Editing User',
-    'Default Name Servers'=>'Default Name Servers',
-    'Editing Domain'=>'Editing Domain',
-    'Create Backup'=>'Create Backup',
-    'apply to selected'=>'apply to selected',
-    'toggle all'=>'toggle all',
-    'delete'=>'delete',
-    'active'=>'active',
-    'download'=>'download',
-    'Owner'=>'Owner',
-    'restore'=>'restore',
-    'restart'=>'restart',
-    'CPU'=>'CPU',
-    'Memory'=>'Memory',
-    'stop'=>'stop',
-    'Run Time'=>'Run Time',
-    'BACKUP_DELETE_CONFIRMATION'=>'Are you sure to delete <b>%s</b> backup?',
-    'Backup Size'=>'Backup Size',
-    'SYS'=>'SYS',
-    'one archive'=>'one archive',
-    '%s archives'=>'%s archives',
-    'Add Cron Job'=>'Add Cron Job',
-    'add account'=>'add account',
-    'open webmail'=>'open webmail',
-    'suspend'=>'suspend',
-    'unsuspend'=>'unsuspend',
-    'CRON_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> cron job?',
-    'Confirmation'=>'Confirmation',
-    'one cron job'=>'one cron job',
-    '%s cron jobs'=>'%s cron jobs',
-    'Add Database'=>'Add Database',
-    'open %s'=>'open %s',
-    'DATABASE_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> database <b>%s</b>?',
-    'one database'=>'ne database',
-    '%s databases'=>'%s databases',
-    'Add DNS Domain'=>'Add DNS Domain',
-    'Search'=>'Search',
-    'LIST_DOMAIN_RECORDS'=>'Show %s records',
-    'add record'=>'add record',
-    'DOMAIN_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> domain <b>%s?</b>',
-    'one domain'=>'one domain',
-    '%s domains'=>'%s domains',
-    'Add DNS Record'=>'Add DNS Record',
-    'Listing'=>'Listing',
-    'list'=>'list',
-    'RECORD_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> record <b>%s</b>?',
-    'one DNS record'=>'one DNS record',
-    '%s DNS records'=>'%s DNS records',
-    'Add IP'=>'Add IP',
-    'IP_DELETE_CONFIRMATION'=>'Are you sure to delere IP-address <b>%s</b>?',
-    'Status'=>'Status',
-    'one IP address'=>'one IP address',
-    '%s IP addresses'=>'%s IP addresses',
-    'one log record'=>'one log record',
-    '%s log records'=>'%s log records',
-    'Add Mail Domain'=>'Add Mail Domain',
-    'MAIL_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> mail for domain <b>%s</b>?',
-    'one domain with email'=>'one domain with email',
-    '%s domains with email'=>'%s domains with email',
-    'Add Mail Account'=>'Add Mail Account',
-    'MAIL_ACCOUNT_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> mail account <b>%s</b>?',
-    'one mail account'=>'one mail account',
-    '%s mail accounts'=>'%s mail accounts',
-    'Add Package'=>'Add Package',
-    'PACKAGE_DELETE_CONFIRMATION'=>'Are you sure to delete package <b>%s</b>?',
-    'one package'=>'one package',
-    '%s packages'=>'%s packages',
-    'Daily'=>'Daily',
-    'Weekly'=>'Weekly',
-    'Monthly'=>'Monthly',
-    'Yearly'=>'Yearly',
-    'Search Results'=>'Search Results',
-    'login as'=>'login as',
-    'ARE_YOU_FUCKING_SURE'=>'Are you sure to <b>%s</b> <b>%s</b>?',
-    'Object'=>'Object',
-    'one object'=>'one object',
-    '%s objects'=>'%s objects',
-    'Overall Statistics'=>'Overall Statistics',
-    'show per user'=>'show per user',
-    'Hosting'=>'Hosting',
-    'Mail'=>'Mail',
-    'User Directories'=>'Папки User Directories',
-    'Web SSL Domains'=>'Web SSL Domains',
-    'one month'=>'one month',
-    '%s months'=>'%s months',
-    'Add User'=>'Add User',
-    'Add Domain'=>'Add Domain',
-    'rebuild'=>'rebuild',
-    'rebuild web'=>'rebuild web',
-    'rebuild DNS'=>'rebuild DNS',
-    'rebuild mail'=>'rebuild mail',
-    'rebuild db'=>'rebuild db',
-    'rebuild cron'=>'rebuild cron',
-    'update counters'=>'update counters',
-    'LOGGED_IN_AS'=>'Logged in as %s',
-    'USER_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> user <b>%s</b>?',
-    'one account'=>'one account',
-    '%s accounts'=>'%s accounts',
-    'Add Domain for hosting'=>'Add Domain for hosting',
-    'open webstats'=>'open webstats',
-    'Error Log'=>'Error Log',
-    'CGI Support'=>'CGI Support',
-    'Statistics Auth'=>'Statistics Auth',
-    'running'=>'running',
-    'SERVICE_ACTION_FAILED'=>'Error: Oparaion "%s" for service "%s" has been failed',
-    'Memory Usage'=>'Memory Usage',
-    'Bandwidth Usage'=>'Bandwidth Usage',
-    'IP Address'=>'IP Address',
-    'Accounts'=>'Accounts',
-);
-
-/*error_reporting(E_ALL);
+<?php
+/**
+ * Vesta CP language file
+ * Translated by ZonD80 (zond80@gmail.com)
+ */
+
+if (!defined('LANGUAGE')) die('Direct access not allowed');
+
+$LANG = array(
+    'Hour'=>'Hour',
+    'Min'=>'Min',
+    'pb'=>'pb',
+    'tb'=>'tb',
+    'gb'=>'gb',
+    'mb'=>'mb',
+    'Error'=>'Error',
+    'minute'=>'minute',
+    'hour'=>'hour',
+    'day'=>'day',
+    'days'=>'days',
+    'hours'=>'hours',
+    'minutes'=>'minutes',
+    'month'=>'month',
+    'day of week'=>'day of week',
+    'cmd'=>'cmd',
+    'Error: field "%s" can not be blank.'=>'Error: Field "%s" can not be blank.',
+    _('Error: vesta did not return any output.')=>'Error: Vesta did not return any output',
+    'OK: cron job has been created successfully.'=>'Success: Cron Job has been created',
+    'database'=>'database',
+    'username'=>'username',
+    'password'=>'password',
+    'type'=>'type',
+    'charset'=>'charset',
+    'edit'=>'edit',
+    'DATABASE_CREATED_OK'=>'Success: Database <a href="/edit/db/?database=%s"><b>%s</b></a> has been created.',
+    'domain'=>'domain',
+    'ip'=>'IP',
+    'DOMAIN_CREATED_OK'=>'Success: Domain <a href="/list/dns/?domain=%s"><b>%s</b></a> has been created.',
+    'RECORD_CREATED_OK'=>'Success: Record <b>%s.%s</b> has been created.',
+    'ip address'=>'IP-address',
+    'netmask'=>'netmask',
+    'Netmask'=>'Netmask',
+    'interface'=>'interface',
+    'Interface'=>'Interface',
+    'assigned user'=>'assigned user',
+    'IP_CREATED_OK'=>'"Success: IP address <a href="/edit/ip/?ip=%s"><b>%s</b></a> has been created.',
+    'DOMAIN_MAIL_CREATED_OK'=>'Success: Mail for domain <a href="/list/mail/?domain=%s"><b>%s</b></a> has been created.',
+    'account'=>'account',
+    'Account'=>'Account',
+    'MAIL_ACCOUNT_CREATED_OK'=>'Success: Mail account <a href="/edit/mail/?account=%s&domain=%s"><b>%s@%s</b></a> has been created.',
+    'package'=>'package',
+    'template'=>'template',
+    'shell'=>'SSH',
+    'web domains'=>'web domains',
+    'Web Domains'=>'Web Domains',
+    'Web Aliases'=>'Web Aliases',
+    'per domain'=>'per domain',
+    'DNS domains'=>'DNS domains',
+    'DNS records count'=>'DNS records count',
+    'DNS Support'=>'DNS Support',
+    'Mail Support'=>'Mail Support',
+    'web aliases'=>'web aliases',
+    'dns records'=>'DNS records',
+    'mail domains'=>'mail domains',
+    'mail accounts'=>'mail accounts',
+    'Mail Domains'=>'Mail Domains',
+    'Mail Accounts'=>'Mail Accounts',
+    'accounts'=>'accounts',
+    'databases'=>'databases',
+    'Databases'=>'Databases',
+    'cron jobs'=>'cron jobs',
+    'Cron Jobs'=>'Cron Jobs',
+    'Backups'=>'Backups',
+    'backups'=>'backups',
+    'quota'=>'disk quota',
+    'bandwidth'=>'bandwidth',
+    'Bandwidth'=>'Bandwidth',
+    'ns1'=>'ns1',
+    'ns2'=>'ns2',
+    'PACKAGE_CREATED_OK'=>'Success: Package <a href="/edit/package/?package=%s"><b>%s</b></a> has been created.',
+    'user'=>'user',
+    'email'=>'email',
+    'Email'=>'Email',
+    'first name'=>'first name',
+    'last name'=>'last name',
+    'Please enter valid email address.'=>'Please enter valid email address.',
+    'Welcome to Vesta Control Panel'=>'Welcome to Vesta Control Panel',
+    'MAIL_FROM'=>'Vesta Control Panel <noreply@%s>',
+    'GREETINGS_GORDON_FREEMAN'=>"Hello, %s %s,\n",
+    'GREETINGS'=>"Hello,\n",
+    'ACCOUNT_READY'=>"You account has been created and ready for use.\n\nhttps://%s/login/\nUsername: %s\nPassword: %s\n\n--\nVesta Control Panel\n",
+    'ACCOUNT_CREATED_OK'=>'Success: User <a href="/edit/user/?user=%s"><b>%s</b></a> has been created.',
+    'ssl certificate'=>'SSL certificate',
+    'ssl key'=>'SSL key',
+    'SSL Support'=>'SSL Support',
+    'SSL Home Directory'=>'SSL Home Directory',
+    'SSL Certificate'=>'SSL Certificate',
+    'SSL Key'=>'SSL Key',
+    'SSL Certificate Authority / Intermediate'=>'SSL Certificate Authority / Intermediate',
+    'stats user password'=>'stats user password',
+    'stats username'=>'stats username',
+    'stats password'=>'stats password',
+    'ftp user password'=>'FTP user password',
+    'ftp user'=>'FTP user',
+    'FTP login credentials'=>'FTP login credentials',
+    'FTP_ACCOUNT_READY'=>"Your FTP account has been created and ready for use.\n\nHostname: %s\nUsername: %s_%s\nPassword: %s\n\n--\nVesta Control Panel\n",
+    'HOSTING_DOMAIN_CREATED_OK'=>'Success: Web domain <a href="/edit/web/?domain=%s"><b>%s</b></a> has been created.',
+    'OK: changes has been saved.'=>'Success: Changes have been saved.',
+    'FTP login credentials'=>'FTP login credentials',
+    '505'=>'505 &mdash; oops, internal error. Call an Ambulance!',
+    'An internal error occurred'=>'An internal error occurred',
+    'GO_BACK_LINK'=>'Try to go back to <a href="/">main page</a> or go to <a href="javascript:history.go(-1)">previous page</a>',
+    'ERROR: Invalid username or password'=>'Error: Invalid username or password',
+    'ERROR: Invalid username or code'=>'Error: Invalid username or reset code',
+    'MAIL_RESET_SUBJECT'=>'Password Reset at %s',
+    'PASSWORD_RESET_REQUEST'=>"You recently requested a password reset.\nTo coutinue to reset your password, visit this link:\nhttps://%s/reset/?action=confirm&user=%s&code=%s\n\nAlternatively, you can visit this link: https://%s/reset/?action=code&user=%s and enter the following reset code:\n%s\n\nIf you did not request password reset, please ignore this message and take out apologies.\n\n--\nVesta Control Panel\n",
+    'ERROR: Passwords not match'=>'Error: Passwords did not match',
+    'Adding Cron Job'=>'Adding Cron Job',
+    'Minute'=>'Minute',
+    'Day'=>'Day',
+    'Month'=>'Month',
+    'Day of week'=>'Day of week',
+    'Command'=>'Command',
+    'Add'=>'Add',
+    'Back'=>'Back',
+    'Adding database'=>'Adding database',
+    'DB_PREFIX_WILL_BE_ADDED'=>'Prefix %s will be automatically added to Database and User name',
+    'FTP_PREFIX_WILL_BE_ADDED'=>'Prefix %s will be automatically added to User name',
+    'Database'=>'Database',
+    'Username'=>'Username',
+    'Password'=>'Password',
+    'generate'=>'generate',
+    'Type'=>'Type',
+    'Charset'=>'Charset',
+    'Adding DNS Domain'=>'Adding DNS Domain',
+    'Domain'=>'Domain',
+    'IP-Address'=>'IP-Address',
+    'Advanced options'=>'Advanced options',
+    'Template'=>'Template',
+    'Expiration date'=>'Expiration date',
+    'Expire'=>'Expire',
+    'YYYY-MM-DD'=>'YYYY-MM-DD',
+    'Name servers'=>'Name servers',
+    'Name Servers'=>'Name Servers',
+    'Powered by Vesta Control Panel'=>'Powered by Vesta Control Panel',
+    'Vesta Control Panel'=>'Vesta Control Panel',
+    'Translation by ZonD80'=>'Translation by ZonD80',
+    'Forgot Password?'=>'Forgot Password?',
+    'Log in'=>'Log in',
+    'Log out'=>'Log out',
+    "RESET_NOTICE"=>"Please enter you username to continue.",
+    'Submit'=>'Submit',
+    'RESET_CODE_SENT'=>'Password reset code has been sent to your email address<br/>Please enter the code into field located below',
+    'Confirm'=>'Confirm',
+    'New Password'=>'New Password',
+    'Confirm Password'=>'Confirm Password',
+    'Reset'=>'Reset',
+    'Statistics'=>'Statistics',
+    'History Log'=>'History Log',
+    'Vesta logo'=>'Vesta logo',
+    'USER'=>'USER',
+    'logout'=>'logout',
+    'users'=>'users',
+    'Users'=>'Users',
+    'suspended'=>'suspended',
+    'WEB'=>'WEB',
+    'domains'=>'domains',
+    'aliases'=>'aliases',
+    'Aliases'=>'Aliases',
+    'DNS'=>'DNS',
+    'records'=>'records',
+    'Records'=>'Records',
+    'MAIL'=>'MAIL',
+    'DB'=>'DB',
+    'CRON'=>'CRON',
+    'BACKUP'=>'BACKUP',
+    'Packages'=>'Packages',
+    'IP Addresses'=>'IP Addresses',
+    'RRD Graphics'=>'RRD Graphics',
+    'jobs'=>'jobs',
+    'Reset Code'=>'Reset Code',
+    'disk'=>'disk',
+    'Disk'=>'Disk',
+    'traffic'=>'traffic',
+    'Database Credentials'=>'Database Credentials',
+    'DATABASE_READY'=>"Hello, %s %s,\nYour %s database has been created successfully.\n\nDatabase: %s_%s\nUser: %s_%s\nPassword: %s\n\n",
+    'Send credentials to'=>'Send credentials to',
+    'Adding DNS Record'=>'Adding DNS Record',
+    'Record'=>'Record',
+    'IP or Value'=>'IP-address or Valie',
+    'Priority'=>'Priority',
+    'optional'=>'optional',
+    'Adding IP Address'=>'Adding IP Address',
+    'Shared'=>'Shared',
+    'Assigned user'=>'Assigned user',
+    'Assigned domain'=>'Assigned domain',
+    'Adding Mail Domain'=>'Creatin Mail Domain',
+    'AntiSpam Support'=>'AntiSpam Support',
+    'AntiVirus Support'=>'AntiVirus Support',
+    'DKIM Support'=>'DKIM Support',
+    'Adding Mail Account'=>'Adding Mail Account',
+    'Advanced options'=>'Advanced options',
+    'Quota'=>'Quota',
+    'in megabytes'=>'in megabytes',
+    'use local-part'=>'use local-part',
+    'Forward to'=>'Forward to',
+    'one or more email addresses'=>'one or more email addresses',
+    'Adding Package'=>'Adding Package',
+    'Package Name'=>'Package Name',
+    'Package'=>'Package',
+    'Default Template'=>'Default Template',
+    'SSH Access'=>'SSH Access',
+    'Adding User'=>'Adding User',
+    'First Name'=>'First Name',
+    'Last Name'=>'Last Name',
+    'SEND_CREDENTIALS_NOTICE'=>'Send fresh credentials to user by email?',
+    'Adding Domain for hosting'=>'Adding Domain for hosting',
+    'Apache template'=>'Apache template',
+    'Nginx Support'=>'Nginx Support',
+    'Nginx Extentions'=>'Nginx Extentions',
+    'Nginx Template'=>'Nginx Template',
+    'Statistics Authorization'=>'Statistics Authorization',
+    'Additional FTP Account'=>'Additional FTP Account',
+    'Editing Cron Job'=>'Editing Cron Job',
+    'Save'=>'Save',
+    'Editing Database'=>'Editing Database',
+    'Editing DNS Domain'=>'Editing DNS Domain',
+    'Editing DNS Record'=>'Editing DNS Record',
+    'Editing IP Address'=>'Editing IP Address',
+    'Editing Mail Domain'=>'Editing Mail Domain',
+    'Catchall email'=>'Catchall email',
+    'Editing Mail Account'=>'Editing Mail Account',
+    'Autoreply'=>'Autoreply',
+    'Message'=>'Message',
+    'Editing Package'=>'Editing Package',
+    'Editing User'=>'Editing User',
+    'Default Name Servers'=>'Default Name Servers',
+    'Editing Domain'=>'Editing Domain',
+    'Create Backup'=>'Create Backup',
+    'apply to selected'=>'apply to selected',
+    'toggle all'=>'toggle all',
+    'delete'=>'delete',
+    'active'=>'active',
+    'download'=>'download',
+    'Owner'=>'Owner',
+    'restore'=>'restore',
+    'restart'=>'restart',
+    'CPU'=>'CPU',
+    'Memory'=>'Memory',
+    'stop'=>'stop',
+    'Run Time'=>'Run Time',
+    'BACKUP_DELETE_CONFIRMATION'=>'Are you sure to delete <b>%s</b> backup?',
+    'Backup Size'=>'Backup Size',
+    'SYS'=>'SYS',
+    'one archive'=>'one archive',
+    '%s archives'=>'%s archives',
+    'Add Cron Job'=>'Add Cron Job',
+    'add account'=>'add account',
+    'open webmail'=>'open webmail',
+    'suspend'=>'suspend',
+    'unsuspend'=>'unsuspend',
+    'CRON_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> cron job?',
+    'Confirmation'=>'Confirmation',
+    'one cron job'=>'one cron job',
+    '%s cron jobs'=>'%s cron jobs',
+    'Add Database'=>'Add Database',
+    'open %s'=>'open %s',
+    'DATABASE_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> database <b>%s</b>?',
+    'one database'=>'ne database',
+    '%s databases'=>'%s databases',
+    'Add DNS Domain'=>'Add DNS Domain',
+    'Search'=>'Search',
+    'LIST_DOMAIN_RECORDS'=>'Show %s records',
+    'add record'=>'add record',
+    'DOMAIN_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> domain <b>%s?</b>',
+    'one domain'=>'one domain',
+    '%s domains'=>'%s domains',
+    'Add DNS Record'=>'Add DNS Record',
+    'Listing'=>'Listing',
+    'list'=>'list',
+    'RECORD_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> record <b>%s</b>?',
+    'one DNS record'=>'one DNS record',
+    '%s DNS records'=>'%s DNS records',
+    'Add IP'=>'Add IP',
+    'IP_DELETE_CONFIRMATION'=>'Are you sure to delere IP-address <b>%s</b>?',
+    'Status'=>'Status',
+    'one IP address'=>'one IP address',
+    '%s IP addresses'=>'%s IP addresses',
+    'one log record'=>'one log record',
+    '%s log records'=>'%s log records',
+    'Add Mail Domain'=>'Add Mail Domain',
+    'MAIL_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> mail for domain <b>%s</b>?',
+    'one domain with email'=>'one domain with email',
+    '%s domains with email'=>'%s domains with email',
+    'Add Mail Account'=>'Add Mail Account',
+    'MAIL_ACCOUNT_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> mail account <b>%s</b>?',
+    'one mail account'=>'one mail account',
+    '%s mail accounts'=>'%s mail accounts',
+    'Add Package'=>'Add Package',
+    'PACKAGE_DELETE_CONFIRMATION'=>'Are you sure to delete package <b>%s</b>?',
+    'one package'=>'one package',
+    '%s packages'=>'%s packages',
+    'Daily'=>'Daily',
+    'Weekly'=>'Weekly',
+    'Monthly'=>'Monthly',
+    'Yearly'=>'Yearly',
+    'Search Results'=>'Search Results',
+    'login as'=>'login as',
+    'ARE_YOU_FUCKING_SURE'=>'Are you sure to <b>%s</b> <b>%s</b>?',
+    'Object'=>'Object',
+    'one object'=>'one object',
+    '%s objects'=>'%s objects',
+    'Overall Statistics'=>'Overall Statistics',
+    'show per user'=>'show per user',
+    'Hosting'=>'Hosting',
+    'Mail'=>'Mail',
+    'User Directories'=>'Папки User Directories',
+    'Web SSL Domains'=>'Web SSL Domains',
+    'one month'=>'one month',
+    '%s months'=>'%s months',
+    'Add User'=>'Add User',
+    'Add Domain'=>'Add Domain',
+    'rebuild'=>'rebuild',
+    'rebuild web'=>'rebuild web',
+    'rebuild DNS'=>'rebuild DNS',
+    'rebuild mail'=>'rebuild mail',
+    'rebuild db'=>'rebuild db',
+    'rebuild cron'=>'rebuild cron',
+    'update counters'=>'update counters',
+    'LOGGED_IN_AS'=>'Logged in as %s',
+    'USER_ACTION_CONFIRMATION'=>'Are you sure to <b>%s</b> user <b>%s</b>?',
+    'one account'=>'one account',
+    '%s accounts'=>'%s accounts',
+    'Add Domain for hosting'=>'Add Domain for hosting',
+    'open webstats'=>'open webstats',
+    'Error Log'=>'Error Log',
+    'CGI Support'=>'CGI Support',
+    'Statistics Auth'=>'Statistics Auth',
+    'running'=>'running',
+    'SERVICE_ACTION_FAILED'=>'Error: Oparaion "%s" for service "%s" has been failed',
+    'Memory Usage'=>'Memory Usage',
+    'Bandwidth Usage'=>'Bandwidth Usage',
+    'IP Address'=>'IP Address',
+    'Accounts'=>'Accounts',
+);
+
+/*error_reporting(E_ALL);
 ini_set('display_errors',true);*/

+ 349 - 349
web/inc/i18n/ru.php

@@ -1,350 +1,350 @@
-<?php
-/**
- * Vesta CP language file
- * Translated by ZonD80 (zond80@gmail.com)
- */
-
-if (!defined('LANGUAGE')) die('Direct access not allowed');
-
-$LANG = array(
-    'Hour'=>'Час',
-    'Min'=>'Мин',
-    'pb'=>'пб',
-    'tb'=>'тб',
-    'gb'=>'гб',
-    'mb'=>'мб',
-    'Error'=>'Ошибка',
-    'minute'=>'минута',
-    'hour'=>'час',
-    'day'=>'день',
-    'days'=>'дня(ей)',
-    'hours'=>'часа(ов)',
-    'minutes'=>'минут(ы)',
-    'month'=>'месяц',
-    'day of week'=>'день недели',
-    'cmd'=>'командная строка',
-    'Error: field "%s" can not be blank.'=>'Ошибка: Поле "%s" не может быть пустым.',
-    _('Error: vesta did not return any output.')=>'Ошибка: Vesta не отвечает',
-    'OK: cron job has been created successfully.'=>'Успех: Задание Cron успешно создано',
-    'database'=>'база данных',
-    'username'=>'имя пользователя',
-    'password'=>'пароль',
-    'type'=>'тип',
-    'charset'=>'кодировка',
-    'edit'=>'ред.',
-    'DATABASE_CREATED_OK'=>'Успех: База данных <a href="/edit/db/?database=%s"><b>%s</b></a> успешно создана.',
-    'domain'=>'домен',
-    'ip'=>'IP',
-    'DOMAIN_CREATED_OK'=>'Успех: Домен <a href="/list/dns/?domain=%s"><b>%s</b></a> успешно создан.',
-    'RECORD_CREATED_OK'=>'Успех: Запись <b>%s.%s</b> успешно создана.',
-    'ip address'=>'IP-адрес',
-    'IP Address'=>'IP-адрес',
-    'netmask'=>'маска подсети',
-    'Netmask'=>'Маска подсети',
-    'interface'=>'интерфейс',
-    'Interface'=>'Интерфейс',
-    'assigned user'=>'назначенный пользователь',
-    'IP_CREATED_OK'=>'"Успех: ip-адрес <a href="/edit/ip/?ip=%s"><b>%s</b></a> успешно создан.',
-    'DOMAIN_MAIL_CREATED_OK'=>'Успех: почта для домена <a href="/list/mail/?domain=%s"><b>%s</b></a> подключена успешно',
-    'account'=>'аккаунт',
-    'Account'=>'Аккаунт',
-    'MAIL_ACCOUNT_CREATED_OK'=>'Успех: почтовый аккаунт <a href="/edit/mail/?account=%s&domain=%s"><b>%s@%s</b></a> успешно создан.',
-    'package'=>'пакет',
-    'template'=>'шаблон',
-    'shell'=>'SSH',
-    'web domains'=>'хосты',
-    'Web Domains'=>'Хосты',
-    'Web Aliases'=>'Алиасы Хостов',
-    'per domain'=>'на домен',
-    'DNS domains'=>'домены для DNS',
-    'DNS records count'=>'Кол-во DNS записей',
-    'DNS Support'=>'Поддержка DNS',
-    'Mail Support'=>'Поддержка почты',
-    'web aliases'=>'алиасы хостов',
-    'dns records'=>'DNS записи',
-    'mail domains'=>'домены с почтой',
-    'mail accounts'=>'почтовые аккаунты',
-    'Accounts'=>'Аккаунты',
-    'Mail Domains'=>'Домены с Почтой',
-    'Mail Accounts'=>'Почтовые Аккаунты',
-    'accounts'=>'аккаунты',
-    'databases'=>'базы данных',
-    'Databases'=>'Базы Данных',
-    'cron jobs'=>'cron задания',
-    'Cron Jobs'=>'Cron Задания',
-    'Backups'=>'Бэкапы',
-    'backups'=>'бэкапы',
-    'quota'=>'квота диска',
-    'bandwidth'=>'ширина канала',
-    'Bandwidth'=>'Ширина канала',
-    'ns1'=>'DNS-сервер #1',
-    'ns2'=>'DNS-сервер #2',
-    'PACKAGE_CREATED_OK'=>'Успех: Пакет <a href="/edit/package/?package=%s"><b>%s</b></a> успешно создан.',
-    'user'=>'пользователь',
-    'email'=>'email',
-    'Email'=>'Email',
-    'first name'=>'Имя',
-    'last name'=>'Фамилия',
-    'Please enter valid email address.'=>'Пожалуйста, введите реальный email адрес.',
-    'Welcome to Vesta Control Panel'=>'Добро пожаловать в панель управления Vesta',
-    'MAIL_FROM'=>'Vesta Control Panel <noreply@%s>',
-    'GREETINGS_GORDON_FREEMAN'=>"Здравствуйте, %s %s,\n",
-    'GREETINGS'=>"Здравствуйте,\n",
-    'ACCOUNT_READY'=>"Ваш аккаунт успешно создан и готов к использованию.\n\nhttps://%s/login/\nИмя пользователя: %s\nПароль: %s\n\n--\nПанель управления Vesta\n",
-    'ACCOUNT_CREATED_OK'=>'Успех: Пользователь <a href="/edit/user/?user=%s"><b>%s</b></a> успешно создан.',
-    'ssl certificate'=>'SSL сертификат',
-    'ssl key'=>'ключ SSL сертификата',
-    'SSL Support'=>'Поддержка SSL',
-    'SSL Home Directory'=>'Корневая папка для SSL',
-    'SSL Certificate'=>'SSL сертификат',
-    'SSL Key'=>'Ключ SSL сертификата',
-    'SSL Certificate Authority / Intermediate'=>'Центр сертификации SSL CA / Intermediate',
-    'stats user password'=>'пароль для доступа к статистике',
-    'stats username'=>'имя пользователя статистики',
-    'stats password'=>'пароль пользователя статистики',
-    'ftp user password'=>'пароль для доступа к FTP',
-    'ftp user'=>'пользователь FTP',
-    'FTP login credentials'=>'Данные для доступа к FTP',
-    'FTP_ACCOUNT_READY'=>"Ваш FTP аккаунт успешно создан и готов к использованию.\n\nХост: %s\nИмя пользователя: %s_%s\nПароль: %s\n\n--\nПанель управления Vesta\n",
-    'HOSTING_DOMAIN_CREATED_OK'=>'Успешно: хостинг для домена <a href="/edit/web/?domain=%s"><b>%s</b></a> был успешно создан.',
-    'OK: changes has been saved.'=>'Успешно: изменения были сохранены.',
-    'FTP login credentials'=>'Данные для доступа к FTP',
-    '505'=>'505 &mdash; внутренняя ошибка',
-    'An internal error occurred'=>'Произошла внутренняя ошибка',
-    'GO_BACK_LINK'=>'Попробуйте вернуться на <a href="/">главную страницу</a> или вернитесь на <a href="javascript:history.go(-1)">предыдущую страницу</a>',
-    'ERROR: Invalid username or password'=>'Ошибка: Неверный логин или пароль',
-    'ERROR: Invalid username or code'=>'Ошибка: Неверный логин или код сброса пароля',
-    'MAIL_RESET_SUBJECT'=>'Сброс пароля %s',
-    'PASSWORD_RESET_REQUEST'=>"Вы недавно запросили смену пароля.\nЧтобы произвести смену пароля, пройдите по этой ссылке:\nhttps://%s/reset/?action=confirm&user=%s&code=%s\n\nВы также можете пойти по ссылке https://%s/reset/?action=code&user=%s и ввести следующий код для сброса пароля:\n%s\n\nЕсли вы не создавали запрос на сброс пароля, пожалуйста проигнорируйте это письмо и примите наши извиниения.\n\n--\nПанель управления Vesta\n",
-    'ERROR: Passwords not match'=>'Ошибка: Пароли не совпадают',
-    'Adding Cron Job'=>'Добавление cron задания',
-    'Minute'=>'Минута',
-    'Day'=>'День',
-    'Month'=>'Месяц',
-    'Day of week'=>'День недели',
-    'Command'=>'Команда',
-    'Add'=>'Добавить',
-    'Back'=>'Назад',
-    'Adding database'=>'Добавление базы данных',
-    'DB_PREFIX_WILL_BE_ADDED'=>'Префикс %s будет автоматически добавлен к БД и пользователю БД',
-    'FTP_PREFIX_WILL_BE_ADDED'=>'Префикс %s будет автоматически добавлен к имени пользователя',
-    'Database'=>'База данных',
-    'Username'=>'Имя пользователя',
-    'Password'=>'Пароль',
-    'generate'=>'сгенерировать',
-    'Type'=>'Тип',
-    'Charset'=>'Кодировка',
-    'Adding DNS Domain'=>'Добавление доменного имени',
-    'Domain'=>'Домен',
-    'IP-Address'=>'IP-адрес',
-    'Advanced options'=>'Расширенные опции',
-    'Template'=>'Шаблон',
-    'Expiration date'=>'Дата окончания делегирования',
-    'Expire'=>'Конец',
-    'YYYY-MM-DD'=>'ГГГГ-ММ-ДД',
-    'Name servers'=>'Сервера имен',
-    'Name Servers'=>'Сервера Имен',
-    'Powered by Vesta Control Panel'=>'Работает на Панели Управления Vesta',
-    'Vesta Control Panel'=>'Панель Управления Vesta',
-    'Translation by ZonD80'=>'Перевод ZonD80',
-    'Forgot Password?'=>'Забыли пароль?',
-    'Log in'=>'Войти',
-    'Log out'=>'Выйти',
-    "RESET_NOTICE"=>"Для сброса пароля введите ваше имя пользователя, и мы расскажем, что нужно делать дальше.",
-    'Submit'=>'Отправить',
-    'RESET_CODE_SENT'=>'Код сброса пароля выслан на ваш email<br/>Пожалуйста, введите код в располженное ниже поле для продолжения',
-    'Confirm'=>'Подтвердить',
-    'New Password'=>'Новый Пароль',
-    'Confirm Password'=>'Подтверждение Пароля',
-    'Reset'=>'Сбросить',
-    'Statistics'=>'Статистика',
-    'History Log'=>'История изменений',
-    'Vesta logo'=>'Логотип Vesta',
-    'USER'=>'ПОЛЬЗ-ЛИ',
-    'logout'=>'выйти',
-    'users'=>'пользователи',
-    'Users'=>'Пользователи',
-    'suspended'=>'выключено',
-    'WEB'=>'ХОСТИНГ',
-    'domains'=>'домены',
-    'aliases'=>'алиасы',
-    'Aliases'=>'Алиасы',
-    'DNS'=>'DNS',
-    'records'=>'записи',
-    'Records'=>'Записи',
-    'MAIL'=>'ПОЧТА',
-    'DB'=>'БД',
-    'CRON'=>'CRON',
-    'BACKUP'=>'БЭКАПЫ',
-    'Packages'=>'Пакеты',
-    'IP Addresses'=>'IP адреса',
-    'RRD Graphics'=>'Графики',
-    'jobs'=>'задания',
-    'Reset Code'=>'Код сброса',
-    'disk'=>'место',
-    'Disk'=>'Место',
-    'traffic'=>'Трафик',
-    'Database Credentials'=>'Данные для доступа к БД',
-    'DATABASE_READY'=>"Здравствуйте %s %s,\nВаша %s база данных создана успешно.\n\nИмя БД: %s_%s\nПользователь: %s_%s\nПароль: %s\n\n",
-    'Send credentials to'=>'Отправить данные для доступа к ',
-    'Adding DNS Record'=>'Добавление записи DNS',
-    'Record'=>'Запись',
-    'IP or Value'=>'IP-адрес или значение',
-    'Priority'=>'Приоритет',
-    'optional'=>'опционально',
-    'Adding IP Address'=>'Добавление IP-адреса',
-    'Shared'=>'Общий',
-    'Assigned user'=>'Пользователь',
-    'Assigned domain'=>'Домен',
-    'Adding Mail Domain'=>'Создание почты для домена',
-    'AntiSpam Support'=>'Поддержка Анти-спама',
-    'AntiVirus Support'=>'Поддержка Антивируса',
-    'DKIM Support'=>'Поддержка DKIM',
-    'Adding Mail Account'=>'Создание почтового ящика',
-    'Advanced options'=>'Дополнительные опции',
-    'Quota'=>'Квота',
-    'in megabytes'=>'в мегабайтах',
-    'use local-part'=>'используйте локальные записи',
-    'Forward to'=>'Перенаправление',
-    'one or more email addresses'=>'один или несколько email-адресов',
-    'Adding Package'=>'Создание пакета',
-    'Package Name'=>'Название пакета',
-    'Package'=>'Пакет',
-    'Default Template'=>'Шаблон по умолчанию',
-    'SSH Access'=>'Доступ к SSH',
-    'Adding User'=>'Добавления пользователя',
-    'First Name'=>'Имя',
-    'Last Name'=>'Фамилия',
-    'SEND_CREDENTIALS_NOTICE'=>'Отправить данные для доступа на ящик пользователя?',
-    'Adding Domain for hosting'=>'Добавление домена для хостинга',
-    'Apache template'=>'Шаблон веб-сервера Apache',
-    'Nginx Support'=>'Поддержка веб-сервера Nginx',
-    'Nginx Extentions'=>'Расширения Nginx',
-    'Nginx Template'=>'Шаблон для Nginx',
-    'Statistics Authorization'=>'Доступ к статистике',
-    'Additional FTP Account'=>'Дополнительный FTP-аккаунт',
-    'Editing Cron Job'=>'Редактирование cron-задания',
-    'Save'=>'Сохранить',
-    'Editing Database'=>'Редактирование БД',
-    'Editing DNS Domain'=>'Редактирование DNS для домена',
-    'Editing DNS Record'=>'Редактирование DNS записи',
-    'Editing IP Address'=>'Редактирование IP-адреса',
-    'Editing Mail Domain'=>'Редактирование почты для домена',
-    'Catchall email'=>'Отправить почту в',
-    'Editing Mail Account'=>'Редактирование почтового акканунта',
-    'Autoreply'=>'Автоответчик',
-    'Message'=>'Сообщение',
-    'Editing Package'=>'Редактирование Пакета',
-    'Editing User'=>'Редактирование Пользователя',
-    'Default Name Servers'=>'DNS по умолчанию',
-    'Editing Domain'=>'Редактирование хостинга',
-    'Create Backup'=>'Создать Бэкап',
-    'apply to selected'=>'применить к выбранным',
-    'toggle all'=>'снять/выделить все',
-    'delete'=>'удалить',
-    'active'=>'активно',
-    'download'=>'скачать',
-    'Owner'=>'Владелец',
-    'restore'=>'восстановить',
-    'restart'=>'перезапустить',
-    'CPU'=>'Процессор',
-    'Memory'=>'Память',
-    'stop'=>'остановить',
-    'Run Time'=>'Время запуска',
-    'BACKUP_DELETE_CONFIRMATION'=>'Вы уверены, что хотите удалить <b>%s</b> бэкап?',
-    'Backup Size'=>'Размер Бэкапа',
-    'SYS'=>'Системное',
-    'one archive'=>'один архив',
-    '%s archives'=>'%s архивов',
-    'Add Cron Job'=>'Добавить новое Cron-задание',
-    'add account'=>'добавить аккаунт',
-    'open webmail'=>'открыть веб-интерфейс',
-    'suspend'=>'выключить',
-    'unsuspend'=>'включить',
-    'CRON_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> cron-задание?',
-    'Confirmation'=>'Подтверждение',
-    'one cron job'=>'одно cron-задание',
-    '%s cron jobs'=>'%s cron-заданя(ий)',
-    'Add Database'=>'Добавить БД',
-    'open %s'=>'открыть %s',
-    'DATABASE_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> базу данных <b>%s</b>?',
-    'one database'=>'одна БД',
-    '%s databases'=>'%s БД',
-    'Add DNS Domain'=>'Добавить DNS для домена',
-    'Search'=>'Поиск',
-    'LIST_DOMAIN_RECORDS'=>'Посмотреть %s записей',
-    'add record'=>'добавить запись',
-    'DOMAIN_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> домен <b>%s?</b>',
-    'one domain'=>'Один домен',
-    '%s domains'=>'%s домена(ов)',
-    'Add DNS Record'=>'Добавить DNS запись',
-    'Listing'=>'Просмотр',
-    'list'=>'посмотреть',
-    'RECORD_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> запись <b>%s</b>?',
-    'one DNS record'=>'одна DNS-запись',
-    '%s DNS records'=>'%s DNS-записи(ей)',
-    'Add IP'=>'Добавить IP адрес',
-    'IP_DELETE_CONFIRMATION'=>'Вы уверены, что хотите удалить IP адрес <b>%s</b>?',
-    'Status'=>'Статус',
-    'one IP address'=>'один IP',
-    '%s IP addresses'=>'%s IP адреса(ов)',
-    'one log record'=>'одна запись',
-    '%s log records'=>'%s записи(ей)',
-    'Add Mail Domain'=>'Добавить почту для домена',
-    'MAIL_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> почту для домена <b>%s</b>?',
-    'one domain with email'=>'один домен с почтой',
-    '%s domains with email'=>'%s домена(ов) с почтой',
-    'Add Mail Account'=>'Добавить почтовый аккаунт',
-    'MAIL_ACCOUNT_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> почтовый ящик <b>%s</b>?',
-    'one mail account'=>'один почтовый ящик',
-    '%s mail accounts'=>'%s почтовых ящика(ов)',
-    'Add Package'=>'Добавить пакет',
-    'PACKAGE_DELETE_CONFIRMATION'=>'Вы уверены, что хотите удалить пакет <b>%s</b>?',
-    'one package'=>'один пакет',
-    '%s packages'=>'%s пакета(ов)',
-    'Daily'=>'Ежедневый',
-    'Weekly'=>'Еженедельный',
-    'Monthly'=>'Ежемесячный',
-    'Yearly'=>'Ежегодный',
-    'Search Results'=>'Результаты Поиска',
-    'login as'=>'войти как',
-    'ARE_YOU_FUCKING_SURE'=>'Вы уверены, что хотите <b>%s</b> <b>%s</b>?',
-    'Object'=>'Объект',
-    'one object'=>'один объект',
-    '%s objects'=>'%s объекта(ов)',
-    'Overall Statistics'=>'Вся Статистика',
-    'show per user'=>'показать для пользователя',
-    'Hosting'=>'Хостинг',
-    'Mail'=>'Почта',
-    'User Directories'=>'Папки пользователя',
-    'Web SSL Domains'=>'Хосты с SSL',
-    'one month'=>'один месяц',
-    '%s months'=>'%s месяца(ев)',
-    'Add User'=>'Добавить Пользователя',
-    'Add Domain'=>'Добавить Домен',
-    'rebuild'=>'перестроить',
-    'rebuild web'=>'перестроить хостинг',
-    'rebuild DNS'=>'перестроить DNS',
-    'rebuild mail'=>'перестроить почту',
-    'rebuild db'=>'перестроить БД',
-    'rebuild cron'=>'перестроить cron',
-    'update counters'=>'обновить счетчики',
-    'LOGGED_IN_AS'=>'Вы вошли как %s',
-    'USER_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> пользователя <b>%s</b>?',
-    'one account'=>'один аккаунт',
-    '%s accounts'=>'%s аккаунта(ов)',
-    'Add Domain for hosting'=>'Добавить Домен для хостинга',
-    'open webstats'=>'открыть ститистику',
-    'Error Log'=>'Лог Ошибок',
-    'CGI Support'=>'Поддержка CGI',
-    'Statistics Auth'=>'Авторизация Статистики',
-    'running'=>'работает',
-    'SERVICE_ACTION_FAILED'=>'Ошибка: Операция "%s" для сервиса "%s" не удалась',
-    'Load Average'=>'Нагрузка',
-    'Memory Usage'=>'Использование Памяти',
-    'Bandwidth Usage'=>'Использование Сети',
-    
-);
-
-/*error_reporting(E_ALL);
+<?php
+/**
+ * Vesta CP language file
+ * Translated by ZonD80 (zond80@gmail.com)
+ */
+
+if (!defined('LANGUAGE')) die('Direct access not allowed');
+
+$LANG = array(
+    'Hour'=>'Час',
+    'Min'=>'Мин',
+    'pb'=>'пб',
+    'tb'=>'тб',
+    'gb'=>'гб',
+    'mb'=>'мб',
+    'Error'=>'Ошибка',
+    'minute'=>'минута',
+    'hour'=>'час',
+    'day'=>'день',
+    'days'=>'дня(ей)',
+    'hours'=>'часа(ов)',
+    'minutes'=>'минут(ы)',
+    'month'=>'месяц',
+    'day of week'=>'день недели',
+    'cmd'=>'командная строка',
+    'Error: field "%s" can not be blank.'=>'Ошибка: Поле "%s" не может быть пустым.',
+    _('Error: vesta did not return any output.')=>'Ошибка: Vesta не отвечает',
+    'OK: cron job has been created successfully.'=>'Успех: Задание Cron успешно создано',
+    'database'=>'база данных',
+    'username'=>'имя пользователя',
+    'password'=>'пароль',
+    'type'=>'тип',
+    'charset'=>'кодировка',
+    'edit'=>'ред.',
+    'DATABASE_CREATED_OK'=>'Успех: База данных <a href="/edit/db/?database=%s"><b>%s</b></a> успешно создана.',
+    'domain'=>'домен',
+    'ip'=>'IP',
+    'DOMAIN_CREATED_OK'=>'Успех: Домен <a href="/list/dns/?domain=%s"><b>%s</b></a> успешно создан.',
+    'RECORD_CREATED_OK'=>'Успех: Запись <b>%s.%s</b> успешно создана.',
+    'ip address'=>'IP-адрес',
+    'IP Address'=>'IP-адрес',
+    'netmask'=>'маска подсети',
+    'Netmask'=>'Маска подсети',
+    'interface'=>'интерфейс',
+    'Interface'=>'Интерфейс',
+    'assigned user'=>'назначенный пользователь',
+    'IP_CREATED_OK'=>'"Успех: ip-адрес <a href="/edit/ip/?ip=%s"><b>%s</b></a> успешно создан.',
+    'DOMAIN_MAIL_CREATED_OK'=>'Успех: почта для домена <a href="/list/mail/?domain=%s"><b>%s</b></a> подключена успешно',
+    'account'=>'аккаунт',
+    'Account'=>'Аккаунт',
+    'MAIL_ACCOUNT_CREATED_OK'=>'Успех: почтовый аккаунт <a href="/edit/mail/?account=%s&domain=%s"><b>%s@%s</b></a> успешно создан.',
+    'package'=>'пакет',
+    'template'=>'шаблон',
+    'shell'=>'SSH',
+    'web domains'=>'хосты',
+    'Web Domains'=>'Хосты',
+    'Web Aliases'=>'Алиасы Хостов',
+    'per domain'=>'на домен',
+    'DNS domains'=>'домены для DNS',
+    'DNS records count'=>'Кол-во DNS записей',
+    'DNS Support'=>'Поддержка DNS',
+    'Mail Support'=>'Поддержка почты',
+    'web aliases'=>'алиасы хостов',
+    'dns records'=>'DNS записи',
+    'mail domains'=>'домены с почтой',
+    'mail accounts'=>'почтовые аккаунты',
+    'Accounts'=>'Аккаунты',
+    'Mail Domains'=>'Домены с Почтой',
+    'Mail Accounts'=>'Почтовые Аккаунты',
+    'accounts'=>'аккаунты',
+    'databases'=>'базы данных',
+    'Databases'=>'Базы Данных',
+    'cron jobs'=>'cron задания',
+    'Cron Jobs'=>'Cron Задания',
+    'Backups'=>'Бэкапы',
+    'backups'=>'бэкапы',
+    'quota'=>'квота диска',
+    'bandwidth'=>'ширина канала',
+    'Bandwidth'=>'Ширина канала',
+    'ns1'=>'DNS-сервер #1',
+    'ns2'=>'DNS-сервер #2',
+    'PACKAGE_CREATED_OK'=>'Успех: Пакет <a href="/edit/package/?package=%s"><b>%s</b></a> успешно создан.',
+    'user'=>'пользователь',
+    'email'=>'email',
+    'Email'=>'Email',
+    'first name'=>'Имя',
+    'last name'=>'Фамилия',
+    'Please enter valid email address.'=>'Пожалуйста, введите реальный email адрес.',
+    'Welcome to Vesta Control Panel'=>'Добро пожаловать в панель управления Vesta',
+    'MAIL_FROM'=>'Vesta Control Panel <noreply@%s>',
+    'GREETINGS_GORDON_FREEMAN'=>"Здравствуйте, %s %s,\n",
+    'GREETINGS'=>"Здравствуйте,\n",
+    'ACCOUNT_READY'=>"Ваш аккаунт успешно создан и готов к использованию.\n\nhttps://%s/login/\nИмя пользователя: %s\nПароль: %s\n\n--\nПанель управления Vesta\n",
+    'ACCOUNT_CREATED_OK'=>'Успех: Пользователь <a href="/edit/user/?user=%s"><b>%s</b></a> успешно создан.',
+    'ssl certificate'=>'SSL сертификат',
+    'ssl key'=>'ключ SSL сертификата',
+    'SSL Support'=>'Поддержка SSL',
+    'SSL Home Directory'=>'Корневая папка для SSL',
+    'SSL Certificate'=>'SSL сертификат',
+    'SSL Key'=>'Ключ SSL сертификата',
+    'SSL Certificate Authority / Intermediate'=>'Центр сертификации SSL CA / Intermediate',
+    'stats user password'=>'пароль для доступа к статистике',
+    'stats username'=>'имя пользователя статистики',
+    'stats password'=>'пароль пользователя статистики',
+    'ftp user password'=>'пароль для доступа к FTP',
+    'ftp user'=>'пользователь FTP',
+    'FTP login credentials'=>'Данные для доступа к FTP',
+    'FTP_ACCOUNT_READY'=>"Ваш FTP аккаунт успешно создан и готов к использованию.\n\nХост: %s\nИмя пользователя: %s_%s\nПароль: %s\n\n--\nПанель управления Vesta\n",
+    'HOSTING_DOMAIN_CREATED_OK'=>'Успешно: хостинг для домена <a href="/edit/web/?domain=%s"><b>%s</b></a> был успешно создан.',
+    'OK: changes has been saved.'=>'Успешно: изменения были сохранены.',
+    'FTP login credentials'=>'Данные для доступа к FTP',
+    '505'=>'505 &mdash; внутренняя ошибка',
+    'An internal error occurred'=>'Произошла внутренняя ошибка',
+    'GO_BACK_LINK'=>'Попробуйте вернуться на <a href="/">главную страницу</a> или вернитесь на <a href="javascript:history.go(-1)">предыдущую страницу</a>',
+    'ERROR: Invalid username or password'=>'Ошибка: Неверный логин или пароль',
+    'ERROR: Invalid username or code'=>'Ошибка: Неверный логин или код сброса пароля',
+    'MAIL_RESET_SUBJECT'=>'Сброс пароля %s',
+    'PASSWORD_RESET_REQUEST'=>"Вы недавно запросили смену пароля.\nЧтобы произвести смену пароля, пройдите по этой ссылке:\nhttps://%s/reset/?action=confirm&user=%s&code=%s\n\nВы также можете пойти по ссылке https://%s/reset/?action=code&user=%s и ввести следующий код для сброса пароля:\n%s\n\nЕсли вы не создавали запрос на сброс пароля, пожалуйста проигнорируйте это письмо и примите наши извиниения.\n\n--\nПанель управления Vesta\n",
+    'ERROR: Passwords not match'=>'Ошибка: Пароли не совпадают',
+    'Adding Cron Job'=>'Добавление cron задания',
+    'Minute'=>'Минута',
+    'Day'=>'День',
+    'Month'=>'Месяц',
+    'Day of week'=>'День недели',
+    'Command'=>'Команда',
+    'Add'=>'Добавить',
+    'Back'=>'Назад',
+    'Adding database'=>'Добавление базы данных',
+    'DB_PREFIX_WILL_BE_ADDED'=>'Префикс %s будет автоматически добавлен к БД и пользователю БД',
+    'FTP_PREFIX_WILL_BE_ADDED'=>'Префикс %s будет автоматически добавлен к имени пользователя',
+    'Database'=>'База данных',
+    'Username'=>'Имя пользователя',
+    'Password'=>'Пароль',
+    'generate'=>'сгенерировать',
+    'Type'=>'Тип',
+    'Charset'=>'Кодировка',
+    'Adding DNS Domain'=>'Добавление доменного имени',
+    'Domain'=>'Домен',
+    'IP-Address'=>'IP-адрес',
+    'Advanced options'=>'Расширенные опции',
+    'Template'=>'Шаблон',
+    'Expiration date'=>'Дата окончания делегирования',
+    'Expire'=>'Конец',
+    'YYYY-MM-DD'=>'ГГГГ-ММ-ДД',
+    'Name servers'=>'Сервера имен',
+    'Name Servers'=>'Сервера Имен',
+    'Powered by Vesta Control Panel'=>'Работает на Панели Управления Vesta',
+    'Vesta Control Panel'=>'Панель Управления Vesta',
+    'Translation by ZonD80'=>'Перевод ZonD80',
+    'Forgot Password?'=>'Забыли пароль?',
+    'Log in'=>'Войти',
+    'Log out'=>'Выйти',
+    "RESET_NOTICE"=>"Для сброса пароля введите ваше имя пользователя, и мы расскажем, что нужно делать дальше.",
+    'Submit'=>'Отправить',
+    'RESET_CODE_SENT'=>'Код сброса пароля выслан на ваш email<br/>Пожалуйста, введите код в располженное ниже поле для продолжения',
+    'Confirm'=>'Подтвердить',
+    'New Password'=>'Новый Пароль',
+    'Confirm Password'=>'Подтверждение Пароля',
+    'Reset'=>'Сбросить',
+    'Statistics'=>'Статистика',
+    'History Log'=>'История изменений',
+    'Vesta logo'=>'Логотип Vesta',
+    'USER'=>'ПОЛЬЗ-ЛИ',
+    'logout'=>'выйти',
+    'users'=>'пользователи',
+    'Users'=>'Пользователи',
+    'suspended'=>'выключено',
+    'WEB'=>'ХОСТИНГ',
+    'domains'=>'домены',
+    'aliases'=>'алиасы',
+    'Aliases'=>'Алиасы',
+    'DNS'=>'DNS',
+    'records'=>'записи',
+    'Records'=>'Записи',
+    'MAIL'=>'ПОЧТА',
+    'DB'=>'БД',
+    'CRON'=>'CRON',
+    'BACKUP'=>'БЭКАПЫ',
+    'Packages'=>'Пакеты',
+    'IP Addresses'=>'IP адреса',
+    'RRD Graphics'=>'Графики',
+    'jobs'=>'задания',
+    'Reset Code'=>'Код сброса',
+    'disk'=>'место',
+    'Disk'=>'Место',
+    'traffic'=>'Трафик',
+    'Database Credentials'=>'Данные для доступа к БД',
+    'DATABASE_READY'=>"Здравствуйте %s %s,\nВаша %s база данных создана успешно.\n\nИмя БД: %s_%s\nПользователь: %s_%s\nПароль: %s\n\n",
+    'Send credentials to'=>'Отправить данные для доступа к ',
+    'Adding DNS Record'=>'Добавление записи DNS',
+    'Record'=>'Запись',
+    'IP or Value'=>'IP-адрес или значение',
+    'Priority'=>'Приоритет',
+    'optional'=>'опционально',
+    'Adding IP Address'=>'Добавление IP-адреса',
+    'Shared'=>'Общий',
+    'Assigned user'=>'Пользователь',
+    'Assigned domain'=>'Домен',
+    'Adding Mail Domain'=>'Создание почты для домена',
+    'AntiSpam Support'=>'Поддержка Анти-спама',
+    'AntiVirus Support'=>'Поддержка Антивируса',
+    'DKIM Support'=>'Поддержка DKIM',
+    'Adding Mail Account'=>'Создание почтового ящика',
+    'Advanced options'=>'Дополнительные опции',
+    'Quota'=>'Квота',
+    'in megabytes'=>'в мегабайтах',
+    'use local-part'=>'используйте локальные записи',
+    'Forward to'=>'Перенаправление',
+    'one or more email addresses'=>'один или несколько email-адресов',
+    'Adding Package'=>'Создание пакета',
+    'Package Name'=>'Название пакета',
+    'Package'=>'Пакет',
+    'Default Template'=>'Шаблон по умолчанию',
+    'SSH Access'=>'Доступ к SSH',
+    'Adding User'=>'Добавления пользователя',
+    'First Name'=>'Имя',
+    'Last Name'=>'Фамилия',
+    'SEND_CREDENTIALS_NOTICE'=>'Отправить данные для доступа на ящик пользователя?',
+    'Adding Domain for hosting'=>'Добавление домена для хостинга',
+    'Apache template'=>'Шаблон веб-сервера Apache',
+    'Nginx Support'=>'Поддержка веб-сервера Nginx',
+    'Nginx Extentions'=>'Расширения Nginx',
+    'Nginx Template'=>'Шаблон для Nginx',
+    'Statistics Authorization'=>'Доступ к статистике',
+    'Additional FTP Account'=>'Дополнительный FTP-аккаунт',
+    'Editing Cron Job'=>'Редактирование cron-задания',
+    'Save'=>'Сохранить',
+    'Editing Database'=>'Редактирование БД',
+    'Editing DNS Domain'=>'Редактирование DNS для домена',
+    'Editing DNS Record'=>'Редактирование DNS записи',
+    'Editing IP Address'=>'Редактирование IP-адреса',
+    'Editing Mail Domain'=>'Редактирование почты для домена',
+    'Catchall email'=>'Отправить почту в',
+    'Editing Mail Account'=>'Редактирование почтового акканунта',
+    'Autoreply'=>'Автоответчик',
+    'Message'=>'Сообщение',
+    'Editing Package'=>'Редактирование Пакета',
+    'Editing User'=>'Редактирование Пользователя',
+    'Default Name Servers'=>'DNS по умолчанию',
+    'Editing Domain'=>'Редактирование хостинга',
+    'Create Backup'=>'Создать Бэкап',
+    'apply to selected'=>'применить к выбранным',
+    'toggle all'=>'снять/выделить все',
+    'delete'=>'удалить',
+    'active'=>'активно',
+    'download'=>'скачать',
+    'Owner'=>'Владелец',
+    'restore'=>'восстановить',
+    'restart'=>'перезапустить',
+    'CPU'=>'Процессор',
+    'Memory'=>'Память',
+    'stop'=>'остановить',
+    'Run Time'=>'Время запуска',
+    'BACKUP_DELETE_CONFIRMATION'=>'Вы уверены, что хотите удалить <b>%s</b> бэкап?',
+    'Backup Size'=>'Размер Бэкапа',
+    'SYS'=>'Системное',
+    'one archive'=>'один архив',
+    '%s archives'=>'%s архивов',
+    'Add Cron Job'=>'Добавить новое Cron-задание',
+    'add account'=>'добавить аккаунт',
+    'open webmail'=>'открыть веб-интерфейс',
+    'suspend'=>'выключить',
+    'unsuspend'=>'включить',
+    'CRON_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> cron-задание?',
+    'Confirmation'=>'Подтверждение',
+    'one cron job'=>'одно cron-задание',
+    '%s cron jobs'=>'%s cron-заданя(ий)',
+    'Add Database'=>'Добавить БД',
+    'open %s'=>'открыть %s',
+    'DATABASE_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> базу данных <b>%s</b>?',
+    'one database'=>'одна БД',
+    '%s databases'=>'%s БД',
+    'Add DNS Domain'=>'Добавить DNS для домена',
+    'Search'=>'Поиск',
+    'LIST_DOMAIN_RECORDS'=>'Посмотреть %s записей',
+    'add record'=>'добавить запись',
+    'DOMAIN_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> домен <b>%s?</b>',
+    'one domain'=>'Один домен',
+    '%s domains'=>'%s домена(ов)',
+    'Add DNS Record'=>'Добавить DNS запись',
+    'Listing'=>'Просмотр',
+    'list'=>'посмотреть',
+    'RECORD_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> запись <b>%s</b>?',
+    'one DNS record'=>'одна DNS-запись',
+    '%s DNS records'=>'%s DNS-записи(ей)',
+    'Add IP'=>'Добавить IP адрес',
+    'IP_DELETE_CONFIRMATION'=>'Вы уверены, что хотите удалить IP адрес <b>%s</b>?',
+    'Status'=>'Статус',
+    'one IP address'=>'один IP',
+    '%s IP addresses'=>'%s IP адреса(ов)',
+    'one log record'=>'одна запись',
+    '%s log records'=>'%s записи(ей)',
+    'Add Mail Domain'=>'Добавить почту для домена',
+    'MAIL_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> почту для домена <b>%s</b>?',
+    'one domain with email'=>'один домен с почтой',
+    '%s domains with email'=>'%s домена(ов) с почтой',
+    'Add Mail Account'=>'Добавить почтовый аккаунт',
+    'MAIL_ACCOUNT_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> почтовый ящик <b>%s</b>?',
+    'one mail account'=>'один почтовый ящик',
+    '%s mail accounts'=>'%s почтовых ящика(ов)',
+    'Add Package'=>'Добавить пакет',
+    'PACKAGE_DELETE_CONFIRMATION'=>'Вы уверены, что хотите удалить пакет <b>%s</b>?',
+    'one package'=>'один пакет',
+    '%s packages'=>'%s пакета(ов)',
+    'Daily'=>'Ежедневый',
+    'Weekly'=>'Еженедельный',
+    'Monthly'=>'Ежемесячный',
+    'Yearly'=>'Ежегодный',
+    'Search Results'=>'Результаты Поиска',
+    'login as'=>'войти как',
+    'ARE_YOU_FUCKING_SURE'=>'Вы уверены, что хотите <b>%s</b> <b>%s</b>?',
+    'Object'=>'Объект',
+    'one object'=>'один объект',
+    '%s objects'=>'%s объекта(ов)',
+    'Overall Statistics'=>'Вся Статистика',
+    'show per user'=>'показать для пользователя',
+    'Hosting'=>'Хостинг',
+    'Mail'=>'Почта',
+    'User Directories'=>'Папки пользователя',
+    'Web SSL Domains'=>'Хосты с SSL',
+    'one month'=>'один месяц',
+    '%s months'=>'%s месяца(ев)',
+    'Add User'=>'Добавить Пользователя',
+    'Add Domain'=>'Добавить Домен',
+    'rebuild'=>'перестроить',
+    'rebuild web'=>'перестроить хостинг',
+    'rebuild DNS'=>'перестроить DNS',
+    'rebuild mail'=>'перестроить почту',
+    'rebuild db'=>'перестроить БД',
+    'rebuild cron'=>'перестроить cron',
+    'update counters'=>'обновить счетчики',
+    'LOGGED_IN_AS'=>'Вы вошли как %s',
+    'USER_ACTION_CONFIRMATION'=>'Вы уверены, что хотите <b>%s</b> пользователя <b>%s</b>?',
+    'one account'=>'один аккаунт',
+    '%s accounts'=>'%s аккаунта(ов)',
+    'Add Domain for hosting'=>'Добавить Домен для хостинга',
+    'open webstats'=>'открыть ститистику',
+    'Error Log'=>'Лог Ошибок',
+    'CGI Support'=>'Поддержка CGI',
+    'Statistics Auth'=>'Авторизация Статистики',
+    'running'=>'работает',
+    'SERVICE_ACTION_FAILED'=>'Ошибка: Операция "%s" для сервиса "%s" не удалась',
+    'Load Average'=>'Нагрузка',
+    'Memory Usage'=>'Использование Памяти',
+    'Bandwidth Usage'=>'Использование Сети',
+    
+);
+
+/*error_reporting(E_ALL);
 ini_set('display_errors',true);*/

+ 124 - 124
web/js/events.js

@@ -1,124 +1,124 @@
-// Init kinda namespace object
-var VE = { // Vesta Events object
-    core: {}, // core functions
-    callbacks: { // events callback functions
-        click: {},
-        mouseover: {},
-        mouseout: {},
-        keypress: {}
-    },
-    helpers: {}, // simple handy methods
-    tmp: {}
-};
-
-/*
- * Main method that invokes further event processing
- * @param root is root HTML DOM element that. Pass HTML DOM Element or css selector
- * @param event_type (eg: click, mouseover etc..)
- */
-VE.core.register = function(root, event_type) {
-    var root = !root ? 'body' : root; // if elm is not passed just bind events to body DOM Element
-    var event_type = !event_type ? 'click' : event_type; // set event type to "click" by default
-    $(root).bind(event_type, function(evt) {
-        var elm = $(evt.target);
-        VE.core.dispatch(evt, elm, event_type); // dispatch captured event
-    });
-}
-
-/*
- * Dispatch event that was previously registered
- * @param evt related event object
- * @param elm that was catched
- * @param event_type (eg: click, mouseover etc..)
- */
-VE.core.dispatch = function(evt, elm, event_type) {
-    if ('undefined' == typeof VE.callbacks[event_type]) {
-        return VE.helpers.warn('There is no corresponding object that should contain event callbacks for "'+event_type+'" event type');
-    }
-    // get class of element
-    var classes = $(elm).attr('class');
-    // if no classes are attached, then just stop any further processings
-    if (!classes) {
-        return; // no classes assigned
-    }
-    // split the classes and check if it related to function
-    $(classes.split(/\s/)).each(function(i, key) {
-        VE.callbacks[event_type][key] && VE.callbacks[event_type][key](evt, elm);
-    });
-}
-
-//
-//  CALLBACKS
-//
-
-
-
-/*
- * Suspend action
- */
-VE.callbacks.click.do_suspend = function(evt, elm) {
-     var ref = elm.hasClass('data-controls') ? elm : elm.parents('.data-controls');
-     var url = $('input[name="suspend_url"]', ref).val();
-     var dialog_elm = ref.find('.confirmation-text-suspention');
-     VE.helpers.createConfirmationDialog(dialog_elm, 'Confirm action', url);
-}
-
-/*
- * Unsuspend action
- */
-VE.callbacks.click.do_unsuspend = function(evt, elm) {
-     var ref = elm.hasClass('data-controls') ? elm : elm.parents('.data-controls');
-     var url = $('input[name="unsuspend_url"]', ref).val();
-     var dialog_elm = ref.find('.confirmation-text-suspention');
-     VE.helpers.createConfirmationDialog(dialog_elm, 'Confirm action', url);
-}
-
-/*
- * Delete action
- */
-VE.callbacks.click.do_delete = function(evt, elm) {
-     var ref = elm.hasClass('data-controls') ? elm : elm.parents('.data-controls');
-     var url = $('input[name="delete_url"]', ref).val();
-     var dialog_elm = ref.find('.confirmation-text-delete');
-     VE.helpers.createConfirmationDialog(dialog_elm, 'Confirm action', url);
-}
-
-
-/*
- * Create dialog box on the fly
- * @param elm Element which contains the dialog contents
- * @param dialog_title 
- * @param confirmed_location_url URL that will be redirected to if user hit "OK"
- * @param custom_config Custom configuration parameters passed to dialog initialization (optional)
- */
-VE.helpers.createConfirmationDialog = function(elm, dialog_title, confirmed_location_url, custom_config) {
-    var custom_config = !custom_config ? {} : custom_config;
-    var config = {
-        modal: true,
-        autoOpen: true,
-        width: 360,
-        title: dialog_title,
-        close: function() {
-            $(this).dialog("destroy");
-        },
-        buttons: {
-            "Ok": function(event, ui) {
-                 location.href = confirmed_location_url;
-            },
-            "Cancel": function() {
-                $(this).dialog("close");
-                $(this).dialog("destroy");
-            }
-        }
-    }
-    config = $.extend(config, custom_config);
-    var reference_copied = $(elm).clone();
-    $(reference_copied).dialog(config);
-}
-
-/*
- * Simple debug output
- */
-VE.helpers.warn = function(msg) {
-    alert('WARNING: ' + msg);
-}
+// Init kinda namespace object
+var VE = { // Vesta Events object
+    core: {}, // core functions
+    callbacks: { // events callback functions
+        click: {},
+        mouseover: {},
+        mouseout: {},
+        keypress: {}
+    },
+    helpers: {}, // simple handy methods
+    tmp: {}
+};
+
+/*
+ * Main method that invokes further event processing
+ * @param root is root HTML DOM element that. Pass HTML DOM Element or css selector
+ * @param event_type (eg: click, mouseover etc..)
+ */
+VE.core.register = function(root, event_type) {
+    var root = !root ? 'body' : root; // if elm is not passed just bind events to body DOM Element
+    var event_type = !event_type ? 'click' : event_type; // set event type to "click" by default
+    $(root).bind(event_type, function(evt) {
+        var elm = $(evt.target);
+        VE.core.dispatch(evt, elm, event_type); // dispatch captured event
+    });
+}
+
+/*
+ * Dispatch event that was previously registered
+ * @param evt related event object
+ * @param elm that was catched
+ * @param event_type (eg: click, mouseover etc..)
+ */
+VE.core.dispatch = function(evt, elm, event_type) {
+    if ('undefined' == typeof VE.callbacks[event_type]) {
+        return VE.helpers.warn('There is no corresponding object that should contain event callbacks for "'+event_type+'" event type');
+    }
+    // get class of element
+    var classes = $(elm).attr('class');
+    // if no classes are attached, then just stop any further processings
+    if (!classes) {
+        return; // no classes assigned
+    }
+    // split the classes and check if it related to function
+    $(classes.split(/\s/)).each(function(i, key) {
+        VE.callbacks[event_type][key] && VE.callbacks[event_type][key](evt, elm);
+    });
+}
+
+//
+//  CALLBACKS
+//
+
+
+
+/*
+ * Suspend action
+ */
+VE.callbacks.click.do_suspend = function(evt, elm) {
+     var ref = elm.hasClass('data-controls') ? elm : elm.parents('.data-controls');
+     var url = $('input[name="suspend_url"]', ref).val();
+     var dialog_elm = ref.find('.confirmation-text-suspention');
+     VE.helpers.createConfirmationDialog(dialog_elm, 'Confirm action', url);
+}
+
+/*
+ * Unsuspend action
+ */
+VE.callbacks.click.do_unsuspend = function(evt, elm) {
+     var ref = elm.hasClass('data-controls') ? elm : elm.parents('.data-controls');
+     var url = $('input[name="unsuspend_url"]', ref).val();
+     var dialog_elm = ref.find('.confirmation-text-suspention');
+     VE.helpers.createConfirmationDialog(dialog_elm, 'Confirm action', url);
+}
+
+/*
+ * Delete action
+ */
+VE.callbacks.click.do_delete = function(evt, elm) {
+     var ref = elm.hasClass('data-controls') ? elm : elm.parents('.data-controls');
+     var url = $('input[name="delete_url"]', ref).val();
+     var dialog_elm = ref.find('.confirmation-text-delete');
+     VE.helpers.createConfirmationDialog(dialog_elm, 'Confirm action', url);
+}
+
+
+/*
+ * Create dialog box on the fly
+ * @param elm Element which contains the dialog contents
+ * @param dialog_title 
+ * @param confirmed_location_url URL that will be redirected to if user hit "OK"
+ * @param custom_config Custom configuration parameters passed to dialog initialization (optional)
+ */
+VE.helpers.createConfirmationDialog = function(elm, dialog_title, confirmed_location_url, custom_config) {
+    var custom_config = !custom_config ? {} : custom_config;
+    var config = {
+        modal: true,
+        autoOpen: true,
+        width: 360,
+        title: dialog_title,
+        close: function() {
+            $(this).dialog("destroy");
+        },
+        buttons: {
+            "Ok": function(event, ui) {
+                 location.href = confirmed_location_url;
+            },
+            "Cancel": function() {
+                $(this).dialog("close");
+                $(this).dialog("destroy");
+            }
+        }
+    }
+    config = $.extend(config, custom_config);
+    var reference_copied = $(elm).clone();
+    $(reference_copied).dialog(config);
+}
+
+/*
+ * Simple debug output
+ */
+VE.helpers.warn = function(msg) {
+    alert('WARNING: ' + msg);
+}

+ 24 - 24
web/list/log/index.php

@@ -1,24 +1,24 @@
-<?php
-// Init
-error_reporting(NULL);
-session_start();
-$TAB = 'LOG';
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-// Data
-exec (VESTA_CMD."v-list-user-log $user json", $output, $return_var);
-check_error($return_var);
-$data = json_decode(implode('', $output), true);
-$data = array_reverse($data);
-unset($output);
-
-include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/list_log.html');
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+session_start();
+$TAB = 'LOG';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+// Data
+exec (VESTA_CMD."v-list-user-log $user json", $output, $return_var);
+check_error($return_var);
+$data = json_decode(implode('', $output), true);
+$data = array_reverse($data);
+unset($output);
+
+include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/list_log.html');
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 23 - 23
web/list/services/index.php

@@ -1,23 +1,23 @@
-<?php
-// Init
-error_reporting(NULL);
-session_start();
-$TAB = 'SERVICES';
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-// Data
-if ($_SESSION['user'] == 'admin') {
-    exec (VESTA_CMD."v-list-sys-services json", $output, $return_var);
-    $data = json_decode(implode('', $output), true);
-    unset($output);
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/list_services.html');
-}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+// Init
+error_reporting(NULL);
+session_start();
+$TAB = 'SERVICES';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+// Data
+if ($_SESSION['user'] == 'admin') {
+    exec (VESTA_CMD."v-list-sys-services json", $output, $return_var);
+    $data = json_decode(implode('', $output), true);
+    unset($output);
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/list_services.html');
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');

+ 34 - 34
web/list/user/index.php

@@ -1,34 +1,34 @@
-<?php
-
-// Init
-error_reporting(NULL);
-session_start();
-$_SESSION['back'] = $_SERVER['REQUEST_URI'];
-$TAB = 'USER';
-include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
-
-// Header
-include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
-
-// Panel
-top_panel($user,$TAB);
-
-// Data
-if ($_SESSION['user'] == 'admin') {
-    $cmd = "v-list-user '".$user."' json";
-    if ($user == 'admin') $cmd = "v-list-users json";
-    exec (VESTA_CMD.$cmd, $output, $return_var);
-    $data = json_decode(implode('', $output), true);
-    $data = array_reverse($data);
-    display_error_block();
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/list_user.html');
-} else {
-    exec (VESTA_CMD."v-list-user ".$user." json", $output, $return_var);
-    $data = json_decode(implode('', $output), true);
-    $data = array_reverse($data);
-    display_error_block();
-    include($_SERVER['DOCUMENT_ROOT'].'/templates/user/list_user.html');
-}
-
-// Footer
-include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
+<?php
+
+// Init
+error_reporting(NULL);
+session_start();
+$_SESSION['back'] = $_SERVER['REQUEST_URI'];
+$TAB = 'USER';
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+// Header
+include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
+
+// Panel
+top_panel($user,$TAB);
+
+// Data
+if ($_SESSION['user'] == 'admin') {
+    $cmd = "v-list-user '".$user."' json";
+    if ($user == 'admin') $cmd = "v-list-users json";
+    exec (VESTA_CMD.$cmd, $output, $return_var);
+    $data = json_decode(implode('', $output), true);
+    $data = array_reverse($data);
+    display_error_block();
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/list_user.html');
+} else {
+    exec (VESTA_CMD."v-list-user ".$user." json", $output, $return_var);
+    $data = json_decode(implode('', $output), true);
+    $data = array_reverse($data);
+    display_error_block();
+    include($_SERVER['DOCUMENT_ROOT'].'/templates/user/list_user.html');
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');