Commit | Line | Data |
---|---|---|
6bb366c5 AC |
1 | {{The most common kinds of domain configuration}} |
2 | ||
a51387b8 | 3 | val web_node : (web_node) = "navajos"; |
733d4d61 | 4 | val default_node : (node) = web_node_to_node web_node; |
539abe03 | 5 | val web_ip = ip_of_node (web_node_to_node web_node); |
15e529d6 | 6 | |
733d4d61 CE |
7 | var WebPlaces = [web_place_default web_node]; |
8 | ||
15e529d6 | 9 | val webAt = |
ae272cb5 AC |
10 | \ n : (web_node) -> |
11 | \ host : (host) -> | |
12 | \\ config : Vhost -> begin | |
cfedb922 | 13 | dns (dnsA (literal host) (ip_of_node (web_node_to_node n))); |
15e529d6 | 14 | |
ae272cb5 AC |
15 | vhost host where |
16 | WebPlaces = [web_place_default n] | |
17 | with | |
18 | config | |
19 | end | |
20 | end; | |
15e529d6 | 21 | |
5c8b4fb8 CE |
22 | val web = \ host -> \\ config : Vhost -> begin |
23 | n <- DefaultWebNode; | |
24 | webAt n host with config end; | |
25 | end; | |
6bb366c5 | 26 | |
2e87719c | 27 | val webAtIp = |
ae272cb5 AC |
28 | \ ip : (your_ip) -> |
29 | \ host : (host) -> | |
30 | \\ config : Vhost -> begin | |
cfedb922 | 31 | dns (dnsA (literal host) (your_ip_to_ip ip)); |
2e87719c | 32 | |
ae272cb5 AC |
33 | vhost host where |
34 | WebPlaces = [web_place web_node ip] | |
35 | with | |
36 | config | |
37 | end | |
38 | end; | |
2e87719c | 39 | |
a356587a | 40 | val addDefaultAlias = begin |
d4e42f2a | 41 | mailbox <- Mailbox; |
945262dc CE |
42 | source <- DefaultAliasSource; |
43 | aliasPrim source (addressTarget mailbox) | |
d4e42f2a AC |
44 | end; |
45 | ||
46 | val addWww = begin | |
47 | web "www" with | |
48 | serverAliasDefault; | |
49 | www : [Vhost] <- WWW; | |
50 | www | |
51 | end | |
52 | end; | |
53 | ||
a356587a | 54 | val dom = |
ae272cb5 AC |
55 | \ d : (your_domain) -> |
56 | \\ config : Domain -> | |
57 | domain d with | |
58 | dns (dnsNS "ns1.hcoop.net"); | |
0c195384 | 59 | dns (dnsNS "ns2.hcoop.net"); |
6bb366c5 | 60 | |
5c8b4fb8 CE |
61 | user_web_node <- DefaultWebNode; |
62 | ||
942d94ab AC |
63 | defa : bool <- DefaultA; |
64 | if defa then | |
5c8b4fb8 | 65 | dns (dnsA default (ip_of_node (web_node_to_node user_web_node))) |
942d94ab AC |
66 | else |
67 | Skip | |
68 | end; | |
6eeb3bf9 | 69 | |
b3cab94c AC |
70 | hmail : bool <- HandleMail; |
71 | if hmail then | |
72 | handleMail | |
73 | else | |
74 | Skip | |
75 | end; | |
76 | ||
77 | amx : bool <- AddMX; | |
78 | if amx then | |
0c195384 | 79 | dns (dnsMX 1 "mail.hcoop.net") |
b3cab94c AC |
80 | else |
81 | Skip | |
82 | end; | |
6bb366c5 | 83 | |
ae272cb5 AC |
84 | createWWW : bool <- CreateWWW; |
85 | if createWWW then | |
86 | addWww | |
87 | else | |
88 | Skip | |
89 | end; | |
d4e42f2a | 90 | |
ae272cb5 AC |
91 | defAl : bool <- DefaultAlias; |
92 | if defAl then | |
93 | addDefaultAlias | |
94 | else | |
95 | Skip | |
96 | end; | |
d4e42f2a | 97 | |
ae272cb5 | 98 | config |
5c8b4fb8 | 99 | end; |
6b718954 | 100 | |
8c142ff5 | 101 | val nameserver = \host -> dns (dnsNS host); |
cfedb922 AC |
102 | val dnsIP = \from -> \to -> dns (dnsA (literal from) to); |
103 | val dnsIPv6 = \from -> \to -> dns (dnsAAAA (literal from) to); | |
8c142ff5 | 104 | val dnsMail = \num -> \host -> dns (dnsMX num host); |
cfedb922 AC |
105 | val dnsAlias = \from -> \to -> dns (dnsCNAME (literal from) to); |
106 | val dnsDefault = \to -> dns (dnsA default to); | |
107 | val dnsDefaultv6 = \to -> dns (dnsAAAA default to); | |
63ac3b82 AC |
108 | val dnsText = \from -> \to -> dns (dnsTXT (srv_literal from) to); |
109 | val dnsDefaultText = \to -> dns (dnsTXT srv_default to); | |
6b65a0a6 | 110 | |
1b1021cb | 111 | val dnsWildcardIP = \to -> dns (dnsA wildcard to); |
5ea8643a CE |
112 | |
113 | val addDefaultSPF = dnsDefaultText "v=spf1 mx -all"; |