Skip to content

Commit 4b44937

Browse files
committed
improved rebuilds
1 parent b825490 commit 4b44937

File tree

9 files changed

+370
-27
lines changed

9 files changed

+370
-27
lines changed

bin/v_add_user

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,7 @@ package_data=$(cat $VESTA/data/packages/$package.pkg)
5454

5555
# Checking shell
5656
shell_conf=$(echo "$package_data" | grep 'SHELL' | cut -f 2 -d \')
57-
case $shell_conf in
58-
nologin) shell='/sbin/nologin' ;;
59-
bash) shell='/bin/bash' ;;
60-
sh) shell='/bin/bash' ;;
61-
*) shell='/sbin/nologin' ;;
62-
esac
57+
shell=$(/usr/bin/chsh --list-shells | grep -w "$shell_conf" |head -n1)
6358

6459
# Adding user
6560
/usr/sbin/adduser "$user" -s "$shell" -c "$email" -m -d "$HOMEDIR/$user"
@@ -143,13 +138,13 @@ if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
143138
chmod 770 $USER_DATA/mail
144139
touch $USER_DATA/mail.conf
145140
chmod 660 $USER_DATA/mail.conf
146-
echo "v_upd_mail_domains_disk $user" >> $VESTA/data/queue/disk.pipe
141+
echo "v_update_mail_domains_disk $user" >> $VESTA/data/queue/disk.pipe
147142
fi
148143

149144
if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
150145
touch $USER_DATA/db.conf
151146
chmod 660 $USER_DATA/db.conf
152-
echo "v_update_db_bases_disk $user" >> $VESTA/data/queue/disk.pipe
147+
echo "v_update_databases_disk $user" >> $VESTA/data/queue/disk.pipe
153148
fi
154149

155150
if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then

bin/v_add_web_domain_stats_user

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ is_object_value_exist 'web' 'DOMAIN' "$domain" '$STATS'
4343
stats_dir="$HOMEDIR/$user/web/$domain/stats"
4444

4545
# Adding htaccess file
46-
rm -f $stats_dir/.htaccess
4746
echo "AuthUserFile $stats_dir/.htpasswd
4847
AuthName \"Web Statistics\"
4948
AuthType Basic

