|
| 1 | +#!/bin/bash |
| 2 | +# info: change ip owner |
| 3 | +# options: DOMAIN USER [IP] |
| 4 | +# |
| 5 | +# The function of changing domain ownership. |
| 6 | + |
| 7 | + |
| 8 | +#----------------------------------------------------------# |
| 9 | +# Variable&Function # |
| 10 | +#----------------------------------------------------------# |
| 11 | + |
| 12 | +# Argument defenition |
| 13 | +domain=$1 |
| 14 | +user=$2 |
| 15 | +ip=$3 |
| 16 | + |
| 17 | +# Includes |
| 18 | +source $VESTA/func/ip.sh |
| 19 | +source $VESTA/func/main.sh |
| 20 | +source $VESTA/conf/vesta.conf |
| 21 | + |
| 22 | + |
| 23 | +#----------------------------------------------------------# |
| 24 | +# Verifications # |
| 25 | +#----------------------------------------------------------# |
| 26 | + |
| 27 | +check_args '2' "$#" 'DOMAIN USER [IP]' |
| 28 | +validate_format 'domain' 'user' |
| 29 | +is_object_valid 'user' 'USER' "$user" |
| 30 | +is_object_unsuspended 'user' 'USER' "$user" |
| 31 | +if [ ! -z "$ip" ]; then |
| 32 | + is_ip_valid |
| 33 | + is_ip_avalable |
| 34 | +fi |
| 35 | + |
| 36 | +owner=$(v-search-domain-owner $domain) |
| 37 | +if [ -z "$owner" ]; then |
| 38 | + echo "Error: domain $domain doesn't exist" |
| 39 | + log_event "$E_NOTEXIST" "$EVENT" |
| 40 | + exit $E_NOTEXIST |
| 41 | +fi |
| 42 | +if [ "$owner" = "$user" ]; then |
| 43 | + exit |
| 44 | +fi |
| 45 | + |
| 46 | + |
| 47 | +#----------------------------------------------------------# |
| 48 | +# Action # |
| 49 | +#----------------------------------------------------------# |
| 50 | + |
| 51 | +# WEB domain |
| 52 | +web_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/web.conf) |
| 53 | +if [ ! -z "$web_data" ]; then |
| 54 | + $BIN/v-suspend-web-domain $owner $domain >> /dev/null 2>&1 |
| 55 | + eval $web_data |
| 56 | + |
| 57 | + # Change IP |
| 58 | + if [ ! -z "$ip" ]; then |
| 59 | + web_data=$(echo "$web_data" | sed -e "s/IP='$IP'/IP='$ip'/") |
| 60 | + fi |
| 61 | + |
| 62 | + # Check SSL |
| 63 | + if [ "$SSL" = 'yes' ]; then |
| 64 | + ssl_crt=$VESTA/data/users/$owner/ssl/$domain.crt |
| 65 | + ssl_key=$VESTA/data/users/$owner/ssl/$domain.key |
| 66 | + ssl_ca=$VESTA/data/users/$owner/ssl/$domain.ca |
| 67 | + ssl_pem=$VESTA/data/users/$owner/ssl/$domain.pem |
| 68 | + mv $ssl_crt $VESTA/data/users/$user/ssl/ |
| 69 | + mv $ssl_key $VESTA/data/users/$user/ssl/ |
| 70 | + mv $ssl_ca $VESTA/data/users/$user/ssl/ >> /dev/null 2>&1 |
| 71 | + mv $ssl_pem $VESTA/data/users/$user/ssl/ >> /dev/null 2>&1 |
| 72 | + rm -f $HOMEDIR/$owner/conf/web/ssl.$domain.* |
| 73 | + fi |
| 74 | + |
| 75 | + # Check ftp user account |
| 76 | + if [ ! -z "$FTP_USER" ]; then |
| 77 | + /usr/sbin/userdel -f $FTP_USER >> /dev/null 2>&1 |
| 78 | + old_str="FTP_USER='$FTP_USER'" |
| 79 | + new_str=$(echo "$old_str" | sed -e "s/${owner}_/${user}_/") |
| 80 | + web_data=$(echo "$web_data" | sed -e "s/$old_str/$new_str/") |
| 81 | + fi |
| 82 | + |
| 83 | + # Move config |
| 84 | + sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/web.conf |
| 85 | + echo "$web_data" >> $VESTA/data/users/$user/web.conf |
| 86 | + |
| 87 | + # Move data |
| 88 | + mv $HOMEDIR/$owner/web/$domain $HOMEDIR/$user/web/ |
| 89 | + |
| 90 | + # Rebuild config |
| 91 | + $BIN/v-unsuspend-web-domain $user $domain no >> /dev/null 2>&1 |
| 92 | + $BIN/v-rebuild-web-domains $owner no |
| 93 | + $BIN/v-rebuild-web-domains $user |
| 94 | +fi |
| 95 | + |
| 96 | +# DNS domain |
| 97 | +dns_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/dns.conf) |
| 98 | +if [ ! -z "$dns_data" ]; then |
| 99 | + eval $dns_data |
| 100 | + |
| 101 | + # Change IP |
| 102 | + if [ ! -z "$ip" ]; then |
| 103 | + dns_data=$(echo "$dns_data" | sed -e "s/IP='$IP'/IP='$ip'/") |
| 104 | + sed -i "s/$IP/$ip/g" $VESTA/data/users/$owner/dns/$domain.conf |
| 105 | + fi |
| 106 | + |
| 107 | + # Move config |
| 108 | + sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/dns.conf |
| 109 | + echo "$dns_data" >> $VESTA/data/users/$user/dns.conf |
| 110 | + |
| 111 | + # Move dns records |
| 112 | + mv $VESTA/data/users/$owner/dns/$domain.conf \ |
| 113 | + $VESTA/data/users/$user/dns/ |
| 114 | + |
| 115 | + # Rebuild config |
| 116 | + $BIN/v-unsuspend-dns-domain $user $domain no >> /dev/null 2>&1 |
| 117 | + $BIN/v-rebuild-dns-domains $owner no |
| 118 | + $BIN/v-rebuild-dns-domains $user |
| 119 | +fi |
| 120 | + |
| 121 | +# MAIL domain |
| 122 | +mail_data=$(grep "DOMAIN='$domain'" $VESTA/data/users/$owner/mail.conf) |
| 123 | +if [ ! -z "$mail_data" ]; then |
| 124 | + |
| 125 | + # Move config |
| 126 | + sed -i "/DOMAIN='$domain'/d" $VESTA/data/users/$owner/mail.conf |
| 127 | + echo "$mail_data" >> $VESTA/data/users/$user/mail.conf |
| 128 | + mv -f $VESTA/data/users/$owner/mail/$domain.conf \ |
| 129 | + $VESTA/data/users/$user/mail/ |
| 130 | + |
| 131 | + # Move DKIM |
| 132 | + if [ -e "$VESTA/data/users/$owner/mail/$domain.pem" ]; then |
| 133 | + mv -f $VESTA/data/users/$owner/mail/$domain.pem \ |
| 134 | + $VESTA/data/users/$user/mail/ |
| 135 | + mv -f $VESTA/data/users/$owner/mail/$domain.pub \ |
| 136 | + $VESTA/data/users/$user/mail/ |
| 137 | + fi |
| 138 | + |
| 139 | + # Move data |
| 140 | + mv $HOMEDIR/$owner/mail/$domain $HOMEDIR/$user/mail/ |
| 141 | + |
| 142 | + # Rebuild config |
| 143 | + $BIN/v-unsuspend-mail-domain $user $domain no >> /dev/null 2>&1 |
| 144 | + $BIN/v-rebuild-mail-domains $owner no |
| 145 | + $BIN/v-rebuild-mail-domains $user |
| 146 | +fi |
| 147 | + |
| 148 | + |
| 149 | +#----------------------------------------------------------# |
| 150 | +# Vesta # |
| 151 | +#----------------------------------------------------------# |
| 152 | + |
| 153 | +# Logging |
| 154 | +log_event "$OK" "$EVENT" |
| 155 | + |
| 156 | +exit |
0 commit comments