aboutsummaryrefslogtreecommitdiff
path: root/cmd/resolver
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-05-22 21:51:15 +0700
committerShulhan <ms@kilabit.info>2022-05-22 21:53:46 +0700
commite62bf6a1a77f87487ad1fbeae5f30730d441cda4 (patch)
tree80da12ca42df2325d3faa49e2531454fa12091f4 /cmd/resolver
parent3a38245a6a418b2ddbe4dfcd916ab83708b6f500 (diff)
downloadrescached-e62bf6a1a77f87487ad1fbeae5f30730d441cda4.tar.xz
cmd/resolver: implement command to list hosts in block.d
Given the following command $ resolver block.d It will print all hosts in block.d in the JSON format, for example { "pgl.yoyo.org": { "Name": "pgl.yoyo.org", "URL": "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts\u0026showintro=0\u0026startdate[day]=\u0026startdate[month]=\u0026startdate[year]=\u0026mimetype=plaintext", "LastUpdated": "2022-04-20 01:54:30 WIB", "IsEnabled": false }, "someonewhocares.org": { "Name": "someonewhocares.org", "URL": "http://someonewhocares.org/hosts/hosts", "LastUpdated": "2022-04-20 00:53:22 WIB", "IsEnabled": false }, "winhelp2002.mvps.org": { "Name": "winhelp2002.mvps.org", "URL": "http://winhelp2002.mvps.org/hosts.txt", "LastUpdated": "2022-04-20 01:35:38 WIB", "IsEnabled": false } }
Diffstat (limited to 'cmd/resolver')
-rw-r--r--cmd/resolver/doc.go1
-rw-r--r--cmd/resolver/resolver.go30
2 files changed, 22 insertions, 9 deletions
diff --git a/cmd/resolver/doc.go b/cmd/resolver/doc.go
index d24b331..03222c0 100644
--- a/cmd/resolver/doc.go
+++ b/cmd/resolver/doc.go
@@ -67,6 +67,7 @@ Query the DNS server,
Managing block.d files,
+ block.d # List all hosts in block.d.
block.d disable <name>
block.d enable <name>
block.d update <name>
diff --git a/cmd/resolver/resolver.go b/cmd/resolver/resolver.go
index b22bee1..977b391 100644
--- a/cmd/resolver/resolver.go
+++ b/cmd/resolver/resolver.go
@@ -47,22 +47,34 @@ type resolver struct {
}
func (rsol *resolver) doCmdBlockd(args []string) {
- if len(args) == 0 {
- log.Fatalf("resolver: %s: missing sub command", rsol.cmd)
- }
-
var (
resc = rsol.newRescachedClient()
- hb interface{}
- hbjson []byte
- subCmd string
- err error
+ hostBlockd map[string]*rescached.Blockd
+ hb interface{}
+ hbjson []byte
+ subCmd string
+ err error
)
- subCmd = strings.ToLower(args[0])
+ if len(args) > 0 {
+ subCmd = strings.ToLower(args[0])
+ }
switch subCmd {
+ case "":
+ hostBlockd, err = resc.Blockd()
+ if err != nil {
+ log.Fatalf("resolver: %s: %s", rsol.cmd, err)
+ }
+
+ hbjson, err = json.MarshalIndent(hostBlockd, "", " ")
+ if err != nil {
+ log.Fatalf("resolver: %s: %s", rsol.cmd, err)
+ }
+
+ fmt.Println(string(hbjson))
+
case subCmdDisable:
args = args[1:]
if len(args) == 0 {