11#! /bin/bash
22# info: add ftp account for web domain.
3- # options: USER DOMAIN FTP_USER FTP_PASSWORD
3+ # options: USER DOMAIN FTP_USER FTP_PASSWORD FTP_PATH
44#
55# The function creates addutional ftp account for web domain.
66
@@ -15,6 +15,7 @@ domain=$(idn -t --quiet -u "$2" )
1515domain_idn=$( idn -t --quiet -a " $domain " )
1616ftp_user=${1} _${3}
1717ftp_password=$4
18+ ftp_path=$5
1819
1920# Includes
2021source $VESTA /func/main.sh
@@ -30,7 +31,7 @@ EVENT="$DATE $TIME $SCRIPT $A1 $A2 $A3 $A4 $A5 $A6 $A7 $A8 $A9"
3031# Verifications #
3132# ----------------------------------------------------------#
3233
33- check_args ' 4' " $# " ' USER DOMAIN FTP_USER FTP_PASSWORD'
34+ check_args ' 4' " $# " ' USER DOMAIN FTP_USER FTP_PASSWORD [FTP_PATH] '
3435validate_format ' user' ' domain' ' ftp_user' ' ftp_password'
3536is_system_enabled " $WEB_SYSTEM " ' WEB_SYSTEM'
3637is_object_valid ' user' ' USER' " $user "
@@ -47,7 +48,7 @@ get_domain_values 'web'
4748check_ftp_user=$( grep " ^$ftp_user :" /etc/passwd)
4849if [ ! -z " $check_ftp_user " ] && [ " $FTP_USER " != " $ftp_user " ]; then
4950 echo " Error: ftp user $ftp_user already exists"
50- log_event " $E_EXISTS $EVENT "
51+ log_event " $E_EXISTS " " $EVENT "
5152 exit $E_EXISTS
5253fi
5354
@@ -61,12 +62,29 @@ if [ -e "/usr/bin/rssh" ]; then
6162 shell=' /usr/bin/rssh'
6263fi
6364
65+ # Define path
66+ if [ -z " $ftp_path " ]; then
67+ ftp_path=" $HOMEDIR /$user /web/$domain "
68+ else
69+ ftp_path=$( readlink -f " $HOMEDIR /$user /web/$domain /$ftp_path " )
70+ if [ -z " $( echo $ftp_path | grep $HOMEDIR /$user /web/$domain ) " ]; then
71+ echo " Error: path $ftp_path is invalid"
72+ log_event " $E_INVALID " " $EVENT "
73+ exit $E_INVALID
74+ fi
75+ fi
76+
77+ # Create ftp docroot
78+ mkdir -p $ftp_path
79+ chown $user :$user $ftp_path
80+ chmod 751 $ftp_path
81+
6482# Adding user
6583/usr/sbin/useradd $ftp_user \
6684 -s $shell \
6785 -o -u $( id -u $user ) \
6886 -g $( id -u $user ) \
69- -M -d " $HOMEDIR / $user /web/ $domain " > /dev/null 2>&1
87+ -M -d " $ftp_path " > /dev/null 2>&1
7088echo " $ftp_user :$ftp_password " | /usr/sbin/chpasswd
7189ftp_md5=" $( awk -v user=$ftp_user -F : ' user == $1 {print $2}' /etc/shadow) "
7290
@@ -79,6 +97,9 @@ ftp_md5="$(awk -v user=$ftp_user -F : 'user == $1 {print $2}' /etc/shadow)"
7997update_object_value ' web' ' DOMAIN' " $domain " ' $FTP_USER' " $ftp_user "
8098update_object_value ' web' ' DOMAIN' " $domain " ' $FTP_MD5' " $ftp_md5 "
8199
100+ add_object_key " web" ' DOMAIN' " $domain " ' FTP_PATH' ' PROXY'
101+ update_object_value ' web' ' DOMAIN' " $domain " ' $FTP_PATH' " $ftp_path "
102+
82103# Logging
83104log_history " added ftp account $ftp_user for $domain "
84105log_event " $OK " " $EVENT "
0 commit comments