aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-04-24 11:29:25 +0700
committerShulhan <ms@kilabit.info>2022-04-24 11:29:25 +0700
commit19fed9320513d8898d8bedd940f0d1c0a599204f (patch)
treeb104fff76261638547a2322c30ebb84c9c09b0bf
parentbd144b51b440aaf07de8c775a96d6dafcdcad6bd (diff)
downloadrescached-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.go27
-rw-r--r--cmd/resolver/resolver.go82
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()