diff --git a/bin/v-change-domain-owner b/bin/v-change-domain-owner new file mode 100755 index 00000000..967c61fe --- /dev/null +++ b/bin/v-change-domain-owner @@ -0,0 +1,156 @@ +#!/bin/bash +# info: change ip owner +# options: DOMAIN USER [IP] +# +# The function of changing domain ownership. + + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +domain=$1 +user=$2 +ip=$3 + +# Includes +source $VESTA/func/ip.sh +source $VESTA/func/main.sh +source $VESTA/conf/vesta.conf + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +check_args '2' "$#" 'DOMAIN USER [IP]' +validate_format 'domain' 'user' +is_object_valid 'user' 'USER' "$user" +is_object_unsuspended 'user' 'USER' "$user" +if [ ! -z "$ip" ]; then + is_ip_valid + is_ip_avalable +fi + +owner=$(v-search-domain-owner $domain) +if [ -z "$owner" ]; then + echo "Error: domain $domain doesn't exist" + log_event "$E_NOTEXIST" "$EVENT" + exit $E_NOTEXIST +fi +if [ "$owner" = "$user" ]; then + exit +fi + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# WEB domain +web_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/web.conf) +if [ ! -z "$web_data" ]; then + $BIN/v-suspend-web-domain $owner $domain >> /dev/null 2>&1 + eval $web_data + + # Change IP + if [ ! -z "$ip" ]; then + web_data=$(echo "$web_data" | sed -e "s/IP='$IP'/IP='$ip'/") + fi + + # Check SSL + if [ "$SSL" = 'yes' ]; then + ssl_crt=$VESTA/data/users/$owner/ssl/$domain.crt + ssl_key=$VESTA/data/users/$owner/ssl/$domain.key + ssl_ca=$VESTA/data/users/$owner/ssl/$domain.ca + ssl_pem=$VESTA/data/users/$owner/ssl/$domain.pem + mv $ssl_crt $VESTA/data/users/$user/ssl/ + mv $ssl_key $VESTA/data/users/$user/ssl/ + mv $ssl_ca $VESTA/data/users/$user/ssl/ >> /dev/null 2>&1 + mv $ssl_pem $VESTA/data/users/$user/ssl/ >> /dev/null 2>&1 + rm -f $HOMEDIR/$owner/conf/web/ssl.$domain.* + fi + + # Check ftp user account + if [ ! -z "$FTP_USER" ]; then + /usr/sbin/userdel -f $FTP_USER >> /dev/null 2>&1 + old_str="FTP_USER='$FTP_USER'" + new_str=$(echo "$old_str" | sed -e "s/${owner}_/${user}_/") + web_data=$(echo "$web_data" | sed -e "s/$old_str/$new_str/") + fi + + # Move config + sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/web.conf + echo "$web_data" >> $VESTA/data/users/$user/web.conf + + # Move data + mv $HOMEDIR/$owner/web/$domain $HOMEDIR/$user/web/ + + # Rebuild config + $BIN/v-unsuspend-web-domain $user $domain no >> /dev/null 2>&1 + $BIN/v-rebuild-web-domains $owner no + $BIN/v-rebuild-web-domains $user +fi + +# DNS domain +dns_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/dns.conf) +if [ ! -z "$dns_data" ]; then + eval $dns_data + + # Change IP + if [ ! -z "$ip" ]; then + dns_data=$(echo "$dns_data" | sed -e "s/IP='$IP'/IP='$ip'/") + sed -i "s/$IP/$ip/g" $VESTA/data/users/$owner/dns/$domain.conf + fi + + # Move config + sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/dns.conf + echo "$dns_data" >> $VESTA/data/users/$user/dns.conf + + # Move dns records + mv $VESTA/data/users/$owner/dns/$domain.conf \ + $VESTA/data/users/$user/dns/ + + # Rebuild config + $BIN/v-unsuspend-dns-domain $user $domain no >> /dev/null 2>&1 + $BIN/v-rebuild-dns-domains $owner no + $BIN/v-rebuild-dns-domains $user +fi + +# MAIL domain +mail_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/mail.conf) +if [ ! -z "$mail_data" ]; then + + # Move config + sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/mail.conf + echo "$mail_data" >> $VESTA/data/users/$user/mail.conf + mv -f $VESTA/data/users/$owner/mail/$domain.conf \ + $VESTA/data/users/$user/mail/ + + # Move DKIM + if [ -e "$VESTA/data/users/$owner/mail/$domain.pem" ]; then + mv -f $VESTA/data/users/$owner/mail/$domain.pem \ + $VESTA/data/users/$user/mail/ + mv -f $VESTA/data/users/$owner/mail/$domain.pub \ + $VESTA/data/users/$user/mail/ + fi + + # Move data + mv $HOMEDIR/$owner/mail/$domain $HOMEDIR/$user/mail/ + + # Rebuild config + $BIN/v-unsuspend-mail-domain $user $domain no >> /dev/null 2>&1 + $BIN/v-rebuild-mail-domains $owner no + $BIN/v-rebuild-mail-domains $user +fi + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Logging +log_event "$OK" "$EVENT" + +exit