added user&web bulk operation support

This commit is contained in:
Serghey Rodin 2012-09-27 20:30:52 +03:00
commit 03237bfa94
21 changed files with 287 additions and 57 deletions

47
bin/v_delete_mail_domains Executable file
View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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'

View file

@ -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"

View file

@ -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"

View file

@ -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 #

View file

@ -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"

View file

@ -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

View file

@ -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"

View file

@ -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"

View file

@ -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
web/bulk/user/index.php Normal file
View file

@ -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
web/bulk/web/index.php Normal file
View file

@ -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/");