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:
88
zonemaster/test-zone-data/set-ip.sh
Executable file
88
zonemaster/test-zone-data/set-ip.sh
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/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.
|
||||
Reference in New Issue
Block a user