#!/bin/sh # dns-cli validation script. # Runs a live read-only cycle against the configured Technitium instance. # # Usage: ./validate.sh # Exit codes: 0 = all checks passed, 1 = one or more checks failed set -eu SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$SCRIPT_DIR" ENV_FILE="${TECHNITIUM_ENV_FILE:-$HOME/.creds/technitium.env}" if [ ! -f "$ENV_FILE" ]; then echo "FAIL: env file not found: $ENV_FILE" echo " Set TECHNITIUM_ENV_FILE or create it in ~/.creds/technitium.env" exit 1 fi IMAGE="${DNS_CLI_IMAGE:-git.knownelement.com/reachableceo/dns-cli:latest}" PASS=0 FAIL=0 TOTAL=0 ok() { TOTAL=$((TOTAL+1)); echo "PASS: $1"; PASS=$((PASS+1)); } fail() { TOTAL=$((TOTAL+1)); echo "FAIL: $1"; FAIL=$((FAIL+1)); } echo "============================================" echo " dns-cli validation" echo " image: ${IMAGE}" echo "============================================" echo "" # ---------------------------------------------------------------- # # 1. zones (live read) # ---------------------------------------------------------------- # echo "--- [1] zones ---" OUT=$(docker run --rm --env-file "$ENV_FILE" "${IMAGE}" zones 2>&1) || true if echo "$OUT" | grep -qE '\.'; then ok "zones returned data" echo "$OUT" | head -5 else fail "zones did not return expected output" echo " $OUT" | head -5 fi echo "" # ---------------------------------------------------------------- # # 2. list (live read) # ---------------------------------------------------------------- # echo "--- [2] list ---" OUT=$(docker run --rm --env-file "$ENV_FILE" "${IMAGE}" list 2>&1) || true if echo "$OUT" | grep -qE 'A\s'; then ok "list returned records" echo "$OUT" | head -5 else fail "list did not return expected output" echo " $OUT" | head -5 fi echo "" # ---------------------------------------------------------------- # # 3. search (live read) # ---------------------------------------------------------------- # echo "--- [3] search ---" OUT=$(docker run --rm --env-file "$ENV_FILE" "${IMAGE}" search "ns" 2>&1) || true if [ -n "$OUT" ]; then ok "search returned results" echo "$OUT" | head -3 else fail "search returned no results" fi echo "" # ---------------------------------------------------------------- # # Results # ---------------------------------------------------------------- # echo "============================================" echo " RESULTS: ${PASS}/${TOTAL} passed, ${FAIL} failed" echo "============================================" [ "$FAIL" -eq 0 ]