One-view tokens: local records in linked zones, zone lookup, view list
A token for one view of a linked zone (an ACME token for external) couldn't add records: a new record was shared and reached the other view. A new name and type is now local when the user may not change it in the other views. A zone name in several views resolves to the only one the user can see, and the error no longer names views they can't. GET /views lists the views a user sees zones in (name, colour, count; limited) without views:read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4cc2ab2287
commit
57012fece8
13 files changed
+159
-12
No files matched your search
+3
-1
@@ -48,7 +48,9 @@ jarl acme unset DOMAIN [VALUE...] # remove these values, or all of them
|
||||
* The zone is found automatically: the longest matching primary zone.
|
||||
* If the zone exists in several **views** (split DNS), the record is written
|
||||
into every view, so the CA (on the internet, in your external view) and
|
||||
your internal resolvers see the same thing. `--view NAME` limits it to one.
|
||||
your internal resolvers see the same thing. `--view NAME` limits it to one,
|
||||
and so does a token for one view (`views=external`): in a linked zone its
|
||||
records are then local to that view.
|
||||
* All values and views go into one changeset. Setting a value that is
|
||||
already there succeeds, so a retried hook doesn't fail, and removing a
|
||||
value that isn't there succeeds as well.
|
||||
|
||||
+8
-1
@@ -160,7 +160,14 @@ records:write zones=acme.adbraun.lol types=TXT only TXT records in a
|
||||
```
|
||||
|
||||
A user who may see some records of a zone may also see that the zone exists
|
||||
(its name and type), but not its other records.
|
||||
(its name and type), but not its other records. They also see the zone's
|
||||
view in `jarl view list` (`GET /views`): its name, colour and how many
|
||||
zones they can see there, marked `limited`, but not its settings
|
||||
(`match-clients` and the rest need `views:read`).
|
||||
|
||||
A zone name that is in several views needs a view (`--view`), unless the
|
||||
user can see the zone in only one of them: a token for
|
||||
`views=external` finds the external copy without being told.
|
||||
|
||||
### Roles
|
||||
|
||||
|
||||
+4
-1
@@ -222,7 +222,10 @@ anyway), so scripts don't need to know; `--shared` there is refused.
|
||||
a grant for one view only (`views=internal`) can change that view's local
|
||||
records and make overrides, but not a shared record, since that would
|
||||
change the other views too: Jarl says so and suggests a local record. A
|
||||
grant without a view (the usual `zones=adbraun.lol`) covers every view.
|
||||
new name and type it adds is local to its view without being asked (an
|
||||
ACME token for `views=external` adds its `_acme-challenge` TXT records to
|
||||
the external view only). A grant without a view (the usual
|
||||
`zones=adbraun.lol`) covers every view.
|
||||
|
||||
**Importing a zone file** into a linked zone (`jarl zone import`) adds
|
||||
the records like any others: shared, unless the name and type is local
|
||||
|
||||
Reference in new issue
Block a user