Przeglądaj źródła

Fix #2617 #1864 v-change-domain-owner bug(s) (#2618)

* Fix bug with v-change-domain-owner
* Fix issue with dedicated ip and removing the owner after
* Fix #1864 Check for custom docroot
* Fix broken test + Sync with main
Jaap Marcus 3 lat temu
rodzic
commit
f6aaaeae73
3 zmienionych plików z 96 dodań i 16 usunięć
  1. 43 3
      bin/v-change-domain-owner
  2. 2 2
      func/ip.sh
  3. 51 11
      test/test.bats

+ 43 - 3
bin/v-change-domain-owner

@@ -56,12 +56,42 @@ if [ -n "$web_data" ]; then
     echo "[*] Moving web domain..."
     echo "[*] Moving web domain..."
     $BIN/v-suspend-web-domain "$owner" "$domain" >> /dev/null 2>&1
     $BIN/v-suspend-web-domain "$owner" "$domain" >> /dev/null 2>&1
     parse_object_kv_list "$web_data"
     parse_object_kv_list "$web_data"
-
+    
+    if [ -n "$CUSTOM_DOCROOT" ]; then 
+        if [ -z $(echo $CUSTOM_DOCROOT | grep -i "/home/$owner/web/$domain") ]; then
+            docdomain=$(echo "$CUSTOM_DOCROOT" | cut -d'/' -f5)
+            $BIN/v-list-web-domain $user $docdomain > /dev/null
+            if [ "$?" != 0 ]; then
+                echo "Error: Target domain doesn't belong to the new user";
+                exit $E_NOTEXIST;
+            fi
+            new_docroot=$(echo $CUSTOM_DOCROOT | sed "s/\/home\/$owner/\/home\/$user/");
+            new_php_docroot=$(echo $CUSTOM_PHPROOT | sed "s/\/home\/$owner/\/home\/$user/");
+            
+        else
+            new_docroot=$(echo $CUSTOM_DOCROOT | sed "s/\/home\/$owner/\/home\/$user/");
+            new_php_docroot=$(echo $CUSTOM_PHPROOT | sed "s/\/home\/$owner/\/home\/$user/");
+        fi
+    fi
+    
+    if [ -z "$(echo $(get_user_ips) | grep $IP)" ]; then
+        echo "[*] IP dedicated to $owner select new ip adress..."
+        get_user_ip
+    fi 
+    old_ip=$IP;
+    new_ip=$ip; 
+    echo $ip;
+    
     # Change IP
     # Change IP
     if [ -n "$ip" ]; then
     if [ -n "$ip" ]; then
         web_data=$(echo "$web_data" | sed "s/IP='$IP'/IP='$ip'/")
         web_data=$(echo "$web_data" | sed "s/IP='$IP'/IP='$ip'/")
     fi
     fi
-
+    if [ -n "$new_docroot" ]; then
+        web_data=$(echo "$web_data" | sed "s|CUSTOM_DOCROOT='$CUSTOM_DOCROOT'|CUSTOM_DOCROOT='$new_docroot'|")
+        web_data=$(echo "$web_data" | sed "s|CUSTOM_PHPROOT='$CUSTOM_PHPROOT'|CUSTOM_PHPROOT='$new_php_docroot'|")
+    fi
+    web_data=$(echo "$web_data" | sed "s/SUSPENDED='no'/SUSPENDED='yes'/")
+    
     # Check SSL
     # Check SSL
     if [ "$SSL" = 'yes' ]; then
     if [ "$SSL" = 'yes' ]; then
         ssl_crt=$HESTIA/data/users/$owner/ssl/$domain.crt
         ssl_crt=$HESTIA/data/users/$owner/ssl/$domain.crt
@@ -244,9 +274,10 @@ if [ -n "$mail_data" ]; then
     if [ -e "$HESTIA/data/users/$owner/mail/$domain.conf" ]; then
     if [ -e "$HESTIA/data/users/$owner/mail/$domain.conf" ]; then
         rm -f "$HESTIA/data/users/$owner/mail/$domain.conf"
         rm -f "$HESTIA/data/users/$owner/mail/$domain.conf"
     fi
     fi
+    
 
 
     # Rebuild config
     # Rebuild config
-    $BIN/v-unsuspend-mail-domain "$user" "$domain" no >> /dev/null 2>&1
+    $BIN/v-unsuspend-mail-domain "$user" "$domain" no
     $BIN/v-rebuild-mail-domains "$owner" no
     $BIN/v-rebuild-mail-domains "$owner" no
     $BIN/v-rebuild-mail-domains "$user"
     $BIN/v-rebuild-mail-domains "$user"
 fi
 fi
@@ -255,6 +286,15 @@ fi
 $BIN/v-update-user-counters "$owner"
 $BIN/v-update-user-counters "$owner"
 $BIN/v-update-user-counters "$user"
 $BIN/v-update-user-counters "$user"
 
 
+# Recalculate ip usage 
+if [ -n "$ip" ]; then
+    decrease_ip_value $old_ip $owner
+    increase_ip_value $new_ip 
+else
+    # recalculate ip 
+    decrease_ip_value $old_ip $owner
+    increase_ip_value $old_ip 
+fi
 # Send notification to panel
 # Send notification to panel
 if [ -n "$web_data" ] || [ -n "$dns_data" ] || [ -n "$mail_data" ]; then
 if [ -n "$web_data" ] || [ -n "$dns_data" ] || [ -n "$mail_data" ]; then
     $HESTIA/bin/v-add-user-notification "$user" "$domain has been added to your account" ''
     $HESTIA/bin/v-add-user-notification "$user" "$domain has been added to your account" ''

