#!/usr/bin/env bash # Update master lists with real enodes for ALLTRA/HYBX nodes set -euo pipefail # Load IP configuration SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" # Real enodes collected declare -A REAL_ENODES REAL_ENODES["${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}}}3"]="enode://b34bc020e7d227696ff132da51cdf58b8e5aaf4ace9d5094bb86f9e66376b052b8b4b5f23acc69c3fb0da75ee6176e70defff14332fb925fef6e0b60c3310ca2@${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}}}3:30303" REAL_ENODES["${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}}}4"]="enode://5cdab7d9835e5998373d4efec27bead1d55f0ed833a2669f3af330de33cd3fd1882caa18ad9f813d0621c7dc694d829a10de8d43d10f2c3ea6a8d4c16cc5f648@${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}}}4:30303" REAL_ENODES["${IP_SERVICE_172:-${IP_SERVICE_172:-192.168.11.172}}"]="enode://fb96450dce5ff6dc3b5e75553eb2e4651ec6c33173060e10453aacfae18e5854606c4aacd2c2de29a0024749bf594aff1f28a9aa3fbe34529db3575b0461872a@${IP_SERVICE_172:-${IP_SERVICE_172:-192.168.11.172}}:30303" REAL_ENODES["${IP_SERVICE_173:-${IP_SERVICE_173:-192.168.11.173}}"]="enode://904eb9acbe406d1825afd2cd61d0ce2f4614eb48bcb8d19476428034ef992d07b5b9d36102a8cbb42479d2a63c6d48b68091ddc6545025a999ef6b55d6c17e07@${IP_SERVICE_173:-${IP_SERVICE_173:-192.168.11.173}}:30303" REAL_ENODES["${IP_SERVICE_174:-${IP_SERVICE_174:-192.168.11.174}}"]="enode://17413a9ab0f570c72e9d7d511a856cd5b5abb58b70d0b9635524220a5354ee275429bf5d630025dbbb0d67c6ae24510e6560bf8b38a7e226e24a00cd181d6ae6@${IP_SERVICE_174:-${IP_SERVICE_174:-192.168.11.174}}:30303" REAL_ENODES["${IP_RPC_244:-${IP_RPC_244:-${IP_RPC_244:-192.168.11.244}}}"]="enode://ab7f104acbcb254ced2653122f80b2c93b541467edc8f5b4bc90c4d3794cbbb1b2cbea69f9fe5e89f848e46a158e6ce45d76901e64801669321ce62172048eb8@${IP_RPC_244:-${IP_RPC_244:-${IP_RPC_244:-192.168.11.244}}}:30303" REAL_ENODES["${IP_RPC_245:-${IP_RPC_245:-${IP_RPC_245:-192.168.11.245}}}"]="enode://237e27eb3a8738189e266615e7d613da18f86018a76080e18dbb9856baeab6454b1aebff889bc0790f2d791dd277121ee76a4fc0a0d1bc1001c2811b42518618@${IP_RPC_245:-${IP_RPC_245:-${IP_RPC_245:-192.168.11.245}}}:30303" REAL_ENODES["${IP_RPC_246:-${IP_RPC_246:-${IP_RPC_246:-192.168.11.246}}}"]="enode://89570ba8882ea1d383afb97d0d82eb3cf5d0c5fec7ae2acfe39487e5335ee91c36cd4b5e9aa05110d99b51a16b869f7531e6f89ec63476cba7f928356c437348@${IP_RPC_246:-${IP_RPC_246:-${IP_RPC_246:-192.168.11.246}}}:30303" REAL_ENODES["${IP_RPC_247:-${IP_RPC_247:-${IP_RPC_247:-192.168.11.247}}}"]="enode://0fdbda7b6916973e598b7c9ff6e4e2da6f8bcce2ca46bb11c58368a9fbcfcb303a4955a563b2f71a51a813abeed3b44da220ad1488d19c9483f733548a7b7765@${IP_RPC_247:-${IP_RPC_247:-${IP_RPC_247:-192.168.11.247}}}:30303" REAL_ENODES["${IP_RPC_248:-${IP_RPC_248:-${IP_RPC_248:-192.168.11.248}}}"]="enode://0c710ae1e4eaf7ee9d375c404798625c5165e1699a24aedadcfb69fa8fcde41c822d3576b1a180c3251aeba9782ceb43cb32c300c4e1a205905728d72b94cfe9@${IP_RPC_248:-${IP_RPC_248:-${IP_RPC_248:-192.168.11.248}}}:30303" echo "Updating master-static-nodes.json..." # Read current nodes UPDATED_NODES=() while IFS= read -r line; do if [[ "$line" =~ \"enode:// ]]; then enode=$(echo "$line" | grep -o 'enode://[^"]*') ip=$(echo "$enode" | grep -oE '192\.168\.11\.[0-9]+') # Check if this IP has a real enode if [[ -n "${REAL_ENODES[$ip]:-}" ]]; then # Replace with real enode UPDATED_NODES+=(" \"${REAL_ENODES[$ip]}\"") echo " Replaced placeholder for $ip with real enode" else # Keep existing enode UPDATED_NODES+=("$line") fi else # Keep formatting lines if [[ "$line" =~ ^\[ || "$line" =~ ^\] ]]; then continue fi fi done < "$PROJECT_ROOT/config/master-static-nodes.json" # Write new file { echo "[" for i in "${!UPDATED_NODES[@]}"; do if [ $i -lt $((${#UPDATED_NODES[@]} - 1)) ]; then echo "${UPDATED_NODES[$i]}," else echo "${UPDATED_NODES[$i]}" fi done echo "]" } > "$PROJECT_ROOT/config/master-static-nodes.json" echo "✅ Updated master-static-nodes.json" # Copy to permissioned cp "$PROJECT_ROOT/config/master-static-nodes.json" "$PROJECT_ROOT/config/master-permissioned-nodes.json" echo "✅ Updated master-permissioned-nodes.json" # Validate jq empty "$PROJECT_ROOT/config/master-static-nodes.json" && echo "✅ JSON validation passed" echo "" echo "Total enodes: $(jq length "$PROJECT_ROOT/config/master-static-nodes.json")" echo "All 10 placeholder enodes replaced with real enodes!"