v-change-web-domain-ftp-path 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/bin/bash
  2. # info: change path for ftp user.
  3. # options: USER DOMAIN FTP_USER FTP_PATH
  4. #
  5. # The function changes ftp user path.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. user=$1
  11. domain=$2
  12. ftp_user=$3
  13. ftp_path=$4
  14. # Includes
  15. source $VESTA/func/main.sh
  16. source $VESTA/func/domain.sh
  17. source $VESTA/conf/vesta.conf
  18. # Additional argument formatting
  19. format_domain
  20. format_domain_idn
  21. #----------------------------------------------------------#
  22. # Verifications #
  23. #----------------------------------------------------------#
  24. check_args '4' "$#" 'USER DOMAIN FTP_USER FTP_PATH'
  25. is_format_valid 'user' 'domain' 'ftp_user'
  26. is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
  27. is_object_valid 'user' 'USER' "$user"
  28. is_object_unsuspended 'user' 'USER' "$user"
  29. is_object_valid 'web' 'DOMAIN' "$domain"
  30. is_object_unsuspended 'web' 'DOMAIN' "$domain"
  31. get_domain_values 'web'
  32. if [ -z "$(echo $FTP_USER | tr ':' '\n' | grep ^$ftp_user$)" ]; then
  33. echo "Error: account $ftp_user doesn't exist"
  34. log_event "$E_NOTEXIST" "$ARGUMENTS"
  35. exit $E_NOTEXIST
  36. fi
  37. ftp_path_a=$(readlink -f "$HOMEDIR/$user/web/$domain/$ftp_path")
  38. if [ -z "$(echo $ftp_path_a |grep $HOMEDIR/$user/web/$domain)" ]; then
  39. echo "Error: absolute path $ftp_path_a is invalid"
  40. log_event "$E_INVALID" "$ARGUMENTS"
  41. exit $E_INVALID
  42. fi
  43. #----------------------------------------------------------#
  44. # Action #
  45. #----------------------------------------------------------#
  46. # MKDIR if path doesn't exist
  47. if [ ! -e "$ftp_path_a" ]; then
  48. mkdir -p "$ftp_path_a"
  49. chown $user:$user "$ftp_path_a"
  50. chmod 751 "$ftp_path_a"
  51. fi
  52. # Chaning ftp user path
  53. pw_str=$(grep -n "^$ftp_user:" /etc/passwd)
  54. str=$(echo "$pw_str" | cut -f 1 -d :)
  55. old_path=$(echo "$pw_str" | cut -f 7 -d :)
  56. sed -i "$str s%$old_path%$ftp_path_a%g" /etc/passwd
  57. #----------------------------------------------------------#
  58. # Vesta #
  59. #----------------------------------------------------------#
  60. # Transforming absolute path to relative
  61. ftp_path_r=$(echo $ftp_path_a |sed "s%$HOMEDIR/$user/web/$domain%%")
  62. # Rebuilding FTP variables
  63. position=$(echo $FTP_USER |tr ':' '\n' |grep -n '' |grep ":$ftp_user$" |\
  64. cut -f 1 -d:)
  65. ftp_path=$(echo $FTP_PATH |tr ':' '\n' |grep -n '' |\
  66. sed -e "s%^$position:.*%$position:$ftp_path_r%" |\
  67. cut -f 2 -d :| sed -e ':a;N;$!ba;s/\n/:/g')
  68. # Updating config
  69. update_object_value 'web' 'DOMAIN' "$domain" '$FTP_PATH' "$ftp_path"
  70. # Logging
  71. log_history "changed path to $ftp_path_a for $ftp_user@$domain"
  72. log_event "$OK" "$ARGUMENTS"
  73. exit