Przeglądaj źródła

added user&web bulk operation support

Serghey Rodin 13 lat temu
rodzic
commit
03237bfa94

+ 47 - 0
bin/v_delete_mail_domains

@@ -0,0 +1,47 @@
+#!/bin/bash
+# info: delete mail domains
+# options: user
+#
+# The function for deleting all users mail domains.
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Argument defenition
+user=$1
+
+# Includes
+source $VESTA/conf/vesta.conf
+source $VESTA/func/main.sh
+
+
+#----------------------------------------------------------#
+#                    Verifications                         #
+#----------------------------------------------------------#
+
+check_args '1' "$#" 'user'
+validate_format 'user'
+is_system_enabled "$MAIL_SYSTEM"
+is_object_valid 'user' 'USER' "$user"
+
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+# Starting delete loop
+for domain in $(search_objects 'mail' 'SUSPENDED' "no" 'DOMAIN'); do
+    $BIN/v_delete_mail_domain "$user" "$domain"
+done
+
+
+#----------------------------------------------------------#
+#                       Vesta                              #
+#----------------------------------------------------------#
+
+# Logging
+log_event "$OK" "$EVENT"
+
+exit

+ 6 - 5
bin/v_delete_user

@@ -12,6 +12,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -39,8 +40,8 @@ fi
 
 # Checking web system is enabled
 if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
-    $BIN/v_unsuspend_web_domains $user
-    $BIN/v_delete_web_domains $user
+    $BIN/v_unsuspend_web_domains $user $restart
+    $BIN/v_delete_web_domains $user $restart
     rv="$?"
     if [ "$rv" -ne '0' ]; then
         exit $rv
@@ -49,8 +50,8 @@ fi
 
 # Checking dns system is enabled
 if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
-    $BIN/v_unsuspend_dns_domains $user
-    $BIN/v_delete_dns_domains $user
+    $BIN/v_unsuspend_dns_domains $user $restart
+    $BIN/v_delete_dns_domains $user $restart
     rv="$?"
     if [ "$rv" -ne '0' ]; then
         exit $rv
@@ -60,7 +61,7 @@ fi
 # Checking mail system is enabled
 if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
     $BIN/v_unsuspend_mail_domains $user
-    #$BIN/v_delete_mail_domains $user
+    $BIN/v_delete_mail_domains $user
     rv="$?"
     if [ "$rv" -ne '0' ]; then
         exit $rv

+ 8 - 2
bin/v_delete_web_domains

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: delete web domains
-# options: user
+# options: user [restart]
 #
 # The function deteles all user's webdomains.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -21,7 +22,7 @@ source $VESTA/func/main.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_system_enabled "$WEB_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -41,6 +42,11 @@ done
 #                       Vesta                              #
 #----------------------------------------------------------#
 
+# Restart web server
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
+
 # Logging
 log_event "$OK" "$EVENT"
 

+ 6 - 3
bin/v_rebuild_cron_jobs

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: rebuild cron jobs
-# options: user
+# options: user [restart]
 #
 # The function rebuilds system cron config file for specified user.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -21,7 +22,7 @@ source $VESTA/func/main.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_system_enabled "$CRON_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -40,7 +41,9 @@ sync_cron_jobs
 #----------------------------------------------------------#
 
 # Restart crond
-$BIN/v_restart_cron "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_cron "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 6 - 3
bin/v_rebuild_dns_domains

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: rebuild dns domains
-# options: user
+# options: user [restart]
 #
 # The function rebuilds BIND configuration files for all dns domains.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -22,7 +23,7 @@ source $VESTA/func/domain.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_system_enabled "$DNS_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -117,7 +118,9 @@ update_user_value "$user" '$U_DNS_RECORDS' "$user_records"
 update_user_value "$user" '$SUSPENDED_DNS' "$suspended_dns"
 
 # Restart named
-$BIN/v_restart_dns "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_dns "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 6 - 5
bin/v_rebuild_user

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: rebuild system user
-# options: user [full]
+# options: user [restart]
 #
 # The function rebuilds system user account.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -21,7 +22,7 @@ source $VESTA/func/main.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_object_valid 'user' 'USER' "$user"
 is_object_unsuspended 'user' 'USER' "$user"
@@ -69,13 +70,13 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
     chmod 751 $HOMEDIR/$user/web
     chmod 777 $HOMEDIR/$user/tmp
     chown $user:$user $HOMEDIR/$user/web
-    $BIN/v_rebuild_web_domains $user
+    $BIN/v_rebuild_web_domains $user $restart
 fi
 
 if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
     mkdir -p $HOMEDIR/$user/conf/dns
     chmod 751 $HOMEDIR/$user/conf/dns
-    $BIN/v_rebuild_dns_domains $user
+    $BIN/v_rebuild_dns_domains $user $restart
 fi
 
 if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
