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,54 @@
package Zonemaster::Backend::Translator;
our $VERSION = '1.1.0';
use 5.14.2;
use Moose;
use Encode;
use Readonly;
use POSIX qw[setlocale LC_MESSAGES LC_CTYPE];
use Locale::TextDomain qw[Zonemaster-Backend];
use Zonemaster::Backend::Config;
# Zonemaster Modules
require Zonemaster::Engine::Translator;
require Zonemaster::Engine::Logger::Entry;
extends 'Zonemaster::Engine::Translator';
Readonly my %TAG_DESCRIPTIONS => (
TEST_DIED => sub {
__x # BACKEND_TEST_AGENT:TEST_DIED
'An error occured and Zonemaster could not start or finish the test.', @_;
},
UNABLE_TO_FINISH_TEST => sub {
__x # BACKEND_TEST_AGENT:UNABLE_TO_FINISH_TEST
'The test took too long to run (the current limit is {max_execution_time} seconds). '
. 'Maybe there are too many name servers or the name servers are either unreachable or not responsive enough.', @_;
},
);
sub _build_all_tag_descriptions {
my ( $class ) = @_;
my $all_tag_descriptions = Zonemaster::Engine::Translator::_build_all_tag_descriptions();
$all_tag_descriptions->{Backend} = \%TAG_DESCRIPTIONS;
return $all_tag_descriptions;
}
sub translate_tag {
my ( $self, $hashref ) = @_;
my $entry = Zonemaster::Engine::Logger::Entry->new( { %{ $hashref } } );
return decode_utf8( $self->SUPER::translate_tag( $entry ) );
}
sub test_case_description {
my ( $self, $test_name ) = @_;
return decode_utf8( $self->SUPER::test_case_description( $test_name ) );
}
1;