diff --git a/bin/v_del_db_dbases b/bin/v_del_db_dbases new file mode 100755 index 000000000..db8a389c9 --- /dev/null +++ b/bin/v_del_db_dbases @@ -0,0 +1,68 @@ +#!/bin/bash +# info: deleteing all user databases + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user="$1" + +# Importing variables +source $VESTA/conf/vars.conf +source $V_FUNC/shared_func.sh +source $V_FUNC/db_func.sh + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +# Checking arg number +check_args '1' "$#" 'user' + +# Checking argument format +format_validation 'user' + +# Checking web system is enabled +is_system_enabled 'db' + +# Checking user +is_user_valid + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Defining config +conf="$V_USERS/$user/db.conf" + +# Defining fileds to select +field='$DB' + +# Defining search string +search_string="SUSPEND='no'" + +# Parsing unsuspeneded domains +databases=$(db_clear_search) + +# Starting delete loop +for database in $databases; do + $V_BIN/v_del_db_base "$user" "$database" + rv="$?" + if [ "$rv" -ne '0' ]; then + log_event 'debug' "$rv $V_EVENT" + exit $rv + fi +done + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Logging +log_event 'system' "$V_EVENT" + +exit $OK diff --git a/bin/v_del_dns_domains b/bin/v_del_dns_domains new file mode 100755 index 000000000..3d727303e --- /dev/null +++ b/bin/v_del_dns_domains @@ -0,0 +1,68 @@ +#!/bin/bash +# info: deleteing all user dns domains + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user="$1" + +# Importing variables +source $VESTA/conf/vars.conf +source $V_FUNC/shared_func.sh +source $V_FUNC/domain_func.sh + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +# Checking arg number +check_args '1' "$#" 'user' + +# Checking argument format +format_validation 'user' + +# Checking web system is enabled +is_system_enabled 'dns' + +# Checking user +is_user_valid + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Defining config +conf="$V_USERS/$user/dns.conf" + +# Defining fileds to select +field='$DOMAIN' + +# Defining search string +search_string="SUSPEND='no'" + +# Parsing domain list +domains=$(dom_clear_search) + +# Starting delete loop +for domain in $domains; do + $V_BIN/v_del_dns_domain "$user" "$domain" + rv="$?" + if [ "$rv" -ne '0' ]; then + log_event 'debug' "$rv $V_EVENT" + exit $rv + fi +done + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Logging +log_event 'system' "$V_EVENT" + +exit $OK diff --git a/bin/v_del_sys_user b/bin/v_del_sys_user new file mode 100755 index 000000000..80de49213 --- /dev/null +++ b/bin/v_del_sys_user @@ -0,0 +1,129 @@ +#!/bin/bash +# info: deliting system user + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user="$1" + +# Importing variables +source $VESTA/conf/vars.conf +source $V_FUNC/shared_func.sh +source $V_FUNC/domain_func.sh +source $V_FUNC/db_func.sh +source $V_FUNC/ip_func.sh +source $V_CONF/vesta.conf + + +#----------------------------------------------------------# +# 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 childs +is_user_parent + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Checking web system is enabled +if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then + $V_BIN/v_unsuspend_web_domains $user + $V_BIN/v_del_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_del_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_del_db_dbases $user + rv="$?" + if [ "$rv" -ne '0' ]; then + exit $rv + fi +fi + +# Checking ip +v_del_sys_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 +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 $OK diff --git a/bin/v_del_sys_user_ip b/bin/v_del_sys_user_ip index d8ddb7496..68b1f8b89 100755 --- a/bin/v_del_sys_user_ip +++ b/bin/v_del_sys_user_ip @@ -57,7 +57,7 @@ update_sys_ip_value '$OWNER' '' #----------------------------------------------------------# # Updating user conf -decrease_user_value '$IP_OWNED' +decrease_user_value $user '$IP_OWNED' # Logging log_event 'system' "$V_EVENT" diff --git a/bin/v_del_sys_user_ips b/bin/v_del_sys_user_ips new file mode 100755 index 000000000..cce40356e --- /dev/null +++ b/bin/v_del_sys_user_ips @@ -0,0 +1,57 @@ +#!/bin/bash +# info: deleting user ip + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user="$1" + +# Importing variables +source $VESTA/conf/vars.conf +source $V_FUNC/shared_func.sh +source $V_FUNC/ip_func.sh + + +#----------------------------------------------------------# +# 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 + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Starting delete loop +for ip in $(ip_owner_search); do + $V_BIN/v_del_sys_user_ip "$user" "$ip" + rv="$?" + if [ "$rv" -ne '0' ]; then + log_event 'debug' "$rv $V_EVENT" + exit $rv + fi + +done + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Logging +log_event 'system' "$V_EVENT" + +exit $OK diff --git a/bin/v_del_web_domains b/bin/v_del_web_domains new file mode 100755 index 000000000..7a09de46a --- /dev/null +++ b/bin/v_del_web_domains @@ -0,0 +1,68 @@ +#!/bin/bash +# info: deleteing all user web domains + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user="$1" + +# Importing variables +source $VESTA/conf/vars.conf +source $V_FUNC/shared_func.sh +source $V_FUNC/domain_func.sh + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +# Checking arg number +check_args '1' "$#" 'user' + +# Checking argument format +format_validation 'user' + +# Checking web system is enabled +is_system_enabled 'web' + +# Checking user +is_user_valid + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Defining config +conf="$V_USERS/$user/web.conf" + +# Defining fileds to select +field='$DOMAIN' + +# Defining search string +search_string="SUSPEND='no'" + +# Parsing domain list +domains=$(dom_clear_search) + +# Starting delete loop +for domain in $domains; do + $V_BIN/v_del_web_domain "$user" "$domain" + rv="$?" + if [ "$rv" -ne '0' ]; then + log_event 'debug' "$rv $V_EVENT" + exit $rv + fi +done + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Logging +log_event 'system' "$V_EVENT" + +exit $OK diff --git a/func/ip_func.sh b/func/ip_func.sh index 8d0b9d24c..a368094eb 100644 --- a/func/ip_func.sh +++ b/func/ip_func.sh @@ -591,3 +591,12 @@ ipint_shell_list() { echo "$interface" done } + +ip_owner_search(){ + for ip in $(ls $V_IPS/); do + check_owner=$(grep "OWNER='$user'" $V_IPS/$ip) + if [ ! -z "$check_owner" ]; then + echo "$ip" + fi + done +} diff --git a/func/shared_func.sh b/func/shared_func.sh index 9650732c0..9b74409a5 100644 --- a/func/shared_func.sh +++ b/func/shared_func.sh @@ -973,6 +973,21 @@ decrease_user_value() { fi } +is_user_parent() { + childs="$(grep "U_CHILDS=" $V_USERS/$user/user.conf |cut -f 2 -d \')" + if [ -z "$childs" ]; then + echo "Error: Parsing error" + log_event 'debug' "$E_PARSE_ERROR $V_EVENT" + exit $E_PARSE_ERROR + fi + + if [ "$childs" -gt '0' ]; then + echo "Error: user have childs" + log_event 'debug' "$E_CHILD_EXIST $V_EVENT" + exit $E_CHILD_EXIST + fi +} + # Json listing function v_json_list() { # Definigng variables