Skip to content

Commit 8d01d5d

Browse files
committed
multiple ftp accounts
1 parent a5c47c3 commit 8d01d5d

File tree

3 files changed

+56
-33
lines changed

3 files changed

+56
-33
lines changed

bin/v-add-web-domain-ftp

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/bin/bash
22
# info: add ftp account for web domain.
3-
# options: USER DOMAIN FTP_USER FTP_PASSWORD FTP_PATH
3+
# options: USER DOMAIN FTP_USER FTP_PASSWORD [FTP_PATH]
44
#
5-
# The function creates addutional ftp account for web domain.
5+
# The function creates additional ftp account for web domain.
66

77

88
#----------------------------------------------------------#
@@ -38,23 +38,20 @@ is_object_valid 'user' 'USER' "$user"
3838
is_object_unsuspended 'user' 'USER' "$user"
3939
is_object_valid 'web' 'DOMAIN' "$domain"
4040
is_object_unsuspended 'web' 'DOMAIN' "$domain"
41-
42-
43-
#----------------------------------------------------------#
44-
# Action #
45-
#----------------------------------------------------------#
46-
47-
get_domain_values 'web'
4841
check_ftp_user=$(grep "^$ftp_user:" /etc/passwd)
4942
if [ ! -z "$check_ftp_user" ] && [ "$FTP_USER" != "$ftp_user" ]; then
5043
echo "Error: ftp user $ftp_user already exists"
5144
log_event "$E_EXISTS" "$EVENT"
5245
exit $E_EXISTS
5346
fi
5447

55-
if [ ! -z "$FTP_USER" ]; then
56-
/usr/sbin/userdel -f $FTP_USER > /dev/null 2>&1
57-
fi
48+
49+
#----------------------------------------------------------#
50+
# Action #
51+
#----------------------------------------------------------#
52+
53+
# Get domain values
54+
get_domain_values 'web'
5855

5956
# Define ftp user shell
6057
if [ -z "$FTP_SHELL" ]; then
@@ -70,20 +67,22 @@ fi
7067
if [ -z "$ftp_path" ]; then
7168
ftp_path="$HOMEDIR/$user/web/$domain"
7269
else
70+
# Validating path
7371
ftp_path=$(readlink -f "$HOMEDIR/$user/web/$domain/$ftp_path")
7472
if [ -z "$(echo $ftp_path |grep $HOMEDIR/$user/web/$domain)" ]; then
7573
echo "Error: path $ftp_path is invalid"
7674
log_event "$E_INVALID" "$EVENT"
7775
exit $E_INVALID
7876
fi
77+
# MKDIR if path doesn't exist
78+
if [ ! -e $ftp_path ]; then
79+
mkdir -p $ftp_path
80+
chown $user:$user $ftp_path
81+
chmod 751 $ftp_path
82+
fi
7983
fi
8084

81-
# Create ftp docroot
82-
mkdir -p $ftp_path
83-
chown $user:$user $ftp_path
84-
chmod 751 $ftp_path
85-
86-
# Adding user
85+
# Adding ftp user
8786
/usr/sbin/useradd $ftp_user \
8887
-s $shell \
8988
-o -u $(id -u $user) \
@@ -97,15 +96,23 @@ ftp_md5="$(awk -v user=$ftp_user -F : 'user == $1 {print $2}' /etc/shadow)"
9796
# Vesta #
9897
#----------------------------------------------------------#
9998

99+
# Concatenating ftp variables
100+
if [ ! -z "$FTP_USER" ]; then
101+
ftp_user="$FTP_USER:$ftp_user"
102+
ftp_md5="$FTP_MD5:$ftp_md5"
103+
ftp_path="$FTP_PATH:$ftp_path"
104+
fi
105+
106+
# Adding new key into web.conf
107+
add_object_key "web" 'DOMAIN' "$domain" 'FTP_PATH' 'PROXY'
108+
100109
# Update config
101110
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' "$ftp_user"
102111
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5"
103-
104-
add_object_key "web" 'DOMAIN' "$domain" 'FTP_PATH' 'PROXY'
105112
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_PATH' "$ftp_path"
106113

107114
# Logging
108-
log_history "added ftp account $ftp_user for $domain"
115+
log_history "added ftp account ${1}_${3} for $domain"
109116
log_event "$OK" "$EVENT"
110117

111118
exit

