Serghey Rodin 11 лет назад
Родитель
Сommit
8d01d5d796
3 измененных файлов с 56 добавлено и 33 удалено
  1. 28 21
      bin/v-add-web-domain-ftp
  2. 26 10
      bin/v-delete-web-domain-ftp
  3. 2 2
      bin/v-list-web-domains

+ 28 - 21
bin/v-add-web-domain-ftp

@@ -1,8 +1,8 @@
 #!/bin/bash
 #!/bin/bash
 # info: add ftp account for web domain.
 # info: add ftp account for web domain.
-# options: USER DOMAIN FTP_USER FTP_PASSWORD FTP_PATH
+# options: USER DOMAIN FTP_USER FTP_PASSWORD [FTP_PATH]
 #
 #
-# The function creates addutional ftp account for web domain.
+# The function creates additional ftp account for web domain.
 
 
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#
@@ -38,13 +38,6 @@ is_object_valid 'user' 'USER' "$user"
 is_object_unsuspended 'user' 'USER' "$user"
 is_object_unsuspended 'user' 'USER' "$user"
 is_object_valid 'web' 'DOMAIN' "$domain"
 is_object_valid 'web' 'DOMAIN' "$domain"
 is_object_unsuspended 'web' 'DOMAIN' "$domain"
 is_object_unsuspended 'web' 'DOMAIN' "$domain"
-
-
-#----------------------------------------------------------#
-#                       Action                             #
-#----------------------------------------------------------#
-
-get_domain_values 'web'
 check_ftp_user=$(grep "^$ftp_user:" /etc/passwd)
 check_ftp_user=$(grep "^$ftp_user:" /etc/passwd)
 if [ ! -z "$check_ftp_user" ] && [ "$FTP_USER" != "$ftp_user" ]; then
 if [ ! -z "$check_ftp_user" ] && [ "$FTP_USER" != "$ftp_user" ]; then
     echo "Error: ftp user $ftp_user already exists"
     echo "Error: ftp user $ftp_user already exists"
@@ -52,9 +45,13 @@ if [ ! -z "$check_ftp_user" ] && [ "$FTP_USER" != "$ftp_user" ]; then
     exit $E_EXISTS
     exit $E_EXISTS
 fi
 fi
 
 
-if [ ! -z "$FTP_USER" ]; then
-    /usr/sbin/userdel -f $FTP_USER > /dev/null 2>&1
-fi
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+# Get domain values
+get_domain_values 'web'
 
 
 # Define ftp user shell
 # Define ftp user shell
 if [ -z "$FTP_SHELL" ]; then
 if [ -z "$FTP_SHELL" ]; then
@@ -70,20 +67,22 @@ fi
 if [ -z "$ftp_path" ]; then
 if [ -z "$ftp_path" ]; then
     ftp_path="$HOMEDIR/$user/web/$domain"
     ftp_path="$HOMEDIR/$user/web/$domain"
 else
 else
+    # Validating path
     ftp_path=$(readlink -f "$HOMEDIR/$user/web/$domain/$ftp_path")
     ftp_path=$(readlink -f "$HOMEDIR/$user/web/$domain/$ftp_path")
     if [ -z "$(echo $ftp_path |grep $HOMEDIR/$user/web/$domain)" ]; then
     if [ -z "$(echo $ftp_path |grep $HOMEDIR/$user/web/$domain)" ]; then
         echo "Error: path $ftp_path is invalid"
         echo "Error: path $ftp_path is invalid"
         log_event "$E_INVALID" "$EVENT"
         log_event "$E_INVALID" "$EVENT"
         exit $E_INVALID
         exit $E_INVALID
     fi
     fi
+    # MKDIR if path doesn't exist
+    if [ ! -e $ftp_path ]; then
+        mkdir -p $ftp_path
+        chown $user:$user $ftp_path
+        chmod 751 $ftp_path
+    fi
 fi
 fi
 
 
-# Create ftp docroot
-mkdir -p $ftp_path
-chown $user:$user $ftp_path
-chmod 751 $ftp_path
-
-# Adding user
+# Adding ftp user
 /usr/sbin/useradd $ftp_user \
 /usr/sbin/useradd $ftp_user \
     -s $shell \
     -s $shell \
     -o -u $(id -u $user) \
     -o -u $(id -u $user) \
@@ -97,15 +96,23 @@ ftp_md5="$(awk -v user=$ftp_user -F : 'user == $1 {print $2}' /etc/shadow)"
 #                       Vesta                              #
 #                       Vesta                              #
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
+# Concatenating ftp variables
+if [ ! -z "$FTP_USER" ]; then
+    ftp_user="$FTP_USER:$ftp_user"
+    ftp_md5="$FTP_MD5:$ftp_md5"
+    ftp_path="$FTP_PATH:$ftp_path"
+fi
+
+# Adding new key into web.conf
+add_object_key "web" 'DOMAIN' "$domain" 'FTP_PATH' 'PROXY'
+
 # Update config
 # Update config
 update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' "$ftp_user"
 update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' "$ftp_user"
 update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5"
 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"
 update_object_value 'web' 'DOMAIN' "$domain" '$FTP_PATH' "$ftp_path"
 
 
 # Logging
 # Logging
-log_history "added ftp account $ftp_user for $domain"
+log_history "added ftp account ${1}_${3} for $domain"
 log_event "$OK" "$EVENT"
 log_event "$OK" "$EVENT"
 
 
 exit
 exit

