Browse Source

Merge branch 'bugfix-domain-suspension' into develop

Kristan Kenney 6 years ago
parent
commit
ba924b0573

+ 99 - 0
bin/v-rebuild-web-domain

@@ -0,0 +1,99 @@
+#!/bin/bash
+# info: rebuild web domain
+# options: USER DOMAIN [RESTART]
+#
+# The function rebuilds web configuration files.
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Argument definition
+user=$1
+domain=$2
+restart=$3
+
+# Includes
+source $HESTIA/func/main.sh
+source $HESTIA/func/domain.sh
+source $HESTIA/func/ip.sh
+source $HESTIA/func/rebuild.sh
+source $HESTIA/conf/hestia.conf
+
+
+#----------------------------------------------------------#
+#                    Verifications                         #
+#----------------------------------------------------------#
+
+check_args '2' "$#" 'USER DOMAIN [RESTART]'
+is_format_valid 'user'
+is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
+is_object_valid 'user' 'USER' "$user"
+is_object_unsuspended 'user' 'USER' "$user"
+is_object_valid 'web' 'DOMAIN' "$domain"
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+# Deleting old web configs
+if [ -e "/etc/$WEB_SYSTEM/conf.d/hestia.conf" ]; then
+    sed -i "/.*\/$user\/conf\/web\//d" /etc/$WEB_SYSTEM/conf.d/hestia.conf
+fi
+
+if [ -e "$HOMEDIR/$user/conf/web/$domain/$WEB_SYSTEM.conf" ]; then
+    rm -f $HOMEDIR/$user/conf/web/$domain/$WEB_SYSTEM.conf
+    rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.conf
+fi
+if [ -e "$HOMEDIR/$user/conf/web/$domain/$WEB_SYSTEM.ssl.conf" ]; then
+    rm $HOMEDIR/$user/conf/web/$domain/$WEB_SYSTEM.ssl.conf
+    rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.ssl.conf
+fi
+
+# Deleting old proxy configs
+if [ ! -z "$PROXY_SYSTEM" ]; then
+    if [ -e "/etc/$PROXY_SYSTEM/conf.d/hestia.conf" ]; then
+        sed -i "/.*\/$user\/conf\/web\//d" /etc/$PROXY_SYSTEM/conf.d/hestia.conf
+    fi
+
+    if [ -e "$HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.conf" ]; then
+        rm -f $HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.conf
+        rm -f /etc/$PROXY_SYSTEM/conf.d/domains/$domain.conf
+    fi
+
+    if [ -e "$HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.ssl.conf" ]; then
+        rm -f $HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.ssl.conf
+        rm -f /etc/$PROXY_SYSTEM/conf.d/domains/$domain.ssl.conf
+    fi
+fi
+
+# Deleting backend configs
+if [ ! -z "$WEB_BACKEND" ]; then
+    prepare_web_backend
+    delete_web_backend
+    template=$(get_object_value 'web' 'DOMAIN' "$domain" '$BACKEND')
+    $BIN/v-add-web-domain-backend $user $domain $template $restart
+fi
+
+rebuild_web_domain_conf
+
+
+#----------------------------------------------------------#
+#                       Hestia                             #
+#----------------------------------------------------------#
+
+# Updating user counters
+$BIN/v-update-user-counters $user
+
+# Restarting web server
+$BIN/v-restart-web $restart
+check_result $? "Web restart failed" >/dev/null
+
+$BIN/v-restart-proxy $restart
+check_result $? "Proxy restart failed" >/dev/null
+
+# Logging
+log_event "$OK" "$ARGUMENTS"
+
+exit

+ 2 - 0
bin/v-suspend-mail-domain

@@ -47,6 +47,8 @@ if [[ "$MAIL_SYSTEM" =~ exim ]]; then
     rm -f /etc/$MAIL_SYSTEM/domains/$domain
 fi
 
+# Removing webmail configuration
+$BIN/v-delete-webmail $user $domain 'yes'
 
 #----------------------------------------------------------#
 #                       Hestia                             #

+ 3 - 0
bin/v-suspend-user

@@ -77,6 +77,9 @@ fi
 $BIN/v-restart-web $restart
 check_result $? "Web restart failed" >/dev/null
 
+$BIN/v-restart-proxy $restart
+check_result $? "Proxy restart failed" >/dev/null
+
 $BIN/v-restart-dns $restart
 check_result $? "DNS restart failed" >/dev/null
 

+ 3 - 1
bin/v-suspend-web-domain

@@ -71,7 +71,6 @@ if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
     fi
 fi
 
-
 #----------------------------------------------------------#
 #                       Hestia                             #
 #----------------------------------------------------------#
@@ -80,6 +79,9 @@ fi
 update_object_value 'web' 'DOMAIN' "$domain" '$SUSPENDED' 'yes'
 increase_user_value "$user" '$SUSPENDED_WEB'
 
+# Update global configuration files
+$BIN/v-rebuild-web-domain $user $domain 'no'
+
 # Restarting web server
 $BIN/v-restart-web $restart
 check_result $? "Web restart failed" >/dev/null

+ 3 - 1
bin/v-unsuspend-mail-domain

@@ -46,7 +46,6 @@ if [[ "$MAIL_SYSTEM" =~ exim ]]; then
     ln -s $HOMEDIR/$user/conf/mail/$domain /etc/$MAIL_SYSTEM/domains/
 fi
 
-
 #----------------------------------------------------------#
 #                       Hestia                             #
 #----------------------------------------------------------#
@@ -56,6 +55,9 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$SUSPENDED' 'no'
 sed -i "s/SUSPENDED='yes'/SUSPENDED='no'/g" $USER_DATA/mail/$domain.conf
 decrease_user_value "$user" '$SUSPENDED_MAIL'
 
