mr-karan / doggo

:dog: Command-line DNS Client for Humans. Written in Golang
https://doggo.mrkaran.dev/
GNU General Public License v3.0
2.9k stars 100 forks source link

Support literal IPv6 nameservers #59

Closed Ma27 closed 1 year ago

Ma27 commented 1 year ago

This effectively means that doggo @2001:DB8::53 example.org works just like we know it from dig(1). This already works for IPv4 because url.Parse accepts a literal IPv4 address, but not a literal IPv6 address (due to parsing ambiguities with strings that look like an IPv4 address I guess).

This is implemented by checking if the nameserver argument is a valid IP if the URL validation failed. If that's the case, ns is returned directly with the [2001:DB8::53]:53 as address (from net.JoinHostPort with the default DNS port) and UDP as protocol (also the default if not specified).

mr-karan commented 1 year ago

This is nice, thanks!