aboutsummaryrefslogtreecommitdiff
path: root/cmd/resolver/options.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/resolver/options.go')
-rw-r--r--cmd/resolver/options.go162
1 files changed, 0 insertions, 162 deletions
diff --git a/cmd/resolver/options.go b/cmd/resolver/options.go
deleted file mode 100644
index 95d9aeb..0000000
--- a/cmd/resolver/options.go
+++ /dev/null
@@ -1,162 +0,0 @@
-// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info>
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-package main
-
-import (
- "errors"
- "flag"
- "fmt"
- "os"
- "strings"
-
- "github.com/shuLhan/share/lib/dns"
-)
-
-// List of error messages.
-var (
- errQueryName = errors.New("invalid or empty query name")
- errRecordType = errors.New("unknown query type")
- errRecordClass = errors.New("unknown query class")
-)
-
-// List of command line usages.
-const (
- usageInsecure = `Skip verifying server certificate`
- usageNameServer = "Parent name server address using scheme based.\n" +
- "\tFor example,\n" +
- "\tudp://35.240.172.103:53 for querying with UDP,\n" +
- "\ttcp://35.240.172.103:53 for querying with TCP,\n" +
- "\thttps://35.240.172:103:853 for querying with DNS over TLS, and\n" +
- "\thttps://kilabit.info/dns-query for querying with DNS over HTTPS."
-
- usageType = "Query type. Valid values are either A, NS, CNAME, SOA,\n" +
- "\tMB, MG, MR, NULL, WKS, PTR, HINFO, MINFO, MX, TXT, AAAA, or SRV.\n" +
- "\tDefault value is A."
-
- usageClass = "Query class. Valid values are either IN, CS, HS.\n" +
- "\tDefault value is IN."
-)
-
-type options struct {
- sqtype string
- sqclass string
-
- nameserver string
- qname string
- qtype dns.RecordType
- qclass dns.RecordClass
-
- insecure bool
-}
-
-func help() {
- fmt.Println(`
-= resolver: command line interface for DNS query
-
-== Usage
-
- resolver [-ns nameserver] [-insecure] [-t string] [-c string] [domain|address]
-
-== Options
-
--ns nameserver
-
- ` + usageNameServer + `
-
--insecure
-
- ` + usageInsecure + `
-
--t string
-
- ` + usageType + `
-
--c string
-
- ` + usageClass + `
-
-== Examples
-
-Query the MX records using UDP on name server 35.240.172.103,
-
- $ resolver -ns udp://35.240.172.103 -t MX kilabit.info
-
-Query the IPv4 records of domain name "kilabit.info" using DNS over TLS on
-name server 35.240.172.103,
-
- $ resolver -ns https://35.240.172.103 -insecure kilabit.info
-
-Query the IPv4 records of domain name "kilabit.info" using DNS over HTTPS on
-name server kilabit.info,
-
- $ resolver -ns https://kilabit.info/dns-query kilabit.info`)
-}
-
-func newOptions() (*options, error) {
- var optHelp bool
-
- opts := new(options)
-
- flag.StringVar(&opts.nameserver, "ns", "", usageNameServer)
- flag.BoolVar(&opts.insecure, "insecure", false, usageInsecure)
- flag.BoolVar(&optHelp, "h", false, "")
- flag.StringVar(&opts.sqtype, "t", "A", usageType)
- flag.StringVar(&opts.sqclass, "c", "IN", usageClass)
-
- flag.Parse()
-
- args := flag.Args()
-
- if optHelp {
- help()
- os.Exit(1)
- }
-
- if len(args) == 0 {
- help()
- os.Exit(1)
- }
-
- opts.qname = args[0]
-
- err := opts.parseQType()
- if err != nil {
- help()
- os.Exit(1)
- }
-
- err = opts.parseQClass()
- if err != nil {
- help()
- os.Exit(1)
- }
-
- return opts, nil
-}
-
-func (opts *options) parseQType() error {
- var ok bool
-
- opts.sqtype = strings.ToUpper(opts.sqtype)
-
- opts.qtype, ok = dns.RecordTypes[opts.sqtype]
- if !ok {
- return errRecordType
- }
-
- return nil
-}
-
-func (opts *options) parseQClass() error {
- var ok bool
-
- opts.sqclass = strings.ToUpper(opts.sqclass)
-
- opts.qclass, ok = dns.RecordClasses[opts.sqclass]
- if !ok {
- return errRecordClass
- }
-
- return nil
-}