mirror of
https://github.com/serghey-rodin/vesta.git
synced 2024-12-03 19:00:24 -08:00
ce417f65a2
This will fix bug when change password from cli $quota is not defined I not know if there is any function to get quota with a single comand, so I get alredy defined quota With out this vesta will reset quota or not asign nothing in passwd file when quota password was reset
76 lines
2.4 KiB
Bash
Executable File
76 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# info: change mail account password
|
|
# options: USER DOMAIN ACCOUNT PASSWORD
|
|
#
|
|
# The function changes email account password.
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Variable&Function #
|
|
#----------------------------------------------------------#
|
|
|
|
# Argument definition
|
|
user=$1
|
|
domain=$2
|
|
domain_idn=$2
|
|
account=$3
|
|
password=$4; HIDE=4
|
|
|
|
# Includes
|
|
source $VESTA/func/main.sh
|
|
source $VESTA/func/domain.sh
|
|
source $VESTA/conf/vesta.conf
|
|
|
|
# Additional argument formatting
|
|
format_domain
|
|
format_domain_idn
|
|
# TODO: $domain_idn not used in this script - maybe $domain should be converted to $doman_idn ?
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Verifications #
|
|
#----------------------------------------------------------#
|
|
|
|
check_args '4' "$#" 'USER DOMAIN ACCOUNT PASSWORD'
|
|
is_format_valid 'user' 'domain' 'account'
|
|
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
|
is_object_valid 'user' 'USER' "$user"
|
|
is_object_unsuspended 'user' 'USER' "$user"
|
|
is_object_valid 'mail' 'DOMAIN' "$domain"
|
|
is_object_unsuspended 'mail' 'DOMAIN' "$domain"
|
|
is_object_valid "mail/$domain" 'ACCOUNT' "$account"
|
|
is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
|
|
is_password_valid
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Action #
|
|
#----------------------------------------------------------#
|
|
|
|
# Generating hashed password
|
|
salt=$(generate_password "$PW_MATRIX" "8")
|
|
md5="{MD5}$($BIN/v-generate-password-hash md5 $salt <<<$password)"
|
|
|
|
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
|
|
quota=$(grep $account $VESTA/data/users/${user}/mail/${domain}.conf)
|
|
quota=$(echo $quota | awk '{ print $7 }' | sed -e "s/'//g" )
|
|
quota=$(echo $quota | cut -d "=" -f 2 | sed -e "s/unlimited/0/g")
|
|
sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd
|
|
str="$account:$md5:$user:mail::$HOMEDIR/$user:${quota}M"
|
|
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
|
|
fi
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Vesta #
|
|
#----------------------------------------------------------#
|
|
|
|
# Update md5
|
|
update_object_value "mail/$domain" 'ACCOUNT' "$account" '$MD5' "$md5"
|
|
|
|
# Logging
|
|
log_history "changed password for $account@$domain"
|
|
log_event "$OK" "$ARGUMENTS"
|
|
|
|
exit
|