feat: add full Zonemaster stack with Docker and Spanish UI

- Clone all 5 Zonemaster component repos (LDNS, Engine, CLI, Backend, GUI)
- Dockerfile.backend: 8-stage multi-stage build LDNS→Engine→CLI→Backend
- Dockerfile.gui: Astro static build served via nginx
- docker-compose.yml: backend (internal) + frontend (port 5353)
- nginx.conf: root redirects to /es/, /api/ proxied to backend
- zonemaster-gui/config.ts: defaultLanguage set to 'es' (Spanish)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-21 08:19:24 +02:00
commit 8d4eaa1489
1567 changed files with 204155 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
[This directory](.), i.e. the same directory as this README file, holds zone
files and configuration files to implement the test zones for the scenarios
defined in [ADDRESS01 test scenario specification].
For these test zones the following files are found in [this directory]:
* Zone files for `address01.xa` and other related zones;
* CoreDNS configuration file;
* Output from `zonemaster-cli` on all test scenarios in
[Address01 Test Zones Output].
[Address01 Test Zones Output]: ./test-zones-output.md
[Address01 test scenario specification]: ../../../docs/public/specifications/test-zones/Address-TP/address01.md
[This directory]: .

View File

@@ -0,0 +1,10 @@
# address01.xa
address01.xa:53 {
bind 127.11.1.21 # ns1
bind fda1:b2:c3:0:127:11:1:21 # ns1
bind 127.11.1.22 # ns2
bind fda1:b2:c3:0:127:11:1:22 # ns2
log
file Address-TP/address01/address01.xa.zone address01.xa
}

View File

