easy_domain: fix argument
[hcoop/domtool2.git] / lib / easy_domain.dtl
index 4b9989b..26de1b1 100644 (file)
@@ -1,14 +1,18 @@
 {{The most common kinds of domain configuration}}
 
-val default_node : (node) = "mire";
-val web_node : (web_node) = "mire";
+val web_node : (web_node) = "shelob";
+val default_node : (node) = web_node_to_node web_node;
 val web_ip = ip_of_node (web_node_to_node web_node);
+val web_ipv6 = ipv6_of_node (web_node_to_node web_node);
+
+var WebPlaces = [web_place_default web_node];
 
 val webAt =
   \ n : (web_node) ->
   \ host : (host) ->
   \\ config : Vhost -> begin
     dns (dnsA (literal host) (ip_of_node (web_node_to_node n)));
+    dns (dnsAAAA (literal host) (ipv6_of_node (web_node_to_node n)));
 
     vhost host where
       WebPlaces = [web_place_default n]
@@ -17,24 +21,50 @@ val webAt =
     end
   end;
 
-val web = webAt web_node;
+val web = \ host -> \\ config : Vhost -> begin
+  n <- DefaultWebNode;
+  webAt n host with config end;
+end;
 
 val webAtIp =
   \ ip : (your_ip) ->
+  \ ipv6 : (your_ipv6) ->
   \ host : (host) ->
   \\ config : Vhost -> begin
     dns (dnsA (literal host) (your_ip_to_ip ip));
+    dns (dnsAAAA (literal host) (your_ipv6_to_ipv6 ipv6));
 
     vhost host where
-      WebPlaces = [web_place web_node ip]
+      WebPlaces = [web_place web_node ip ipv6]
     with
       config
     end
   end;
 
+val webSsl = \ host -> \ certFile -> \\ config : Vhost -> begin
+  n <- DefaultWebNode;
+  webAt n host where
+    SSL = certFile;
+  with config end;
+
+  force_ssl <- ForceSSL;
+  if force_ssl then
+    webAt n host where
+      SSL = no_ssl;
+    with
+      rewriteRule "^(.*)$" "https://%{HTTP_HOST}$1" [redirect];
+    end;
+  else
+    webAt n host where
+      SSL = no_ssl;
+    with config end;
+  end;
+end;
+
 val addDefaultAlias = begin
   mailbox <- Mailbox;
-  defaultAlias mailbox
+  source <- DefaultAliasSource;
+  aliasPrim source (addressTarget mailbox)
 end;
 
 val addWww = begin
@@ -52,9 +82,12 @@ val dom =
     dns (dnsNS "ns1.hcoop.net");
     dns (dnsNS "ns2.hcoop.net");
 
+    user_web_node <- DefaultWebNode;
+
     defa : bool <- DefaultA;
     if defa then
-      dns (dnsA default (ip_of_node (web_node_to_node web_node)))
+      dns (dnsA default (ip_of_node (web_node_to_node user_web_node)));
+      dns (dnsAAAA default (ipv6_of_node (web_node_to_node user_web_node)))
     else
       Skip
     end;
@@ -68,7 +101,7 @@ val dom =
 
     amx : bool <- AddMX;
     if amx then
-      dns (dnsMX 1 "mail.hcoop.net")
+      dns (dnsMX 1 "mail.hcoop.net");
     else
       Skip
     end;
@@ -88,7 +121,7 @@ val dom =
     end;
 
     config
-  end;
+end;
 
 val nameserver = \host -> dns (dnsNS host);
 val dnsIP = \from -> \to -> dns (dnsA (literal from) to);
@@ -101,3 +134,5 @@ val dnsText = \from -> \to -> dns (dnsTXT (srv_literal from) to);
 val dnsDefaultText = \to -> dns (dnsTXT srv_default to);
 
 val dnsWildcardIP = \to -> dns (dnsA wildcard to);
+
+val addDefaultSPF = dnsDefaultText "v=spf1 mx -all";