Skip to content

Commit ba924b0

Browse files
author
Kristan Kenney
committed
Merge branch 'bugfix-domain-suspension' into develop
2 parents d093ec9 + 8a6e7d0 commit ba924b0

File tree

9 files changed

+140
-29
lines changed

9 files changed

+140
-29
lines changed

bin/v-rebuild-web-domain

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#!/bin/bash
2+
# info: rebuild web domain
3+
# options: USER DOMAIN [RESTART]
4+
#
5+
# The function rebuilds web configuration files.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument definition
13+
user=$1
14+
domain=$2
15+
restart=$3
16+
17+
# Includes
18+
source $HESTIA/func/main.sh
19+
source $HESTIA/func/domain.sh
20+
source $HESTIA/func/ip.sh
21+
source $HESTIA/func/rebuild.sh
22+
source $HESTIA/conf/hestia.conf
23+
24+
25+
#----------------------------------------------------------#
26+
# Verifications #
27+
#----------------------------------------------------------#
28+
29+
check_args '2' "$#" 'USER DOMAIN [RESTART]'
30+
is_format_valid 'user'
31+
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
32+
is_object_valid 'user' 'USER' "$user"
33+
is_object_unsuspended 'user' 'USER' "$user"
34+
is_object_valid 'web' 'DOMAIN' "$domain"
35+
36+
#----------------------------------------------------------#
37+
# Action #
38+
#----------------------------------------------------------#
39+
40+
# Deleting old web configs
41+
if [ -e "/etc/$WEB_SYSTEM/conf.d/hestia.conf" ]; then
42+
sed -i "/.*\/$user\/conf\/web\//d" /etc/$WEB_SYSTEM/conf.d/hestia.conf
43+
fi
44+
45+
if [ -e "$HOMEDIR/$user/conf/web/$domain/$WEB_SYSTEM.conf" ]; then
46+
rm -f $HOMEDIR/$user/conf/web/$domain/$WEB_SYSTEM.conf
47+
rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.conf
48+
fi
49+
if [ -e "$HOMEDIR/$user/conf/web/$domain/$WEB_SYSTEM.ssl.conf" ]; then
50+
rm $HOMEDIR/$user/conf/web/$domain/$WEB_SYSTEM.ssl.conf
51+
rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.ssl.conf
52+
fi
53+
54+
# Deleting old proxy configs
55+
if [ ! -z "$PROXY_SYSTEM" ]; then
56+
if [ -e "/etc/$PROXY_SYSTEM/conf.d/hestia.conf" ]; then
57+
sed -i "/.*\/$user\/conf\/web\//d" /etc/$PROXY_SYSTEM/conf.d/hestia.conf
58+
fi
59+
60+
if [ -e "$HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.conf" ]; then
61+
rm -f $HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.conf
62+
rm -f /etc/$PROXY_SYSTEM/conf.d/domains/$domain.conf
63+
fi
64+
65+
if [ -e "$HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.ssl.conf" ]; then
66+
rm -f $HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.ssl.conf
67+
rm -f /etc/$PROXY_SYSTEM/conf.d/domains/$domain.ssl.conf
68+
fi
69+
fi
70+
71+
# Deleting backend configs
72+
if [ ! -z "$WEB_BACKEND" ]; then
73+
prepare_web_backend
74+
delete_web_backend
75+
template=$(get_object_value 'web' 'DOMAIN' "$domain" '$BACKEND')
76+
$BIN/v-add-web-domain-backend $user $domain $template $restart
77+
fi
78+
79+
rebuild_web_domain_conf
80+
81+
82+
#----------------------------------------------------------#
83+
# Hestia #
84+
#----------------------------------------------------------#
85+
86+
# Updating user counters
87+
$BIN/v-update-user-counters $user
88+
89+
# Restarting web server
90+
$BIN/v-restart-web $restart
91+
check_result $? "Web restart failed" >/dev/null
92+
93+
$BIN/v-restart-proxy $restart
94+
check_result $? "Proxy restart failed" >/dev/null
95+
96+
# Logging
97+
log_event "$OK" "$ARGUMENTS"
98+
99+
exit