@@ -92,7 +93,7 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
 fi
 
 if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
-    $BIN/v_rebuild_cron_jobs $user
+    $BIN/v_rebuild_cron_jobs $user $restart
 fi
 
 

+ 6 - 3
bin/v_rebuild_web_domains

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: rebuild dns domains
-# options: user
+# options: user [restart]
 #
 # The function rebuilds BIND configuration files for all dns domains.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -23,7 +24,7 @@ source $VESTA/func/ip.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_system_enabled "$WEB_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -271,7 +272,9 @@ update_user_value "$user" '$U_WEB_SSL' "$user_ssl"
 update_user_value "$user" '$U_WEB_ALIASES' "$user_aliases"
 
 # Restart web server
-$BIN/v_restart_web "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 5 - 2
bin/v_suspend_cron_jobs

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: Suspending sys cron jobs
-# options: user
+# options: user [restart]
 #
 # The function suspends all user cron jobs.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -41,7 +42,9 @@ done
 #----------------------------------------------------------#
 
 # Restart crond
-$BIN/v_restart_cron "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_cron "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 7 - 4
bin/v_suspend_dns_domains

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: suspend dns domains
-# options: user
+# options: user [restart]
 #
 # The function suspends all user's DNS domains.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -21,7 +22,7 @@ source $VESTA/func/main.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_system_enabled "$DNS_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -41,8 +42,10 @@ done
 #                       Vesta                              #
 #----------------------------------------------------------#
 
-# Adding task to the vesta pipe
-$BIN/v_restart_dns "$EVENT"
+# Restart dns server
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_dns "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 2 - 0
bin/v_suspend_mail_domain

@@ -49,6 +49,8 @@ rm -f /etc/exim/domains/$domain
 # Updating config
 update_object_value 'mail' 'DOMAIN' "$domain" '$SUSPENDED' 'yes'
 sed -i "s/SUSPENDED='no'/SUSPENDED='yes'/g" $USER_DATA/mail/$domain.conf
+increase_user_value "$user" '$SUSPENDED_MAIL'
+
 
 # Logging
 log_event "$OK" "$EVENT"

+ 16 - 6
bin/v_suspend_user

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: suspend user
-# options: user
+# options: user [restart]
 #
 # The function suspends a certain user and all his objects.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -21,7 +22,7 @@ source $VESTA/func/main.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_object_valid 'user' 'USER' "$user"
 is_object_unsuspended 'user' 'USER' "$user"
@@ -39,16 +40,18 @@ fi
 
 # Suspending web domains
 if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
-    $BIN/v_suspend_web_domains $user
+    $BIN/v_suspend_web_domains $user $restart
 fi
 
 # Suspending dns domains
 if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
-    $BIN/v_suspend_dns_domains $user
+    $BIN/v_suspend_dns_domains $user $restart
 fi
 
 # Suspending mail domains
-# TBD
+if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
+    $BIN/v_suspend_mail_domains $user
+fi
 
 # Suspending datbabases
 if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
@@ -57,7 +60,7 @@ fi
 
 # Suspending cron jobs
 if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
-    $BIN/v_suspend_cron_jobs $user
+    $BIN/v_suspend_cron_jobs $user $restart
 fi
 
 
@@ -65,6 +68,13 @@ fi
 #                       Vesta                              #
 #----------------------------------------------------------#
 
+# Restart web server
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+    $BIN/v_restart_dns "$EVENT"
+    $BIN/v_restart_cron "$EVENT"
+fi
+
 # Changing suspend value
 update_user_value "$user" '$SUSPENDED' 'yes'
 increase_user_value 'admin' '$SUSPENDED_USERS'

+ 8 - 5
bin/v_suspend_web_domains

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: suspend web domains
-# options: user
+# options: user [restart]
 #
 # The function of suspending all user's sites. 
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -22,8 +23,8 @@ source $VESTA/func/domain.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user [suspend_url]'
-validate_format 'user' 'url'
+check_args '1' "$#" 'user [restart]'
+validate_format 'user'
 is_system_enabled "$WEB_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
 
@@ -34,7 +35,7 @@ is_object_valid 'user' 'USER' "$user"
 
 # Starting suspend loop
 for domain in $(search_objects 'web' 'SUSPENDED' "no" 'DOMAIN'); do
-    $BIN/v_suspend_web_domain "$user" "$domain" "$url" 'no'
+    $BIN/v_suspend_web_domain "$user" "$domain" 'no'
 done
 
 #----------------------------------------------------------#
@@ -42,7 +43,9 @@ done
 #----------------------------------------------------------#
 
 # Restart web server
-$BIN/v_restart_web "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 6 - 3
bin/v_unsuspend_cron_jobs

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: unuspend sys cron
-# options: user
+# options: user [restart]
 #
 # The function unsuspends all suspended cron jobs.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -21,7 +22,7 @@ source $VESTA/func/main.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_object_valid 'user' 'USER' "$user"
 
