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:
@@ -0,0 +1,135 @@
|
||||
# DELEGATION01: Minimum number of name servers
|
||||
|
||||
## Test case identifier
|
||||
|
||||
**DELEGATION01**
|
||||
|
||||
## Objective
|
||||
|
||||
Section 4.1 of [RFC 1034] specifies that there must be a minimum of two name servers
|
||||
for a domain. This test is done to verify this condition.
|
||||
|
||||
The RFC ([RFC 1034]) predates IPv6. Since IPv4 and IPv6 work as separate networks, this
|
||||
test case has been extended to test for two name servers that resolve into IPv4 addresses
|
||||
and IPv6 addresses respectively.
|
||||
|
||||
Both [RFC 3901] (section 3) and [RFC 4472] (section 1.3) states that a domain
|
||||
(zone) should be available over IPv4 for the time being. Therefore, it is by the
|
||||
default level in this test case considered to be more problematic not being available
|
||||
over IPv4 than not being available over IPv6.
|
||||
|
||||
## Inputs
|
||||
|
||||
"Child Zone" - The domain name to be tested
|
||||
|
||||
## Ordered description of steps to be taken to execute the test case
|
||||
|
||||
1. Using [Method2], obtain the complete set of names of the name servers
|
||||
from the delegation of the *Child Zone*.
|
||||
|
||||
2. Count the name server names:
|
||||
1. If zero or one, emit *[NOT_ENOUGH_NS_DEL]*.
|
||||
2. If two or more, emit *[ENOUGH_NS_DEL]*.
|
||||
|
||||
3. Using [Method4], obtain the IP addresses for the name servers of the
|
||||
delegation of the *Child Zone*.
|
||||
|
||||
4. Count the number of name server names that resolve into at least one IPv4
|
||||
address:
|
||||
1. If zero, emit *[NO_IPV4_NS_DEL]*.
|
||||
2. If one, emit *[NOT_ENOUGH_IPV4_NS_DEL]*.
|
||||
3. If two or more, emit *[ENOUGH_IPV4_NS_DEL]*.
|
||||
|
||||
5. Count the number of name server names that resolve into at least one IPv6
|
||||
address:
|
||||
1. If zero, emit *[NO_IPV6_NS_DEL]*.
|
||||
2. If one, emit *[NOT_ENOUGH_IPV6_NS_DEL]*.
|
||||
3. If two or more, emit *[ENOUGH_IPV6_NS_DEL]*.
|
||||
|
||||
6. Using [Method3], obtain the complete set of names of the name servers
|
||||
from the *Child Zone* for the *Child Zone*.
|
||||
|
||||
7. Count the name server names:
|
||||
1. If zero or one, emit *[NOT_ENOUGH_NS_CHILD]*.
|
||||
2. If two or more, emit *[ENOUGH_NS_CHILD]*.
|
||||
|
||||
8. Using [Method5], obtain the IP addresses for the name servers from
|
||||
the *Child Zone* for the *Child Zone*.
|
||||
|
||||
9. Count the number of name server names that resolve into at least one IPv4
|
||||
address:
|
||||
1. If zero, emit *[NO_IPV4_NS_CHILD]*.
|
||||
2. If one, emit *[NOT_ENOUGH_IPV4_NS_CHILD]*.
|
||||
3. If two or more, emit *[ENOUGH_IPV4_NS_CHILD]*.
|
||||
|
||||
10. Count the number of name server names that resolve into at least one IPv6
|
||||
address:
|
||||
1. If zero, emit *[NO_IPV6_NS_CHILD]*.
|
||||
2. If one, emit *[NOT_ENOUGH_IPV6_NS_CHILD]*.
|
||||
3. If two or more, emit *[ENOUGH_IPV6_NS_CHILD]*.
|
||||
|
||||
## Outcome(s)
|
||||
|
||||
The outcome of this Test Case is "fail" if there is at least one message
|
||||
with the severity level *ERROR* or *CRITICAL*.
|
||||
|
||||
The outcome of this Test Case is "warning" if there is at least one message
|
||||
with the severity level *WARNING*, but no message with severity level
|
||||
*ERROR* or *CRITICAL*.
|
||||
|
||||
Else the outcome of this Test Case is "pass".
|
||||
|
||||
Message | Default severity level
|
||||
:-----------------------------|:-----------------------------------
|
||||
ENOUGH_IPV4_NS_CHILD | INFO
|
||||
ENOUGH_IPV4_NS_DEL | INFO
|
||||
ENOUGH_IPV6_NS_CHILD | INFO
|
||||
ENOUGH_IPV6_NS_DEL | INFO
|
||||
ENOUGH_NS_CHILD | INFO
|
||||
ENOUGH_NS_DEL | INFO
|
||||
NOT_ENOUGH_IPV4_NS_CHILD | ERROR
|
||||
NOT_ENOUGH_IPV4_NS_DEL | ERROR
|
||||
NOT_ENOUGH_IPV6_NS_CHILD | ERROR
|
||||
NOT_ENOUGH_IPV6_NS_DEL | ERROR
|
||||
NOT_ENOUGH_NS_CHILD | ERROR
|
||||
NOT_ENOUGH_NS_DEL | ERROR
|
||||
NO_IPV4_NS_CHILD | WARNING
|
||||
NO_IPV4_NS_DEL | WARNING
|
||||
NO_IPV6_NS_CHILD | NOTICE
|
||||
NO_IPV6_NS_DEL | NOTICE
|
||||
|
||||
|
||||
## Special procedural requirements
|
||||
|
||||
None
|
||||
|
||||
## Intercase dependencies
|
||||
|
||||
None
|
||||
|
||||
[RFC 1034]: https://datatracker.ietf.org/doc/html/rfc1034
|
||||
[RFC 3901]: https://datatracker.ietf.org/doc/html/rfc3901
|
||||
[RFC 4472]: https://datatracker.ietf.org/doc/html/rfc4472
|
||||
|
||||
[Method2]: ../Methods.md#method-2-obtain-glue-name-records-from-parent
|
||||
[Method3]: ../Methods.md#method-3-obtain-name-servers-from-child
|
||||
[Method4]: ../Methods.md#method-4-obtain-glue-address-records-from-parent
|
||||
[Method5]: ../Methods.md#method-5-obtain-the-name-server-address-records-from-child
|
||||
|
||||
[ENOUGH_IPV4_NS_CHILD]: #outcomes
|
||||
[ENOUGH_IPV4_NS_DEL]: #outcomes
|
||||
[ENOUGH_IPV6_NS_CHILD]: #outcomes
|
||||
[ENOUGH_IPV6_NS_DEL]: #outcomes
|
||||
[ENOUGH_NS_CHILD]: #outcomes
|
||||
[ENOUGH_NS_DEL]: #outcomes
|
||||
[NOT_ENOUGH_IPV4_NS_CHILD]: #outcomes
|
||||
[NOT_ENOUGH_IPV4_NS_DEL]: #outcomes
|
||||
[NOT_ENOUGH_IPV6_NS_CHILD]: #outcomes
|
||||
[NOT_ENOUGH_IPV6_NS_DEL]: #outcomes
|
||||
[NOT_ENOUGH_NS_CHILD]: #outcomes
|
||||
[NOT_ENOUGH_NS_DEL]: #outcomes
|
||||
[NO_IPV4_NS_CHILD]: #outcomes
|
||||
[NO_IPV4_NS_DEL]: #outcomes
|
||||
[NO_IPV6_NS_CHILD]: #outcomes
|
||||
[NO_IPV6_NS_DEL]: #outcomes
|
||||
|
||||
Reference in New Issue
Block a user