Domtool Module Domain

Configuring shared daemons with respect to a particular Internet domain name


extern type no_spaces
extern type no_newlines
extern type ip
extern type ipv6
extern type your_ip
extern val your_ip_to_ip : your_ip -> ip
extern type your_ipv6
extern val your_ipv6_to_ipv6 : your_ipv6 -> ipv6
extern type host
extern type domain
extern type your_domain
extern type your_domain_host
extern type node
extern val ip_of_node : node -> ip
extern val ipv6_of_node : node -> ipv6
extern type user
extern type group
extern type your_user
extern type your_group
extern type your_path
extern val end_in_slash : your_path -> your_path
extern type readable_path
context Domain
extern type serial
extern val serialAuto : serial
extern val serialConst : int -> serial
extern type soa
extern val soa : domain -> serial -> int -> int -> int -> int -> soa
val defaultSoa : soa
extern type dns_node
extern val dns_node_to_node : dns_node -> node
extern type master
extern val externalMaster : ip -> master
extern val internalMaster : dns_node -> master
extern type dnsKind
extern val useDns : soa -> master -> [dns_node] -> dnsKind
extern val noDns : dnsKind
extern val domain :
 your_domain ->
  Domain => [Root] {Aliases : [your_domain], DNS : dnsKind, TTL : int}
extern type mail_node
extern val mail_node_to_node : mail_node -> node
extern val domainHost : host -> [Domain] {} => {Hostname : domain}

extern type no_spaces

Any string with no space characters

extern type no_newlines

Any string with no newline characters

extern type ip

An IP address

extern type ipv6

An IPv6 address

extern type your_ip

extern val your_ip_to_ip : your_ip -> ip

An IP address that you're authorized to use; e.g., for an SSL web host

extern type your_ipv6

extern val your_ipv6_to_ipv6 : your_ipv6 -> ipv6

An IPv6 address that you're authorized to use; e.g., for an SSL web host

extern type host

A hostname; that is, (more or less) an alphanumeric string

extern type domain

An Internet domain name

extern type your_domain

A domain that you're allowed to configure

extern type your_domain_host

Some host (as a fully-qualified domain name) in one of your domains

extern type node

The name of a server controlled by domtool

extern val ip_of_node : node -> ip

Look up the IP address of a node.

extern val ipv6_of_node : node -> ipv6

Look up the IPv6 address of a node.

extern type user

extern type group

UNIX users and groups

extern type your_user

extern type your_group

UNIX users and groups that you're allowed to run as

extern type your_path

A filesystem path that you're allowed to write to. The set of permitted values is generated from a set of roots by closing it under the subdirectory relation.

extern val end_in_slash : your_path -> your_path

Add a slash at the end of a path, if there isn't one already.

extern type readable_path

Like [your_path], but also includes some paths that everyone is allowed to read.

context Domain

Configuration directives specific to an Internet domain

extern type serial

Domain zone serial numbers

extern val serialAuto : serial

Whenever DNS data changes, choose a sensible serial number automatically.

extern val serialConst : int -> serial

Use this particular serial number.

extern type soa

DNS start-of-authority record

extern val soa : domain -> serial -> int -> int -> int -> int -> soa

val defaultSoa : soa

extern type dns_node

A node offering DNS services

extern val dns_node_to_node : dns_node -> node

extern type master

Information on the master DNS server for a domain

extern val externalMaster : ip -> master

A server not controlled by domtool will serve as master.

extern val internalMaster : dns_node -> master

A server controlled by domtool will serve as master.

extern type dnsKind

How should DNS for this domain be handled?

extern val useDns : soa -> master -> [dns_node] -> dnsKind

We do want DNS services for this domain. Specify the SOA record, information on the server in charge of zone data, and a list of slave servers.

extern val noDns : dnsKind

No DNS services for this domain.

extern val domain :
 
your_domain ->
  Domain => [Root] {Aliases : [your_domain], DNS : dnsKind, TTL : int}

Configure a domain to which you have access rights.

extern type mail_node

A node offering SMTP services

extern val mail_node_to_node : mail_node -> node

extern val domainHost : host -> [Domain] {} => {Hostname : domain}

Appends the current domain onto a host.