+ 26 - 10
bin/v-delete-web-domain-ftp

@@ -1,6 +1,6 @@
 #!/bin/bash
 #!/bin/bash
-# info: delete webdomain ftp account.
-# options: USER DOMAIN
+# info: delete webdomain ftp account
+# options: USER DOMAIN FTP_USER
 #
 #
 # The function deletes additional ftp account.
 # The function deletes additional ftp account.
 
 
@@ -13,6 +13,7 @@
 user=$1
 user=$1
 domain=$(idn -t --quiet -u "$2" )
 domain=$(idn -t --quiet -u "$2" )
 domain_idn=$(idn -t --quiet -a "$domain")
 domain_idn=$(idn -t --quiet -a "$domain")
+ftp_user=$3
 
 
 # Includes
 # Includes
 source $VESTA/func/main.sh
 source $VESTA/func/main.sh
@@ -24,14 +25,19 @@ source $VESTA/conf/vesta.conf
 #                    Verifications                         #
 #                    Verifications                         #
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
-check_args '2' "$#" 'USER DOMAIN'
-validate_format 'user' 'domain'
+check_args '3' "$#" 'USER DOMAIN FTP_USER'
+validate_format 'user' 'domain' 'ftp_user'
 is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
 is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
 is_object_valid 'user' 'USER' "$user"
 is_object_valid 'user' 'USER' "$user"
 is_object_unsuspended 'user' 'USER' "$user"
 is_object_unsuspended 'user' 'USER' "$user"
 is_object_valid 'web' 'DOMAIN' "$domain"
 is_object_valid 'web' 'DOMAIN' "$domain"
 is_object_unsuspended 'web' 'DOMAIN' "$domain"
 is_object_unsuspended 'web' 'DOMAIN' "$domain"
-is_object_value_exist 'web' 'DOMAIN' "$domain" '$FTP_USER'
+get_domain_values 'web'
+if [ -z "$(echo $FTP_USER | tr ':' '\n' | grep ^$ftp_user$)" ]; then
+    echo "Error: account $ftp_user doesn't exist"
+    log_event "$E_NOTEXIST" "$EVENT"
+    exit $E_NOTEXIST
+fi
 
 
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#
@@ -39,20 +45,30 @@ is_object_value_exist 'web' 'DOMAIN' "$domain" '$FTP_USER'
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
 # Deleting ftp user
 # Deleting ftp user
-get_domain_values 'web'
-/usr/sbin/userdel -f  $FTP_USER >> /dev/null 2>&1
+/usr/sbin/userdel -f  $ftp_user >> /dev/null 2>&1
 
 
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #                       Vesta                              #
 #                       Vesta                              #
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
+# Rebuild FTP variables
+position=$(echo $FTP_USER |tr ':' '\n' |grep -n '' |grep ":$ftp_user$" |\
+    cut -f 1 -d:)
+ftp_user=$(echo $FTP_USER |tr ':' '\n' |grep -n '' |grep -v "^$position:" |\
+    cut -f 2 -d :| sed -e "/^$/d"| sed -e ':a;N;$!ba;s/\n/:/g')
+ftp_md5=$(echo $FTP_MD5 |tr ':' '\n' |grep -n '' |grep -v "^$position:" |\
+    cut -f 2 -d :| sed -e "/^$/d"| sed -e ':a;N;$!ba;s/\n/:/g')
+ftp_path=$(echo $FTP_PATH |tr ':' '\n' |grep -n '' |grep -v "^$position:" |\
+    cut -f 2 -d :| sed -e "/^$/d"| sed -e ':a;N;$!ba;s/\n/:/g')
+
 # Update config
 # Update config
-update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' ''
-update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' ''
+update_object_value 'web' 'DOMAIN' "$domain" '$FTP_USER' "$ftp_user"
+update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5"
+update_object_value 'web' 'DOMAIN' "$domain" '$FTP_PATH' "$ftp_path"
 
 
 # Logging
 # Logging
-log_history "deleted ftp account $FTP_USER for $domain"
+log_history "deleted ftp account ${3} for $domain"
 log_event "$OK" "$EVENT"
 log_event "$OK" "$EVENT"
 
 
 exit
 exit

+ 2 - 2
bin/v-list-web-domains

@@ -34,8 +34,8 @@ is_object_valid 'user' 'USER' "$user"
 conf=$USER_DATA/web.conf
 conf=$USER_DATA/web.conf
 
 
 # Defining fileds to select
 # Defining fileds to select
-fields="\$DOMAIN \$IP \$IP6 \$U_DISK \$U_BANDWIDTH \$TPL \$ALIAS"
-fields="$fields \$STATS \$STATS_USER \$SSL \$SSL_HOME \$FTP_USER"
+fields="\$DOMAIN \$IP \$IP6 \$U_DISK \$U_BANDWIDTH \$TPL \$ALIAS \$STATS"
+fields="$fields \$STATS_USER \$SSL \$SSL_HOME \$FTP_USER \$FTP_PATH"
 fields="$fields \$PROXY \$PROXY_EXT \$SUSPENDED \$TIME \$DATE"
 fields="$fields \$PROXY \$PROXY_EXT \$SUSPENDED \$TIME \$DATE"
 
 
 # Listing domains
 # Listing domains