diff --git a/bin/v_add_database b/bin/v_add_database
index 8be920d12..2192d2b28 100755
--- a/bin/v_add_database
+++ b/bin/v_add_database
@@ -32,6 +32,8 @@ source $VESTA/func/db.sh
# Hiding password
A4='******'
+EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
+EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
#----------------------------------------------------------#
diff --git a/bin/v_add_mail_account b/bin/v_add_mail_account
index e032f145f..3c9db6887 100755
--- a/bin/v_add_mail_account
+++ b/bin/v_add_mail_account
@@ -25,6 +25,8 @@ source $VESTA/func/domain.sh
# Hiding password
A4='******'
+EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
+EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
#----------------------------------------------------------#
diff --git a/bin/v_add_user b/bin/v_add_user
index db613e742..b11f6ccf0 100755
--- a/bin/v_add_user
+++ b/bin/v_add_user
@@ -23,6 +23,8 @@ source $VESTA/func/main.sh
# Hiding password
A2='******'
+EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
+EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
is_user_free() {
check_sysuser=$(cut -f 1 -d : /etc/passwd | grep -w "$user" )
diff --git a/bin/v_add_web_domain_stats_user b/bin/v_add_web_domain_stats_user
index 0e2007b14..ff856ca39 100755
--- a/bin/v_add_web_domain_stats_user
+++ b/bin/v_add_web_domain_stats_user
@@ -22,6 +22,8 @@ source $VESTA/func/domain.sh
# Hiding password
A4='******'
+EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
+EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
#----------------------------------------------------------#
diff --git a/bin/v_change_database_password b/bin/v_change_database_password
index 34d04cb47..3fb91085f 100755
--- a/bin/v_change_database_password
+++ b/bin/v_change_database_password
@@ -22,6 +22,8 @@ source $VESTA/func/db.sh
# Hiding password
A3='******'
+EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
+EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
#----------------------------------------------------------#
diff --git a/bin/v_change_mail_account_password b/bin/v_change_mail_account_password
index ecfe679e2..6dc04f05f 100755
--- a/bin/v_change_mail_account_password
+++ b/bin/v_change_mail_account_password
@@ -24,6 +24,8 @@ source $VESTA/func/domain.sh
# Hiding password
A4='******'
+EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
+EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
#----------------------------------------------------------#
diff --git a/bin/v_change_user_password b/bin/v_change_user_password
index aaa18a0be..b418f24f6 100755
--- a/bin/v_change_user_password
+++ b/bin/v_change_user_password
@@ -18,7 +18,9 @@ source $VESTA/conf/vesta.conf
source $VESTA/func/main.sh
# Hiding password
-A2='******'
+A2="******"
+EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
+EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
#----------------------------------------------------------#
diff --git a/web/add/user/index.php b/web/add/user/index.php
index 772a0e980..ea9a49642 100644
--- a/web/add/user/index.php
+++ b/web/add/user/index.php
@@ -17,7 +17,6 @@ if ($_SESSION['user'] == 'admin') {
// Cancel
if (!empty($_POST['cancel'])) {
- echo $_POST['cancel'];
header("Location: /list/user/");
}
diff --git a/web/edit/user/index.php b/web/edit/user/index.php
new file mode 100644
index 000000000..6e5653e2d
--- /dev/null
+++ b/web/edit/user/index.php
@@ -0,0 +1,152 @@
+', $output);
+ if (empty($error)) $error = 'Error: vesta did not return any output.';
+ $_SESSION['error_msg'] = $error;
+ } else {
+ $data = json_decode(implode('', $output), true);
+ $v_username = $_GET['user'];
+ $v_password = "••••••••";
+ $v_email = $data[$v_username]['CONTACT'];
+ $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];
+
+ unset($output);
+
+ exec (VESTA_CMD."v_list_user_packages json", $output, $return_var);
+ $packages = 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);
+ }
+
+ if (!empty($_POST['save'])) {
+ $v_username = escapeshellarg($_POST['v_username']);
+
+ 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('
', $output);
+ if (empty($error)) $error = 'Error: vesta did not return any output.';
+ $_SESSION['error_msg'] = $error;
+ }
+ $v_password = "••••••••";
+ unset($output);
+ }
+
+ 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('
', $output);
+ if (empty($error)) $error = 'Error: vesta did not return any output.';
+ $_SESSION['error_msg'] = $error;
+ }
+ unset($output);
+ }
+
+ 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('
', $output);
+ if (empty($error)) $error = 'Error: vesta did not return any output.';
+ $_SESSION['error_msg'] = $error;
+ }
+ unset($output);
+ }
+
+ 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('
', $output);
+ if (empty($error)) $error = 'Error: vesta did not return any output.';
+ $_SESSION['error_msg'] = $error;
+ }
+ unset($output);
+ }
+
+ 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('
', $output);
+ if (empty($error)) $error = 'Error: vesta did not return any output.';
+ $_SESSION['error_msg'] = $error;
+ }
+ unset($output);
+ }
+
+ 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('
', $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/menu_edit_user.html');
+ include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_user.html');
+ unset($_SESSION['error_msg']);
+ unset($_SESSION['ok_msg']);
+
+
+}
+
+// Footer
+include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
diff --git a/web/templates/admin/edit_user.html b/web/templates/admin/edit_user.html
new file mode 100644
index 000000000..7fa4b16b1
--- /dev/null
+++ b/web/templates/admin/edit_user.html
@@ -0,0 +1,74 @@
+
+
diff --git a/web/templates/admin/menu_add_user.html b/web/templates/admin/menu_add_user.html
index db853839b..7e5dec35f 100644
--- a/web/templates/admin/menu_add_user.html
+++ b/web/templates/admin/menu_add_user.html
@@ -1,12 +1,12 @@