end
handle ErrorMsg.Error => ()
+fun requestPing () =
+ let
+ val (_, bio) = requestBio (fn () => ())
+ in
+ OpenSSL.close bio;
+ OS.Process.success
+ end
+ handle _ => OS.Process.failure
+
fun requestShutdown () =
let
val (_, bio) = requestBio (fn () => ())
| MsgMultiConfig codes => doConfig codes
| MsgShutdown =>
- if Acl.query {user = user, class = "priv", value = "shutdown"} then
- print ("Domtool dispatcher shutting down at " ^ Date.toString (Date.fromTimeUniv (Time.now ())) ^ "\n")
+ if Acl.query {user = user, class = "priv", value = "all"}
+ orelse Acl.query {user = user, class = "priv", value = "shutdown"} then
+ print ("Domtool dispatcher shutting down at " ^ Date.toString (Date.fromTimeUniv (Time.now ())) ^ "\n\n")
else
- (OpenSSL.close bio
+ (print "Unauthorized shutdown command!\n";
+ OpenSSL.close bio
handle OpenSSL.OpenSSL _ => ();
loop ())