X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/6bb366c5a60247419dce5cbce4a5c034fa2f1e5c..c219fe5500b4294ba8dc0bce57b5c7d60b39065e:/lib/easy_domain.dtl diff --git a/lib/easy_domain.dtl b/lib/easy_domain.dtl dissimilarity index 81% index 9a1ace5..47d8df7 100644 --- a/lib/easy_domain.dtl +++ b/lib/easy_domain.dtl @@ -1,22 +1,83 @@ -{{The most common kinds of domain configuration}} - -val web_ip : (ip) = "1.2.3.4"; - -val dom = - \ d : (your_domain) -> - \\ config : Domain -> - domain d with - dns (dnsNS "ns.hcoop.net"); - dns (dnsNS "ns2.hcoop.net"); - - dns (dnsA "www" web_ip); - - handleMail; - mailbox <- Mailbox; - catchAllAlias mailbox; - - vhost "www" with - end; - - config - end; +{{The most common kinds of domain configuration}} + +val default_node : (node) = "mire"; +val web_node : (web_node) = "mire"; + +val webAt = + \ n : (web_node) -> + \ host : (host) -> + \\ config : Vhost -> begin + dns (dnsA host (ip_of_node (web_node_to_node n))); + + vhost host where + WebPlaces = [web_place_default n] + with + config + end + end; + +val web = webAt web_node; + +val webAtIp = + \ ip : (your_ip) -> + \ host : (host) -> + \\ config : Vhost -> begin + dns (dnsA host (your_ip_to_ip ip)); + + vhost host where + WebPlaces = [web_place web_node ip] + with + config + end + end; + +val addDefaultAlias = begin + mailbox <- Mailbox; + defaultAlias mailbox +end; + +val addWww = begin + web "www" with + serverAliasDefault; + www : [Vhost] <- WWW; + www + end +end; + +val dom = + \ d : (your_domain) -> + \\ config : Domain -> + domain d with + dns (dnsNS "ns1.hcoop.net"); + dns (dnsNS "ns3.hcoop.net"); + + dns (dnsDefaultA (ip_of_node (web_node_to_node web_node))); + + handleMail; + dns (dnsMX 1 "deleuze.hcoop.net"); + + createWWW : bool <- CreateWWW; + if createWWW then + addWww + else + Skip + end; + + defAl : bool <- DefaultAlias; + if defAl then + addDefaultAlias + else + Skip + end; + + config + end; + +val nameserver = \host -> dns (dnsNS host); +val dnsIP = \from -> \to -> dns (dnsA from to); +val dnsIPv6 = \from -> \to -> dns (dnsAAAA from to); +val dnsMail = \num -> \host -> dns (dnsMX num host); +val dnsAlias = \from -> \to -> dns (dnsCNAME from to); +val dnsDefault = \to -> dns (dnsDefaultA to); +val dnsDefaultv6 = \to -> dns (dnsDefaultAAAA to); +val dnsText = \from -> \to -> dns (dnsTXT from to);