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,58 @@
use strict;
use warnings;
use File::Basename;
use File::Spec::Functions qw( rel2abs );
use lib dirname( rel2abs( $0 ) );
use TestUtil::DSL;
testing_test_case 'Address', 'address03';
all_tags qw(NAMESERVER_IP_PTR_MATCH
NAMESERVER_IP_PTR_MISMATCH
NAMESERVER_IP_WITHOUT_REVERSE
NO_RESPONSE_PTR_QUERY);
# Common hint file (test-zone-data/COMMON/hintfile)
root_hints 'ns1' => [ qw(127.1.0.1 fda1:b2:c3::127:1:0:1) ],
'ns2' => [ qw(127.1.0.2 fda1:b2:c3::127:1:0:2) ];
zone_name_template '{SCENARIO}.{TESTCASE}.xa';
# Test zone scenarios
scenario 'ALL-NS-HAVE-PTR-{1..2}' => sub {
expect 'NAMESERVER_IP_PTR_MATCH';
forbid_others;
};
scenario 'NO-NS-HAVE-PTR' => sub {
expect 'NAMESERVER_IP_WITHOUT_REVERSE';
forbid_others;
};
scenario 'INCOMPLETE-PTR-{1..2}' => sub {
expect 'NAMESERVER_IP_WITHOUT_REVERSE';
forbid_others;
};
scenario 'NON-MATCHING-NAMES' => sub {
expect 'NAMESERVER_IP_PTR_MISMATCH';
forbid_others;
};
scenario 'PTR-IS-GOOD-CNAME-{1..2}' => sub {
expect 'NAMESERVER_IP_PTR_MATCH';
forbid_others;
};
scenario 'PTR-IS-DANGLING-CNAME' => sub {
expect 'NAMESERVER_IP_WITHOUT_REVERSE';
forbid_others;
};
scenario 'PTR-IS-ILLEGAL-CNAME' => sub {
expect 'NAMESERVER_IP_WITHOUT_REVERSE';
forbid 'NAMESERVER_IP_PTR_MATCH';
};
no_more_scenarios;