+ 2 - 2
func/ip.sh

@@ -90,7 +90,7 @@ get_ip_alias() {
 # Increase ip value
 # Increase ip value
 increase_ip_value() {
 increase_ip_value() {
     sip=${1-ip}
     sip=${1-ip}
-    USER=$user
+    USER=${2-$user}
     web_key='U_WEB_DOMAINS'
     web_key='U_WEB_DOMAINS'
     usr_key='U_SYS_USERS'
     usr_key='U_SYS_USERS'
     current_web=$(grep "$web_key=" $HESTIA/data/ips/$sip |cut -f 2 -d \')
     current_web=$(grep "$web_key=" $HESTIA/data/ips/$sip |cut -f 2 -d \')
@@ -127,7 +127,7 @@ increase_ip_value() {
 # Decrease ip value
 # Decrease ip value
 decrease_ip_value() {
 decrease_ip_value() {
     sip=${1-ip}
     sip=${1-ip}
-    USER=$user
+    local user=${2-$user}
     web_key='U_WEB_DOMAINS'
     web_key='U_WEB_DOMAINS'
     usr_key='U_SYS_USERS'
     usr_key='U_SYS_USERS'
 
 

+ 51 - 11
test/test.bats

@@ -1457,6 +1457,10 @@ function check_ip_not_banned(){
     validate_mail_domain $user $domain
     validate_mail_domain $user $domain
     
     
     validate_webmail_domain $user $domain 'Success!'
     validate_webmail_domain $user $domain 'Success!'
+    
+    run v-add-mail-domain-webmail $user $domain "roundcube" "yes"
+    assert_success
+    refute_output
 } 
 } 
 
 
 @test "MAIL: Add domain (duplicate)" {
 @test "MAIL: Add domain (duplicate)" {
@@ -1649,11 +1653,6 @@ function check_ip_not_banned(){
     assert_success
     assert_success
     refute_output
     refute_output
 }
 }
-@test "Allow Users: Delete user2" {
-    run v-delete-user $user2
-    assert_success
-    refute_output
-}
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #                         DB                               #
 #                         DB                               #
@@ -1985,41 +1984,74 @@ echo   "1.2.3.4" >> $HESTIA/data/firewall/excludes.conf
 #                         Backup user                      #
 #                         Backup user                      #
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
-@test "Backup user" {
+@test "Backup: Backup user" {
   run v-backup-user $user
   run v-backup-user $user
   assert_success
   assert_success
 }
 }
 
 
-@test "List Backups" {
+@test "Backup: List Backups" {
   run v-list-user-backups $user plain
   run v-list-user-backups $user plain
   assert_success
   assert_success
   assert_output --partial "$user"
   assert_output --partial "$user"
 }
 }
 
 
-@test "Delete backups" {
+@test "Backup: Delete backups" {
   run v-delete-user-backup $user $(v-list-user-backups $user plain | cut -f1)
   run v-delete-user-backup $user $(v-list-user-backups $user plain | cut -f1)
   assert_success
   assert_success
   run rm /backup/$user.log
   run rm /backup/$user.log
 }
 }
 
 
+#----------------------------------------------------------#
+#                  Change owner scripts                    #
+#----------------------------------------------------------#
+
+@test "Change: Change domain owner" {
+    run v-change-domain-owner $domain $user2 
+    assert_success
+    
+    run v-restart-web
+    run v-restart-proxy
+     
+}
+
+@test "Change: Add database" {
+    run v-add-database $user database dbuser 1234 mysql
+    assert_success
+    refute_output
+    # validate_database mysql database_name database_user password
+    validate_database mysql $database $dbuser 1234
+}
+
+@test "Change: Change database owner" {
+    run v-change-database-owner $database $user2 
+    assert_success
+    validate_database mysql test-5286_database test-5286_dbuser 1234
+}
+
+@test "Change: Delete database" {
+    run v-delete-database $user2 test-5286_database
+    assert_success
+    refute_output
+}
+
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #                         CLEANUP                          #
 #                         CLEANUP                          #
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
 @test "Mail: Delete domain" {
 @test "Mail: Delete domain" {
-    run v-delete-mail-domain $user $domain
+    run v-delete-mail-domain $user2 $domain
     assert_success
     assert_success
     refute_output
     refute_output
 }
 }
 
 
 @test "DNS: Delete domain" {
 @test "DNS: Delete domain" {
-    run v-delete-dns-domain $user $domain
+    run v-delete-dns-domain $user2 $domain
     assert_success
     assert_success
     refute_output
     refute_output
 }
 }
 
 
 @test "WEB: Delete domain" {
 @test "WEB: Delete domain" {
-    run v-delete-web-domain $user $domain
+    run v-delete-web-domain $user2 $domain
     assert_success
     assert_success
     refute_output
     refute_output
 }
 }
@@ -2030,6 +2062,14 @@ echo   "1.2.3.4" >> $HESTIA/data/firewall/excludes.conf
     refute_output
     refute_output
 }
 }
 
 
+@test "Delete user2" {
+    run v-delete-user $user2
+    assert_success
+    refute_output
+}
+
+
+
 @test "Ip: Delete the test IP" {
 @test "Ip: Delete the test IP" {
     run v-delete-sys-ip 198.18.0.125
     run v-delete-sys-ip 198.18.0.125
     assert_success
     assert_success