Skip to content

Commit 7c3419b

Browse files
committed
added additional web ftp accounts
1 parent 0aba6a2 commit 7c3419b

File tree

16 files changed

+1011
-247
lines changed

16 files changed

+1011
-247
lines changed

bin/v_add_web_domain

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,14 @@ chown root:apache $conf
133133
# Changing file permissions
134134
chmod 660 $conf
135135
chmod 551 $HOMEDIR/$user/web/$domain
136-
chmod 751 $HOMEDIR/$user/web/$domain/private
137-
chmod 751 $HOMEDIR/$user/web/$domain/cgi-bin
138-
chmod 751 $HOMEDIR/$user/web/$domain/public_html
139-
chmod 751 $HOMEDIR/$user/web/$domain/public_shtml
140-
chmod 751 $HOMEDIR/$user/web/$domain/document_errors
141-
chmod -f -R 775 $HOMEDIR/$user/web/$domain/cgi-bin/*
142-
chmod -f -R 775 $HOMEDIR/$user/web/$domain/public_html/*
143-
chmod -f -R 775 $HOMEDIR/$user/web/$domain/document_errors/*
136+
chmod 771 $HOMEDIR/$user/web/$domain/private
137+
chmod 771 $HOMEDIR/$user/web/$domain/cgi-bin
138+
chmod 771 $HOMEDIR/$user/web/$domain/public_html
139+
chmod 771 $HOMEDIR/$user/web/$domain/public_shtml
140+
chmod 771 $HOMEDIR/$user/web/$domain/document_errors
141+
chmod -f -R 665 $HOMEDIR/$user/web/$domain/cgi-bin/*
142+
chmod -f -R 665 $HOMEDIR/$user/web/$domain/public_html/*
143+
chmod -f -R 665 $HOMEDIR/$user/web/$domain/document_errors/*
144144
chmod 551 $HOMEDIR/$user/web/$domain/stats
145145
chmod 551 $HOMEDIR/$user/web/$domain/logs
146146
chmod 640 /var/log/httpd/domains/$domain.*
@@ -169,9 +169,10 @@ increase_user_value "$user" '$U_WEB_ALIASES'
169169

170170
# Defining domain variables
171171
str="DOMAIN='$domain' IP='$ip' IP6='' ALIAS='$aliases' TPL='$template'"
172-
str="$str CGI='yes' ELOG='yes' SSL='no' SSL_HOME='single' NGINX=''"
173-
str="$str NGINX_EXT='' STATS='' STATS_USER='' STATS_CRYPT='' U_DISK='0'"
174-
str="$str U_BANDWIDTH='0' SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
172+
str="$str CGI='yes' ELOG='yes' SSL='no' SSL_HOME='same' FTP_USER=''"
173+
str="$str FTP_MD5='' NGINX='' NGINX_EXT='' STATS='' STATS_USER=''"
174+
str="$str STATS_CRYPT='' U_DISK='0' U_BANDWIDTH='0' SUSPENDED='no'"
175+
str="$str TIME='$TIME' DATE='$DATE'"
175176

176177
# Registering domain
177178
echo "$str" >> $USER_DATA/web.conf

bin/v_add_web_domain_ftp

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#!/bin/bash
2+
# info: add ftp account for web domain.
3+
# options: user domain ftp_user ftp_password
4+
#
5+
# The function creates addutional ftp account for web domain.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument defenition
13+
user=$1
14+
domain=$(idn -t --quiet -u "$2" )
15+
domain_idn=$(idn -t --quiet -a "$domain")
16+
ftp_user=${1}_${3}
17+
ftp_password=$4
18+
19+
# Includes
20+
source $VESTA/conf/vesta.conf
21+
source $VESTA/func/main.sh
22+
source $VESTA/func/domain.sh
23+
24+
# Hiding password
25+
A4='******'
26+
EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
27+
EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
28+
29+
#----------------------------------------------------------#
30+
# Verifications #
31+
#----------------------------------------------------------#
32+
33+
check_args '4' "$#" 'user domain ftp_user ftp_password'
34+
validate_format 'user' 'domain' 'ftp_user' 'ftp_password'
35+
is_system_enabled "$WEB_SYSTEM"
36+
is_object_valid 'user' 'USER' "$user"
37+
is_object_unsuspended 'user' 'USER' "$user"
38+
is_object_valid 'web' 'DOMAIN' "$domain"
39+
is_object_unsuspended 'web' 'DOMAIN' "$domain"
40+
41+
42+
#----------------------------------------------------------#
43+
# Action #
44+
#----------------------------------------------------------#
45+
46+
# Get domain values
47+
get_domain_values 'web'
48+
if [ ! -z "$FTP_USER" ]; then
49+
/usr/sbin/userdel $FTP_USER
50+
fi
51+
52+
# Adding user
53+
/usr/sbin/adduser $ftp_user -g $user -s /sbin/nologin -M \
54+
-d "$HOMEDIR/$user/web/$domain" > /dev/null 2>&1
55+
echo "$ftp_password" | /usr/bin/passwd "$ftp_user" --stdin &>/dev/null
56+
ftp_md5="$(awk -v user=$ftp_user -F : 'user == $1 {print $2}' /etc/shadow)"
57+
58+
59+
#----------------------------------------------------------#
60+
# Vesta #
61+
#----------------------------------------------------------#
62+
63+
# Update config
64+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' "$ftp_user"
65+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5"
66+
67+
# Logging
68+
log_history "added ftp account $ftp_user for $domain"
69+
log_event "$OK" "$EVENT"
70+
71+
exit

bin/v_change_web_domain_ftp

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/bin/bash
2+
# info: add ftp account for web domain.
3+
# options: user domain ftp_user ftp_password
4+
#
5+
# The function creates addutional ftp account for web domain.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument defenition
13+
user=$1
14+
domain=$(idn -t --quiet -u "$2" )
15+
domain_idn=$(idn -t --quiet -a "$domain")
16+
ftp_user=${1}_${3}
17+
ftp_password=$4
18+
19+
# Includes
20+
source $VESTA/conf/vesta.conf
21+
source $VESTA/func/main.sh
22+
source $VESTA/func/domain.sh
23+
24+
25+
#----------------------------------------------------------#
26+
# Verifications #
27+
#----------------------------------------------------------#
28+
29+
check_args '4' "$#" 'user domain ftp_user ftp_password'
30+
validate_format 'user' 'domain' 'ftp_user' 'ftp_password'
31+
is_system_enabled "$WEB_SYSTEM"
32+
is_object_valid 'user' 'USER' "$user"
33+
is_object_unsuspended 'user' 'USER' "$user"
34+
is_object_valid 'web' 'DOMAIN' "$domain"
35+
is_object_unsuspended 'web' 'DOMAIN' "$domain"
36+
is_object_value_empty 'web' 'DOMAIN' "$domain" '$FTP_USER'
37+
38+
39+
#----------------------------------------------------------#
40+
# Action #
41+
#----------------------------------------------------------#
42+
43+
# Adding user
44+
/usr/sbin/adduser $ftp_user -g $user -s /sbin/nologin -M \
45+
-d "$HOMEDIR/$user/web/$domain" > /dev/null 2>&1
46+
echo "$ftp_password" | /usr/bin/passwd "$ftp_user" --stdin &>/dev/null
47+
ftp_md5="$(awk -v user=$ftp_user -F : 'user == $1 {print $2}' /etc/shadow)"
48+
49+
50+
#----------------------------------------------------------#
51+
# Vesta #
52+
#----------------------------------------------------------#
53+
54+
# Update config
55+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' "$ftp_user"
56+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5"
57+
58+
# Logging
59+
log_history "added ftp account $ftp_user for $domain"
60+
log_event "$OK" "$EVENT"
61+
62+
exit

bin/v_delete_web_domain

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ if [ ! -z "$STATS" ] && [ "$STATS" != 'no' ]; then
8787
rm -f $HOMEDIR/$user/conf/web/$STATS.$domain.conf
8888
fi
8989

90+
# Deleting ftp account
91+
if [ ! -z "$FTP_USER" ]; then
92+
/usr/sbin/userdel $FTP_USER
93+
fi
94+
9095
# Deleting directory
9196
rm -rf $HOMEDIR/$user/web/$domain
9297

bin/v_delete_web_domain_ftp

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#!/bin/bash
2+
# info: delete webdomain ftp account.
3+
# options: user domain
4+
#
5+
# The function deletes additional ftp account.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument defenition
13+
user=$1
14+
domain=$(idn -t --quiet -u "$2" )
15+
domain_idn=$(idn -t --quiet -a "$domain")
16+
17+
# Includes
18+
source $VESTA/conf/vesta.conf
19+
source $VESTA/func/main.sh
20+
source $VESTA/func/domain.sh
21+
22+
23+
#----------------------------------------------------------#
24+
# Verifications #
25+
#----------------------------------------------------------#
26+
27+
check_args '2' "$#" 'user domain'
28+
validate_format 'user' 'domain'
29+
is_system_enabled "$WEB_SYSTEM"
30+
is_object_valid 'user' 'USER' "$user"
31+
is_object_unsuspended 'user' 'USER' "$user"
32+
is_object_valid 'web' 'DOMAIN' "$domain"
33+
is_object_unsuspended 'web' 'DOMAIN' "$domain"
34+
is_object_value_exist 'web' 'DOMAIN' "$domain" '$FTP_USER'
35+
36+
37+
#----------------------------------------------------------#
38+
# Action #
39+
#----------------------------------------------------------#
40+
41+
# Adding user
42+
get_domain_values 'web'
43+
/usr/sbin/userdel $FTP_USER
44+
45+
46+
#----------------------------------------------------------#
47+
# Vesta #
48+
#----------------------------------------------------------#
49+
50+
# Update config
51+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' ''
52+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' ''
53+
54+
# Logging
55+
log_history "deleted ftp account $FTP_USER for $domain"
56+
log_event "$OK" "$EVENT"
57+
58+
exit

bin/v_list_web_domain

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ conf=$USER_DATA/web.conf
7676

7777
# Defining fileds to select
7878
fields='$DOMAIN $IP $IP6 $U_DISK $U_BANDWIDTH $TPL $ALIAS $CGI $ELOG $STATS
79-
$STATS_USER $SSL $SSL_HOME $NGINX $NGINX_EXT $SUSPENDED $TIME $DATE'
79+
$STATS_USER $SSL $SSL_HOME $FTP_USER $NGINX $NGINX_EXT $SUSPENDED $TIME $DATE'
8080

8181
# Listing domains
8282
case $format in

bin/v_list_web_domains

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ conf=$USER_DATA/web.conf
3535

3636
# Defining fileds to select
3737
fields="\$DOMAIN \$IP \$IP6 \$U_DISK \$U_BANDWIDTH \$TPL \$ALIAS \$CGI"
38-
fields="$fields \$ELOG \$STATS \$STATS_USER \$SSL \$SSL_HOME \$NGINX"
39-
fields="$fields \$NGINX_EXT \$SUSPENDED \$TIME \$DATE"
38+
fields="$fields \$ELOG \$STATS \$STATS_USER \$SSL \$SSL_HOME \$FTP_USER"
39+
fields="$fields \$NGINX \$NGINX_EXT \$SUSPENDED \$TIME \$DATE"
4040

4141
# Listing domains
4242
case $format in

bin/v_rebuild_web_domains

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,11 @@ for domain in $(shell_list) ; do
7777
/var/log/httpd/domains/$domain.error.log
7878

7979
chmod 551 $HOMEDIR/$user/web/$domain
80-
chmod 751 $HOMEDIR/$user/web/$domain/private
81-
chmod 751 $HOMEDIR/$user/web/$domain/cgi-bin
82-
chmod 751 $HOMEDIR/$user/web/$domain/public_html
83-
chmod 751 $HOMEDIR/$user/web/$domain/public_shtml
84-
chmod 751 $HOMEDIR/$user/web/$domain/document_errors
85-
chmod -f -R 775 $HOMEDIR/$user/web/$domain/document_errors/*
80+
chmod 771 $HOMEDIR/$user/web/$domain/private
81+
chmod 771 $HOMEDIR/$user/web/$domain/cgi-bin
82+
chmod 771 $HOMEDIR/$user/web/$domain/public_html
83+
chmod 771 $HOMEDIR/$user/web/$domain/public_shtml
84+
chmod 771 $HOMEDIR/$user/web/$domain/document_errors
8685
chmod 551 $HOMEDIR/$user/web/$domain/stats
8786
chmod 551 $HOMEDIR/$user/web/$domain/logs
8887
chmod 640 /var/log/httpd/domains/$domain.*
@@ -208,6 +207,31 @@ for domain in $(shell_list) ; do
208207
suspended_web=$((suspended_web + 1))
209208
fi
210209
user_domains=$((user_domains + 1))
210+
211+
# Checking ftp
212+
if [ ! -z "$FTP_USER" ]; then
213+
if [ -z "$(grep ^$FTP_USER: /etc/passwd)" ]; then
214+
/usr/sbin/adduser $FTP_USER -g $user -s /sbin/nologin -M \
215+
-d "$HOMEDIR/$user/web/$domain" > /dev/null 2>&1
216+
217+
shadow='/etc/shadow'
218+
shdw=$(grep "^$FTP_USER:" $shadow)
219+
shdw3=$(echo "$shdw" | cut -f3 -d :)
220+
shdw4=$(echo "$shdw" | cut -f4 -d :)
221+
shdw5=$(echo "$shdw" | cut -f5 -d :)
222+
shdw6=$(echo "$shdw" | cut -f6 -d :)
223+
shdw7=$(echo "$shdw" | cut -f7 -d :)
224+
shdw8=$(echo "$shdw" | cut -f8 -d :)
225+
shdw9=$(echo "$shdw" | cut -f9 -d :)
226+
chmod u+w $shadow
227+
sed -i "/^$FTP_USER:*/d" $shadow
228+
shdw_str="$FTP_USER:$FTP_MD5:$shdw3:$shdw4:$shdw5:$shdw6"
229+
shdw_str="$shdw_str:$shdw7:$shdw8:$shdw9"
230+
echo "$shdw_str" >> $shadow
231+
chmod u-w $shadow
232+
fi
233+
fi
234+
211235
done
212236

213237
# Renaming tmp config

func/main.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,8 @@ validate_format(){
726726
extentions) validate_format_common "$arg" 'extentions' ;;
727727
fname) validate_format_username "$arg" "$arg_name" ;;
728728
forward) validate_format_email "$arg" ;;
729+
ftp_password) validate_format_password "$arg" ;;
730+
ftp_user) validate_format_username "$arg" "$arg_name" ;;
729731
host) validate_format_domain "$arg" "$arg_name" ;;
730732
hour) validate_format_mhdmw "$arg" $arg_name ;;
731733
id) validate_format_int "$arg" ;;

0 commit comments

Comments
 (0)