aboutsummaryrefslogtreecommitdiff
path: root/cmd/resolver/resolver.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-05-11 01:55:01 +0700
committerShulhan <ms@kilabit.info>2022-05-11 01:55:01 +0700
commit1c3e6525b18f7c88d0155f856518a89415d0d95e (patch)
treeeb6285f3b88ac193fd835e9a22e71abc79fe4f2d /cmd/resolver/resolver.go
parenta619e95df4d64ca7a8ddf41d996b62dc23334f9f (diff)
downloadrescached-1c3e6525b18f7c88d0155f856518a89415d0d95e.tar.xz
cmd/resolver: implement command to add new record to hosts file
The command has the following signature, resolver hosts.d rr add <name> <domain> <value> Given the hosts file name "hosts" and domain "my.hosts" with value "127.0.0.1", it will add new line "127.0.0.1 my.hosts" to the "hosts" file. If the domain name already exists, the new record will be appended instead of replaced.
Diffstat (limited to 'cmd/resolver/resolver.go')
-rw-r--r--cmd/resolver/resolver.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/cmd/resolver/resolver.go b/cmd/resolver/resolver.go
index 1c55669..62ce953 100644
--- a/cmd/resolver/resolver.go
+++ b/cmd/resolver/resolver.go
@@ -319,11 +319,54 @@ func (rsol *resolver) doCmdHostsd(args []string) {
fmt.Println(string(jsonb))
+ case subCmdRR:
+ rsol.doCmdHostsdRecord(args[1:])
+
default:
log.Fatalf("resolver: %s: unknown sub command: %s", rsol.cmd, subCmd)
}
}
+func (rsol *resolver) doCmdHostsdRecord(args []string) {
+ if len(args) == 0 {
+ log.Fatalf("resolver: %s %s %s: missing arguments", rsol.cmd, cmdHostsd, subCmdRR)
+ }
+
+ var (
+ subCmd = strings.ToLower(args[0])
+
+ resc *rescached.Client
+ record *dns.ResourceRecord
+ jsonb []byte
+ err error
+ )
+
+ switch subCmd {
+ case subCmdAdd:
+ args = args[1:]
+ if len(args) < 3 {
+ log.Fatalf("resolver: missing arguments")
+ }
+
+ resc = rsol.newRescachedClient()
+ record, err = resc.HostsdRecordAdd(args[0], args[1], args[2])
+ if err != nil {
+ log.Fatalf("resolver: %s", err)
+ }
+
+ jsonb, err = json.MarshalIndent(record, "", " ")
+ if err != nil {
+ log.Fatalf("resolver: %s", err)
+ }
+
+ fmt.Println(string(jsonb))
+
+ case subCmdDelete:
+ default:
+ log.Fatalf("resolver: %s %s: unknown command %s", rsol.cmd, subCmdRR, subCmd)
+ }
+}
+
func (rsol *resolver) doCmdQuery(args []string) {
var (
maxAttempts = defAttempts