diff options
| author | Shulhan <ms@kilabit.info> | 2022-04-24 11:29:25 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2022-04-24 11:29:25 +0700 |
| commit | 19fed9320513d8898d8bedd940f0d1c0a599204f (patch) | |
| tree | b104fff76261638547a2322c30ebb84c9c09b0bf | |
| parent | bd144b51b440aaf07de8c775a96d6dafcdcad6bd (diff) | |
| download | rescached-19fed9320513d8898d8bedd940f0d1c0a599204f.tar.xz | |
cmd/resolver: simplify handling command "caches"
Instead of splitting them into three methods, merge them into single
method doCmdCaches.
| -rw-r--r-- | cmd/resolver/main.go | 27 | ||||
| -rw-r--r-- | cmd/resolver/resolver.go | 82 |
2 files changed, 42 insertions, 67 deletions
diff --git a/cmd/resolver/main.go b/cmd/resolver/main.go index c4b9367..267ff64 100644 --- a/cmd/resolver/main.go +++ b/cmd/resolver/main.go @@ -69,32 +69,7 @@ func main() { rsol.doCmdBlockd(args[1:]) case cmdCaches: - args = args[1:] - if len(args) == 0 { - rsol.doCmdCaches() - return - } - - subCmd = strings.ToLower(args[0]) - switch subCmd { - case subCmdRemove: - args = args[1:] - if len(args) == 0 { - log.Fatalf("resolver: %s %s: missing argument", rsol.cmd, subCmd) - } - rsol.doCmdCachesRemove(args[0]) - - case subCmdSearch: - args = args[1:] - if len(args) == 0 { - log.Fatalf("resolver: %s %s: missing argument", rsol.cmd, subCmd) - } - rsol.doCmdCachesSearch(args[0]) - - default: - log.Printf("resolver: %s: unknown sub command: %s", rsol.cmd, subCmd) - os.Exit(2) - } + rsol.doCmdCaches(args[1:]) case cmdEnv: args = args[1:] diff --git a/cmd/resolver/resolver.go b/cmd/resolver/resolver.go index 6998964..579c179 100644 --- a/cmd/resolver/resolver.go +++ b/cmd/resolver/resolver.go @@ -122,64 +122,60 @@ func (rsol *resolver) doCmdBlockd(args []string) { } // doCmdCaches call the rescached HTTP API to fetch all caches. -func (rsol *resolver) doCmdCaches() { +func (rsol *resolver) doCmdCaches(args []string) { var ( resc = rsol.newRescachedClient() + subCmd string answers []*dns.Answer + listMsg []*dns.Message err error ) - answers, err = resc.Caches() - if err != nil { - log.Printf("resolver: caches: %s", err) + if len(args) == 0 { + answers, err = resc.Caches() + if err != nil { + log.Fatalf("resolver: %s: %s", rsol.cmd, err) + } + + fmt.Printf("Total caches: %d\n", len(answers)) + printAnswers(answers) return } - fmt.Printf("Total caches: %d\n", len(answers)) - printAnswers(answers) -} - -// doCmdCachesRemove remove an answer from caches by domain name. -func (rsol *resolver) doCmdCachesRemove(q string) { - var ( - resc = rsol.newRescachedClient() + subCmd = strings.ToLower(args[0]) + switch subCmd { + case subCmdRemove: + args = args[1:] + if len(args) == 0 { + log.Fatalf("resolver: %s %s: missing argument", rsol.cmd, subCmd) + } - listAnswer []*dns.Answer - err error - ) + answers, err = resc.CachesRemove(args[0]) + if err != nil { + log.Fatalf("resolver: %s: %s", rsol.cmd, err) + } - listAnswer, err = resc.CachesRemove(q) - if err != nil { - log.Printf("resolver: caches: %s", err) - return - } + fmt.Printf("Total answer removed: %d\n", len(answers)) + printAnswers(answers) - fmt.Printf("Total answer removed: %d\n", len(listAnswer)) - if len(listAnswer) == 0 { - return - } - printAnswers(listAnswer) -} + case subCmdSearch: + args = args[1:] + if len(args) == 0 { + log.Fatalf("resolver: %s %s: missing argument", rsol.cmd, subCmd) + } -// doCmdCachesSearch call the rescached HTTP API to search the caches by -// domain name. -func (rsol *resolver) doCmdCachesSearch(q string) { - var ( - resc = rsol.newRescachedClient() + listMsg, err = resc.CachesSearch(args[0]) + if err != nil { + log.Fatalf("resolver: caches: %s", err) + } - listMsg []*dns.Message - err error - ) + fmt.Printf("Total search: %d\n", len(listMsg)) + printMessages(listMsg) - listMsg, err = resc.CachesSearch(q) - if err != nil { - log.Printf("resolver: caches: %s", err) - return + default: + log.Fatalf("resolver: %s: unknown sub command: %s", rsol.cmd, subCmd) } - - fmt.Printf("Total search: %d\n", len(listMsg)) - printMessages(listMsg) } func (rsol *resolver) doCmdEnv() { @@ -457,6 +453,10 @@ func (rsol *resolver) query(timeout time.Duration, qname string) (res *dns.Messa // printAnswers print list of DNS Answer to stdout. func printAnswers(answers []*dns.Answer) { + if len(answers) == 0 { + return + } + var ( timeNow = time.Now() |
