chore: cleanups

pull/2/head
Karan Sharma 2020-12-16 18:55:07 +05:30
parent 7e3f1c3cdd
commit ec46ed5990
5 changed files with 13 additions and 28 deletions

View File

@ -35,12 +35,6 @@ func main() {
f.StringSliceP("class", "c", []string{}, "Network class of the DNS record to be queried (IN, CH, HS etc)") f.StringSliceP("class", "c", []string{}, "Network class of the DNS record to be queried (IN, CH, HS etc)")
f.StringSliceP("nameserver", "n", []string{}, "Address of the nameserver to send packets to") f.StringSliceP("nameserver", "n", []string{}, "Address of the nameserver to send packets to")
// Protocol Options
f.BoolP("udp", "U", false, "Use the DNS protocol over UDP")
f.BoolP("tcp", "T", false, "Use the DNS protocol over TCP")
f.BoolP("doh", "H", false, "Use the DNS-over-HTTPS protocol")
f.BoolP("dot", "S", false, "Use the DNS-over-TLS")
// Resolver Options // Resolver Options
f.Int("timeout", 5, "Sets the timeout for a query to T seconds. The default timeout is 5 seconds.") f.Int("timeout", 5, "Sets the timeout for a query to T seconds. The default timeout is 5 seconds.")
f.Bool("search", false, "Use the search list provided in resolv.conf. It sets the `ndots` parameter as well unless overriden by `ndots` flag.") f.Bool("search", false, "Use the search list provided in resolv.conf. It sets the `ndots` parameter as well unless overriden by `ndots` flag.")

View File

@ -34,12 +34,6 @@ var AppHelpTemplate = `{{ "NAME" | color "" "heading" }}:
{{"-n, --nameserver=ADDR" | color "yellow" ""}} Address of a specific nameserver to send queries to (9.9.9.9, 1.1.1.1 etc) {{"-n, --nameserver=ADDR" | color "yellow" ""}} Address of a specific nameserver to send queries to (9.9.9.9, 1.1.1.1 etc)
{{"-c, --class=CLASS" | color "yellow" ""}} Network class of the DNS record (IN, CH, HS etc) {{"-c, --class=CLASS" | color "yellow" ""}} Network class of the DNS record (IN, CH, HS etc)
{{ "Protocol Options" | color "" "heading" }}:
{{"-U, --udp " | color "yellow" ""}} Send queries via DNS over UDP protocol
{{"-T, --tcp " | color "yellow" ""}} Send queries via DNS over TCP protocol
{{"-S, --dot " | color "yellow" ""}} Send queries via DNS over TLS (DoT) protocol
{{"-H, --doh" | color "yellow" ""}} Send queries via DNS over HTTPS (DoH) protocol
{{ "Output Options" | color "" "heading" }}: {{ "Output Options" | color "" "heading" }}:
{{"-J, --json " | color "yellow" ""}} Format the output as JSON {{"-J, --json " | color "yellow" ""}} Format the output as JSON
{{"--color " | color "yellow" ""}} Defaults to true. Set --color=false to disable colored output {{"--color " | color "yellow" ""}} Defaults to true. Set --color=false to disable colored output

View File

@ -25,10 +25,6 @@ type QueryFlags struct {
QTypes []string `koanf:"type"` QTypes []string `koanf:"type"`
QClasses []string `koanf:"class"` QClasses []string `koanf:"class"`
Nameservers []string `koanf:"nameserver"` Nameservers []string `koanf:"nameserver"`
IsDOH bool `koanf:"doh"`
IsDOT bool `koanf:"dot"`
IsUDP bool `koanf:"udp"`
IsTCP bool `koanf:"tcp"`
UseIPv4 bool `koanf:"ipv4"` UseIPv4 bool `koanf:"ipv4"`
UseIPv6 bool `koanf:"ipv6"` UseIPv6 bool `koanf:"ipv6"`
DisplayTimeTaken bool `koanf:"time"` DisplayTimeTaken bool `koanf:"time"`

View File

@ -28,9 +28,6 @@ func (hub *Hub) loadQueryArgs() error {
// pattern it is considered to be a "query name". // pattern it is considered to be a "query name".
func (hub *Hub) loadFreeArgs() error { func (hub *Hub) loadFreeArgs() error {
for _, arg := range hub.FreeArgs { for _, arg := range hub.FreeArgs {
if strings.HasPrefix(arg, "--") || strings.HasPrefix(arg, "-") {
continue
}
if strings.HasPrefix(arg, "@") { if strings.HasPrefix(arg, "@") {
hub.QueryFlags.Nameservers = append(hub.QueryFlags.Nameservers, strings.Trim(arg, "@")) hub.QueryFlags.Nameservers = append(hub.QueryFlags.Nameservers, strings.Trim(arg, "@"))
} else if _, ok := dns.StringToType[strings.ToUpper(arg)]; ok { } else if _, ok := dns.StringToType[strings.ToUpper(arg)]; ok {

View File

@ -19,6 +19,10 @@ const (
DefaultTLSPort = "853" DefaultTLSPort = "853"
// DefaultUDPPort specifies the default port for a DNS server connecting over UDP // DefaultUDPPort specifies the default port for a DNS server connecting over UDP
DefaultUDPPort = "53" DefaultUDPPort = "53"
UDPResolver = "udp"
DOHResolver = "doh"
TCPResolver = "tcp"
DOTResolver = "dot"
) )
// initResolver checks for various flags and initialises // initResolver checks for various flags and initialises
@ -26,7 +30,7 @@ const (
func (hub *Hub) initResolver() error { func (hub *Hub) initResolver() error {
// for each nameserver, initialise the correct resolver // for each nameserver, initialise the correct resolver
for _, ns := range hub.Nameservers { for _, ns := range hub.Nameservers {
if ns.Type == "doh" { if ns.Type == DOHResolver {
hub.Logger.Debug("initiating DOH resolver") hub.Logger.Debug("initiating DOH resolver")
rslvr, err := resolvers.NewDOHResolver(ns.Address, resolvers.DOHResolverOpts{ rslvr, err := resolvers.NewDOHResolver(ns.Address, resolvers.DOHResolverOpts{
Timeout: hub.QueryFlags.Timeout * time.Second, Timeout: hub.QueryFlags.Timeout * time.Second,
@ -36,7 +40,7 @@ func (hub *Hub) initResolver() error {
} }
hub.Resolver = append(hub.Resolver, rslvr) hub.Resolver = append(hub.Resolver, rslvr)
} }
if ns.Type == "tcp" { if ns.Type == TCPResolver {
hub.Logger.Debug("initiating TCP resolver") hub.Logger.Debug("initiating TCP resolver")
rslvr, err := resolvers.NewTCPResolver(ns.Address, resolvers.TCPResolverOpts{ rslvr, err := resolvers.NewTCPResolver(ns.Address, resolvers.TCPResolverOpts{
IPv4Only: hub.QueryFlags.UseIPv4, IPv4Only: hub.QueryFlags.UseIPv4,
@ -48,7 +52,7 @@ func (hub *Hub) initResolver() error {
} }
hub.Resolver = append(hub.Resolver, rslvr) hub.Resolver = append(hub.Resolver, rslvr)
} }
if ns.Type == "udp" { if ns.Type == UDPResolver {
hub.Logger.Debug("initiating UDP resolver") hub.Logger.Debug("initiating UDP resolver")
rslvr, err := resolvers.NewUDPResolver(ns.Address, resolvers.UDPResolverOpts{ rslvr, err := resolvers.NewUDPResolver(ns.Address, resolvers.UDPResolverOpts{
IPv4Only: hub.QueryFlags.UseIPv4, IPv4Only: hub.QueryFlags.UseIPv4,
@ -80,13 +84,13 @@ func getDefaultServers() ([]Nameserver, error) {
// handle IPv6 // handle IPv6
if ip != nil && ip.To4() != nil { if ip != nil && ip.To4() != nil {
ns := Nameserver{ ns := Nameserver{
Type: "udp", Type: UDPResolver,
Address: fmt.Sprintf("%s:%s", s, cfg.Port), Address: fmt.Sprintf("%s:%s", s, cfg.Port),
} }
servers = append(servers, ns) servers = append(servers, ns)
} else { } else {
ns := Nameserver{ ns := Nameserver{
Type: "udp", Type: UDPResolver,
Address: fmt.Sprintf("[%s]:%s", s, cfg.Port), Address: fmt.Sprintf("[%s]:%s", s, cfg.Port),
} }
servers = append(servers, ns) servers = append(servers, ns)
@ -98,7 +102,7 @@ func getDefaultServers() ([]Nameserver, error) {
func initNameserver(n string) (Nameserver, error) { func initNameserver(n string) (Nameserver, error) {
// Instantiate a dumb UDP resolver as a fallback. // Instantiate a dumb UDP resolver as a fallback.
ns := Nameserver{ ns := Nameserver{
Type: "udp", Type: UDPResolver,
Address: n, Address: n,
} }
u, err := url.Parse(n) u, err := url.Parse(n)
@ -106,19 +110,19 @@ func initNameserver(n string) (Nameserver, error) {
return ns, err return ns, err
} }
if u.Scheme == "https" { if u.Scheme == "https" {
ns.Type = DOHResolver
ns.Address = u.String() ns.Address = u.String()
ns.Type = "doh"
} }
if u.Scheme == "tcp" { if u.Scheme == "tcp" {
ns.Type = TCPResolver
if i := net.ParseIP(n); i != nil { if i := net.ParseIP(n); i != nil {
// if no port specified in nameserver, append defaults. // if no port specified in nameserver, append defaults.
n = net.JoinHostPort(n, DefaultTLSPort) n = net.JoinHostPort(n, DefaultTLSPort)
} }
ns.Address = u.String() ns.Address = u.String()
ns.Type = "tcp"
} }
if u.Scheme == "udp" { if u.Scheme == "udp" {
ns.Type = "udp" ns.Type = UDPResolver
if u.Port() == "" { if u.Port() == "" {
ns.Address = net.JoinHostPort(u.Hostname(), DefaultUDPPort) ns.Address = net.JoinHostPort(u.Hostname(), DefaultUDPPort)
} else { } else {