Files
VestaCP/bin/v_delete_user
2012-01-10 17:10:18 +02:00

136 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# info: delete user
# options: user
#
# This function deletes a certain user and all his resourses such as domains,
# databases, cron jobs, etc.
#----------------------------------------------------------#
# Variable&Function #
#----------------------------------------------------------#
# Argument defenition
user=$1
# Importing variables
source $VESTA/conf/vars.conf
source $V_CONF/vesta.conf
source $V_FUNC/shared.func
source $V_FUNC/domain.func
source $V_FUNC/db.func
source $V_FUNC/ip.func
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
# Checking arg number
check_args '1' "$#" 'user'
# Checking argument format
format_validation 'user'
# Checking user
is_user_valid
# Checking user is active
is_user_suspended
# Checking user vesta
if [ "$user" = 'vesta' ]; then
exit
fi
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
# Checking web system is enabled
if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
$V_BIN/v_unsuspend_web_domains $user
$V_BIN/v_delete_web_domains $user
rv="$?"
if [ "$rv" -ne '0' ]; then
exit $rv
fi
fi
# Checking dns system is enabled
if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
$V_BIN/v_unsuspend_dns_domains $user
$V_BIN/v_delete_dns_domains $user
rv="$?"
if [ "$rv" -ne '0' ]; then
exit $rv
fi
fi
# Checking mail system is enabled
if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
$V_BIN/v_unsuspend_mail_domains $user
$V_BIN/v_del_mail_domains $user
rv="$?"
if [ "$rv" -ne '0' ]; then
exit $rv
fi
fi
# Checking db system is enabled
if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
$V_BIN/v_unsuspend_db_bases $user
$V_BIN/v_delete_db_dbases $user
rv="$?"
if [ "$rv" -ne '0' ]; then
exit $rv
fi
fi
# Checking ip
$V_BIN/v_delete_user_ips "$user"
rv="$?"
if [ "$rv" -ne '0' ]; then
exit $rv
fi
# Deleteing user pipes
diskp=$(grep -n " $user$" $V_QUEUE/disk.pipe|cut -d : -f 1|sort -n -r)
trafp=$(grep -n " $user$" $V_QUEUE/traffic.pipe|cut -d : -f 1|sort -n -r)
statp=$(grep -n "/$user/" $V_QUEUE/stats.pipe|cut -d : -f 1|sort -n -r)
if [ ! -z "$diskp" ]; then
for str in $diskp; do
sed -i "$str d" $V_QUEUE/disk.pipe
done
fi
if [ ! -z "$trafp" ]; then
for str in $trafp; do
sed -i "$str d" $V_QUEUE/traffic.pipe
done
fi
if [ ! -z "$statp" ]; then
for str in $statp; do
sed -i "$str d" $V_QUEUE/stats.pipe
done
fi
# Removing system user
/usr/sbin/userdel -f $user
rm -rf $V_HOME/$user
rm -f /var/spool/mail/$user
rm -f /var/spool/cron/$user
rm -rf $V_USERS/$user
#----------------------------------------------------------#
# Vesta #
#----------------------------------------------------------#
# Logging
log_event 'system' "$V_EVENT"
exit