bin/v-delete-web-domain-ftp

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
2-
# info: delete webdomain ftp account.
3-
# options: USER DOMAIN
2+
# info: delete webdomain ftp account
3+
# options: USER DOMAIN FTP_USER
44
#
55
# The function deletes additional ftp account.
66

@@ -13,6 +13,7 @@
1313
user=$1
1414
domain=$(idn -t --quiet -u "$2" )
1515
domain_idn=$(idn -t --quiet -a "$domain")
16+
ftp_user=$3
1617

1718
# Includes
1819
source $VESTA/func/main.sh
@@ -24,35 +25,50 @@ source $VESTA/conf/vesta.conf
2425
# Verifications #
2526
#----------------------------------------------------------#
2627

27-
check_args '2' "$#" 'USER DOMAIN'
28-
validate_format 'user' 'domain'
28+
check_args '3' "$#" 'USER DOMAIN FTP_USER'
29+
validate_format 'user' 'domain' 'ftp_user'
2930
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
3031
is_object_valid 'user' 'USER' "$user"
3132
is_object_unsuspended 'user' 'USER' "$user"
3233
is_object_valid 'web' 'DOMAIN' "$domain"
3334
is_object_unsuspended 'web' 'DOMAIN' "$domain"
34-
is_object_value_exist 'web' 'DOMAIN' "$domain" '$FTP_USER'
35+
get_domain_values 'web'
36+
if [ -z "$(echo $FTP_USER | tr ':' '\n' | grep ^$ftp_user$)" ]; then
37+
echo "Error: account $ftp_user doesn't exist"
38+
log_event "$E_NOTEXIST" "$EVENT"
39+
exit $E_NOTEXIST
40+
fi
3541

3642

3743
#----------------------------------------------------------#
3844
# Action #
3945
#----------------------------------------------------------#
4046

4147
# Deleting ftp user
42-
get_domain_values 'web'
43-
/usr/sbin/userdel -f $FTP_USER >> /dev/null 2>&1
48+
/usr/sbin/userdel -f $ftp_user >> /dev/null 2>&1
4449

4550

4651
#----------------------------------------------------------#
4752
# Vesta #
4853
#----------------------------------------------------------#
4954

55+
# Rebuild FTP variables
56+
position=$(echo $FTP_USER |tr ':' '\n' |grep -n '' |grep ":$ftp_user$" |\
57+
cut -f 1 -d:)
58+
ftp_user=$(echo $FTP_USER |tr ':' '\n' |grep -n '' |grep -v "^$position:" |\
59+
cut -f 2 -d :| sed -e "/^$/d"| sed -e ':a;N;$!ba;s/\n/:/g')
60+
ftp_md5=$(echo $FTP_MD5 |tr ':' '\n' |grep -n '' |grep -v "^$position:" |\
61+
cut -f 2 -d :| sed -e "/^$/d"| sed -e ':a;N;$!ba;s/\n/:/g')
62+
ftp_path=$(echo $FTP_PATH |tr ':' '\n' |grep -n '' |grep -v "^$position:" |\
63+
cut -f 2 -d :| sed -e "/^$/d"| sed -e ':a;N;$!ba;s/\n/:/g')
64+
5065
# Update config
51-
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' ''
52-
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' ''
66+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' "$ftp_user"
67+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5"
68+
update_object_value 'web' 'DOMAIN' "$domain" '$FTP_PATH' "$ftp_path"
5369

5470
# Logging
55-
log_history "deleted ftp account $FTP_USER for $domain"
71+
log_history "deleted ftp account ${3} for $domain"
5672
log_event "$OK" "$EVENT"
5773

5874
exit

bin/v-list-web-domains

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ is_object_valid 'user' 'USER' "$user"
3434
conf=$USER_DATA/web.conf
3535

3636
# Defining fileds to select
37-
fields="\$DOMAIN \$IP \$IP6 \$U_DISK \$U_BANDWIDTH \$TPL \$ALIAS"
38-
fields="$fields \$STATS \$STATS_USER \$SSL \$SSL_HOME \$FTP_USER"
37+
fields="\$DOMAIN \$IP \$IP6 \$U_DISK \$U_BANDWIDTH \$TPL \$ALIAS \$STATS"
38+
fields="$fields \$STATS_USER \$SSL \$SSL_HOME \$FTP_USER \$FTP_PATH"
3939
fields="$fields \$PROXY \$PROXY_EXT \$SUSPENDED \$TIME \$DATE"
4040

4141
# Listing domains

0 commit comments

Comments
 (0)