mirror of
https://github.com/serghey-rodin/vesta.git
synced 2024-12-03 19:00:24 -08:00
178 lines
5.3 KiB
Bash
Executable File
178 lines
5.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# info: change domain owner
|
|
# options: DOMAIN USER
|
|
#
|
|
# The function of changing domain ownership.
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Variable&Function #
|
|
#----------------------------------------------------------#
|
|
|
|
# Argument definition
|
|
domain=$1
|
|
user=$2
|
|
|
|
# Includes
|
|
source $VESTA/func/ip.sh
|
|
source $VESTA/func/main.sh
|
|
source $VESTA/conf/vesta.conf
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Verifications #
|
|
#----------------------------------------------------------#
|
|
|
|
check_args '2' "$#" 'DOMAIN USER'
|
|
is_format_valid 'domain' 'user'
|
|
is_object_valid 'user' 'USER' "$user"
|
|
is_object_unsuspended 'user' 'USER' "$user"
|
|
owner=$($BIN/v-search-domain-owner $domain)
|
|
if [ -z "$owner" ]; then
|
|
check_result $E_NOTEXIST "domain $domain doesn't exist"
|
|
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 "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 "s/${owner}_/${user}_/")
|
|
web_data=$(echo "$web_data" | sed "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/
|
|
|
|
# Change ownership
|
|
find $HOMEDIR/$user/web/$domain -user $owner \
|
|
-exec chown -h $user:$user {} \;
|
|
|
|
# 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 "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
|
|
|
|
# Resync dns cluster
|
|
if [ ! -z "$DNS_CLUSTER" ]; then
|
|
v-sync-dns-cluster
|
|
fi
|
|
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/
|
|
|
|
# Change ownership
|
|
find $HOMEDIR/$user/mail/$domain -user $owner \
|
|
-exec chown -h $user {} \;
|
|
|
|
# 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
|
|
|
|
# Checking exim username for later chowning
|
|
exim_user="exim";
|
|
check_exim_username=$(grep -c '^Debian-exim:' /etc/passwd)
|
|
if [ "$check_exim_username" -eq 1 ]; then
|
|
exim_user="Debian-exim"
|
|
fi
|
|
# Chowning mail conf files to exim user
|
|
if [ -d "$HOMEDIR/$user/conf/mail/$domain" ]; then
|
|
find $HOMEDIR/$user/conf/mail/$domain -user root \
|
|
-exec chown $exim_user {} \;
|
|
fi
|
|
fi
|
|
|
|
# Update counters
|
|
$BIN/v-update-user-counters $owner
|
|
$BIN/v-update-user-counters $user
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Vesta #
|
|
#----------------------------------------------------------#
|
|
|
|
# Logging
|
|
log_event "$OK" "$ARGUMENTS"
|
|
|
|
exit
|