mirror of
https://github.com/myvesta/vesta.git
synced 2024-12-21 11:31:21 -08:00
a4acb57e54
v-suspend-web-domain on line 49 is triggering apache/nginx reload... that is doing it in the background... and on line 64, we were previously doing 'mv' for certificates... If the reload lasts too long it in the background, certificates will vanish because of 'mv' on line 64. This fix will avoid this collision by doing 'cp' instead of 'mv', then sleeping for 10 sec, and then removing certificates. We will call this bug "Nemanja Puhalo's bug" because he hit this bug first.
190 lines
5.6 KiB
Bash
Executable File
190 lines
5.6 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
|
|
|
|
USER_DATA=$VESTA/data/users/$owner
|
|
is_object_unsuspended 'user' 'USER' "$owner"
|
|
USER_DATA=$VESTA/data/users/$user
|
|
|
|
#----------------------------------------------------------#
|
|
# 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
|
|
cp $ssl_crt $VESTA/data/users/$user/ssl/
|
|
cp $ssl_key $VESTA/data/users/$user/ssl/
|
|
cp $ssl_ca $VESTA/data/users/$user/ssl/ > /dev/null 2>&1
|
|
cp $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 {} \;
|
|
|
|
if [ "$SSL" = 'yes' ]; then
|
|
sleep 10
|
|
rm $ssl_crt
|
|
rm $ssl_key
|
|
rm $ssl_ca > /dev/null 2>&1
|
|
rm $ssl_pem > /dev/null 2>&1
|
|
rm -f $HOMEDIR/$owner/conf/web/ssl.$domain.*
|
|
fi
|
|
|
|
# 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
|