aboutsummaryrefslogtreecommitdiff
path: root/cmd/resolver/options.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-04-14 01:33:40 +0700
committerShulhan <ms@kilabit.info>2022-04-14 01:33:40 +0700
commit6ead9209bbc431b33ccbdebfffe98ffd23e4f9a7 (patch)
treefbf3cebda822e168bab1f6ee8623295be43da532 /cmd/resolver/options.go
parentbb7ec2c3667a45f9a534b3f568cb5148f828a1a9 (diff)
downloadrescached-6ead9209bbc431b33ccbdebfffe98ffd23e4f9a7.tar.xz
cmd/resolver: refactor the resolver as client of DNS and rescached
Previously, the resolver command only for querying DNS server. In this changes and in the future, the resolver command will be client for DNS and rescached server.
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
-}