@@ -31,16 +31,9 @@ if [ ! -e /usr/bin/rsync ] || [ ! -e /usr/bin/file ]; then
3131 echo " rsync not installed, try install it"
3232 echo " This script need: rsync, file"
3333 echo " #######################################"
34- if [ -e /etc/redhat-release ]; then
35- echo " Run: yum install rsync file"
36- else
37- echo " Run: apt-get install rsync file"
38- fi
34+ echo " Run: apt-get install rsync file"
3935 exit 3
4036fi
41- # Default settings
42- # Put this to 0 if you want use bash -x to debug it
43- debug=1
4437
4538if [ -f " $1 " ]; then
4639 cpanel_backup=" $1 "
8477
8578cd $tmpdir /*
8679
87- echo " Get prefix..."
88- user_prefix=$( cat meta/dbprefix)
89-
9080main_dir=$( pwd)
9181echo " Access tmp directory $main_dir "
9282dbprefix=$( cat meta/dbprefix)
93- if [ $dbprefix = 1 ]; then
83+ if [ $dbprefix == 1 ]; then
9484 echo " Error 255 - I dont like your prefix, I dont want do this job"
9585 exit 255
9686fi
@@ -138,26 +128,22 @@ tput sgr0
138128sed -i ' s/\\//g' mysql.sql
139129sed -i " s/\` /'/g" mysql.sql
140130
141- grep " GRANT USAGE ON" mysql.sql | awk -F " '" ' { print $2, $6 }' | uniq > user_password_db
142- # User and database
143- grep " GRANT" mysql.sql | grep -v " USAGE ON" > u_db
144- cat u_db | awk -F " '" ' { print $2, $4 }' | sort | uniq > uni_u_db
145-
146131# # User / Password
147132grep " GRANT USAGE ON" mysql.sql | awk -F " '" ' { print $2, $6 }' | uniq > user_password_db
148133# User and database
149134grep " GRANT" mysql.sql | grep -v " USAGE ON" > u_db
150135cat u_db | awk -F " '" ' { print $2, $4 }' | sort | uniq > uni_u_db
151- sed -i " s/ $user_prefix //g " user_password_db
136+ sed -i " / $new_user /d " user_password_db
152137# Get database list
153138db_list=$( grep -m 1 Database: mysql/* .create | awk ' { print $5 }' )
139+ # Fix mysql 8 to mariadb problems here:
140+ sed -i " s/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g" mysql/*
154141mysql -e " SHOW DATABASES" > server_dbs
155142for db in $db_list ; do
156- grep -w db server_dbs
143+ grep -w $ db server_dbs
157144 if [ $? == " 1" ]; then
158145 echo " Create and restore ${db} "
159146 mysql < mysql/${db} .create
160- sed -i " s/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g" mysql/${db} .sql
161147 mysql ${db} < mysql/${db} .sql
162148 else
163149 echo " Error: Cant restore database $db alredy exists in mysql server"
@@ -173,7 +159,7 @@ cat uni_u_db | while read db userdb; do
173159 # if you use default user in your config files to connect with database
174160 # you will need remove && [ "$userdb" != "$sk_cp_user" ] to restore main user, but
175161 # this will cause database duplication in db.conf and will interfer with hestiacp backups
176- if [ " $userdb " == " $user " ] && [ " $userdb " != " $new_user " ] && [ " $userdb " != " $sk_real_cp_user " ] ; then
162+ if [ " $userdb " == " $user " ] && [ " $userdb " != " $new_user " ]; then
177163 echo " DB='$db ' DBUSER='$userdb ' MD5='$end_user_pass ' HOST='localhost' TYPE='mysql' CHARSET='UTF8' U_DISK='0' SUSPENDED='no' TIME='$time ' DATE='$data '" >> /usr/local/hestia/data/users/$new_user /db.conf
178164 fi
179165 done
@@ -192,11 +178,12 @@ echo "Converting addons domains, subdomains and some other fun"
192178cp sds hst_sds
193179cp sds2 hst_sds2
194180sed -i ' s/_/./g' hst_sds
195- cat addons | while read ddon_domain addon_sub; do
181+ cat addons | while read addon_domain addon_sub; do
196182 echo " Converting default subdomain: $addon_sub in domain: $addon_domain "
197183 sed -i -e " s/$addon_sub /$addon_domain /g" hst_sds
198184 sed -i -e " s/$addon_sub /$addon_domain /g" hst_sds2
199185 mv userdata/$addon_sub userdata/${addon_domain}
186+ mv apache_tls/$addon_sub apache_tls/${addon_domain}
200187done
201188sed -i ' s/public_html/public@html/g; s/_/./g; s/public@html/public_html/g; s/=/ /g' hst_sds2
202189
@@ -285,6 +272,46 @@ else
285272 tput sgr0
286273fi
287274
275+ # Parked domains
276+ if [ -s pds ]; then
277+ cat pds | while read parked
278+ do
279+ echo " Procesing parked domain: $parked "
280+ parkedfor=$( cat userdata/cache.json | jq --arg domain " $parked " ' .[$domain][3]' | sed ' s/"//g' )
281+ $BIN /v-add-web-domain-alias $new_user $parkedfor $parked
282+ done
283+ else
284+
285+ echo " No parked domains found"
286+
287+ fi
288+
289+ # Try SSL
290+ tput setaf 1
291+ echo " Copy SSL files"
292+ tput sgr0
293+ for ssl_domain in apache_tls/*
294+ do
295+ domain=$( echo $ssl_domain | awk -F ' /' ' { print $2 }' )
296+ mkdir -p apache_tls/ssl/$domain
297+ awk -v RS=" -----BEGIN CERTIFICATE-----" -v ssl_domain=" $domain " '
298+ NR==1 {
299+ cert_file = "apache_tls/ssl/" ssl_domain "/" ssl_domain ".key";
300+ print $0 > cert_file;
301+ }
302+ NR==2 {
303+ block_count++;
304+ cert_file = "apache_tls/ssl/" ssl_domain "/" ssl_domain ".crt";
305+ print "-----BEGIN CERTIFICATE-----" $0 > cert_file;
306+ }
307+ NR>2 {
308+ block_count++;
309+ cert_file = "apache_tls/ssl/" ssl_domain "/" ssl_domain ".ca";
310+ print "-----BEGIN CERTIFICATE-----" $0 > cert_file;
311+ } ' $ssl_domain
312+ $BIN /v-add-web-domain-ssl $new_user $domain apache_tls/ssl/${domain} /
313+ done
314+
288315# #################
289316# mail
290317tput setaf 2
@@ -297,6 +324,13 @@ for folder in *; do
297324 if [ -d " $folder " ]; then
298325 if [[ " $folder " != " cur" && " $folder " != " new" && " $folder " != " tmp" ]]; then
299326 echo " Domain: $folder "
327+ # This is needed as parked domains have emails but not added
328+ if ! $BIN /v-list-mail-domains $new_user plain | awk ' { print $1 }' | grep " ^${folder} $" ; then
329+ tput setaf 3
330+ echo " Found Parked domain $folder not added in hestia mail, adding..."
331+ tput sgr0
332+ $BIN /v-add-mail-domain $new_user $folder
333+ fi
300334 cd $folder
301335
302336 mail_account_count=$( find . -maxdepth 1 -mindepth 1 -type d \( ! -name cur ! -name new ! -name tmp \) | wc -l)
@@ -384,10 +418,8 @@ tput setaf 2
384418echo " "
385419echo " Start Restoring Cron Jobs for user $new_user "
386420tput sgr0
387-
388421CRON_DIR=" $main_dir /cron"
389422cd " $CRON_DIR "
390-
391423CRON_FILE=" ${new_user} "
392424if [ -f " $CRON_FILE " ] && [ -s " $CRON_FILE " ]; then
393425 while IFS= read -r cron_job || [ -n " $cron_job " ]; do
@@ -399,7 +431,34 @@ if [ -f "$CRON_FILE" ] && [ -s "$CRON_FILE" ]; then
399431 month=$( echo " $cron_job " | awk ' {print $4}' )
400432 dow=$( echo " $cron_job " | awk ' {print $5}' )
401433 cmd=$( echo " $cron_job " | awk ' {for (i=6; i<=NF; i++) printf $i " "; print ""}' )
402-
434+ # This try fix PHP crons converting cpanel paths to hestia paths
435+ if [[ $cmd =~ " ea-php" ]]; then
436+ EAPHP=$( echo $cmd | awk ' { print $1 }' )
437+ # /opt/cpanel/ea-php70/root/bin/php
438+ # /usr/local/bin/ea-php70
439+ # default hestia /usr/bin/php
440+ DEFAULT_PHP=" /usr/bin/php"
441+ vPHP=" ea-php71 ea-php72 ea-php73 ea-php74 ea-php80 ea-php81 ea-php82 ea-php83"
442+ EAOPT=" opt/cpanel/ea-php"
443+ EABIN=" usr/local/bin/ea"
444+ if [[ $EAPHP =~ $EAOPT ]]; then
445+ EAVERSION=$( echo $EAPHP | awk -F ' /' ' { print $4}' )
446+ elif [[ $EAPHP =~ $EABIN ]]; then
447+ EAVERSION=$( echo $EAPHP | awk -F ' /' ' { print $5}' )
448+ else
449+ echo " Diferent EA Path"
450+ fi
451+ vPHP=$( echo $EAVERSION | sed " s/ea-php//" )
452+ N1=${vPHP: 0: 1}
453+ N2=${vPHP: 1: 1}
454+ vPHP=$( echo /usr/bin/php${N1} .${N2} )
455+
456+ if [ -e $vPHP ]; then
457+ cmd=$( echo $cmd | sed " s#$EAPHP #$vPHP #" )
458+ else
459+ cmd=$( echo $cmd | sed " s#$EAPHP #$DEFAULT_PHP #" )
460+ fi
461+ fi
403462 $BIN /v-add-cron-job $new_user " $min " " $hour " " $day " " $month " " $dow " " $cmd "
404463 done < " $CRON_FILE "
405464 echo " Cron jobs restored for user $new_user ."
0 commit comments