v-change-web-domain-ftp-password 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. # info: change ftp user password.
  3. # options: USER DOMAIN FTP_USER FTP_PASSWORD
  4. #
  5. # The function changes ftp user password.
  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. password=$4; HIDE=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_PASSWORD'
  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. is_password_valid
  30. get_domain_values 'web'
  31. if [ -z "$(echo $FTP_USER | tr ':' '\n' | grep ^$ftp_user$)" ]; then
  32. echo "Error: account $ftp_user doesn't exist"
  33. log_event "$E_NOTEXIST" "$ARGUMENTS"
  34. exit $E_NOTEXIST
  35. fi
  36. #----------------------------------------------------------#
  37. # Action #
  38. #----------------------------------------------------------#
  39. # Changing ftp user password
  40. echo "$ftp_user:$password" | /usr/sbin/chpasswd
  41. ftp_md5=$(awk -v user=$ftp_user -F : 'user == $1 {print $2}' /etc/shadow)
  42. #----------------------------------------------------------#
  43. # Vesta #
  44. #----------------------------------------------------------#
  45. # Rebuilding FTP variables
  46. position=$(echo $FTP_USER |tr ':' '\n' |grep -n '' |grep ":$ftp_user$" |\
  47. cut -f 1 -d:)
  48. ftp_md5=$(echo $FTP_MD5 |tr ':' '\n' |grep -n '' |\
  49. sed -e "s%^$position:.*%$position:$ftp_md5%" |\
  50. cut -f 2 -d :| sed -e "/^$/d"| sed -e ':a;N;$!ba;s/\n/:/g')
  51. # Updating config
  52. update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5"
  53. # Logging
  54. log_history "changed password for $ftp_user on $domain"
  55. log_event "$OK" "$ARGUMENTS"
  56. exit