* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*)
+ *)
(* Domain-related primitive actions *)
signature DOMAIN = sig
+ val isIdent : char -> bool
+ val validHost : string -> bool
+ val validDomain : string -> bool
+
val registerBefore : (string -> unit) -> unit
val registerAfter : (string -> unit) -> unit
(* Register handlers to run just before and after entering a domain
* block. *)
+ val currentDomain : unit -> string
+
+ val domainFile : {node : string, name : string} -> TextIO.outstream
+ (* Open one of the current domain's configuration files for a particular
+ * node. *)
+
+ 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 *)
end