basic internal ipv6 support
[hcoop/domtool2.git] / src / main.sml
index 1816f78..dfe0bd5 100644 (file)
@@ -56,6 +56,7 @@ fun check' G fname =
 
 fun basis () =
     let
+       val _ = ErrorMsg.reset ()
        val dir = Posix.FileSys.opendir Config.libRoot
 
        fun loop files =
@@ -117,6 +118,7 @@ fun check G fname =
 
 fun notTmp s =
     String.sub (s, 0) <> #"."
+    andalso s <> "_darcs"
     andalso CharVector.all (fn ch => Char.isAlphaNum ch orelse ch = #"." orelse ch = #"_" orelse ch = #"-") s
 
 fun setupUser () =
@@ -540,7 +542,7 @@ fun requestDbUser dbtype =
     let
        val (_, context) = requestContext (fn () => ())
        val bio = OpenSSL.connect true (context,
-                                       Config.Dbms.dbmsNode ^ ":" ^ Int.toString Config.slavePort)
+                                       Domain.nodeIp Config.Dbms.dbmsNode ^ ":" ^ Int.toString Config.slavePort)
     in
        Msg.send (bio, MsgCreateDbUser dbtype);
        case Msg.recv bio of
@@ -671,16 +673,17 @@ fun requestPortalPasswdMailbox p =
     let
        val (_, bio) = requestBio (fn () => ())
     in
-       Msg.send (bio, MsgPortalPasswdMailbox p);
-       case Msg.recv bio of
-           NONE => print "Server closed connection unexpectedly.\n"
-         | SOME m =>
-           case m of
-               MsgOk => print ("The password for " ^ #user p ^ "@" ^ #domain p ^ " has been changed.\n")
-             | MsgError s => print ("Set failed: " ^ s ^ "\n")
-             | _ => print "Unexpected server reply.\n";
-       OpenSSL.close bio
-    end
+       (Msg.send (bio, MsgPortalPasswdMailbox p);
+        case Msg.recv bio of
+            NONE => (print "Server closed connection unexpectedly.\n"; OS.Process.failure)
+          | SOME m =>
+            case m of
+                MsgOk => (print ("The password for " ^ #user p ^ "@" ^ #domain p ^ " has been changed.\n");
+                          OS.Process.success)
+              | MsgError s => (print ("Set failed: " ^ s ^ "\n"); OS.Process.failure)
+              | _ => (print "Unexpected server reply.\n"; OS.Process.failure))
+       before OpenSSL.close bio
+    end 
 
 fun requestRmMailbox p =
     let
@@ -1107,7 +1110,7 @@ fun regenerateEither tc checker context =
 
        val ok = ref true
  
-       fun contactNode (node, ip) =
+       fun contactNode (node, ip, ipv6) =
            if node = Config.dispatcherName then
                Domain.resetLocal ()
            else let
@@ -1170,7 +1173,7 @@ fun regenerateEither tc checker context =
                            ignore (foldl checker' (basis', SM.empty) files)
                        end
                    end
-               else if String.isSuffix "_admin" user then
+               else if (String.isSuffix "_admin" user) orelse (String.isSuffix ".daemon" user) then
                    ()    
                else
                    (print ("Couldn't access " ^ user ^ "'s ~/.domtool directory.\n");