bin/v-suspend-mail-domain

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ if [[ "$MAIL_SYSTEM" =~ exim ]]; then
4747
rm -f /etc/$MAIL_SYSTEM/domains/$domain
4848
fi
4949

50+
# Removing webmail configuration
51+
$BIN/v-delete-webmail $user $domain 'yes'
5052

5153
#----------------------------------------------------------#
5254
# Hestia #

bin/v-suspend-user

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ fi
7777
$BIN/v-restart-web $restart
7878
check_result $? "Web restart failed" >/dev/null
7979

80+
$BIN/v-restart-proxy $restart
81+
check_result $? "Proxy restart failed" >/dev/null
82+
8083
$BIN/v-restart-dns $restart
8184
check_result $? "DNS restart failed" >/dev/null
8285

bin/v-suspend-web-domain

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
7171
fi
7272
fi
7373

74-
7574
#----------------------------------------------------------#
7675
# Hestia #
7776
#----------------------------------------------------------#
@@ -80,6 +79,9 @@ fi
8079
update_object_value 'web' 'DOMAIN' "$domain" '$SUSPENDED' 'yes'
8180
increase_user_value "$user" '$SUSPENDED_WEB'
8281

82+
# Update global configuration files
83+
$BIN/v-rebuild-web-domain $user $domain 'no'
84+
8385
# Restarting web server
8486
$BIN/v-restart-web $restart
8587
check_result $? "Web restart failed" >/dev/null

bin/v-unsuspend-mail-domain

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ if [[ "$MAIL_SYSTEM" =~ exim ]]; then
4646
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/$MAIL_SYSTEM/domains/
4747
fi
4848

49-
5049
#----------------------------------------------------------#
5150
# Hestia #
5251
#----------------------------------------------------------#
@@ -56,6 +55,9 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$SUSPENDED' 'no'
5655
sed -i "s/SUSPENDED='yes'/SUSPENDED='no'/g" $USER_DATA/mail/$domain.conf
5756
decrease_user_value "$user" '$SUSPENDED_MAIL'
5857

58+
# Enable webmail access
59+
$BIN/v-add-webmail $user $domain 'yes'
60+
5961
# Logging
6062
log_event "$OK" "$ARGUMENTS"
6163

bin/v-unsuspend-user

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ decrease_user_value 'admin' '$SUSPENDED_USERS'
8080
$BIN/v-restart-web $restart
8181
check_result $? "Web restart failed" >/dev/null
8282

83+
$BIN/v-restart-proxy $restart
84+
check_result $? "Proxy restart failed" >/dev/null
85+
8386
$BIN/v-restart-dns $restart
8487
check_result $? "DNS restart failed" >/dev/null
8588

bin/v-unsuspend-web-domain

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
6969
fi
7070
fi
7171

72+
# Rebuilding backend configuration
73+
if [ ! -z "$WEB_BACKEND" ]; then
74+
prepare_web_backend
75+
delete_web_backend
76+
template=$(get_object_value 'web' 'DOMAIN' "$domain" '$BACKEND')
77+
$BIN/v-add-web-domain-backend $user $domain $template $restart
78+
fi
7279

7380
#----------------------------------------------------------#
7481
# Hestia #
@@ -78,6 +85,9 @@ fi
7885
update_object_value 'web' 'DOMAIN' "$domain" '$SUSPENDED' 'no'
7986
decrease_user_value "$user" '$SUSPENDED_WEB'
8087

88+
# Update global configuration files
89+
$BIN/v-rebuild-web-domain $user $domain 'no'
90+
8191
# Restarting web server
8292
$BIN/v-restart-web $restart
8393
check_result $? "Web restart failed" >/dev/null

