X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/dac62e84b324d2187ec9b9882efa47125d5599a4..9b8c6dc8df86d6ba1c7512cb12445912a9035a89:/src/domain.sig diff --git a/src/domain.sig b/src/domain.sig index eb94f3f..9383a8e 100644 --- a/src/domain.sig +++ b/src/domain.sig @@ -20,6 +20,28 @@ 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 yourDomain : string -> bool + val validUser : string -> bool + val validEmailUser : string -> bool + + val ip : string Env.arg + + val registerResetGlobal : (unit -> unit) -> unit + val registerResetLocal : (unit -> unit) -> unit + (* Register functions for clearing out all Domtool configuration at the global + * (AFS) and local levels, respectively. *) + + val resetGlobal : unit -> unit + val resetLocal : unit -> unit + (* Call all registered functions *) + val registerBefore : (string -> unit) -> unit val registerAfter : (string -> unit) -> unit (* Register handlers to run just before and after entering a domain @@ -27,7 +49,75 @@ signature DOMAIN = sig val currentDomain : unit -> string - val domainFile : string -> TextIO.outstream - (* Open one of the current domain's configuration files. *) + val domainFile : {node : string, name : string} -> TextIO.outstream + (* Open one of the current domain's configuration files for a particular + * node. *) + + val currentAliasDomains : unit -> string list + val currentDomains : unit -> string list + (* Return the auxiliary domains being configured (not including + * currentDomain) or the list of all domains being configured, + * respectively. *) + + (* The type of a set of files open for different domains. *) + type files = {write : string -> unit, (* Write a string to each. *) + writeDom : unit -> unit, (* Write each's domain name to it. *) + close : unit -> unit} (* Close all files. *) + + val domainsFile : {node : string, name : string} -> files + (* Open a configuration file for every domain being configured. *) + + val dnsMaster : unit -> string option + (* Name of the node that is the DNS master for the current domain, if there + * is one *) + + val nodes : string list + (* Names of all system nodes *) + val nodeMap : string Ast.StringMap.map + (* Map node names to IP addresses *) + val nodeIp : string -> string + (* Look up a node in nodeMap *) + + val setUser : string -> unit + val getUser : unit -> string + (* Name of the UNIX user providing this configuration *) + + val your_domains : unit -> DataStructures.StringSet.set + (* The domains the current user may configure *) + + val your_users : unit -> DataStructures.StringSet.set + val your_groups : unit -> DataStructures.StringSet.set + 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