Update v-clone-website

This commit is contained in:
myvesta 2020-07-19 02:32:03 +02:00 committed by GitHub
parent 4079e83cfb
commit 10632f9143
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -26,14 +26,22 @@ fi
# Variable&Function # # Variable&Function #
#----------------------------------------------------------# #----------------------------------------------------------#
FROM_DOMAIN=$1
TO_DOMAIN=$2
user=$(/usr/local/vesta/bin/v-search-domain-owner "$FROM_DOMAIN")
if [ -z "$user" ]; then
echo "Error: domain $FROM_DOMAIN does not exists"
exit 2
fi
# Importing system environment # Importing system environment
source /etc/profile source /etc/profile
# Includes # Includes
source /usr/local/vesta/func/main.sh source /usr/local/vesta/func/main.sh
source /usr/local/vesta/func/db.sh
FROM_DOMAIN=''
TO_DOMAIN=''
FROM_DATABASE_NAME='' FROM_DATABASE_NAME=''
FROM_DATABASE_USERNAME='' FROM_DATABASE_USERNAME=''
FROM_DATABASE_PASSWORD='' FROM_DATABASE_PASSWORD=''
@ -43,130 +51,76 @@ TO_DATABASE_USERNAME=''
TO_DATABASE_PASSWORD='' TO_DATABASE_PASSWORD=''
DATABASE_SUFIX='_migrated' DATABASE_SUFIX='_migrated'
FROM_DOMAIN=$1 source /usr/local/vesta/func/handle_parameters.sh
TO_DOMAIN=$2
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'FROM_DOMAIN TO_DOMAIN' # check_args '2' "$#" 'FROM_DOMAIN TO_DOMAIN'
is_domain_format_valid "$FROM_DOMAIN" is_domain_format_valid "$FROM_DOMAIN"
is_domain_format_valid "$TO_DOMAIN" is_domain_format_valid "$TO_DOMAIN"
############################ FROM_USER=$user
# handle --parameters=val
handle_parameter() {
origparam=$1
searchstring="="
paramminuses=${origparam:0:2}
if [ "$paramminuses" = "--" ]; then
var_without_minuses=${origparam:2}
var=${var_without_minuses%%=*}
val=${origparam#*$searchstring}
#echo $var
#echo $val
printf -v "$var" '%s' "$val"
fi
}
numargs=$#
for ((i=1 ; i <= numargs ; i++))
do
handle_parameter $1
shift
done
# Defining password-gen function r=$(/usr/local/vesta/bin/v-get-database-credentials-of-domain "$FROM_DOMAIN")
gen_pass() { eval $r
MATRIX='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
LENGTH=32
while [ ${n:=1} -le $LENGTH ]; do
PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
let n+=1
done
echo "$PASS"
}
############################
########################################################################### FROM_FOLDER=$SITE_FOLDER
FROM_USER=$($VESTA/bin/v-search-domain-owner "$FROM_DOMAIN") FROM_CONFIG_FILE=$CONFIG_FILE
if [ -z "$FROM_USER" ]; then FROM_CONFIG_FILE_FULL_PATH=$CONFIG_FILE_FULL_PATH
echo "Error: domain $FROM_DOMAIN does not exists"
exit 4
fi
FROM_FOLDER="/home/$FROM_USER/web/$FROM_DOMAIN/public_html"
CHECK_PUBLIC_SHTML=$($VESTA/bin/v-list-web-domain "$FROM_USER" "$FROM_DOMAIN" | grep 'SSL:' | grep -c 'single')
if [ $CHECK_PUBLIC_SHTML -eq 1 ]; then
FROM_FOLDER="/home/$FROM_USER/web/$FROM_DOMAIN/public_shtml"
fi
if [ ! -z "$FROM_CONFIG_FILE" ]; then
FROM_CONFIG_FILE_FULL_PATH="$FROM_FOLDER/$6"
fi
if [ -z "$FROM_CONFIG_FILE" ]; then
FROM_CONFIG_FILE="wp-config.php"
FROM_CONFIG_FILE_FULL_PATH="$FROM_FOLDER/$FROM_CONFIG_FILE"
fi
if [ ! -f "$FROM_CONFIG_FILE_FULL_PATH" ]; then if [ ! -f "$FROM_CONFIG_FILE_FULL_PATH" ]; then
echo "Error: FROM_CONFIG_FILE_FULL_PATH $FROM_CONFIG_FILE_FULL_PATH does not exists" echo "Error: FROM_CONFIG_FILE_FULL_PATH $FROM_CONFIG_FILE_FULL_PATH does not exists"
exit 5 exit 3
fi fi
IT_IS_WP=0 IT_IS_WP=0
if [ -f "$FROM_FOLDER/wp-config.php" ]; then if [ "$CMS_TYPE" = "wordpress" ]; then
IT_IS_WP=1 IT_IS_WP=1
fi fi
if [ $IT_IS_WP -eq 1 ]; then if [ -z "$FROM_DATABASE_NAME" ]; then
FROM_CONFIG_FILE_FULL_PATH_BACKUP="${FROM_CONFIG_FILE_FULL_PATH}_backup" FROM_DATABASE_NAME=$DATABASE_NAME
cp $FROM_CONFIG_FILE_FULL_PATH $FROM_CONFIG_FILE_FULL_PATH_BACKUP fi
sed -i "s|//.*$||g" $FROM_CONFIG_FILE_FULL_PATH_BACKUP if [ -z "$FROM_DATABASE_USERNAME" ]; then
if [ -z "$FROM_DATABASE_NAME" ]; then FROM_DATABASE_USERNAME=$DATABASE_USERNAME
sed -i "s|('|( '|g" $FROM_CONFIG_FILE_FULL_PATH_BACKUP fi
sed -i "s|');|' );|g" $FROM_CONFIG_FILE_FULL_PATH_BACKUP if [ -z "$FROM_DATABASE_PASSWORD" ]; then
FROM_DATABASE_NAME=$(grep 'DB_NAME' $FROM_CONFIG_FILE_FULL_PATH_BACKUP | awk '{print $3}' | sed -e "s/^'//" -e "s/'$//") FROM_DATABASE_PASSWORD=$DATABASE_PASSWORD
fi
FROM_DATABASE_USERNAME=$(grep 'DB_USER' $FROM_CONFIG_FILE_FULL_PATH_BACKUP | awk '{print $3}' | sed -e "s/^'//" -e "s/'$//")
FROM_DATABASE_PASSWORD=$(grep 'DB_PASSWORD' $FROM_CONFIG_FILE_FULL_PATH_BACKUP | awk '{print $3}' | sed -e "s/^'//" -e "s/'$//")
rm $FROM_CONFIG_FILE_FULL_PATH_BACKUP
fi fi
if [ -z "$FROM_DATABASE_NAME" ]; then if [ -z "$FROM_DATABASE_NAME" ]; then
echo "Error: FROM_DATABASE_NAME is empty" echo "Error: FROM_DATABASE_NAME is empty"
exit 6 exit 4
fi fi
if [ -z "$FROM_DATABASE_USERNAME" ]; then if [ -z "$FROM_DATABASE_USERNAME" ]; then
echo "Error: FROM_DATABASE_USERNAME is empty" echo "Error: FROM_DATABASE_USERNAME is empty"
exit 7 exit 5
fi fi
if [ -z "$FROM_DATABASE_PASSWORD" ]; then if [ -z "$FROM_DATABASE_PASSWORD" ]; then
echo "Error: FROM_DATABASE_PASSWORD is empty" echo "Error: FROM_DATABASE_PASSWORD is empty"
exit 8 exit 6
fi fi
FROM_USER_LEN=${#FROM_USER} DB_EXISTS=$(check_if_database_exists "$user" "$FROM_DATABASE_NAME")
FROM_USER_LEN=$((FROM_USER_LEN+1)) if [ "$DB_EXISTS" = "no" ]; then
object=$(grep "DB='$FROM_DATABASE_NAME'" $VESTA/data/users/$FROM_USER/db.conf)
if [ -z "$object" ]; then
echo "Error: database $FROM_DATABASE_NAME does not exists" echo "Error: database $FROM_DATABASE_NAME does not exists"
exit 9 exit 7
fi fi
FROM_DATABASE_NAME_WITHOUT_PREFIX=${FROM_DATABASE_NAME:FROM_USER_LEN} FROM_DATABASE_NAME_WITHOUT_PREFIX=$(get_database_name_without_user_prefix "$FROM_USER" "$FROM_DATABASE_NAME")
FROM_DATABASE_USERNAME_WITHOUT_PREFIX=${FROM_DATABASE_USERNAME:FROM_USER_LEN} FROM_DATABASE_USERNAME_WITHOUT_PREFIX=$(get_database_name_without_user_prefix "$FROM_USER" "$FROM_DATABASE_USERNAME")
FROM_DOMAIN_HAS_SSL=0 FROM_DOMAIN_HAS_SSL=0
if [ -f "/home/$FROM_USER/conf/web/ssl.$FROM_DOMAIN.ca" ]; then if [ -f "/home/$FROM_USER/conf/web/ssl.$FROM_DOMAIN.ca" ]; then
FROM_DOMAIN_HAS_SSL=1 FROM_DOMAIN_HAS_SSL=1
fi fi
FROM_DOMAIN_TPL=$($VESTA/bin/v-list-web-domain "$FROM_USER" "$FROM_DOMAIN" | grep 'TEMPLATE:' | awk '{print $2}') FROM_DOMAIN_TPL=$(/usr/local/vesta/bin/v-list-web-domain "$FROM_USER" "$FROM_DOMAIN" | grep 'TEMPLATE:' | awk '{print $2}')
FROM_DOMAIN_PROXY_TPL=$($VESTA/bin/v-list-web-domain "$FROM_USER" "$FROM_DOMAIN" | grep 'PROXY:' | awk '{print $2}') FROM_DOMAIN_PROXY_TPL=$(/usr/local/vesta/bin/v-list-web-domain "$FROM_USER" "$FROM_DOMAIN" | grep 'PROXY:' | awk '{print $2}')
FROM_DOMAIN_PROXY_EXT=$($VESTA/bin/v-list-web-domain "$FROM_USER" "$FROM_DOMAIN" | grep 'PROXY EXT:' | cut -d ' ' -f8- | sed "s# #,#g") FROM_DOMAIN_PROXY_EXT=$(/usr/local/vesta/bin/v-list-web-domain "$FROM_USER" "$FROM_DOMAIN" | grep 'PROXY EXT:' | cut -d ' ' -f8- | sed "s# #,#g")
# ----------- TO ------------- # ----------- TO -------------
@ -174,7 +128,7 @@ CREATE_TO_USER=0
CREATE_TO_DOMAIN=0 CREATE_TO_DOMAIN=0
if [ -z "$TO_USER" ]; then if [ -z "$TO_USER" ]; then
TO_USER=$($VESTA/bin/v-search-domain-owner "$TO_DOMAIN") TO_USER=$(/usr/local/vesta/bin/v-search-domain-owner "$TO_DOMAIN")
if [ -z "$TO_USER" ]; then if [ -z "$TO_USER" ]; then
TO_USER=$FROM_USER TO_USER=$FROM_USER
CREATE_TO_DOMAIN=1 CREATE_TO_DOMAIN=1
@ -189,7 +143,7 @@ else
fi fi
TO_FOLDER="/home/$TO_USER/web/$TO_DOMAIN/public_html" TO_FOLDER="/home/$TO_USER/web/$TO_DOMAIN/public_html"
CHECK_PUBLIC_SHTML=$($VESTA/bin/v-list-web-domain "$TO_USER" "$TO_DOMAIN" | grep 'SSL:' | grep -c 'single') CHECK_PUBLIC_SHTML=$(/usr/local/vesta/bin/v-list-web-domain "$TO_USER" "$TO_DOMAIN" | grep 'SSL:' | grep -c 'single')
if [ $CHECK_PUBLIC_SHTML -eq 1 ]; then if [ $CHECK_PUBLIC_SHTML -eq 1 ]; then
TO_FOLDER="/home/$TO_USER/web/$TO_DOMAIN/public_shtml" TO_FOLDER="/home/$TO_USER/web/$TO_DOMAIN/public_shtml"
fi fi
@ -243,11 +197,8 @@ if [ -z "$TO_DATABASE_PASSWORD" ]; then
exit 12 exit 12
fi fi
TO_USER_LEN=${#TO_USER} TO_DATABASE_NAME_WITHOUT_PREFIX=$(get_database_name_without_user_prefix "$TO_USER" "$TO_DATABASE_NAME")
TO_USER_LEN=$((TO_USER_LEN+1)) TO_DATABASE_USERNAME_WITHOUT_PREFIX=$(get_database_name_without_user_prefix "$TO_USER" "$TO_DATABASE_USERNAME")
TO_DATABASE_NAME_WITHOUT_PREFIX=${TO_DATABASE_NAME:TO_USER_LEN}
TO_DATABASE_USERNAME_WITHOUT_PREFIX=${TO_DATABASE_USERNAME:TO_USER_LEN}
TO_DOMAIN_HAS_SSL=0 TO_DOMAIN_HAS_SSL=0
@ -315,20 +266,20 @@ read -p "=== Press Enter to continue ==="
#----------------------------------------------------------# #----------------------------------------------------------#
if [ $CREATE_TO_USER -eq 1 ]; then if [ $CREATE_TO_USER -eq 1 ]; then
pass=$(gen_pass) pass=$(vesta_generate_pass 10)
echo "=== Create user $TO_USER, pass=$pass" echo "=== Create user $TO_USER, pass=$pass"
$VESTA/bin/v-add-user "$TO_USER" "$pass" "info@$TO_DOMAIN" "default" "Migrated" "site" /usr/local/vesta/bin/v-add-user "$TO_USER" "$pass" "info@$TO_DOMAIN" "default" "Migrated" "site"
fi fi
if [ $CREATE_TO_DOMAIN -eq 1 ]; then if [ $CREATE_TO_DOMAIN -eq 1 ]; then
echo "=== Create domain $TO_DOMAIN" echo "=== Create domain $TO_DOMAIN"
$VESTA/bin/v-add-domain "$TO_USER" "$TO_DOMAIN" /usr/local/vesta/bin/v-add-domain "$TO_USER" "$TO_DOMAIN"
rm $TO_FOLDER/index.html rm $TO_FOLDER/index.html
fi fi
if [ $SHOULD_INSTALL_SSL -eq 1 ]; then if [ $SHOULD_INSTALL_SSL -eq 1 ]; then
echo "=== Installing LetsEncrypt for domain $TO_DOMAIN" echo "=== Installing LetsEncrypt for domain $TO_DOMAIN"
$VESTA/bin/v-add-letsencrypt-domain "$TO_USER" "$TO_DOMAIN" "www.$TO_DOMAIN" "yes" /usr/local/vesta/bin/v-add-letsencrypt-domain "$TO_USER" "$TO_DOMAIN" "www.$TO_DOMAIN" "yes"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "=== LetsEncrypt installation failed" echo "=== LetsEncrypt installation failed"
fi fi
@ -336,18 +287,18 @@ fi
if [ ! -z "$FROM_DOMAIN_TPL" ]; then if [ ! -z "$FROM_DOMAIN_TPL" ]; then
echo "=== Set $FROM_DOMAIN_TPL template to domain $TO_DOMAIN" echo "=== Set $FROM_DOMAIN_TPL template to domain $TO_DOMAIN"
$VESTA/bin/v-change-web-domain-tpl "$TO_USER" "$TO_DOMAIN" "$FROM_DOMAIN_TPL" "yes" /usr/local/vesta/bin/v-change-web-domain-tpl "$TO_USER" "$TO_DOMAIN" "$FROM_DOMAIN_TPL" "yes"
fi fi
if [ ! -z "$FROM_DOMAIN_PROXY_TPL" ]; then if [ ! -z "$FROM_DOMAIN_PROXY_TPL" ]; then
echo "=== Set $FROM_DOMAIN_PROXY_TPL proxy template to domain $TO_DOMAIN" echo "=== Set $FROM_DOMAIN_PROXY_TPL proxy template to domain $TO_DOMAIN"
$VESTA/bin/v-change-web-domain-proxy-tpl "$TO_USER" "$TO_DOMAIN" "$FROM_DOMAIN_PROXY_TPL" "$FROM_DOMAIN_PROXY_EXT" "yes" /usr/local/vesta/bin/v-change-web-domain-proxy-tpl "$TO_USER" "$TO_DOMAIN" "$FROM_DOMAIN_PROXY_TPL" "$FROM_DOMAIN_PROXY_EXT" "yes"
fi fi
object=$(grep "DB='$TO_DATABASE_NAME'" $VESTA/data/users/$TO_USER/db.conf) object=$(grep "DB='$TO_DATABASE_NAME'" $VESTA/data/users/$TO_USER/db.conf)
if [ -z "$object" ]; then if [ -z "$object" ]; then
echo "=== Create database $TO_DATABASE_NAME" echo "=== Create database $TO_DATABASE_NAME"
$VESTA/bin/v-add-database "$TO_USER" "$TO_DATABASE_NAME_WITHOUT_PREFIX" "$TO_DATABASE_USERNAME_WITHOUT_PREFIX" "$TO_DATABASE_PASSWORD" 'mysql' 'localhost' 'utf8' /usr/local/vesta/bin/v-add-database "$TO_USER" "$TO_DATABASE_NAME_WITHOUT_PREFIX" "$TO_DATABASE_USERNAME_WITHOUT_PREFIX" "$TO_DATABASE_PASSWORD" 'mysql' 'localhost' 'utf8'
fi fi
echo "=== Dumping database $FROM_DATABASE_NAME" echo "=== Dumping database $FROM_DATABASE_NAME"
@ -365,21 +316,9 @@ rsync -a --delete $FROM_FOLDER/ $TO_FOLDER/
echo "=== Chowning to $TO_USER:$TO_USER in folder $TO_FOLDER" echo "=== Chowning to $TO_USER:$TO_USER in folder $TO_FOLDER"
chown -R $TO_USER:$TO_USER $TO_FOLDER chown -R $TO_USER:$TO_USER $TO_FOLDER
echo "=== Replacing $FROM_DATABASE_NAME to $TO_DATABASE_NAME in $TO_CONFIG_FILE_FULL_PATH" replace_php_config_value "${FROM_DATABASE_NAME}" "${TO_DATABASE_NAME}" "$TO_CONFIG_FILE_FULL_PATH" "yes"
sed -i "s|'$FROM_DATABASE_NAME'|'$TO_DATABASE_NAME'|g" $TO_CONFIG_FILE_FULL_PATH replace_php_config_value "${FROM_DATABASE_USERNAME}" "${TO_DATABASE_USERNAME}" "$TO_CONFIG_FILE_FULL_PATH" "yes"
sed -i "s|\"$FROM_DATABASE_NAME\"|\"$TO_DATABASE_NAME\"|g" $TO_CONFIG_FILE_FULL_PATH replace_php_config_value "${FROM_DATABASE_PASSWORD}" "${TO_DATABASE_PASSWORD}" "$TO_CONFIG_FILE_FULL_PATH" "yes"
sed -i "s|=$FROM_DATABASE_NAME$|=$TO_DATABASE_NAME|g" $TO_CONFIG_FILE_FULL_PATH
sed -i "s|= $FROM_DATABASE_NAME$|= $TO_DATABASE_NAME|g" $TO_CONFIG_FILE_FULL_PATH
echo "=== Replacing $FROM_DATABASE_USERNAME to $TO_DATABASE_USERNAME in $TO_CONFIG_FILE_FULL_PATH"
sed -i "s|'$FROM_DATABASE_USERNAME'|'$TO_DATABASE_USERNAME'|g" $TO_CONFIG_FILE_FULL_PATH
sed -i "s|\"$FROM_DATABASE_USERNAME\"|\"$TO_DATABASE_USERNAME\"|g" $TO_CONFIG_FILE_FULL_PATH
sed -i "s|=$FROM_DATABASE_USERNAME$|=$TO_DATABASE_USERNAME|g" $TO_CONFIG_FILE_FULL_PATH
sed -i "s|= $FROM_DATABASE_USERNAME$|= $TO_DATABASE_USERNAME|g" $TO_CONFIG_FILE_FULL_PATH
echo "=== Replacing $FROM_DATABASE_PASSWORD to $TO_DATABASE_PASSWORD in $TO_CONFIG_FILE_FULL_PATH"
sed -i "s|'$FROM_DATABASE_PASSWORD'|'$TO_DATABASE_PASSWORD'|g" $TO_CONFIG_FILE_FULL_PATH
sed -i "s|\"$FROM_DATABASE_PASSWORD\"|\"$TO_DATABASE_PASSWORD\"|g" $TO_CONFIG_FILE_FULL_PATH
sed -i "s|=$FROM_DATABASE_PASSWORD$|=$TO_DATABASE_PASSWORD|g" $TO_CONFIG_FILE_FULL_PATH
sed -i "s|= $FROM_DATABASE_PASSWORD$|= $TO_DATABASE_PASSWORD|g" $TO_CONFIG_FILE_FULL_PATH
echo "=== Replacing $FROM_DOMAIN to $TO_DOMAIN in folder $TO_FOLDER" echo "=== Replacing $FROM_DOMAIN to $TO_DOMAIN in folder $TO_FOLDER"
grep -rl "$FROM_DOMAIN" $TO_FOLDER | xargs sed -i "s#$FROM_DOMAIN#$TO_DOMAIN#g" grep -rl "$FROM_DOMAIN" $TO_FOLDER | xargs sed -i "s#$FROM_DOMAIN#$TO_DOMAIN#g"