bin/v_list_sys_ips

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ conf=$VESTA/data/ips/*
7777
fields="\$IP \$OWNER \$STATUS \$NAME \$U_SYS_USERS \$U_WEB_DOMAINS"
7878
fields="$fields \$INTERFACE \$NETMASK \$DATE"
7979

80-
# Listing domains
80+
# Listing ip addresses
8181
case $format in
8282
json) json_list_ips ;;
8383
plain) nohead=1; shell_list_ips ;;

bin/v_rebuild_databases

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/bash
2+
# info: rebuild databases
3+
# options: user
4+
#
5+
# The function for rebuilding of all databases of a single user.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument defenition
13+
user=$1
14+
15+
# Includes
16+
source $VESTA/conf/vesta.conf
17+
source $VESTA/func/shared.sh
18+
source $VESTA/func/db.sh
19+
20+
21+
#----------------------------------------------------------#
22+
# Verifications #
23+
#----------------------------------------------------------#
24+
25+
check_args '1' "$#" 'user'
26+
validate_format 'user'
27+
is_system_enabled "$DB_SYSTEM"
28+
is_object_valid 'user' 'USER' "$user"
29+
30+
31+
#----------------------------------------------------------#
32+
# Action #
33+
#----------------------------------------------------------#
34+
35+
# Starting rebuild loop
36+
for database in $(search_objects 'db' 'SUSPENDED' "no" 'DB'); do
37+
get_database_values
38+
# Switching on db type
39+
case $TYPE in
40+
mysql) rebuild_mysql_database ;;
41+
pgsql) rebuild_pgsql_database ;;
42+
esac
43+
done
44+
45+
46+
#----------------------------------------------------------#
47+
# Vesta #
48+
#----------------------------------------------------------#
49+
50+
# Logging
51+
log_event "$OK" "$EVENT"
52+
53+
exit

bin/v_rebuild_user

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
#!/bin/bash
2+
# info: rebuild system user
3+
# options: user [full]
4+
#
5+
# The function rebuilds system user account.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument defenition
13+
user=$1
14+
full=${2-no}
15+
16+
# Includes
17+
source $VESTA/conf/vesta.conf
18+
source $VESTA/func/shared.sh
19+
20+
21+
#----------------------------------------------------------#
22+
# Verifications #
23+
#----------------------------------------------------------#
24+
25+
check_args '1' "$#" 'user [full]'
26+
validate_format 'user' 'full'
27+
is_object_valid 'user' 'USER' "$user"
28+
is_object_unsuspended 'user' 'USER' "$user"
29+
30+
31+
#----------------------------------------------------------#
32+
# Action #
33+
#----------------------------------------------------------#
34+
35+
# Get user variables
36+
source $USER_DATA/user.conf
37+
38+
# Rebuild user
39+
shell=$(/usr/bin/chsh --list-shells | grep -w "$SHELL" |head -n1)
40+
/usr/sbin/adduser "$user" -s "$shell" -c "$CONTACT" -m -d "$HOMEDIR/$user" \
41+
&>/dev/null
42+
43+
# Change password
44+
#/usr/sbin/usermod -p $MD5 $user
45+
shadow=/tmp/shadow
46+
shdw=$(grep ^$user: $shadow)
47+
shdw3=$(echo "$shdw" | cut -f3 -d :)
48+
shdw4=$(echo "$shdw" | cut -f4 -d :)
49+
shdw5=$(echo "$shdw" | cut -f5 -d :)
50+
shdw6=$(echo "$shdw" | cut -f6 -d :)
51+
shdw7=$(echo "$shdw" | cut -f7 -d :)
52+
shdw8=$(echo "$shdw" | cut -f8 -d :)
53+
shdw9=$(echo "$shdw" | cut -f9 -d :)
54+
chmod u+w $shadow
55+
sed -i "/^$user:*/d" $shadow
56+
echo "$user:$MD5:$shdw3:$shdw4:$shdw5:$shdw6:$shdw7:$shdw8:$shdw9" >> $shadow
57+
chmod u-w $shadow
58+
59+
# Change shell
60+
/usr/bin/chsh -s "$shell" "$user" &>/dev/null
61+
62+
# Building directory tree
63+
mkdir -p $HOMEDIR/$user
64+
chmod -R a+x $HOMEDIR/$user
65+
mkdir -p $HOMEDIR/$user/conf
66+
chown $user:$user $HOMEDIR/$user/conf
67+
68+
if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
69+
mkdir -p $HOMEDIR/$user/conf/web
70+
mkdir -p $HOMEDIR/$user/web
71+
mkdir -p $HOMEDIR/$user/tmp
72+
chmod 751 $HOMEDIR/$user/conf/web
73+
chmod 751 $HOMEDIR/$user/web
74+
chmod 777 $HOMEDIR/$user/tmp
75+
chown $user:$user $HOMEDIR/$user/web
76+
if [ "$full" = 'yes' ]; then
77+
$BIN/v_rebuild_web_domains $user
78+
fi
79+
fi
80+
81+
if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
82+
mkdir -p $HOMEDIR/$user/conf/mail
83+
mkdir -p $HOMEDIR/$user/mail
84+
chmod 751 $HOMEDIR/$user/mail
85+
chmod 751 $HOMEDIR/$user/conf/mail
86+
if [ "$full" = 'yes' ]; then
87+
$BIN/v_rebuild_mail_domains $user
88+
fi
89+
fi
90+
91+
if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
92+
mkdir -p $HOMEDIR/$user/conf/dns
93+
chmod 751 $HOMEDIR/$user/conf/dns
94+
if [ "$full" = 'yes' ]; then
95+
$BIN/v_rebuild_dns_domains $user
96+
fi
97+
fi
98+
99+
if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
100+
if [ "$full" = 'yes' ]; then
101+
$BIN/v_rebuild_databases $user
102+
fi
103+
fi
104+
105+
if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
106+
if [ "$full" = 'yes' ]; then
107+
$BIN/v_rebuild_cron_jobs $user
108+
fi
109+
fi
110+
111+
112+
#----------------------------------------------------------#
113+
# Vesta #
114+
#----------------------------------------------------------#
115+
116+
# Creating configuration files and pipes
117+
chmod 770 $USER_DATA
118+
touch $USER_DATA/backup.conf
119+
chmod 660 $USER_DATA/backup.conf
120+
touch $USER_DATA/history.log
121+
chmod 660 $USER_DATA/history.log
122+
touch $USER_DATA/stats.log
123+
chmod 660 $USER_DATA/stats.log
124+
125+
sed -i "/ $user$/d" $VESTA/data/queue/disk.pipe
126+
echo "v_update_user_disk $user" >> $VESTA/data/queue/disk.pipe
127+
128+
if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
129+
mkdir -p $USER_DATA/ssl
130+
chmod 770 $USER_DATA/ssl
131+
touch $USER_DATA/web.conf
132+
chmod 660 $USER_DATA/web.conf
133+
if [ "$(grep -w $user $VESTA/data/queue/traffic.pipe)" ]; then
134+
echo "$BIN/v_update_web_domains_traff $user" \
135+
>> $VESTA/data/queue/traffic.pipe
136+
fi
137+
echo "v_update_web_domains_disk $user" >> $VESTA/data/queue/disk.pipe
138+
fi
139+
140+
if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
141+
mkdir -p $USER_DATA/dns
142+
chmod 770 $USER_DATA/dns
143+
touch $USER_DATA/dns.conf
144+
chmod 660 $USER_DATA/dns.conf
145+
fi
146+
147+
if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
148+
mkdir -p $USER_DATA/mail
149+
chmod 770 $USER_DATA/mail
150+
touch $USER_DATA/mail.conf
151+
chmod 660 $USER_DATA/mail.conf
152+
echo "v_update_mail_domains_disk $user" >> $VESTA/data/queue/disk.pipe
153+
fi
154+
155+
if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
156+
touch $USER_DATA/db.conf
157+
chmod 660 $USER_DATA/db.conf
158+
echo "v_update_datbases_disk $user" >> $VESTA/data/queue/disk.pipe
159+
fi
160+
161+
if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
162+
touch $USER_DATA/cron.conf
163+
chmod 660 $USER_DATA/cron.conf
164+
fi
165+
166+
# Logging
167+
log_event "$OK" "$EVENT"
168+
169+
exit

