Skip to content

Commit 3c0e021

Browse files
authored
Merge pull request hestiacp#4252 from Skamasle/patch-4
Fix and improve
2 parents 9118194 + 4965cb1 commit 3c0e021

File tree

1 file changed

+83
-25
lines changed

1 file changed

+83
-25
lines changed

bin/v-import-cpanel

Lines changed: 83 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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
4036
fi
41-
# Default settings
42-
# Put this to 0 if you want use bash -x to debug it
43-
debug=1
4437

4538
if [ -f "$1" ]; then
4639
cpanel_backup="$1"
@@ -84,13 +77,10 @@ fi
8477

8578
cd $tmpdir/*
8679

87-
echo "Get prefix..."
88-
user_prefix=$(cat meta/dbprefix)
89-
9080
main_dir=$(pwd)
9181
echo "Access tmp directory $main_dir"
9282
dbprefix=$(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
9686
fi
@@ -138,26 +128,22 @@ tput sgr0
138128
sed -i 's/\\//g' mysql.sql
139129
sed -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
147132
grep "GRANT USAGE ON" mysql.sql | awk -F "'" '{ print $2, $6 }' | uniq > user_password_db
148133
# User and database
149134
grep "GRANT" mysql.sql | grep -v "USAGE ON" > u_db
150135
cat 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
153138
db_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/*
154141
mysql -e "SHOW DATABASES" > server_dbs
155142
for 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"
192178
cp sds hst_sds
193179
cp sds2 hst_sds2
194180
sed -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}
200187
done
201188
sed -i 's/public_html/public@html/g; s/_/./g; s/public@html/public_html/g; s/=/ /g' hst_sds2
202189

@@ -223,6 +210,7 @@ function get_domain_path() {
223210
chown $new_user:$new_user -R /home/$new_user/web/$cp_domain/public_html
224211
chown $new_user:www-data /home/$new_user/web/$cp_domain/public_html
225212
chmod 751 /home/$new_user/web/$cp_domain/public_html
213+
echo "$cp_domain" >> exclude_path
226214
fi
227215
done
228216
}
@@ -285,6 +273,44 @@ else
285273
tput sgr0
286274
fi
287275

276+
# Parked domains
277+
if [ -s pds ]; then
278+
cat pds | while read parked; 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 2
291+
echo "Copy SSL files"
292+
tput sgr0
293+
for ssl_domain in apache_tls/*; do
294+
domain=$(echo $ssl_domain | awk -F '/' '{ print $2 }')
295+
mkdir -p apache_tls/ssl/$domain
296+
awk -v RS="-----BEGIN CERTIFICATE-----" -v ssl_domain="$domain" '
297+
NR==1 {
298+
cert_file = "apache_tls/ssl/" ssl_domain "/" ssl_domain ".key";
299+
print $0 > cert_file;
300+
}
301+
NR==2 {
302+
block_count++;
303+
cert_file = "apache_tls/ssl/" ssl_domain "/" ssl_domain ".crt";
304+
print "-----BEGIN CERTIFICATE-----" $0 > cert_file;
305+
}
306+
NR>2 {
307+
block_count++;
308+
cert_file = "apache_tls/ssl/" ssl_domain "/" ssl_domain ".ca";
309+
print "-----BEGIN CERTIFICATE-----" $0 > cert_file;
310+
} ' $ssl_domain
311+
$BIN/v-add-web-domain-ssl $new_user $domain apache_tls/ssl/${domain}/
312+
done
313+
288314
##################
289315
# mail
290316
tput setaf 2
@@ -297,6 +323,13 @@ for folder in *; do
297323
if [ -d "$folder" ]; then
298324
if [[ "$folder" != "cur" && "$folder" != "new" && "$folder" != "tmp" ]]; then
299325
echo "Domain: $folder"
326+
# This is needed as parked domains have emails but not added
327+
if ! $BIN/v-list-mail-domains $new_user plain | awk '{ print $1 }' | grep "^${folder}$"; then
328+
tput setaf 3
329+
echo "Found Parked domain $folder not added in hestia mail, adding..."
330+
tput sgr0
331+
$BIN/v-add-mail-domain $new_user $folder
332+
fi
300333
cd $folder
301334

302335
mail_account_count=$(find . -maxdepth 1 -mindepth 1 -type d \( ! -name cur ! -name new ! -name tmp \) | wc -l)
@@ -384,10 +417,8 @@ tput setaf 2
384417
echo ""
385418
echo "Start Restoring Cron Jobs for user $new_user"
386419
tput sgr0
387-
388420
CRON_DIR="$main_dir/cron"
389421
cd "$CRON_DIR"
390-
391422
CRON_FILE="${new_user}"
392423
if [ -f "$CRON_FILE" ] && [ -s "$CRON_FILE" ]; then
393424
while IFS= read -r cron_job || [ -n "$cron_job" ]; do
@@ -399,7 +430,34 @@ if [ -f "$CRON_FILE" ] && [ -s "$CRON_FILE" ]; then
399430
month=$(echo "$cron_job" | awk '{print $4}')
400431
dow=$(echo "$cron_job" | awk '{print $5}')
401432
cmd=$(echo "$cron_job" | awk '{for (i=6; i<=NF; i++) printf $i " "; print ""}')
402-
433+
#This try fix PHP crons converting cpanel paths to hestia paths
434+
if [[ $cmd =~ "ea-php" ]]; then
435+
EAPHP=$(echo $cmd | awk '{ print $1 }')
436+
# /opt/cpanel/ea-php70/root/bin/php
437+
# /usr/local/bin/ea-php70
438+
# default hestia /usr/bin/php
439+
DEFAULT_PHP="/usr/bin/php"
440+
vPHP="ea-php71 ea-php72 ea-php73 ea-php74 ea-php80 ea-php81 ea-php82 ea-php83"
441+
EAOPT="opt/cpanel/ea-php"
442+
EABIN="usr/local/bin/ea"
443+
if [[ $EAPHP =~ $EAOPT ]]; then
444+
EAVERSION=$(echo $EAPHP | awk -F '/' '{ print $4}')
445+
elif [[ $EAPHP =~ $EABIN ]]; then
446+
EAVERSION=$(echo $EAPHP | awk -F '/' '{ print $5}')
447+
else
448+
echo "Diferent EA Path"
449+
fi
450+
vPHP=$(echo $EAVERSION | sed "s/ea-php//")
451+
N1=${vPHP:0:1}
452+
N2=${vPHP:1:1}
453+
vPHP=$(echo /usr/bin/php${N1}.${N2})
454+
455+
if [ -e $vPHP ]; then
456+
cmd=$(echo $cmd | sed "s#$EAPHP#$vPHP#")
457+
else
458+
cmd=$(echo $cmd | sed "s#$EAPHP#$DEFAULT_PHP#")
459+
fi
460+
fi
403461
$BIN/v-add-cron-job $new_user "$min" "$hour" "$day" "$month" "$dow" "$cmd"
404462
done < "$CRON_FILE"
405463
echo "Cron jobs restored for user $new_user."

0 commit comments

Comments
 (0)