@@ -41,7 +42,9 @@ done
 #----------------------------------------------------------#
 
 # Restart crond
-$BIN/v_restart_cron "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_cron "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 3 - 2
bin/v_unsuspend_dns_domain

@@ -37,8 +37,9 @@ is_object_suspended 'dns' 'DOMAIN' "$domain"
 #----------------------------------------------------------#
 
 # Adding zone in named.conf
-echo "zone \"$domain\" { type master; file \"/etc/namedb/$domain.db\"; };" \
-    >> /etc/named.conf
+named="zone \"$domain_idn\" {type master; file"
+named="$named \"$HOMEDIR/$user/conf/dns/$domain.db\";};"
+echo "$named" >> /etc/named.conf
 
 #----------------------------------------------------------#
 #                       Vesta                              #

+ 7 - 4
bin/v_unsuspend_dns_domains

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: unsuspend dns domains
-# options: user
+# options: user [restart]
 #
 # The function unsuspends all user's DNS domains.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -21,7 +22,7 @@ source $VESTA/func/main.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_system_enabled "$DNS_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -41,8 +42,10 @@ done
 #                       Vesta                              #
 #----------------------------------------------------------#
 
-# Restart named
-$BIN/v_restart_dns "$EVENT"
+# Restart dns server
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_dns "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 1 - 0
bin/v_unsuspend_mail_domain

@@ -48,6 +48,7 @@ ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/
 # Updating config
 update_object_value 'mail' 'DOMAIN' "$domain" '$SUSPENDED' 'no'
 sed -i "s/SUSPENDED='yes'/SUSPENDED='no'/g" $USER_DATA/mail/$domain.conf
+decrease_user_value "$user" '$SUSPENDED_MAIL'
 
 
 # Logging

+ 14 - 5
bin/v_unsuspend_user

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: unsuspend user
-# options: user
+# options: user [restart]
 #
 # The function unsuspends user and all his objects.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -38,16 +39,18 @@ fi
 
 # Unsuspending web domains
 if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
-    $BIN/v_unsuspend_web_domains $user
+    $BIN/v_unsuspend_web_domains $user $restart
 fi
 
 # Unsuspending dns domains
 if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
-    $BIN/v_unsuspend_dns_domains $user
+    $BIN/v_unsuspend_dns_domains $user $restart
 fi
 
 # Unsuspending mail domains
-# TBD
+if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
+    $BIN/v_unsuspend_mail_domains $user
+fi
 
 # Unsuspending datbabases
 if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
@@ -56,7 +59,7 @@ fi
 
 # Unsuspending cron jobs
 if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
-    $BIN/v_unsuspend_cron_jobs $user
+    $BIN/v_unsuspend_cron_jobs $user $restart
 fi
 
 
@@ -68,6 +71,12 @@ fi
 update_user_value "$user" '$SUSPENDED' 'no'
 decrease_user_value 'admin' '$SUSPENDED_USERS'
 
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+    $BIN/v_restart_dns "$EVENT"
+    $BIN/v_restart_cron "$EVENT"
+fi
+
 # Logging
 log_event "$OK" "$EVENT"
 

+ 6 - 3
bin/v_unsuspend_web_domains

@@ -1,6 +1,6 @@
 #!/bin/bash
 # info: unsuspend web domains
-# options: user
+# options: user [restart]
 #
 # The function of unsuspending all user's sites.
 
@@ -11,6 +11,7 @@
 
 # Argument defenition
 user=$1
+restart=$2
 
 # Includes
 source $VESTA/conf/vesta.conf
@@ -22,7 +23,7 @@ source $VESTA/func/domain.sh
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-check_args '1' "$#" 'user'
+check_args '1' "$#" 'user [restart]'
 validate_format 'user'
 is_system_enabled "$WEB_SYSTEM"
 is_object_valid 'user' 'USER' "$user"
@@ -43,7 +44,9 @@ done
 #----------------------------------------------------------#
 
 # Restart web server
-$BIN/v_restart_web "$EVENT"
+if [ "$restart" != 'no' ]; then
+    $BIN/v_restart_web "$EVENT"
+fi
 
 # Logging
 log_event "$OK" "$EVENT"

+ 1 - 2
bin/v_update_user_counters

@@ -146,7 +146,6 @@ for user in $user_list; do
             SUSPENDED_MAIL=$((SUSPENDED_MAIL + 1))
         fi
     done
-    SUSPENDED_MAIL=0
     DISK=$((DISK + U_DISK_MAIL))
 
     # Checking db system
@@ -160,7 +159,7 @@ for user in $user_list; do
     done
     DISK=$((DISK + U_DISK_DB))
 
