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
/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/
| 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)
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"