aboutsummaryrefslogtreecommitdiff
path: root/cmd/resolver/resolver.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-04-24 11:09:48 +0700
committerShulhan <ms@kilabit.info>2022-04-24 11:09:48 +0700
commitb6ae7b07309af5d0e4fd6b6d2615184054f98dd7 (patch)
tree81e4817d25fcf4d3922fa42a37e772b0cb143e8c /cmd/resolver/resolver.go
parent660b5bd309fa63cf3762e6eb5a5aaae29bc91129 (diff)
downloadrescached-b6ae7b07309af5d0e4fd6b6d2615184054f98dd7.tar.xz
cmd/resolver: implement command to manage hosts.d
The resolver cli now have command "hosts.d" to create, delete, and get the hosts file inside the hosts.d in the rescached server.
Diffstat (limited to 'cmd/resolver/resolver.go')
-rw-r--r--cmd/resolver/resolver.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/cmd/resolver/resolver.go b/cmd/resolver/resolver.go
index bdebe0d..47f5e15 100644
--- a/cmd/resolver/resolver.go
+++ b/cmd/resolver/resolver.go
@@ -242,6 +242,70 @@ func (rsol *resolver) doCmdEnvUpdate(fileOrStdin string) (err error) {
return nil
}
+func (rsol *resolver) doCmdHostsd(args []string) {
+ if len(args) == 0 {
+ log.Fatalf("resolver: %s: missing argument", rsol.cmd)
+ }
+
+ var (
+ subCmd = strings.ToLower(args[0])
+
+ resc *rescached.Client
+ listrr []*dns.ResourceRecord
+ jsonb []byte
+ err error
+ )
+ switch subCmd {
+ case subCmdCreate:
+ args = args[1:]
+ if len(args) == 0 {
+ log.Fatalf("resolver: %s %s: missing hosts name argument", rsol.cmd, subCmd)
+ }
+
+ resc = rsol.newRescachedClient()
+ _, err = resc.HostsdCreate(args[0])
+ if err != nil {
+ log.Fatalf("resolver: %s", err)
+ }
+ fmt.Println("OK")
+
+ case subCmdDelete:
+ args = args[1:]
+ if len(args) == 0 {
+ log.Fatalf("resolver: %s %s: missing hosts name argument", rsol.cmd, subCmd)
+ }
+
+ resc = rsol.newRescachedClient()
+ _, err = resc.HostsdDelete(args[0])
+ if err != nil {
+ log.Fatalf("resolver: %s", err)
+ }
+ fmt.Println("OK")
+
+ case subCmdGet:
+ args = args[1:]
+ if len(args) == 0 {
+ log.Fatalf("resolver: %s %s: missing hosts name argument", rsol.cmd, subCmd)
+ }
+
+ resc = rsol.newRescachedClient()
+ listrr, err = resc.HostsdGet(args[0])
+ if err != nil {
+ log.Fatalf("resolver: %s", err)
+ }
+
+ jsonb, err = json.MarshalIndent(listrr, "", " ")
+ if err != nil {
+ log.Fatalf("resolver: %s", err)
+ }
+
+ fmt.Println(string(jsonb))
+
+ default:
+ log.Fatalf("resolver: %s: unknown sub command: %s", rsol.cmd, subCmd)
+ }
+}
+
func (rsol *resolver) doCmdQuery(args []string) {
var (
maxAttempts = defAttempts