-    # Checking mail system
+    # Checking cron system
     for cron_str in $(cat $USER_DATA/cron.conf);do
         eval $cron_str
         U_CRON_JOBS=$((U_CRON_JOBS + 1))

+ 56 - 0
web/bulk/user/index.php

@@ -0,0 +1,56 @@
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+$user = $_POST['user'];
+$action = $_POST['action'];
+
+if ($_SESSION['user'] == 'admin') {
+    switch ($action) {
+        case 'delete': $cmd='v_delete_user'; $restart = 'no';
+            break;
+        case 'suspend': $cmd='v_suspend_user'; $restart = 'no';
+            break;
+        case 'unsuspend': $cmd='v_unsuspend_user'; $restart = 'no';
+            break;
+        case 'update counters': $cmd='v_update_user_counters';
+            break;
+        case 'rebuild': $cmd='v_rebuild_user'; $restart = 'no';
+            break;
+        case 'rebuild web': $cmd='v_rebuild_web_domains'; $restart = 'no';
+            break;
+        case 'rebuild dns': $cmd='v_rebuild_dns_domains'; $restart = 'no';
+            break;
+        case 'rebuild mail': $cmd='v_rebuild_mail_domains';
+            break;
+        case 'rebuild db': $cmd='v_rebuild_databases';
+            break;
+        case 'rebuild cron': $cmd='v_rebuild_cron_jobs';
+            break;
+        default: header("Location: /list/user/"); exit;
+    }
+} else {
+    switch ($action) {
+        case 'update counters': $cmd='v_update_user_counters';
+            break;
+        default: header("Location: /list/user/"); exit;
+    }
+}
+
+foreach ($user as $value) {
+    $value = escapeshellarg($value);
+    exec (VESTA_CMD.$cmd." ".$value." ".$restart, $output, $return_var);
+    $changes = 'yes';
+}
+
+if ((!empty($restart)) && (!empty($changes))) {
+    exec (VESTA_CMD."v_restart_web", $output, $return_var);
+    exec (VESTA_CMD."v_restart_dns", $output, $return_var);
+    exec (VESTA_CMD."v_restart_cron", $output, $return_var);
+}
+
+header("Location: /list/user/");

+ 70 - 0
web/bulk/web/index.php

@@ -0,0 +1,70 @@
+<?php
+// Init
+error_reporting(NULL);
+ob_start();
+session_start();
+
+include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
+
+$domain = $_POST['domain'];
+$action = $_POST['action'];
+
+if ($_SESSION['user'] == 'admin') {
+    switch ($action) {
+        case 'delete': $cmd='v_delete_web_domain';
+                        $cmd_dns='v_delete_dns_domain';
+                        $cmd_mail='v_delete_mail_domain';
+            break;
+        case 'suspend': $cmd='v_suspend_web_domain';
+                        $cmd_dns='v_suspend_dns_domain';
+                        $cmd_mail='v_suspend_mail_domain';
+            break;
+        case 'unsuspend': $cmd='v_unsuspend_web_domain';
+                        $cmd_dns='v_unsuspend_dns_domain';
+                        $cmd_mail='v_unsuspend_mail_domain';
+            break;
+        default: header("Location: /list/web/"); exit;
+    }
+} else {
+    switch ($action) {
+        case 'delete': $cmd='v_delete_web_domain';
+                        $cmd_dns='v_delete_dns_domain';
+                        $cmd_mail='v_delete_mail_domain';
+            break;
+        default: header("Location: /list/web/"); exit;
+    }
+}
+
+foreach ($domain as $value) {
+    // WEB
+    $value = escapeshellarg($value);
+    exec (VESTA_CMD.$cmd." ".$user." ".$value." no", $output, $return_var);
+    $restart_web = 'yes';
+
+    // DNS
+    if ($return_var == 0) {
+        exec (VESTA_CMD."v_list_dns_domain ".$user." ".$value." json", $output, $lreturn_var);
+        if ($lreturn_var == 0 ) {
+            exec (VESTA_CMD.$cmd_dns." ".$user." ".$value." no", $output, $return_var);
+            $restart_dns = 'yes';
+        }
+    }
+
+    // Mail
+    if ($return_var == 0) {
+        exec (VESTA_CMD."v_list_mail_domain ".$user." ".$value." json", $output, $lreturn_var);
+        if ($lreturn_var == 0 ) {
+            exec (VESTA_CMD.$cmd_mail." ".$user." ".$value." no", $output, $return_var);
+        }
+    }
+}
+
+if (!empty($restart_web)) {
+    exec (VESTA_CMD."v_restart_web", $output, $return_var);
+}
+
+if (!empty($restart_dns)) {
+    exec (VESTA_CMD."v_restart_dns", $output, $return_var);
+}
+
+header("Location: /list/web/");