+# Enable webmail access
+$BIN/v-add-webmail $user $domain 'yes'
+
 # Logging
 log_event "$OK" "$ARGUMENTS"
 

+ 3 - 0
bin/v-unsuspend-user

@@ -80,6 +80,9 @@ decrease_user_value 'admin' '$SUSPENDED_USERS'
 $BIN/v-restart-web $restart
 check_result $? "Web restart failed" >/dev/null
 
+$BIN/v-restart-proxy $restart
+check_result $? "Proxy restart failed" >/dev/null
+
 $BIN/v-restart-dns $restart
 check_result $? "DNS restart failed" >/dev/null
 

+ 10 - 0
bin/v-unsuspend-web-domain

@@ -69,6 +69,13 @@ if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
     fi
 fi
 
+# Rebuilding backend configuration
+if [ ! -z "$WEB_BACKEND" ]; then
+    prepare_web_backend
+    delete_web_backend
+    template=$(get_object_value 'web' 'DOMAIN' "$domain" '$BACKEND')
+    $BIN/v-add-web-domain-backend $user $domain $template $restart
+fi
 
 #----------------------------------------------------------#
 #                       Hestia                             #
@@ -78,6 +85,9 @@ fi
 update_object_value 'web' 'DOMAIN' "$domain" '$SUSPENDED' 'no'
 decrease_user_value "$user" '$SUSPENDED_WEB'
 
+# Update global configuration files
+$BIN/v-rebuild-web-domain $user $domain 'no'
+
 # Restarting web server
 $BIN/v-restart-web $restart
 check_result $? "Web restart failed" >/dev/null

+ 12 - 23
func/domain.sh

@@ -288,14 +288,6 @@ replace_web_config() {
 
     if [ -e "$conf" ]; then
         sed -i  "s|$old|$new|g" $conf
-    else
-        # fallback to old style configs
-        conf="$HOMEDIR/$user/conf/web/$1.conf"
-        if [[ "$2" =~ stpl$ ]]; then
-            conf="$HOMEDIR/$user/conf/web/s$1.conf"
-        fi
-        get_web_config_lines $WEBTPL/$1/$WEB_BACKEND/$2 $conf
-        sed -i  "$top_line,$bottom_line s|$old|$new|g" $conf
     fi
 }
 
@@ -307,34 +299,31 @@ del_web_config() {
     fi
 
     # Remove domain configuration files and clean up symbolic links
-    rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.conf
-    rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.ssl.conf
+    if [ ! -z "$WEB_SYSTEM" ]; then
+        rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.conf
+        rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.ssl.conf
+    fi
     if [ ! -z "$PROXY_SYSTEM" ]; then
         rm -f /etc/$PROXY_SYSTEM/conf.d/domains/$domain.conf 
         rm -f /etc/$PROXY_SYSTEM/conf.d/domains/$domain.ssl.conf 
     fi
 
     # Clean up legacy configuration files
-    if [ -e "$conf" ]; then
-        if [[ "$2" =~ stpl$ ]]; then
-            rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.ssl.conf
-        else
-            rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.conf
-        fi
-        rm -f $conf
-    else
-        # fallback to old style configs
+    if [ ! -e "$conf" ]; then
         conf="$HOMEDIR/$user/conf/web/$1.conf"
         if [[ "$2" =~ stpl$ ]]; then
             conf="$HOMEDIR/$user/conf/web/s$1.conf"
         fi
-        get_web_config_lines $WEBTPL/$1/$WEB_BACKEND/$2 $conf
-        sed -i "$top_line,$bottom_line d" $conf
+        rm -f $conf
+
+        # Remove old global includes file
+        rm -f /etc/$1/conf.d/hestia.conf
     fi
-    # clean-up for both config styles if there is no more domains
+
+    # Clean up user web.conf file if no more domains exist
     web_domain=$(grep DOMAIN $USER_DATA/web.conf |wc -l)
     if [ "$web_domain" -eq '0' ]; then
-        sed -i "/.*\/$user\/conf\/web\//d" /etc/$1/conf.d/hestia.conf
+        sed -i "/.*\/$user\/conf\/web\//d" 
         if [ -f "$conf" ]; then
             rm -f $conf
         fi

+ 5 - 4
func/rebuild.sh

@@ -160,12 +160,12 @@ rebuild_web_domain_conf() {
     prepare_web_domain_values
 
     # Remove old web configuration files
-    if [ -f /etc/$PROXY_SYSTEM/conf.d/$domain.conf ]; then
-        rm -f /etc/$PROXY_SYSTEM/conf.d/$domain*.conf
-    fi
     if [ -f /etc/$WEB_SYSTEM/conf.d/$domain.conf ]; then
         rm -f /etc/$WEB_SYSTEM/conf.d/$domain*.conf
     fi
+    if [ -f /etc/$PROXY_SYSTEM/conf.d/$domain.conf ]; then
+        rm -f /etc/$PROXY_SYSTEM/conf.d/$domain*.conf
+    fi
 
     # Rebuilding domain directories
     mkdir -p $HOMEDIR/$user/web/$domain \
@@ -483,9 +483,10 @@ rebuild_mail_domain_conf() {
                 $HOMEDIR/$user/conf/mail/$domain/dkim.pem
         fi
 
-        # Removing symbolic link if domain is suspended
+        # Removing configuration files if domain is suspended
         if [ "$SUSPENDED" = 'yes' ]; then
             rm -f /etc/exim/domains/$domain_idn
+            rm -f /etc/dovecot/conf.d/domains/$domain_idn.conf
         fi
 
         # Adding mail directiry