2 Domtool (http
://hcoop
.sf
.net
/)
3 Copyright (C
) 2004 Adam Chlipala
5 This program is free software
; you can redistribute it
and/or
6 modify it under the terms
of the GNU General Public License
7 as published by the Free Software Foundation
; either version
2
8 of the License
, or (at your option
) any later version
.
10 This program is distributed
in the hope that it will be useful
,
11 but WITHOUT ANY WARRANTY
; without even the implied warranty
of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
. See the
13 GNU General Public License for more details
.
15 You should have received a copy
of the GNU General Public License
16 along
with this program
; if not
, write to the Free Software
17 Foundation
, Inc
., 59 Temple Place
- Suite
330, Boston
, MA
02111-1307, USA
.
20 (* Utility to
let a user set a password
in an Apache password file for a user
21 * name matches his UNIX login name
. *)
23 structure Webpasswd
:> WEBPASSWD
=
25 open Config ApacheConfig WebpasswdConfig
29 val uid
= SysWord
.toInt (Posix
.ProcEnv
.uidToWord (Posix
.ProcEnv
.getuid ()))
31 val proc
= Unix
.execute("/bin/sh", ["-c", getent ^
" passwd " ^
33 val (stdout
, stdin
) = Unix
.streamsOf proc
36 case String.tokens (fn ch
=> ch
= #
":") (TextIO.inputLine stdout
) of
38 | _
=> raise Fail
"Unexpected getent output"
40 TextIO.closeOut stdin
;
41 TextIO.closeIn stdout
;
42 if not (OS
.Process
.isSuccess (Unix
.reap proc
)) then
43 (print
"Error reaping getent\n";
46 (print ("Update password for " ^ name ^
"\n");
47 OS
.Process
.system (htpasswd ^
" " ^ passwdFile ^
" \"" ^ name ^
"\""))