extern val dnsMX : int -> domain -> dnsRecord;
extern val dnsNS : domain -> dnsRecord;
+extern val dnsDefaultA : ip -> dnsRecord;
+
extern val dns : dnsRecord -> [Domain] {TTL : int};
{{The most common kinds of domain configuration}}
+val default_node : (node) = "mire";
val web_node : (web_node) = "mire";
val webAt =
dns (dnsNS "deleuze.hcoop.net");
dns (dnsNS "mire.hcoop.net");
+ dns (dnsDefaultA (ip_of_node default_node));
+
handleMail;
mailbox <- Mailbox;
catchAllAlias mailbox;
| CNAME of string * string
| MX of int * string
| NS of string
+ | DefaultA of string
val record = fn (EApp ((EApp ((EVar "dnsA", _), e1), _), e2), _) =>
(case (Env.string e1, Domain.ip e2) of
| _ => NONE)
| (EApp ((EVar "dnsNS", _), e), _) =>
Option.map NS (Env.string e)
+ | (EApp ((EVar "dnsDefaultA", _), e), _) =>
+ Option.map DefaultA (Env.string e)
| _ => NONE
fun writeRecord (evs, r) =
write "\tIN\tA\t";
write to;
write "\n")
+ | DefaultA to => (writeDom ();
+ write ".\t";
+ write (Int.toString ttl);
+ write "\tIN\tA\t";
+ write to;
+ write "\n")
| CNAME (from, to) => (write from;
write ".";
writeDom ();