X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;ds=sidebyside;f=local%2Froundcube-chpasswd;fp=local%2Froundcube-chpasswd;h=92cf455d998dfea8d361755397691358e09602eb;hb=b75d4503ef9c919231c0c02daf5a1ed1e57c73af;hp=0000000000000000000000000000000000000000;hpb=4c57b350e0265cfadb9bbf95cd55ae491ee66820;p=lhc%2Fateliers.git diff --git a/local/roundcube-chpasswd b/local/roundcube-chpasswd new file mode 100755 index 0000000..92cf455 --- /dev/null +++ b/local/roundcube-chpasswd @@ -0,0 +1,38 @@ +#!/bin/sh -efu + +test "$(id -n -u)" = php5_roundcube + +IFS=: read -r user password +IFS=@ read -r user domain <<-EOF + $user + EOF +test "${user:+set"}" +test "${domain:+set"}" +test "${password:+set"}" + +umask 0077 +dir_passwd=/etc/dovecot/"$domain" +old_passwd="$dir_passwd"/passwd +new_passwd=$(TMPDIR= /bin/mktemp --tmpdir="$dir_passwd" -t "passwd.XXXXXXXX.tmp") +return=1 +while IFS=: read <&4 -r passwd_user passwd_password passwd_x + do + case "$passwd_user" in + ("$user") + return=0 + /bin/cat >&3 <<-EOF + $user:$(/usr/bin/doveadm pw -s SHA512-CRYPT -p "$password"):$passwd_x + EOF + ;; + ('') : ;; + (*) + /bin/cat >&3 <<-EOF + $passwd_user:$passwd_password:$passwd_x + EOF + ;; + esac + done 3>"$new_passwd" 4<<-EOF + $(/bin/cat "$old_passwd") + EOF +/bin/mv -f "$new_passwd" "$old_passwd" +exit $return