@@ -0,0 +1,100 @@
$ORIGIN address01.xa. ; Must end with "."
$TTL 3600
@ SOA ns1 admin. (
2025111300 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1
NS ns2
ns1 A 127.11.1.21
ns1 AAAA fda1:b2:c3:0:127:11:1:21
ns2 A 127.11.1.22
ns2 AAAA fda1:b2:c3:0:127:11:1:22
$ORIGIN good-1.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 192.36.148.17 ; i.root-servers.net.
ns1 AAAA 2001:7fe::53 ; i.root-servers.net.
ns2 A 192.175.48.1 ; Direct Delegation AS112 Service (192.175.48.0/24)
ns2 AAAA 64:ff9b::1 ; IPv4-IPv6 Translat. (64:ff9b::/96)
$ORIGIN mixed-local-doc-1.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 192.168.11.31 ; Private-Use [RFC1918]
ns1 AAAA 2001:7fe::53 ; i.root-servers.net.
ns2 A 192.36.148.17 ; i.root-servers.net.
ns2 AAAA 2001:db8::127:11:1:32 ; Documentation [RFC3849]
$ORIGIN mixed-local-doc-2.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 192.0.2.31 ; Documentation (TEST-NET-1) [RFC5737]
ns1 AAAA 2001:7fe::53 ; i.root-servers.net.
ns2 A 192.58.128.30 ; j.root-servers.net.
ns2 AAAA fc00::127:11:1:32 ; Unique-Local [RFC4193] [RFC8190]
$ORIGIN mixed-doc-other-1.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 198.51.100.31 ; Documentation (TEST-NET-2) [RFC5737]
ns1 AAAA 2001:7fe::53 ; i.root-servers.net.
ns2 A 192.58.128.30 ; j.root-servers.net.
ns2 AAAA 64:ff9b:1::127:11:1:32 ; IPv4-IPv6 Translat. [RFC8215]
$ORIGIN mixed-doc-other-2.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 240.0.0.31 ; Reserved [RFC1112]
ns1 AAAA 2001:7fe::53 ; i.root-servers.net.
ns2 A 192.58.128.30 ; j.root-servers.net.
ns2 AAAA 3fff::127:11:1:32 ; Documentation [RFC9637]
$ORIGIN mixed-local-other-1.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 169.254.0.31 ; Link Local [RFC3927]
ns1 AAAA 2001:7fe::53 ; i.root-servers.net.
ns2 A 192.58.128.30 ; j.root-servers.net.
ns2 AAAA 2001:2::127:11:1:32 ; Benchmarking [RFC5180][RFC Errata 1752]
$ORIGIN mixed-local-other-2.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 198.18.0.31 ; Benchmarking [RFC2544]
ns1 AAAA 2001:7fe::53 ; i.root-servers.net.
ns2 A 192.58.128.30 ; j.root-servers.net.
ns2 AAAA fc00::127:11:1:32 ; Unique-Local [RFC4193] [RFC8190]
$ORIGIN mixed-all-1.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 172.16.0.31 ; Private-Use [RFC1918]
ns1 AAAA 2001:7fe::53 ; i.root-servers.net.
ns2 A 203.0.113.32 ; Documentation (TEST-NET-3) [RFC5737]
ns2 AAAA 2002::127:11:1:32 ; 6to4 [RFC3056]
$ORIGIN mixed-all-2.address01.xa.
@ NS ns1
@ NS ns2
ns1 A 198.18.0.31 ; Benchmarking [RFC2544] (RE-USED)
ns1 AAAA fe80::127:11:1:31 ; Link-Local Unicast [RFC4291]
ns2 A 192.58.128.30 ; j.root-servers.net.
ns2 AAAA 2001:db8::127:11:1:32 ; Documentation [RFC3849] (RE-USED)
$ORIGIN all-non-reachable.address01.xa.
@ NS ns1
@ NS ns2
@ NS ns3
ns1 A 10.0.0.31 ; Private-Use [RFC1918]
ns1 AAAA 2001:2::127:11:1:31 ; Benchmarking [RFC5180][RFC Errata 1752]
ns2 A 203.0.113.32 ; Documentation (TEST-NET-3) [RFC5737]
ns2 AAAA fc00::127:11:1:32 ; Unique-Local [RFC4193][RFC8190] (RE-USED)
ns3 A 192.0.0.33 ; IETF Protocol Assignments [RFC6890]
ns3 AAAA 3fff::127:11:1:33 ; Documentation [RFC9637]

View File

@@ -0,0 +1,215 @@
# Address01 Test Zones Output
# Table of contents
* [Introduction](#introduction)
* [All message tags](#all-message-tags)
* [All scenarios](#all-scenarios)
* [zonemaster-cli commands and their output for each test scenario](#zonemaster-cli-command-and-their-output-for-each-test-scenario)
## Introduction
In this file the output of running `zonemaster-cli` for every test zone is
found. This file is created during the development of the test zones and should
be updated as the implementation of the test case or the test scenarios or test
zones are updated or corrected.
During development and any update this document serves as tracking and log tool.
It also serves as a template for future development of test zones for
scenarios for other test cases.
## All message tags
* A01_ADDR_NOT_GLOBALLY_REACHABLE
* A01_DOCUMENTATION_ADDR
* A01_GLOBALLY_REACHABLE_ADDR
* A01_LOCAL_USE_ADDR
* A01_NO_GLOBALLY_REACHABLE_ADDR
* A01_NO_NAME_SERVERS_FOUND
## All scenarios
| Scenario name | Zone name |
|:---------------------|:--------------------------------------|
| GOOD-1 | good-1.address01.xa |
| MIXED-LOCAL-DOC-1 | mixed-local-doc-1.address01.xa |
| MIXED-LOCAL-DOC-2 | mixed-local-doc-2.address01.xa |
| MIXED-LOCAL-OTHER-1 | mixed-doc-other-1.address01.xa |
| MIXED-LOCAL-OTHER-2 | mixed-doc-other-2.address01.xa |
| MIXED-DOC-OTHER-1 | mixed-local-other-1.address01.xa |
| MIXED-DOC-OTHER-2 | mixed-local-other-2.address01.xa |
| MIXED-ALL-1 | mixed-all-1.address01.xa |
| MIXED-ALL-2 | mixed-all-2.address01.xa |
| ALL-NON-REACHABLE | all-non-reachable.address01.xa |
| NO-NAME-SERVERS | no-name-servers.address01.xa |
## zonemaster-cli commands and their output for each test scenario
For this test case it is only meaningful to test the test zones with
`--level=info --test=address01`. All commands are run from the same directory as
this file is in.
| Scenario name | Mandatory message tag | Forbidden message tags |
|:--------------|:----------------------------|:-----------------------|
| GOOD-1 | A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw good-1.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
10.09 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns1.good-1.address01.xa/192.36.148.17;ns1.good-1.address01.xa/2001:7fe::53;ns2.good-1.address01.xa/192.175.48.1;ns2.good-1.address01.xa/64:ff9b::1
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:------------------|:------------------------------------------------------------------------|:-----------------------|
| MIXED-LOCAL-DOC-1 | A01_LOCAL_USE_ADDR, A01_DOCUMENTATION_ADDR, A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw mixed-local-doc-1.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
20.08 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns1.mixed-local-doc-1.address01.xa/2001:7fe::53;ns2.mixed-local-doc-1.address01.xa/192.36.148.17
20.08 ERROR Address01 A01_DOCUMENTATION_ADDR ns_list=ns2.mixed-local-doc-1.address01.xa/2001:db8::127:11:1:32
20.08 ERROR Address01 A01_LOCAL_USE_ADDR ns_list=ns1.mixed-local-doc-1.address01.xa/192.168.11.31
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:------------------|:------------------------------------------------------------------------|:-----------------------|
| MIXED-LOCAL-DOC-2 | A01_LOCAL_USE_ADDR, A01_DOCUMENTATION_ADDR, A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw mixed-local-doc-2.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
20.07 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns1.mixed-local-doc-2.address01.xa/2001:7fe::53;ns2.mixed-local-doc-2.address01.xa/192.58.128.30
20.07 ERROR Address01 A01_DOCUMENTATION_ADDR ns_list=ns1.mixed-local-doc-2.address01.xa/192.0.2.31
20.07 ERROR Address01 A01_LOCAL_USE_ADDR ns_list=ns2.mixed-local-doc-2.address01.xa/fc00::127:11:1:32
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:--------------------|:---------------------------------------------------------------------------------|:-----------------------|
| MIXED-LOCAL-OTHER-1 | A01_LOCAL_USE_ADDR, A01_ADDR_NOT_GLOBALLY_REACHABLE, A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw mixed-local-other-1.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
20.08 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns1.mixed-local-other-1.address01.xa/2001:7fe::53;ns2.mixed-local-other-1.address01.xa/192.58.128.30
20.08 ERROR Address01 A01_LOCAL_USE_ADDR ns_list=ns1.mixed-local-other-1.address01.xa/169.254.0.31
20.08 ERROR Address01 A01_ADDR_NOT_GLOBALLY_REACHABLE ns_list=ns2.mixed-local-other-1.address01.xa/2001:2::127:11:1:32
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:--------------------|:---------------------------------------------------------------------------------|:-----------------------|
| MIXED-LOCAL-OTHER-2 | A01_LOCAL_USE_ADDR, A01_ADDR_NOT_GLOBALLY_REACHABLE, A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw mixed-local-other-2.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
20.08 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns1.mixed-local-other-2.address01.xa/2001:7fe::53;ns2.mixed-local-other-2.address01.xa/192.58.128.30
20.08 ERROR Address01 A01_LOCAL_USE_ADDR ns_list=ns2.mixed-local-other-2.address01.xa/fc00::127:11:1:32
20.08 ERROR Address01 A01_ADDR_NOT_GLOBALLY_REACHABLE ns_list=ns1.mixed-local-other-2.address01.xa/198.18.0.31
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:------------------|:-------------------------------------------------------------------------------------|:-----------------------|
| MIXED-DOC-OTHER-1 | A01_DOCUMENTATION_ADDR, A01_ADDR_NOT_GLOBALLY_REACHABLE, A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw mixed-doc-other-1.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
20.08 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns1.mixed-doc-other-1.address01.xa/2001:7fe::53;ns2.mixed-doc-other-1.address01.xa/192.58.128.30
20.08 ERROR Address01 A01_DOCUMENTATION_ADDR ns_list=ns1.mixed-doc-other-1.address01.xa/198.51.100.31
20.08 ERROR Address01 A01_ADDR_NOT_GLOBALLY_REACHABLE ns_list=ns2.mixed-doc-other-1.address01.xa/64:ff9b:1:0:127:11:1:32
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:------------------|:-------------------------------------------------------------------------------------|:-----------------------|
| MIXED-DOC-OTHER-2 | A01_DOCUMENTATION_ADDR, A01_ADDR_NOT_GLOBALLY_REACHABLE, A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw mixed-doc-other-2.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
20.08 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns1.mixed-doc-other-2.address01.xa/2001:7fe::53;ns2.mixed-doc-other-2.address01.xa/192.58.128.30
20.08 ERROR Address01 A01_DOCUMENTATION_ADDR ns_list=ns2.mixed-doc-other-2.address01.xa/3fff::127:11:1:32
20.08 ERROR Address01 A01_ADDR_NOT_GLOBALLY_REACHABLE ns_list=ns1.mixed-doc-other-2.address01.xa/240.0.0.31
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:--------------|:---------------------------------------------------------------------------------------------------------|:-----------------------|
| MIXED-ALL-1 | A01_ADDR_NOT_GLOBALLY_REACHABLE, A01_DOCUMENTATION_ADDR, A01_LOCAL_USE_ADDR, A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw mixed-all-1.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
30.08 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns1.mixed-all-1.address01.xa/2001:7fe::53
30.08 ERROR Address01 A01_DOCUMENTATION_ADDR ns_list=ns2.mixed-all-1.address01.xa/203.0.113.32
30.08 ERROR Address01 A01_LOCAL_USE_ADDR ns_list=ns1.mixed-all-1.address01.xa/172.16.0.31
30.08 ERROR Address01 A01_ADDR_NOT_GLOBALLY_REACHABLE ns_list=ns2.mixed-all-1.address01.xa/2002::127:11:1:32
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:--------------|:---------------------------------------------------------------------------------------------------------|:-----------------------|
| MIXED-ALL-2 | A01_ADDR_NOT_GLOBALLY_REACHABLE, A01_DOCUMENTATION_ADDR, A01_LOCAL_USE_ADDR, A01_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw mixed-all-2.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
30.09 INFO Address01 A01_GLOBALLY_REACHABLE_ADDR ns_list=ns2.mixed-all-2.address01.xa/192.58.128.30
30.09 ERROR Address01 A01_DOCUMENTATION_ADDR ns_list=ns2.mixed-all-2.address01.xa/2001:db8::127:11:1:32
30.09 ERROR Address01 A01_LOCAL_USE_ADDR ns_list=ns1.mixed-all-2.address01.xa/fe80::127:11:1:31
30.09 ERROR Address01 A01_ADDR_NOT_GLOBALLY_REACHABLE ns_list=ns1.mixed-all-2.address01.xa/198.18.0.31
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:------------------|:------------------------------------------------------------------------------------------------------------|:-----------------------|
| ALL-NON-REACHABLE | A01_ADDR_NOT_GLOBALLY_REACHABLE, A01_LOCAL_USE_ADDR, A01_DOCUMENTATION_ADDR, A01_NO_GLOBALLY_REACHABLE_ADDR | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw all-non-reachable.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
60.11 ERROR Address01 A01_NO_GLOBALLY_REACHABLE_ADDR
60.11 ERROR Address01 A01_DOCUMENTATION_ADDR ns_list=ns2.all-non-reachable.address01.xa/203.0.113.32;ns3.all-non-reachable.address01.xa/3fff::127:11:1:33
60.11 ERROR Address01 A01_LOCAL_USE_ADDR ns_list=ns1.all-non-reachable.address01.xa/10.0.0.31;ns2.all-non-reachable.address01.xa/fc00::127:11:1:32
60.11 ERROR Address01 A01_ADDR_NOT_GLOBALLY_REACHABLE ns_list=ns1.all-non-reachable.address01.xa/2001:2::127:11:1:31;ns3.all-non-reachable.address01.xa/192.0.0.33
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:----------------|:--------------------------|:-----------------------|
| NO_NAME_SERVERS | A01_NO_NAME_SERVERS_FOUND | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --show-testcase --level INFO --test address01 --hints ../../COMMON/hintfile --raw no-name-servers.address01.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v8.0.0
0.04 CRITICAL Address01 A01_NO_NAME_SERVERS_FOUND
```
--> OK