aboutsummaryrefslogtreecommitdiff
path: root/cmd/resolver
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-05-14 00:22:27 +0700
committerShulhan <ms@kilabit.info>2022-05-14 01:22:49 +0700
commite4581728e5c6fd9287e2e60aa908b89cbf6feeaf (patch)
treeeca7ae915842aaffaabaffddb5e2eff326f759be /cmd/resolver
parent69f34312061d5e5ef853fa28e271d93dbcfbbc6c (diff)
downloadrescached-e4581728e5c6fd9287e2e60aa908b89cbf6feeaf.tar.xz
cmd/resolver: implement command to create and delete zone file
The command to create new zone file has the following signature: zone.d create <name> While command to delete zone file has the following signature: zone.d delete <name>
Diffstat (limited to 'cmd/resolver')
-rw-r--r--cmd/resolver/main.go16
-rw-r--r--cmd/resolver/resolver.go44
2 files changed, 60 insertions, 0 deletions
diff --git a/cmd/resolver/main.go b/cmd/resolver/main.go
index 7126651..62af801 100644
--- a/cmd/resolver/main.go
+++ b/cmd/resolver/main.go
@@ -20,6 +20,7 @@ const (
cmdEnv = "env"
cmdHostsd = "hosts.d"
cmdQuery = "query"
+ cmdZoned = "zone.d"
subCmdAdd = "add"
subCmdCreate = "create"
@@ -85,6 +86,10 @@ func main() {
rsol.doCmdQuery(args)
+ case cmdZoned:
+ args = args[1:]
+ rsol.doCmdZoned(args)
+
default:
log.Printf("resolver: unknown command: %s", rsol.cmd)
os.Exit(2)
@@ -230,6 +235,17 @@ hosts.d rr delete <name> <domain>
Delete record from hosts file "name" by domain name.
+=== MANAGING ZONE.D
+
+zone.d create <name>
+
+ Create new zone file inside the zone.d directory.
+
+zone.d delete <name>
+
+ Delete zone file inside the zone.d directory.
+
+
== Examples
=== QUERY
diff --git a/cmd/resolver/resolver.go b/cmd/resolver/resolver.go
index 792f8d9..75287db 100644
--- a/cmd/resolver/resolver.go
+++ b/cmd/resolver/resolver.go
@@ -468,6 +468,50 @@ func (rsol *resolver) doCmdQuery(args []string) {
}
}
+func (rsol *resolver) doCmdZoned(args []string) {
+ if len(args) == 0 {
+ log.Fatalf("resolver: %s: missing argument", rsol.cmd)
+ }
+
+ var (
+ subCmd = strings.ToLower(args[0])
+
+ resc *rescached.Client
+ err error
+ )
+
+ switch subCmd {
+ case subCmdCreate:
+ args = args[1:]
+ if len(args) == 0 {
+ log.Fatalf("resolver: %s %s: missing parameter name", rsol.cmd, subCmd)
+ }
+
+ resc = rsol.newRescachedClient()
+ _, err = resc.ZonedCreate(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 parameter name", rsol.cmd, subCmd)
+ }
+
+ resc = rsol.newRescachedClient()
+ _, err = resc.ZonedDelete(args[0])
+ if err != nil {
+ log.Fatalf("resolver: %s", err)
+ }
+ fmt.Println("OK")
+
+ default:
+ log.Fatalf("resolver: %s: unknown sub command: %s", rsol.cmd, subCmd)
+ }
+}
+
// initSystemResolver read the system resolv.conf to create fallback DNS
// resolver.
func (rsol *resolver) initSystemResolver() (err error) {