diff options
| author | Shulhan <ms@kilabit.info> | 2022-04-24 11:09:48 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2022-04-24 11:09:48 +0700 |
| commit | b6ae7b07309af5d0e4fd6b6d2615184054f98dd7 (patch) | |
| tree | 81e4817d25fcf4d3922fa42a37e772b0cb143e8c /cmd/resolver/resolver.go | |
| parent | 660b5bd309fa63cf3762e6eb5a5aaae29bc91129 (diff) | |
| download | rescached-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.go | 64 |
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 |
