Web UI: zone naming and reverse zones, ACL suggestions, record form
- New zone dialog: choose Domain or Reverse zone. Reverse zones are created from a network and their name is generated; both kinds show the exact zone name and flag likely mistakes (addresses or URLs as names, host-like names, duplicates in the view, parent/child zones, networks off the octet/nibble boundaries) before anything is submitted. - Record form: clears every field but the type after an add; shows the record exactly as it will be stored and warns about unqualified names. In reverse zones it takes an address, defaults to PTR, suggests host names of A/AAAA records with that address and warns about a second PTR; the record list shows addresses. - Address match lists (options, view match lists, ACL elements) offer the existing ACLs, TSIG keys and built-ins as one-click suggestions and flag unknown names. - Server: in reverse zones a record can be named by its address, and a PTR target like nas.example.com without the final dot is read as the full host name (a bare label is refused). Warnings noticed while parsing record data reach the result again. - Fixes: brand link hover underline, the dashboard's "New zone" link opening the dialog twice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3b7bee67f8
commit
bf7f99874b
19 files changed
+577
-35
No files matched your search
@@ -157,3 +157,21 @@ func TestParseErrorText(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestPTRTargetsInReverseZones(t *testing.T) {
|
||||
zone := "0.10.10.in-addr.arpa."
|
||||
p, err := Parse(zone, "20."+zone, "PTR", "nas.adbraun.lol")
|
||||
if err != nil || p.Data != "nas.adbraun.lol." || len(p.Warnings) != 1 {
|
||||
t.Errorf("unqualified PTR target: %v %+v", err, p)
|
||||
}
|
||||
if p, err := Parse(zone, "20."+zone, "PTR", "nas.adbraun.lol."); err != nil || p.Data != "nas.adbraun.lol." || len(p.Warnings) != 0 {
|
||||
t.Errorf("qualified PTR target: %v %+v", err, p)
|
||||
}
|
||||
if _, err := Parse(zone, "20."+zone, "PTR", "nas"); err == nil {
|
||||
t.Error("a single-label PTR target inside the reverse zone was accepted")
|
||||
}
|
||||
// Forward zones keep zone-file semantics.
|
||||
if p, err := Parse("adbraun.lol.", "x.adbraun.lol.", "CNAME", "nas"); err != nil || p.Data != "nas.adbraun.lol." {
|
||||
t.Errorf("forward CNAME: %v %+v", err, p)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user