|
| 1 | +# User account rebuild |
| 2 | +rebuild_user_conf() { |
| 3 | + |
| 4 | + # Get user variables |
| 5 | + source $USER_DATA/user.conf |
| 6 | + |
| 7 | + # Creating user data files |
| 8 | + chmod 770 $USER_DATA |
| 9 | + chmod 660 $USER_DATA/user.conf |
| 10 | + touch $USER_DATA/backup.conf |
| 11 | + chmod 660 $USER_DATA/backup.conf |
| 12 | + touch $USER_DATA/history.log |
| 13 | + chmod 660 $USER_DATA/history.log |
| 14 | + touch $USER_DATA/stats.log |
| 15 | + chmod 660 $USER_DATA/stats.log |
| 16 | + |
| 17 | + # Rebuild user |
| 18 | + shell=$(chsh --list-shells | grep -w "$SHELL" | head -n1) |
| 19 | + /usr/sbin/adduser "$user" -s "$shell" -c "$CONTACT" \ |
| 20 | + -m -d "$HOMEDIR/$user" > /dev/null 2>&1 |
| 21 | + |
| 22 | + # Update user shell |
| 23 | + shell_path=$(/usr/bin/chsh --list-shells | grep -w "$SHELL" |head -n1) |
| 24 | + /usr/bin/chsh -s "$shell_path" "$user" &>/dev/null |
| 25 | + |
| 26 | + # Update password |
| 27 | + shadow=$(grep ^$user: /etc/shadow) |
| 28 | + shdw3=$(echo "$shadow" | cut -f3 -d :) |
| 29 | + shdw4=$(echo "$shadow" | cut -f4 -d :) |
| 30 | + shdw5=$(echo "$shadow" | cut -f5 -d :) |
| 31 | + shdw6=$(echo "$shadow" | cut -f6 -d :) |
| 32 | + shdw7=$(echo "$shadow" | cut -f7 -d :) |
| 33 | + shdw8=$(echo "$shadow" | cut -f8 -d :) |
| 34 | + shdw9=$(echo "$shadow" | cut -f9 -d :) |
| 35 | + shadow_str="$user:$MD5:$shdw3:$shdw4:$shdw5:$shdw6" |
| 36 | + shadow_str="$shadow_str:$shdw7:$shdw8:$shdw9" |
| 37 | + |
| 38 | + chmod u+w /etc/shadow |
| 39 | + sed -i "/^$user:*/d" /etc/shadow |
| 40 | + echo "$shadow_str" >> /etc/shadow |
| 41 | + chmod u-w /etc/shadow |
| 42 | + |
| 43 | + # Building directory tree |
| 44 | + mkdir -p $HOMEDIR/$user/conf |
| 45 | + chmod a+x $HOMEDIR/$user |
| 46 | + chmod a+x $HOMEDIR/$user/conf |
| 47 | + chown $user:$user $HOMEDIR/$user |
| 48 | + chown root:root $HOMEDIR/$user/conf |
| 49 | + |
| 50 | + # Update disk pipe |
| 51 | + sed -i "/ $user$/d" $VESTA/data/queue/disk.pipe |
| 52 | + echo "$BIN/v-update-user-disk $user" >> $VESTA/data/queue/disk.pipe |
| 53 | + |
| 54 | + # WEB |
| 55 | + if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then |
| 56 | + mkdir -p $USER_DATA/ssl |
| 57 | + chmod 770 $USER_DATA/ssl |
| 58 | + touch $USER_DATA/web.conf |
| 59 | + chmod 660 $USER_DATA/web.conf |
| 60 | + if [ "$(grep -w $user $VESTA/data/queue/traffic.pipe)" ]; then |
| 61 | + echo "$BIN/v-update-web-domains-traff $user" \ |
| 62 | + >> $VESTA/data/queue/traffic.pipe |
| 63 | + fi |
| 64 | + echo "$BIN/v-update-web-domains-disk $user" \ |
| 65 | + >> $VESTA/data/queue/disk.pipe |
| 66 | + |
| 67 | + mkdir -p $HOMEDIR/$user/conf/web |
| 68 | + mkdir -p $HOMEDIR/$user/web |
| 69 | + mkdir -p $HOMEDIR/$user/tmp |
| 70 | + chmod 751 $HOMEDIR/$user/conf/web |
| 71 | + chmod 751 $HOMEDIR/$user/web |
| 72 | + chmod 771 $HOMEDIR/$user/tmp |
| 73 | + chown $user:$user $HOMEDIR/$user/web |
| 74 | + if [ -z "$create_user" ]; then |
| 75 | + $BIN/v-rebuild-web-domains $user $restart |
| 76 | + fi |
| 77 | + fi |
| 78 | + |
| 79 | + # DNS |
| 80 | + if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then |
| 81 | + mkdir -p $USER_DATA/dns |
| 82 | + chmod 770 $USER_DATA/dns |
| 83 | + touch $USER_DATA/dns.conf |
| 84 | + chmod 660 $USER_DATA/dns.conf |
| 85 | + |
| 86 | + mkdir -p $HOMEDIR/$user/conf/dns |
| 87 | + chmod 751 $HOMEDIR/$user/conf/dns |
| 88 | + if [ -z "$create_user" ]; then |
| 89 | + $BIN/v-rebuild-dns-domains $user $restart |
| 90 | + fi |
| 91 | + fi |
| 92 | + |
| 93 | + if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then |
| 94 | + mkdir -p $USER_DATA/mail |
| 95 | + chmod 770 $USER_DATA/mail |
| 96 | + touch $USER_DATA/mail.conf |
| 97 | + chmod 660 $USER_DATA/mail.conf |
| 98 | + echo "$BIN/v-update-mail-domains-disk $user" \ |
| 99 | + >> $VESTA/data/queue/disk.pipe |
| 100 | + |
| 101 | + mkdir -p $HOMEDIR/$user/conf/mail |
| 102 | + mkdir -p $HOMEDIR/$user/mail |
| 103 | + chmod 751 $HOMEDIR/$user/mail |
| 104 | + chmod 751 $HOMEDIR/$user/conf/mail |
| 105 | + if [ -z "$create_user" ]; then |
| 106 | + $BIN/v-rebuild-mail-domains $user |
| 107 | + fi |
| 108 | + fi |
| 109 | + |
| 110 | + |
| 111 | + if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then |
| 112 | + touch $USER_DATA/db.conf |
| 113 | + chmod 660 $USER_DATA/db.conf |
| 114 | + echo "$BIN/v-update-databases-disk $user" >> $VESTA/data/queue/disk.pipe |
| 115 | + |
| 116 | + if [ -z "$create_user" ]; then |
| 117 | + $BIN/v-rebuild-databases $user |
| 118 | + fi |
| 119 | + fi |
| 120 | + |
| 121 | + if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then |
| 122 | + touch $USER_DATA/cron.conf |
| 123 | + chmod 660 $USER_DATA/cron.conf |
| 124 | + |
| 125 | + if [ -z "$create_user" ]; then |
| 126 | + $BIN/v-rebuild-cron-jobs $user $restart |
| 127 | + fi |
| 128 | + fi |
| 129 | + |
| 130 | + # Set immutable flag |
| 131 | + chattr +i $HOMEDIR/$user/conf |
| 132 | +} |
| 133 | + |
1 | 134 | # WEB domain rebuild |
2 | 135 | rebuild_web_domain_conf() { |
3 | 136 |
|
@@ -174,21 +307,22 @@ rebuild_web_domain_conf() { |
174 | 307 | /usr/sbin/adduser -o -u $(id -u $user) -g $user -s /sbin/nologin \ |
175 | 308 | -M -d "$HOMEDIR/$user/web/$domain" $FTP_USER > /dev/null 2>&1 |
176 | 309 |
|
177 | | - shadow='/etc/shadow' |
178 | | - shdw=$(grep "^$FTP_USER:" $shadow) |
179 | | - shdw3=$(echo "$shdw" | cut -f3 -d :) |
180 | | - shdw4=$(echo "$shdw" | cut -f4 -d :) |
181 | | - shdw5=$(echo "$shdw" | cut -f5 -d :) |
182 | | - shdw6=$(echo "$shdw" | cut -f6 -d :) |
183 | | - shdw7=$(echo "$shdw" | cut -f7 -d :) |
184 | | - shdw8=$(echo "$shdw" | cut -f8 -d :) |
185 | | - shdw9=$(echo "$shdw" | cut -f9 -d :) |
186 | | - chmod u+w $shadow |
187 | | - sed -i "/^$FTP_USER:*/d" $shadow |
188 | | - shdw_str="$FTP_USER:$FTP_MD5:$shdw3:$shdw4:$shdw5:$shdw6" |
189 | | - shdw_str="$shdw_str:$shdw7:$shdw8:$shdw9" |
190 | | - echo "$shdw_str" >> $shadow |
191 | | - chmod u-w $shadow |
| 310 | + # Update password |
| 311 | + shadow=$(grep "^$FTP_USER:" /etc/shadow) |
| 312 | + shdw3=$(echo "$shadow" | cut -f3 -d :) |
| 313 | + shdw4=$(echo "$shadow" | cut -f4 -d :) |
| 314 | + shdw5=$(echo "$shadow" | cut -f5 -d :) |
| 315 | + shdw6=$(echo "$shadow" | cut -f6 -d :) |
| 316 | + shdw7=$(echo "$shadow" | cut -f7 -d :) |
| 317 | + shdw8=$(echo "$shadow" | cut -f8 -d :) |
| 318 | + shdw9=$(echo "$shadow" | cut -f9 -d :) |
| 319 | + shadow_str="$FTP_USER:$FTP_MD5:$shdw3:$shdw4:$shdw5:$shdw6" |
| 320 | + shadow_str="$shadow_str:$shdw7:$shdw8:$shdw9" |
| 321 | + |
| 322 | + chmod u+w /etc/shadow |
| 323 | + sed -i "/^$FTP_USER:*/d" /etc/shadow |
| 324 | + echo "$shadow_str" >> /etc/shadow |
| 325 | + chmod u-w /etc/shadow |
192 | 326 | fi |
193 | 327 | fi |
194 | 328 | } |
@@ -248,24 +382,26 @@ rebuild_dns_domain_conf() { |
248 | 382 | # MAIL domain rebuild |
249 | 383 | rebuild_mail_domain_conf() { |
250 | 384 |
|
| 385 | + domain_idn=$(idn -t --quiet -a "$domain") |
| 386 | + |
251 | 387 | # Get domain values |
252 | 388 | get_domain_values 'mail' |
253 | 389 |
|
254 | 390 | # Rebuilding config structure |
255 | | - rm -f /etc/exim/domains/$domain |
| 391 | + rm -f /etc/exim/domains/$domain_idn |
256 | 392 | mkdir -p $HOMEDIR/$user/conf/mail/$domain |
257 | | - ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/ |
| 393 | + ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/$domain_idn |
258 | 394 | rm -f $HOMEDIR/$user/conf/mail/$domain/aliases |
259 | 395 | rm -f $HOMEDIR/$user/conf/mail/$domain/protection |
260 | 396 | rm -f $HOMEDIR/$user/conf/mail/$domain/passwd |
261 | 397 | touch $HOMEDIR/$user/conf/mail/$domain/aliases |
262 | 398 | touch $HOMEDIR/$user/conf/mail/$domain/protection |
263 | 399 | touch $HOMEDIR/$user/conf/mail/$domain/passwd |
264 | 400 | chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain |
265 | | - chown -R dovecot:mail /etc/exim/domains/$domain |
| 401 | + chown -R dovecot:mail /etc/exim/domains/$domain_idn |
266 | 402 | chmod 770 $HOMEDIR/$user/conf/mail/$domain |
267 | 403 | chmod 660 $HOMEDIR/$user/conf/mail/$domain/* |
268 | | - chmod 770 /etc/exim/domains/$domain |
| 404 | + chmod 770 /etc/exim/domains/$domain_idn |
269 | 405 |
|
270 | 406 | # Adding antispam protection |
271 | 407 | if [ "$ANTISPAM" = 'yes' ]; then |
@@ -314,14 +450,14 @@ rebuild_mail_domain_conf() { |
314 | 450 | # Removing symbolic link |
315 | 451 | if [ "$SUSPENDED" = 'yes' ]; then |
316 | 452 | SUSPENDED_MAIL=$((SUSPENDED_MAIL +1)) |
317 | | - rm -f /etc/exim/domains/$domain |
| 453 | + rm -f /etc/exim/domains/$domain_idn |
318 | 454 | fi |
319 | 455 |
|
320 | | - if [ ! -e $HOMEDIR/$user/mail/$domain ]; then |
321 | | - mkdir $HOMEDIR/$user/mail/$domain |
| 456 | + if [ ! -e $HOMEDIR/$user/mail/$domain_idn ]; then |
| 457 | + mkdir $HOMEDIR/$user/mail/$domain_idn |
322 | 458 | fi |
323 | | - chown $user:mail $HOMEDIR/$user/mail/$domain |
324 | | - chmod 770 $HOMEDIR/$user/mail/$domain |
| 459 | + chown $user:mail $HOMEDIR/$user/mail/$domain_idn |
| 460 | + chmod 770 $HOMEDIR/$user/mail/$domain_idn |
325 | 461 |
|
326 | 462 | dom_aliases=$HOMEDIR/$user/conf/mail/$domain/aliases |
327 | 463 | if [ ! -z "$CATCHALL" ]; then |
@@ -402,6 +538,9 @@ rebuild_mysql_database() { |
402 | 538 |
|
403 | 539 | query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER';" |
404 | 540 | mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1 |
| 541 | + |
| 542 | + query="FLUSH PRIVILEGES;" |
| 543 | + mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1 |
405 | 544 | } |
406 | 545 |
|
407 | 546 | # Rebuild PostgreSQL |
|
0 commit comments