func/domain.sh

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -288,14 +288,6 @@ replace_web_config() {
288288

289289
if [ -e "$conf" ]; then
290290
sed -i "s|$old|$new|g" $conf
291-
else
292-
# fallback to old style configs
293-
conf="$HOMEDIR/$user/conf/web/$1.conf"
294-
if [[ "$2" =~ stpl$ ]]; then
295-
conf="$HOMEDIR/$user/conf/web/s$1.conf"
296-
fi
297-
get_web_config_lines $WEBTPL/$1/$WEB_BACKEND/$2 $conf
298-
sed -i "$top_line,$bottom_line s|$old|$new|g" $conf
299291
fi
300292
}
301293

@@ -307,34 +299,31 @@ del_web_config() {
307299
fi
308300

309301
# Remove domain configuration files and clean up symbolic links
310-
rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.conf
311-
rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.ssl.conf
302+
if [ ! -z "$WEB_SYSTEM" ]; then
303+
rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.conf
304+
rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.ssl.conf
305+
fi
312306
if [ ! -z "$PROXY_SYSTEM" ]; then
313307
rm -f /etc/$PROXY_SYSTEM/conf.d/domains/$domain.conf
314308
rm -f /etc/$PROXY_SYSTEM/conf.d/domains/$domain.ssl.conf
315309
fi
316310

317311
# Clean up legacy configuration files
318-
if [ -e "$conf" ]; then
319-
if [[ "$2" =~ stpl$ ]]; then
320-
rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.ssl.conf
321-
else
322-
rm -f /etc/$WEB_SYSTEM/conf.d/domains/$domain.conf
323-
fi
324-
rm -f $conf
325-
else
326-
# fallback to old style configs
312+
if [ ! -e "$conf" ]; then
327313
conf="$HOMEDIR/$user/conf/web/$1.conf"
328314
if [[ "$2" =~ stpl$ ]]; then
329315
conf="$HOMEDIR/$user/conf/web/s$1.conf"
330316
fi
331-
get_web_config_lines $WEBTPL/$1/$WEB_BACKEND/$2 $conf
332-
sed -i "$top_line,$bottom_line d" $conf
317+
rm -f $conf
318+
319+
# Remove old global includes file
320+
rm -f /etc/$1/conf.d/hestia.conf
333321
fi
334-
# clean-up for both config styles if there is no more domains
322+
323+
# Clean up user web.conf file if no more domains exist
335324
web_domain=$(grep DOMAIN $USER_DATA/web.conf |wc -l)
336325
if [ "$web_domain" -eq '0' ]; then
337-
sed -i "/.*\/$user\/conf\/web\//d" /etc/$1/conf.d/hestia.conf
326+
sed -i "/.*\/$user\/conf\/web\//d"
338327
if [ -f "$conf" ]; then
339328
rm -f $conf
340329
fi

func/rebuild.sh

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,12 @@ rebuild_web_domain_conf() {
160160
prepare_web_domain_values
161161

162162
# Remove old web configuration files
163-
if [ -f /etc/$PROXY_SYSTEM/conf.d/$domain.conf ]; then
164-
rm -f /etc/$PROXY_SYSTEM/conf.d/$domain*.conf
165-
fi
166163
if [ -f /etc/$WEB_SYSTEM/conf.d/$domain.conf ]; then
167164
rm -f /etc/$WEB_SYSTEM/conf.d/$domain*.conf
168165
fi
166+
if [ -f /etc/$PROXY_SYSTEM/conf.d/$domain.conf ]; then
167+
rm -f /etc/$PROXY_SYSTEM/conf.d/$domain*.conf
168+
fi
169169

170170
# Rebuilding domain directories
171171
mkdir -p $HOMEDIR/$user/web/$domain \
@@ -483,9 +483,10 @@ rebuild_mail_domain_conf() {
483483
$HOMEDIR/$user/conf/mail/$domain/dkim.pem
484484
fi
485485

486-
# Removing symbolic link if domain is suspended
486+
# Removing configuration files if domain is suspended
487487
if [ "$SUSPENDED" = 'yes' ]; then
488488
rm -f /etc/exim/domains/$domain_idn
489+
rm -f /etc/dovecot/conf.d/domains/$domain_idn.conf
489490
fi
490491

491492
# Adding mail directiry

0 commit comments

Comments
 (0)