mysql: revoke permissions when dropping database
[hcoop/domtool2.git] / src / domain.sig
index b3c06ce..b55bc17 100644 (file)
 
 signature DOMAIN = sig
 
+    val declareClient : unit -> unit
+    val fakePrivileges : unit -> unit
+
     val yourPath : string -> bool
     val isIdent : char -> bool
     val validHost : string -> bool
     val validDomain : string -> bool
+    val validIpv6 : string -> bool
+    val validIp : string -> bool
     val yourDomain : string -> bool
     val validUser : string -> bool
     val validEmailUser : string -> bool
@@ -70,10 +75,12 @@ signature DOMAIN = sig
 
     val nodes : string list
     (* Names of all system nodes *)
-    val nodeMap : string Ast.StringMap.map
+    val nodeMap : (string * string) Ast.StringMap.map
     (* Map node names to IP addresses *)
     val nodeIp : string -> string
     (* Look up a node in nodeMap *)
+    val nodeIpv6 : string -> string
+    (* Look up a node in nodeMap *)
 
     val setUser : string -> unit
     val getUser : unit -> string
@@ -87,12 +94,34 @@ signature DOMAIN = sig
     val your_paths : unit -> DataStructures.StringSet.set
     (* UNIX users, groups, and paths the user may act with *)
 
+    val get_context : unit -> OpenSSL.context
     val set_context : OpenSSL.context -> unit
 
     val hasPriv : string -> bool
 
     val rmdom : string list -> unit
+    val rmdom' : string -> string list -> unit
 
     val homedirOf : string -> string
     val homedir : unit -> string
+
+    type subject = {node : string, domain : string}
+
+    val registerDescriber : (subject -> string) -> unit
+    (* When a user runs [domtool-admin describe $DOM], every function passed to
+     * [registerDescriber] will be run on [$DOM]. *)
+    val describe : string -> string
+    (* Argument is domain to describe, over all nodes. *)
+
+    datatype description =
+            Filename of { filename : string, heading : string, showEmpty : bool }
+          | Extension of { extension : string, heading : string -> string }
+
+    val considerAll : description list -> subject -> string
+    (* Find files in a domain directory matching some patterns and generate
+     * headings and contents listings for them. *)
+
+    (* Callbacks to run whenever the set of Domtool users has changed *)
+    val registerOnUsersChange : (unit -> unit) -> unit
+    val onUsersChange : unit -> unit
 end