| MX of int * string
| NS of string
| DefaultA of string
+ | AAAA of string * string
+ | DefaultAAAA of string
val record = fn (EApp ((EApp ((EVar "dnsA", _), e1), _), e2), _) =>
(case (Env.string e1, Domain.ip e2) of
| (EApp ((EVar "dnsNS", _), e), _) =>
Option.map NS (Env.string e)
| (EApp ((EVar "dnsDefaultA", _), e), _) =>
- Option.map DefaultA (Env.string e)
+ Option.map DefaultA (Domain.ip e)
+ | (EApp ((EApp ((EVar "dnsAAAA", _), e1), _), e2), _) =>
+ (case (Env.string e1, Env.string e2) of
+ (SOME v1, SOME v2) => SOME (AAAA (v1, v2))
+ | _ => NONE)
+ | (EApp ((EVar "dnsDefaultAAAA", _), e), _) =>
+ Option.map DefaultAAAA (Env.string e)
| _ => NONE
fun writeRecord (evs, r) =
case !dns of
- NONE => print "Warning: DNS directive ignored because no master DNS server is configured for this domain\n"
+ NONE => print ("Warning: DNS directive for " ^ Domain.currentDomain ()
+ ^ " ignored because no master DNS server is configured for this domain\n")
| SOME files =>
let
fun write s = #write files s
write "\tIN\tNS\t";
write host;
write ".\n")
+ | AAAA (from, to) => (write from;
+ write ".";
+ writeDom ();
+ write ".\t";
+ write (Int.toString ttl);
+ write "\tIN\tAAAA\t";
+ write to;
+ write "\n")
+ | DefaultAAAA to => (writeDom ();
+ write ".\t";
+ write (Int.toString ttl);
+ write "\tIN\tAAAA\t";
+ write to;
+ write "\n")
end
val () = Env.actionV_one "dns"