Skip to content

Commit f6aaaea

Browse files
authored
Fix hestiacp#2617 hestiacp#1864 v-change-domain-owner bug(s) (hestiacp#2618)
* Fix bug with v-change-domain-owner * Fix issue with dedicated ip and removing the owner after * Fix hestiacp#1864 Check for custom docroot * Fix broken test + Sync with main
1 parent 150f64a commit f6aaaea

File tree

3 files changed

+96
-16
lines changed

3 files changed

+96
-16
lines changed

bin/v-change-domain-owner

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,42 @@ if [ -n "$web_data" ]; then
5656
echo "[*] Moving web domain..."
5757
$BIN/v-suspend-web-domain "$owner" "$domain" >> /dev/null 2>&1
5858
parse_object_kv_list "$web_data"
59-
59+
60+
if [ -n "$CUSTOM_DOCROOT" ]; then
61+
if [ -z $(echo $CUSTOM_DOCROOT | grep -i "/home/$owner/web/$domain") ]; then
62+
docdomain=$(echo "$CUSTOM_DOCROOT" | cut -d'/' -f5)
63+
$BIN/v-list-web-domain $user $docdomain > /dev/null
64+
if [ "$?" != 0 ]; then
65+
echo "Error: Target domain doesn't belong to the new user";
66+
exit $E_NOTEXIST;
67+
fi
68+
new_docroot=$(echo $CUSTOM_DOCROOT | sed "s/\/home\/$owner/\/home\/$user/");
69+
new_php_docroot=$(echo $CUSTOM_PHPROOT | sed "s/\/home\/$owner/\/home\/$user/");
70+
71+
else
72+
new_docroot=$(echo $CUSTOM_DOCROOT | sed "s/\/home\/$owner/\/home\/$user/");
73+
new_php_docroot=$(echo $CUSTOM_PHPROOT | sed "s/\/home\/$owner/\/home\/$user/");
74+
fi
75+
fi
76+
77+
if [ -z "$(echo $(get_user_ips) | grep $IP)" ]; then
78+
echo "[*] IP dedicated to $owner select new ip adress..."
79+
get_user_ip
80+
fi
81+
old_ip=$IP;
82+
new_ip=$ip;
83+
echo $ip;
84+
6085
# Change IP
6186
if [ -n "$ip" ]; then
6287
web_data=$(echo "$web_data" | sed "s/IP='$IP'/IP='$ip'/")
6388
fi
64-
89+
if [ -n "$new_docroot" ]; then
90+
web_data=$(echo "$web_data" | sed "s|CUSTOM_DOCROOT='$CUSTOM_DOCROOT'|CUSTOM_DOCROOT='$new_docroot'|")
91+
web_data=$(echo "$web_data" | sed "s|CUSTOM_PHPROOT='$CUSTOM_PHPROOT'|CUSTOM_PHPROOT='$new_php_docroot'|")
92+
fi
93+
web_data=$(echo "$web_data" | sed "s/SUSPENDED='no'/SUSPENDED='yes'/")
94+
6595
# Check SSL
6696
if [ "$SSL" = 'yes' ]; then
6797
ssl_crt=$HESTIA/data/users/$owner/ssl/$domain.crt
@@ -244,9 +274,10 @@ if [ -n "$mail_data" ]; then
244274
if [ -e "$HESTIA/data/users/$owner/mail/$domain.conf" ]; then
245275
rm -f "$HESTIA/data/users/$owner/mail/$domain.conf"
246276
fi
277+
247278

248279
# Rebuild config
249-
$BIN/v-unsuspend-mail-domain "$user" "$domain" no >> /dev/null 2>&1
280+
$BIN/v-unsuspend-mail-domain "$user" "$domain" no
250281
$BIN/v-rebuild-mail-domains "$owner" no
251282
$BIN/v-rebuild-mail-domains "$user"
252283
fi
@@ -255,6 +286,15 @@ fi
255286
$BIN/v-update-user-counters "$owner"
256287
$BIN/v-update-user-counters "$user"
257288

289+
# Recalculate ip usage
290+
if [ -n "$ip" ]; then
291+
decrease_ip_value $old_ip $owner
292+
increase_ip_value $new_ip
293+
else
294+
# recalculate ip
295+
decrease_ip_value $old_ip $owner
296+
increase_ip_value $old_ip
297+
fi
258298
# Send notification to panel
259299
if [ -n "$web_data" ] || [ -n "$dns_data" ] || [ -n "$mail_data" ]; then
260300
$HESTIA/bin/v-add-user-notification "$user" "$domain has been added to your account" ''

