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

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