Reverse zones: other views' addresses aren't missing PTRs
A reverse zone's missing PTR count covers only its own view's A and AAAA records. Addresses only other views' records use are counted apart (ptr_other_views, 'Other views' in zone show, a note on the zone page) and filled only when asked: fill-ptr --other-views, zone create --fill --other-views, or the New reverse zone dialog's checkbox. This keeps one view's host names out of another view's reverse zones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d18fe18ccd
commit
6cd3f6ef4e
16 files changed
+216
-48
No files matched your search
+27
-7
@@ -101,6 +101,9 @@ func zoneCmd() *cobra.Command {
|
||||
if z.PTRMissing > 0 {
|
||||
fmt.Fprintf(w, "Missing PTRs:\t%d (addresses the view's records use here; add them: jarl zone fill-ptr %s)\n", z.PTRMissing, args[0])
|
||||
}
|
||||
if z.PTROtherViews > 0 {
|
||||
fmt.Fprintf(w, "Other views:\t%d addresses here only other views' records use, without a PTR record (to name them from there: jarl zone fill-ptr %s --other-views)\n", z.PTROtherViews, args[0])
|
||||
}
|
||||
}
|
||||
if len(z.LinkedWith) > 0 {
|
||||
fmt.Fprintf(w, "Linked with:\t%s (shared records are kept in step; 'jarl record list' shows which are local)\n", strings.Join(z.LinkedWith, ", "))
|
||||
@@ -119,7 +122,7 @@ func zoneCmd() *cobra.Command {
|
||||
var ns, records, primaries, forwarders, opts []string
|
||||
var contact, comment, cloneFrom, file, inView, forward, linkWith string
|
||||
var ttl uint32
|
||||
var fill bool
|
||||
var fill, fillOther bool
|
||||
create := &cobra.Command{
|
||||
Use: "create NAME",
|
||||
Short: "Create a zone",
|
||||
@@ -128,7 +131,8 @@ create its reverse zone: a /32 (or /128) gives a zone for that one address,
|
||||
and a network between octet boundaries, like a /22, gets one zone per /24
|
||||
(created together). Without --view, a reverse zone goes to the private
|
||||
view whose records use its addresses; --fill adds a PTR record for each
|
||||
of them (docs/reverse.md).
|
||||
of them, and --other-views also for the addresses only other views'
|
||||
records use, named from there (docs/reverse.md).
|
||||
|
||||
jarl zone create example.com --ns ns1.example.com. --record "ns1 A 192.0.2.1"
|
||||
jarl zone create 192.168.1.0/24
|
||||
@@ -169,9 +173,12 @@ of them (docs/reverse.md).
|
||||
if linkWith != "" {
|
||||
body["link_with"] = linkWith
|
||||
}
|
||||
if fill {
|
||||
if fill || fillOther {
|
||||
body["fill"] = true
|
||||
}
|
||||
if fillOther {
|
||||
body["fill_other_views"] = true
|
||||
}
|
||||
var recs []map[string]any
|
||||
for _, r := range records {
|
||||
f := strings.Fields(r)
|
||||
@@ -245,6 +252,7 @@ of them (docs/reverse.md).
|
||||
create.Flags().StringVar(&linkWith, "link-with", "", "link with the zone of the same name in this view: copy its shared records and keep them in step (docs/views.md#linked-zones)")
|
||||
create.Flags().StringVar(&comment, "comment", "", "comment")
|
||||
create.Flags().BoolVar(&fill, "fill", false, "reverse zones: add PTR records for the view's A and AAAA records in the network")
|
||||
create.Flags().BoolVar(&fillOther, "other-views", false, "reverse zones: --fill, also naming the addresses only other views' records use")
|
||||
|
||||
var refresh, retry, expire, minimum, serial uint32
|
||||
var mname, policy, moveView string
|
||||
@@ -1168,15 +1176,21 @@ func terminalWidth() int {
|
||||
|
||||
func zoneFillPTRCmd() *cobra.Command {
|
||||
var view string
|
||||
var otherViews bool
|
||||
cmd := &cobra.Command{
|
||||
Use: "fill-ptr ZONE [--view VIEW]",
|
||||
Use: "fill-ptr ZONE [--view VIEW] [--other-views]",
|
||||
Short: "Add the PTR records a reverse zone lacks for its view's A and AAAA records",
|
||||
Long: `Adds a PTR record to a reverse zone for every address in its network that
|
||||
the view's A and AAAA records use and that has none yet. An address with
|
||||
several names gets the mail or name server's name, else a host's rather
|
||||
than the domain's, else the shortest (docs/reverse.md).`,
|
||||
than the domain's, else the shortest (docs/reverse.md).
|
||||
|
||||
--other-views also adds the addresses in the network that only other
|
||||
views' records use, naming them from there. That publishes those views'
|
||||
host names in this one, so it is never done unasked.`,
|
||||
Example: ` jarl zone fill-ptr 10.0.10.0/24
|
||||
jarl zone fill-ptr 10.0.10.in-addr.arpa --view internal`,
|
||||
jarl zone fill-ptr 10.0.10.in-addr.arpa --view internal
|
||||
jarl zone fill-ptr 10.0.10.0/24 --view vps --other-views`,
|
||||
Args: cobra.ExactArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
c, err := newClient()
|
||||
@@ -1184,6 +1198,9 @@ than the domain's, else the shortest (docs/reverse.md).`,
|
||||
return err
|
||||
}
|
||||
path, qv := zonePath(args[0], view)
|
||||
if otherViews {
|
||||
qv.Set("other_views", "1")
|
||||
}
|
||||
resp, err := c.Mutate(ctx(), "POST", path+"/fill-ptr", qv, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1192,6 +1209,7 @@ than the domain's, else the shortest (docs/reverse.md).`,
|
||||
},
|
||||
}
|
||||
cmd.Flags().StringVar(&view, "view", "", "view of the zone")
|
||||
cmd.Flags().BoolVar(&otherViews, "other-views", false, "also name the addresses only other views' records use")
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -1231,7 +1249,9 @@ again). A view can stop suggestions: jarl view update V
|
||||
--all lists every network the views' records use without a reverse zone,
|
||||
also where nothing is suggested unasked (a view with suggestions off, a
|
||||
dismissed network, a public view), to create one by hand; --view narrows
|
||||
the list to one view. Change the size as you need: a /48 suggested for
|
||||
the list to one view and adds the networks only other views' records use
|
||||
(hidden "records in VIEW"): create one with --fill --other-views to name
|
||||
them from there. Change the size as you need: a /48 suggested for
|
||||
IPv6 can be created as a /56 or /64 instead.`,
|
||||
Example: ` jarl zone suggest-reverse
|
||||
jarl zone suggest-reverse --create
|
||||
|
||||
Reference in new issue
Block a user