WIP: try to implement cname
This commit is contained in:
parent
8f3a9a008f
commit
317d89301c
3 changed files with 19 additions and 3 deletions
|
@ -1,3 +1,3 @@
|
||||||
open Dnstoy
|
open Dnstoy
|
||||||
|
|
||||||
let () = print_endline (Network.resolve "www.mylloon.fr" Types.DNSType.a)
|
let () = print_endline (Network.resolve "www.facebook.com" Types.DNSType.a)
|
||||||
|
|
|
@ -40,7 +40,12 @@ and resolve_aux nameserver domain_name record_type =
|
||||||
(match get_nameserver response with
|
(match get_nameserver response with
|
||||||
| Some ns_domain ->
|
| Some ns_domain ->
|
||||||
resolve_aux (resolve ns_domain DNSType.a) domain_name record_type
|
resolve_aux (resolve ns_domain DNSType.a) domain_name record_type
|
||||||
| None -> raise (Failure "Something went wrong")))
|
| None ->
|
||||||
|
(match get_alias response with
|
||||||
|
| Some cname_domain ->
|
||||||
|
resolve_aux (resolve cname_domain DNSType.a) domain_name record_type
|
||||||
|
| None ->
|
||||||
|
raise (Failure ("Something went wrong - " ^ Debug.dns_packet response)))))
|
||||||
|
|
||||||
and get_answer packet =
|
and get_answer packet =
|
||||||
match List.find_opt (fun el -> el.type_ = DNSType.a) packet.answers with
|
match List.find_opt (fun el -> el.type_ = DNSType.a) packet.answers with
|
||||||
|
@ -53,7 +58,16 @@ and get_nameserver_ip packet =
|
||||||
| None -> None
|
| None -> None
|
||||||
|
|
||||||
and get_nameserver packet =
|
and get_nameserver packet =
|
||||||
match List.find_opt (fun el -> el.type_ = DNSType.ns) packet.authorities with
|
match
|
||||||
|
List.find_opt
|
||||||
|
(fun el -> el.type_ = DNSType.ns || el.type_ = DNSType.soa)
|
||||||
|
packet.authorities
|
||||||
|
with
|
||||||
|
| Some record -> Some (String.of_bytes record.data)
|
||||||
|
| None -> None
|
||||||
|
|
||||||
|
and get_alias packet =
|
||||||
|
match List.find_opt (fun el -> el.type_ = DNSType.cname) packet.answers with
|
||||||
| Some record -> Some (String.of_bytes record.data)
|
| Some record -> Some (String.of_bytes record.data)
|
||||||
| None -> None
|
| None -> None
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -37,5 +37,7 @@ type dns_packet =
|
||||||
module DNSType = struct
|
module DNSType = struct
|
||||||
let a = 1
|
let a = 1
|
||||||
let ns = 2
|
let ns = 2
|
||||||
|
let cname = 5
|
||||||
|
let soa = 6
|
||||||
let txt = 16
|
let txt = 16
|
||||||
end
|
end
|
||||||
|
|
Reference in a new issue