lib: add webSsl directive
[hcoop/domtool2.git] / lib / easy_domain.dtl
index 6bc84eb..0f05a7c 100644 (file)
@@ -1,13 +1,16 @@
 {{The most common kinds of domain configuration}}
 
-val default_node : (node) = "mire";
-val web_node : (web_node) = "mire";
+val web_node : (web_node) = "navajos";
+val default_node : (node) = web_node_to_node web_node;
+val web_ip = ip_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 host (ip_of_node (web_node_to_node n)));
+    dns (dnsA (literal host) (ip_of_node (web_node_to_node n)));
 
     vhost host where
       WebPlaces = [web_place_default n]
@@ -16,13 +19,16 @@ 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) ->
   \ host : (host) ->
   \\ config : Vhost -> begin
-    dns (dnsA host (your_ip_to_ip ip));
+    dns (dnsA (literal host) (your_ip_to_ip ip));
 
     vhost host where
       WebPlaces = [web_place web_node ip]
@@ -31,9 +37,30 @@ val webAtIp =
     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
@@ -49,12 +76,30 @@ val dom =
   \\ config : Domain ->
   domain d with
     dns (dnsNS "ns1.hcoop.net");
-    dns (dnsNS "ns3.hcoop.net");
+    dns (dnsNS "ns2.hcoop.net");
 
-    dns (dnsDefaultA (ip_of_node (web_node_to_node web_node)));
+    user_web_node <- DefaultWebNode;
 
-    handleMail;
-    dns (dnsMX 1 "deleuze.hcoop.net");
+    defa : bool <- DefaultA;
+    if defa then
+      dns (dnsA default (ip_of_node (web_node_to_node user_web_node)))
+    else
+      Skip
+    end;
+
+    hmail : bool <- HandleMail;
+    if hmail then
+      handleMail
+    else
+      Skip
+    end;
+
+    amx : bool <- AddMX;
+    if amx then
+      dns (dnsMX 1 "mail.hcoop.net");
+    else
+      Skip
+    end;
 
     createWWW : bool <- CreateWWW;
     if createWWW then
@@ -71,14 +116,18 @@ val dom =
     end;
 
     config
-  end;
+end;
 
 val nameserver = \host -> dns (dnsNS host);
-val dnsIP = \from -> \to -> dns (dnsA from to);
-val dnsIPv6 = \from -> \to -> dns (dnsAAAA from to);
+val dnsIP = \from -> \to -> dns (dnsA (literal from) to);
+val dnsIPv6 = \from -> \to -> dns (dnsAAAA (literal 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);
-val dnsDefaultText = \to -> dns (dnsDefaultTXT to);
+val dnsAlias = \from -> \to -> dns (dnsCNAME (literal from) to);
+val dnsDefault = \to -> dns (dnsA default to);
+val dnsDefaultv6 = \to -> dns (dnsAAAA default to);
+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";