func/ip.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ get_ip_alias() {
9090
# Increase ip value
9191
increase_ip_value() {
9292
sip=${1-ip}
93-
USER=$user
93+
USER=${2-$user}
9494
web_key='U_WEB_DOMAINS'
9595
usr_key='U_SYS_USERS'
9696
current_web=$(grep "$web_key=" $HESTIA/data/ips/$sip |cut -f 2 -d \')
@@ -127,7 +127,7 @@ increase_ip_value() {
127127
# Decrease ip value
128128
decrease_ip_value() {
129129
sip=${1-ip}
130-
USER=$user
130+
local user=${2-$user}
131131
web_key='U_WEB_DOMAINS'
132132
usr_key='U_SYS_USERS'
133133

test/test.bats

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,6 +1457,10 @@ function check_ip_not_banned(){
14571457
validate_mail_domain $user $domain
14581458

14591459
validate_webmail_domain $user $domain 'Success!'
1460+
1461+
run v-add-mail-domain-webmail $user $domain "roundcube" "yes"
1462+
assert_success
1463+
refute_output
14601464
}
14611465

14621466
@test "MAIL: Add domain (duplicate)" {
@@ -1649,11 +1653,6 @@ function check_ip_not_banned(){
16491653
assert_success
16501654
refute_output
16511655
}
1652-
@test "Allow Users: Delete user2" {
1653-
run v-delete-user $user2
1654-
assert_success
1655-
refute_output
1656-
}
16571656

16581657
#----------------------------------------------------------#
16591658
# DB #
@@ -1985,41 +1984,74 @@ echo "1.2.3.4" >> $HESTIA/data/firewall/excludes.conf
19851984
# Backup user #
19861985
#----------------------------------------------------------#
19871986

1988-
@test "Backup user" {
1987+
@test "Backup: Backup user" {
19891988
run v-backup-user $user
19901989
assert_success
19911990
}
19921991

1993-
@test "List Backups" {
1992+
@test "Backup: List Backups" {
19941993
run v-list-user-backups $user plain
19951994
assert_success
19961995
assert_output --partial "$user"
19971996
}
19981997

1999-
@test "Delete backups" {
1998+
@test "Backup: Delete backups" {
20001999
run v-delete-user-backup $user $(v-list-user-backups $user plain | cut -f1)
20012000
assert_success
20022001
run rm /backup/$user.log
20032002
}
20042003

2004+
#----------------------------------------------------------#
2005+
# Change owner scripts #
2006+
#----------------------------------------------------------#
2007+
2008+
@test "Change: Change domain owner" {
2009+
run v-change-domain-owner $domain $user2
2010+
assert_success
2011+
2012+
run v-restart-web
2013+
run v-restart-proxy
2014+
2015+
}
2016+
2017+
@test "Change: Add database" {
2018+
run v-add-database $user database dbuser 1234 mysql
2019+
assert_success
2020+
refute_output
2021+
# validate_database mysql database_name database_user password
2022+
validate_database mysql $database $dbuser 1234
2023+
}
2024+
2025+
@test "Change: Change database owner" {
2026+
run v-change-database-owner $database $user2
2027+
assert_success
2028+
validate_database mysql test-5286_database test-5286_dbuser 1234
2029+
}
2030+
2031+
@test "Change: Delete database" {
2032+
run v-delete-database $user2 test-5286_database
2033+
assert_success
2034+
refute_output
2035+
}
2036+
20052037
#----------------------------------------------------------#
20062038
# CLEANUP #
20072039
#----------------------------------------------------------#
20082040

20092041
@test "Mail: Delete domain" {
2010-
run v-delete-mail-domain $user $domain
2042+
run v-delete-mail-domain $user2 $domain
20112043
assert_success
20122044
refute_output
20132045
}
20142046

20152047
@test "DNS: Delete domain" {
2016-
run v-delete-dns-domain $user $domain
2048+
run v-delete-dns-domain $user2 $domain
20172049
assert_success
20182050
refute_output
20192051
}
20202052

20212053
@test "WEB: Delete domain" {
2022-
run v-delete-web-domain $user $domain
2054+
run v-delete-web-domain $user2 $domain
20232055
assert_success
20242056
refute_output
20252057
}
@@ -2030,6 +2062,14 @@ echo "1.2.3.4" >> $HESTIA/data/firewall/excludes.conf
20302062
refute_output
20312063
}
20322064

2065+
@test "Delete user2" {
2066+
run v-delete-user $user2
2067+
assert_success
2068+
refute_output
2069+
}
2070+
2071+
2072+
20332073
@test "Ip: Delete the test IP" {
20342074
run v-delete-sys-ip 198.18.0.125
20352075
assert_success

0 commit comments

Comments
 (0)