From: Clinton Ebadi Date: Mon, 6 Oct 2014 03:45:12 +0000 (-0400) Subject: Release X-Git-Tag: release_20141005 X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/commitdiff_plain/2a0307b3c1b24fd9b8d2256fe9bb5d8800f1c3f0?hp=7d739612e74b4d6cedce5ad5078b0df51c451789 Release --- diff --git a/scripts/domtool-addcert b/scripts/domtool-addcert index 9b5495b..21eddba 100755 --- a/scripts/domtool-addcert +++ b/scripts/domtool-addcert @@ -30,7 +30,7 @@ if [ "$2" != '-unsafe' ]; then if [ -z "`getent passwd $USER`" ]; then echo "$USER does not exist. This must be a server principal." else - chown -R $USER.nogroup $KEYDIR + chown -R $USER:nogroup $KEYDIR fi fi diff --git a/scripts/domtool-publish b/scripts/domtool-publish index 0771867..cd5e196 100755 --- a/scripts/domtool-publish +++ b/scripts/domtool-publish @@ -64,7 +64,7 @@ case $1 in fi /usr/bin/rsync -r --delete ${VMAILDB}/ /etc/courier/userdb /usr/sbin/makeuserdb - /bin/chown -R domtool.nogroup /etc/courier/userdb + /bin/chown -R domtool:nogroup /etc/courier/userdb /bin/cat /etc/courier/userdb/* >/etc/courier/exim /bin/chmod o-r /etc/courier/exim /usr/sbin/exim_dbmbuild /etc/courier/exim /etc/courier/exim.dat @@ -79,10 +79,10 @@ case $1 in /bin/grep $2 /var/log/exim4/mainlog ;; apache-fixperms) - /bin/chown -R domtool.nogroup /var/log/apache2/user + /bin/chown -R domtool:nogroup /var/log/apache2/user ;; apache1.3-fixperms) - /bin/chown -R domtool.nogroup /var/log/apache/user + /bin/chown -R domtool:nogroup /var/log/apache/user ;; users) /bin/cp /var/domtool/waklog.conf /etc/apache2/ diff --git a/scripts/domtool-vmailpasswd b/scripts/domtool-vmailpasswd index 1ebb365..f2df2bf 100755 --- a/scripts/domtool-vmailpasswd +++ b/scripts/domtool-vmailpasswd @@ -1,4 +1,4 @@ -#!/usr/bin/python2 +#!/usr/bin/python # -*- python -*- # Helper for domtool to check if a vmail password matches the stored diff --git a/src/client.sig b/src/client.sig index 8cf8cd4..4b4b571 100644 --- a/src/client.sig +++ b/src/client.sig @@ -24,6 +24,8 @@ signature CLIENT = sig | Aborted | Error + val hastty : unit -> bool + val getpass : unit -> passwd_result (* Standard non-echoed console password input with confirmation *) end diff --git a/src/client.sml b/src/client.sml index 00000e7..a92b13f 100644 --- a/src/client.sml +++ b/src/client.sml @@ -25,12 +25,15 @@ datatype passwd_result = | Aborted | Error +fun hastty () = + Posix.ProcEnv.isatty Posix.FileSys.stdin + fun getpass () = let val tty = Posix.FileSys.stdin val termios = SOME (Posix.TTY.TC.getattr tty) handle OS.SysErr (reason, SOME syserr) => - if syserr = Posix.Error.notty then + if syserr = Posix.Error.notty orelse syserr = Posix.Error.inval then (print "Warning: no terminal found, not hiding password\n"; TextIO.flushOut TextIO.stdOut; NONE) diff --git a/src/main-portal.sml b/src/main-portal.sml index 93f7612..068d16c 100644 --- a/src/main-portal.sml +++ b/src/main-portal.sml @@ -29,16 +29,31 @@ fun die reason = (printerr reason; printerr "\n"; OS.Process.exit OS.Process.fai val _ = case CommandLine.arguments () of ["vmailpasswd", domain, user] => - (case Client.getpass () of - Client.Passwd oldpasswd => - (case Client.getpass () of - Client.Passwd newpasswd => - Main.requestPortalPasswdMailbox {domain = domain, - user = user, - oldpasswd = oldpasswd, - newpasswd = newpasswd} - | Client.Aborted => die "Aborted" - | Client.Error => die "New passwords did not match") - | _ => die "Error entering old password") + if (Client.hastty ()) + then + (case Client.getpass () of + Client.Passwd oldpasswd => + (case Client.getpass () of + Client.Passwd newpasswd => + Main.requestPortalPasswdMailbox {domain = domain, + user = user, + oldpasswd = oldpasswd, + newpasswd = newpasswd} + | Client.Aborted => die "Aborted" + | Client.Error => die "New passwords did not match") + | _ => die "Error entering old password") + else + let + val oldpasswd = TextIO.inputLine TextIO.stdIn + val newpasswd = TextIO.inputLine TextIO.stdIn + in + case (oldpasswd, newpasswd) of + (SOME oldpasswd, SOME newpasswd) => + Main.requestPortalPasswdMailbox {domain = domain, + user = user, + oldpasswd = String.substring (oldpasswd, 0, size oldpasswd - 1), + newpasswd = String.substring (newpasswd, 0, size newpasswd - 2)} + | _ => die "Invalid input" + end | _ => die "Invalid command-line arguments" diff --git a/src/main.sml b/src/main.sml index 1816f78..475d1aa 100644 --- a/src/main.sml +++ b/src/main.sml @@ -56,6 +56,7 @@ fun check' G fname = fun basis () = let + val _ = ErrorMsg.reset () val dir = Posix.FileSys.opendir Config.libRoot fun loop files =