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

89 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -u
# This script will read address-plan.md and extract registered IPv4 addresses.
# From the extracted IPv4 address the matching IPv6 address is created.
#
# Since loopback (lo) is already configured with 127.0.0.0/8 there is no need
# to the configure the loopback interface with the IPv4 addresses for the test
# zones (all are within 127.0.0.0/8).
#
# The IPv6 addresses are configured on the loopback interface (lo) with this
# script. If the address is already configured, an error message is outputted by
# ip(), but can be ignored.
usage() { echo "Usage: sudo $0" 1>&2;
echo 1>&2;
exit 1; }
while getopts "h" o; do
case "${o}" in
h)
usage
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
# Make sure the script is run by root
if [ $(id -u) -ne 0 ] ; then
echo "You must be root." 1>&2
echo "Run 'sudo $0'" 1>&2
exit 1
fi
# Get path of this script
path=$(dirname $0)
# address-plan.md must be in the same folder as this script
datafile="$path/address-plan.md"
# Function to add IPv4 address
add_ipv4_address() {
local ip=$1
cmd="ip addr add $ip/32 dev lo"
echo -n "Adding $ip : "
$cmd && echo "added"
}
# Function to add IPv6 address
add_ipv6_address() {
local ip=$1
local ipv6=$(echo $ip | sed 's/\./:/g') # Convert colon to dot
cmd="ip addr add fda1:b2:c3::$ipv6/128 dev lo"
echo -n "Adding fda1:b2:c3::$ipv6 : "
$cmd && echo "added"
}
# Read every line in the data file (markdown)
while IFS= read -r line; do
# Get IP addresses without prefix (e.g. /24)
if [[ $line =~ ^\|\ ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\ +\| ]]; then
ip_address=${BASH_REMATCH[1]}
# Add address for IPv4
add_ipv4_address $ip_address
# Add address for IPv6
add_ipv6_address $ip_address
fi
done < $datafile
# An alternative approach is to run the following two commands to make all IPv6
# addresses in the /64 range be available.
#
# $ sudo ip -6 route add to local fda1:b2:c3::/64 dev lo
# $ sudo sysctl -w net.ipv6.ip_nonlocal_bind=1
#
# Migration to that approach should be combined with an update of the address
# plan file (address-plan.md) and probably combined with specific address plans
# with each test case.