From a06a90e5bb762eed3bc6c766332e62102585ffe5 Mon Sep 17 00:00:00 2001 From: Serghey Rodin Date: Fri, 20 Jun 2014 00:00:15 +0300 Subject: [PATCH] Custom FTP dir --- bin/v-add-web-domain-ftp | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/bin/v-add-web-domain-ftp b/bin/v-add-web-domain-ftp index d6c3fb45..129e3939 100755 --- a/bin/v-add-web-domain-ftp +++ b/bin/v-add-web-domain-ftp @@ -1,6 +1,6 @@ #!/bin/bash # info: add ftp account for web domain. -# options: USER DOMAIN FTP_USER FTP_PASSWORD +# options: USER DOMAIN FTP_USER FTP_PASSWORD FTP_PATH # # The function creates addutional ftp account for web domain. @@ -15,6 +15,7 @@ domain=$(idn -t --quiet -u "$2" ) domain_idn=$(idn -t --quiet -a "$domain") ftp_user=${1}_${3} ftp_password=$4 +ftp_path=$5 # Includes source $VESTA/func/main.sh @@ -30,7 +31,7 @@ EVENT="$DATE $TIME $SCRIPT $A1 $A2 $A3 $A4 $A5 $A6 $A7 $A8 $A9" # Verifications # #----------------------------------------------------------# -check_args '4' "$#" 'USER DOMAIN FTP_USER FTP_PASSWORD' +check_args '4' "$#" 'USER DOMAIN FTP_USER FTP_PASSWORD [FTP_PATH]' validate_format 'user' 'domain' 'ftp_user' 'ftp_password' is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM' is_object_valid 'user' 'USER' "$user" @@ -47,7 +48,7 @@ get_domain_values 'web' check_ftp_user=$(grep "^$ftp_user:" /etc/passwd) if [ ! -z "$check_ftp_user" ] && [ "$FTP_USER" != "$ftp_user" ]; then echo "Error: ftp user $ftp_user already exists" - log_event "$E_EXISTS $EVENT" + log_event "$E_EXISTS" "$EVENT" exit $E_EXISTS fi @@ -61,12 +62,29 @@ if [ -e "/usr/bin/rssh" ]; then shell='/usr/bin/rssh' fi +# Define path +if [ -z "$ftp_path" ]; then + ftp_path="$HOMEDIR/$user/web/$domain" +else + ftp_path=$(readlink -f "$HOMEDIR/$user/web/$domain/$ftp_path") + if [ -z "$(echo $ftp_path |grep $HOMEDIR/$user/web/$domain)" ]; then + echo "Error: path $ftp_path is invalid" + log_event "$E_INVALID" "$EVENT" + exit $E_INVALID + fi +fi + +# Create ftp docroot +mkdir -p $ftp_path +chown $user:$user $ftp_path +chmod 751 $ftp_path + # Adding user /usr/sbin/useradd $ftp_user \ -s $shell \ -o -u $(id -u $user) \ -g $(id -u $user) \ - -M -d "$HOMEDIR/$user/web/$domain" > /dev/null 2>&1 + -M -d "$ftp_path" > /dev/null 2>&1 echo "$ftp_user:$ftp_password" | /usr/sbin/chpasswd ftp_md5="$(awk -v user=$ftp_user -F : 'user == $1 {print $2}' /etc/shadow)" @@ -79,6 +97,9 @@ ftp_md5="$(awk -v user=$ftp_user -F : 'user == $1 {print $2}' /etc/shadow)" update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' "$ftp_user" update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5" +add_object_key "web" 'DOMAIN' "$domain" 'FTP_PATH' 'PROXY' +update_object_value 'web' 'DOMAIN' "$domain" '$FTP_PATH' "$ftp_path" + # Logging log_history "added ftp account $ftp_user for $domain" log_event "$OK" "$EVENT"