Files
Malin 8d4eaa1489 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>
2026-04-21 08:19:24 +02:00

125 lines
7.2 KiB
INI

# ns1 and ns2 recursor.engine.xa
recursor.engine.xa:53 {
bind 127.30.1.21
bind fda1:b2:c3:0:127:30:1:21
bind 127.30.1.22
bind fda1:b2:c3:0:127:30:1:22
log
file Engine/Recursor-PM/recursor.engine.xa recursor.engine.xa.
}
# ns1 cname.recursor.engine.xa
cname.recursor.engine.xa:53 {
bind 127.30.1.31
bind fda1:b2:c3:0:127:30:1:31
log
file Engine/Recursor-PM/cname.recursor.engine.xa cname.recursor.engine.xa.
# For scenario MULT-CNAME
template IN A mult-cname.cname.recursor.engine.xa {
answer "mult-cname.cname.recursor.engine.xa. 3600 IN CNAME mult-cname-target-1.cname.recursor.engine.xa."
answer "mult-cname.cname.recursor.engine.xa. 3600 IN CNAME mult-cname-target-2.cname.recursor.engine.xa."
#answer "mult-cname-target-1.cname.recursor.engine.xa. 3600 IN A 127.0.0.1" # Taken from the zone
#answer "mult-cname-target-2.cname.recursor.engine.xa. 3600 IN A 127.0.0.2" # Taken from the zone
}
# For scenario GOOD-CNAME-OUT-OF-ZONE
template IN A good-cname-out-of-zone.cname.recursor.engine.xa {
answer "good-cname-out-of-zone.cname.recursor.engine.xa. 3600 IN CNAME target.goodsub.cname.recursor.engine.xa."
authority "goodsub.cname.recursor.engine.xa. 3600 IN NS ns1.goodsub.cname.recursor.engine.xa."
additional "ns1.goodsub.cname.recursor.engine.xa 3600 IN A 127.30.1.34"
additional "ns1.goodsub.cname.recursor.engine.xa 3600 IN AAAA fda1:b2:c3::127:30:1:34"
}
# For scenario NXDOMAIN-VIA-CNAME
template IN A nxdomain-via-cname.cname.recursor.engine.xa {
answer "nxdomain-via-cname.cname.recursor.engine.xa. 3600 IN CNAME nxdomain-via-cname-target.cname.recursor.engine.xa."
authority "cname.recursor.engine.xa. 3600 IN SOA ns1.cname.recursor.engine.xa. root.cname.recursor.engine.xa. 2023111502 86400 14400 3600000 3600"
}
# For scenario NODATA-VIA-CNAME
template IN A nodata-via-cname.cname.recursor.engine.xa {
answer "nodata-via-cname.cname.recursor.engine.xa. 3600 IN CNAME nodata-via-cname-target.cname.recursor.engine.xa."
authority "cname.recursor.engine.xa. 3600 IN SOA ns1.cname.recursor.engine.xa. root.cname.recursor.engine.xa. 2023111502 86400 14400 3600000 3600"
}
# For scenario LOOPED-CNAME-IN-ZONE-2
template IN ANY looped-cname-in-zone-2.cname.recursor.engine.xa {
answer "looped-cname-in-zone-2.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-a.cname.recursor.engine.xa."
answer "looped-cname-in-zone-2-a.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-b.cname.recursor.engine.xa."
answer "looped-cname-in-zone-2-b.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-a.cname.recursor.engine.xa."
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario TOO-LONG-CNAME-CHAIN
template IN A too-long-cname-chain.cname.recursor.engine.xa {
answer "too-long-cname-chain.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-two.cname.recursor.engine.xa."
answer "too-long-cname-chain-two.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-three.cname.recursor.engine.xa."
answer "too-long-cname-chain-three.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-four.cname.recursor.engine.xa."
answer "too-long-cname-chain-four.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-five.cname.recursor.engine.xa."
answer "too-long-cname-chain-five.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-six.cname.recursor.engine.xa."
answer "too-long-cname-chain-six.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-seven.cname.recursor.engine.xa."
answer "too-long-cname-chain-seven.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-eight.cname.recursor.engine.xa."
answer "too-long-cname-chain-eight.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-nine.cname.recursor.engine.xa."
answer "too-long-cname-chain-nine.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-ten.cname.recursor.engine.xa."
answer "too-long-cname-chain-ten.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-target.cname.recursor.engine.xa."
answer "too-long-cname-chain-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1"
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario TARGET-NO-MATCH-CNAME
template IN A target-no-match-cname.cname.recursor.engine.xa {
answer "target-no-match-cname.cname.recursor.engine.xa. 3600 IN CNAME target-no-match-cname-two.cname.recursor.engine.xa."
answer "target-no-match-cname-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1"
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario BROKEN-CNAME-CHAIN
template IN A broken-cname-chain.cname.recursor.engine.xa {
answer "broken-cname-chain.cname.recursor.engine.xa. 3600 IN CNAME broken-cname-chain-two.cname.recursor.engine.xa."
answer "broken-cname-chain-three.cname.recursor.engine.xa. 3600 IN CNAME broken-cname-chain-target.cname.recursor.engine.xa."
#answer "broken-cname-chain-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1" # Taken from the zone
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario WRONG-CNAME-OWNER-NAME
template IN A wrong-cname-owner-name.cname.recursor.engine.xa {
answer "wrong-cname-owner-name-1.cname.recursor.engine.xa. 3600 IN CNAME wrong-cname-owner-name-target.cname.recursor.engine.xa."
#answer "wrong-cname-owner-name-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1" # Taken from the zone
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario EXTRA-CNAME-IN-ANSWER
template IN A extra-cname-in-answer.cname.recursor.engine.xa {
answer "extra-cname-in-answer.cname.recursor.engine.xa. 3600 IN A 127.0.0.1"
answer "extra-cname-in-answer-1.cname.recursor.engine.xa. 3600 IN CNAME extra-cname-in-answer-2.cname.recursor.engine.xa."
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
}
# ns1 sub2.cname.recursor.engine.xa
sub2.cname.recursor.engine.xa:53 {
bind 127.30.1.32
bind fda1:b2:c3:0:127:30:1:32
log
file Engine/Recursor-PM/sub2.cname.recursor.engine.xa sub2.cname.recursor.engine.xa.
}
# ns1 sub3.cname.recursor.engine.xa
sub3.cname.recursor.engine.xa:53 {
bind 127.30.1.33
bind fda1:b2:c3:0:127:30:1:33
log
file Engine/Recursor-PM/sub3.cname.recursor.engine.xa sub3.cname.recursor.engine.xa.
}
# ns1 goodsub.ns1 cname.recursor.engine.xa
goodsub.cname.recursor.engine.xa:53 {
bind 127.30.1.34
bind fda1:b2:c3:0:127:30:1:34
log
file Engine/Recursor-PM/goodsub.cname.recursor.engine.xa goodsub.cname.recursor.engine.xa.
}