bin/v_rebuild_web_domains

Lines changed: 70 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,49 @@ nohead=1
5050

5151
# Starting loop
5252
for domain in $(shell_list) ; do
53-
domain_idn=$(idn -t --quiet -a "$domain")
53+
54+
# Rebuilding directories
55+
mkdir -p $HOMEDIR/$user/web/$domain \
56+
$HOMEDIR/$user/web/$domain/public_html \
57+
$HOMEDIR/$user/web/$domain/public_shtml \
58+
$HOMEDIR/$user/web/$domain/document_errors \
59+
$HOMEDIR/$user/web/$domain/cgi-bin \
60+
$HOMEDIR/$user/web/$domain/private \
61+
$HOMEDIR/$user/web/$domain/stats \
62+
$HOMEDIR/$user/web/$domain/logs
63+
if [ ! -e "$HOMEDIR/$user/web/$domain/logs/$domain.log" ]; then
64+
ln -s /var/log/httpd/domains/$domain.error.log \
65+
$HOMEDIR/$user/web/$domain/logs/$domain.log
66+
fi
67+
if [ ! -e "$HOMEDIR/$user/web/$domain/logs/$domain.error.log" ]; then
68+
ln -s /var/log/httpd/domains/$domain.error.log \
69+
$HOMEDIR/$user/web/$domain/logs/$domain.error.log
70+
fi
71+
if [ -e "$WEBTPL/skel/document_errors/" ]; then
72+
cp -r $WEBTPL/skel/document_errors/ $HOMEDIR/$user/web/$domain/
73+
fi
74+
chmod 551 $HOMEDIR/$user/web/$domain
75+
chmod 751 $HOMEDIR/$user/web/$domain/private
76+
chmod 751 $HOMEDIR/$user/web/$domain/cgi-bin
77+
chmod 751 $HOMEDIR/$user/web/$domain/public_html
78+
chmod 751 $HOMEDIR/$user/web/$domain/public_shtml
79+
chmod 751 $HOMEDIR/$user/web/$domain/document_errors
80+
chmod -f -R 775 $HOMEDIR/$user/web/$domain/document_errors/*
81+
chmod 551 $HOMEDIR/$user/web/$domain/stats
82+
chmod 551 $HOMEDIR/$user/web/$domain/logs
83+
chmod 640 /var/log/httpd/domains/$domain.*
84+
85+
chown $user:$user $HOMEDIR/$user/web/$domain
86+
chown $user:$user $HOMEDIR/$user/web/$domain/private
87+
chown $user:$user $HOMEDIR/$user/web/$domain/cgi-bin
88+
chown $user:$user $HOMEDIR/$user/web/$domain/public_html
89+
chown $user:$user $HOMEDIR/$user/web/$domain/public_shtml
90+
chown -R $user:$user $HOMEDIR/$user/web/$domain/document_errors
91+
chown root:$user /var/log/httpd/domains/$domain.*
92+
chown root:apache $conf
5493

5594
# Parsing domain values
95+
domain_idn=$(idn -t --quiet -a "$domain")
5696
get_domain_values 'web'
5797

5898
# Preparing domain values for the template substitution
@@ -78,25 +118,41 @@ for domain in $(shell_list) ; do
78118

79119
# Checking stats
80120
if [ ! -z "$STATS" ]; then
81-
cat $WEBTPL/$STATS.tpl |\
82-
sed -e "s/%ip%/$ip/g" \
83-
-e "s/%web_port%/$WEB_PORT/g" \
84-
-e "s/%web_ssl_port%/$WEB_SSL_PORT/g" \
85-
-e "s/%proxy_port%/$PROXY_PORT/g" \
86-
-e "s/%proxy_ssl_port%/$PROXY_SSL_PORT/g" \
87-
-e "s/%domain_idn%/$domain_idn/g" \
88-
-e "s/%domain%/$domain/g" \
89-
-e "s/%user%/$user/g" \
90-
-e "s/%home%/${HOMEDIR////\/}/g" \
91-
-e "s/%alias%/${aliases//,/ }/g" \
92-
-e "s/%alias_idn%/${aliases_idn//,/ }/g" \
93-
> $HOMEDIR/$user/conf/web/$STATS.$domain.conf
121+
cat $WEBTPL/$STATS.tpl |\
122+
sed -e "s/%ip%/$ip/g" \
123+
-e "s/%web_port%/$WEB_PORT/g" \
124+
-e "s/%web_ssl_port%/$WEB_SSL_PORT/g" \
125+
-e "s/%proxy_port%/$PROXY_PORT/g" \
126+
-e "s/%proxy_ssl_port%/$PROXY_SSL_PORT/g" \
127+
-e "s/%domain_idn%/$domain_idn/g" \
128+
-e "s/%domain%/$domain/g" \
129+
-e "s/%user%/$user/g" \
130+
-e "s/%home%/${HOMEDIR////\/}/g" \
131+
-e "s/%alias%/${aliases//,/ }/g" \
132+
-e "s/%alias_idn%/${aliases_idn//,/ }/g" \
133+
> $HOMEDIR/$user/conf/web/$STATS.$domain.conf
94134

95135
stats_string="$BIN/v_update_web_domain_stat $user $domain"
96136
check_stats_pipe=$(grep "$stats_string" $V_QUEUE/stats.pipe)
97137
if [ -z "$check_stats_pipe" ]; then
98138
echo "$stats_string" >> $V_QUEUE/stats.pipe
99139
fi
140+
141+
if [ ! -z "$STATS_USER" ]; then
142+
# Definining statistic dir
143+
stats_dir="$HOMEDIR/$user/web/$domain/stats"
144+
145+
# Adding htaccess file
146+
echo "AuthUserFile $stats_dir/.htpasswd" > $stats_dir/.htaccess
147+
echo "AuthName \"Web Statistics\"" >> $stats_dir/.htaccess
148+
echo "AuthType Basic" >> $stats_dir/.htaccess
149+
echo "Require valid-user" >> $stats_dir/.htaccess
150+
151+
# Generating htaccess user and password
152+
rm -f $stats_dir/.htpasswd
153+
htpasswd -bc $stats_dir/.htpasswd "$STATS_USER" "$STATS_CRYPT" \
154+
&>/dev/null
155+
fi
100156
fi
101157

102158
# Checking ssl

bin/v_suspend_database

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ is_object_unsuspended 'db' 'DB' "$database"
4040
get_database_values
4141

4242
# Switching on db type
43-
case $type in
43+
case $TYPE in
4444
mysql) suspend_mysql_database ;;
4545
pgsql) suspend_pgsql_database ;;
4646
esac

bin/v_unsuspend_database

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ is_object_suspended 'db' 'DB' "$database"
3939
get_database_values
4040

4141
# Switching on db type
42-
case $type in
42+
case $TYPE in
4343
mysql) unsuspend_mysql_database ;;
4444
pgsql) unsuspend_pgsql_database ;;
4545
esac

0 commit comments

Comments
 (0)