105 lines
3.0 KiB
Bash
105 lines
3.0 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
|
||
|
|
# Final Fix: Remove Old Nodes, Keep Valid, Collect Missing
|
||
|
|
# Simplified approach to clean and update node lists
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||
|
|
|
||
|
|
STATIC_NODES_FILE="$PROJECT_ROOT/smom-dbis-138/config/static-nodes.json"
|
||
|
|
PERMISSIONED_NODES_FILE="$PROJECT_ROOT/smom-dbis-138-proxmox/config/permissioned-nodes.json"
|
||
|
|
|
||
|
|
# Valid IPs to keep (current configuration)
|
||
|
|
VALID_IPS=(
|
||
|
|
"192.168.11.100" # Validator 1000
|
||
|
|
"192.168.11.101" # Validator 1001
|
||
|
|
"192.168.11.102" # Validator 1002
|
||
|
|
"192.168.11.103" # Validator 1003
|
||
|
|
"192.168.11.104" # Validator 1004
|
||
|
|
"192.168.11.150" # Sentry 1500
|
||
|
|
"192.168.11.151" # Sentry 1501
|
||
|
|
"192.168.11.152" # Sentry 1502
|
||
|
|
"192.168.11.153" # Sentry 1503
|
||
|
|
"192.168.11.211" # RPC 2101
|
||
|
|
"192.168.11.240" # RPC 2400
|
||
|
|
"192.168.11.241" # RPC 2401
|
||
|
|
"192.168.11.242" # RPC 2402
|
||
|
|
"192.168.11.250" # RPC 2500
|
||
|
|
"192.168.11.251" # RPC 2501
|
||
|
|
"192.168.11.252" # RPC 2502
|
||
|
|
"192.168.11.253" # RPC 2503
|
||
|
|
"192.168.11.254" # RPC 2504
|
||
|
|
"192.168.11.201" # RPC 2505
|
||
|
|
"192.168.11.202" # RPC 2506
|
||
|
|
"192.168.11.203" # RPC 2507
|
||
|
|
"192.168.11.204" # RPC 2508
|
||
|
|
)
|
||
|
|
|
||
|
|
echo "=== Filtering Node Lists ==="
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Create associative array of valid IPs
|
||
|
|
declare -A VALID_IP_MAP
|
||
|
|
for ip in "${VALID_IPS[@]}"; do
|
||
|
|
VALID_IP_MAP["$ip"]=1
|
||
|
|
done
|
||
|
|
|
||
|
|
# Parse current file and keep only valid IPs
|
||
|
|
declare -A KEPT_ENODES
|
||
|
|
KEPT_COUNT=0
|
||
|
|
REMOVED_COUNT=0
|
||
|
|
|
||
|
|
while IFS= read -r line; do
|
||
|
|
enode=$(echo "$line" | grep -o 'enode://[^"]*' || echo "")
|
||
|
|
if [ -n "$enode" ]; then
|
||
|
|
ip=$(echo "$enode" | sed -n 's/.*@\([0-9.]*\):.*/\1/p')
|
||
|
|
if [ -n "${VALID_IP_MAP[$ip]}" ]; then
|
||
|
|
KEPT_ENODES["$ip"]="$enode"
|
||
|
|
((KEPT_COUNT++))
|
||
|
|
else
|
||
|
|
echo "Removing old/migrated IP: $ip"
|
||
|
|
((REMOVED_COUNT++))
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
done < <(cat "$STATIC_NODES_FILE" | jq -r '.[]' 2>/dev/null || grep -o 'enode://[^"]*' "$STATIC_NODES_FILE" 2>/dev/null || echo "")
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "Kept: $KEPT_COUNT enodes"
|
||
|
|
echo "Removed: $REMOVED_COUNT old/migrated enodes"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Generate cleaned file
|
||
|
|
OUTPUT_FILE="${STATIC_NODES_FILE}.fixed"
|
||
|
|
echo "[" > "$OUTPUT_FILE"
|
||
|
|
|
||
|
|
FIRST=true
|
||
|
|
for ip in "${VALID_IPS[@]}"; do
|
||
|
|
if [ -n "${KEPT_ENODES[$ip]}" ]; then
|
||
|
|
if [ "$FIRST" = false ]; then
|
||
|
|
echo "," >> "$OUTPUT_FILE"
|
||
|
|
fi
|
||
|
|
echo -n " \"${KEPT_ENODES[$ip]}\"" >> "$OUTPUT_FILE"
|
||
|
|
FIRST=false
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "" >> "$OUTPUT_FILE"
|
||
|
|
echo "]" >> "$OUTPUT_FILE"
|
||
|
|
|
||
|
|
# Verify and update
|
||
|
|
if jq empty "$OUTPUT_FILE" 2>/dev/null; then
|
||
|
|
BACKUP="${STATIC_NODES_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
|
||
|
|
cp "$STATIC_NODES_FILE" "$BACKUP"
|
||
|
|
cp "$OUTPUT_FILE" "$STATIC_NODES_FILE"
|
||
|
|
cp "$OUTPUT_FILE" "$PERMISSIONED_NODES_FILE"
|
||
|
|
echo "✓ Files updated (backup: $BACKUP)"
|
||
|
|
echo "✓ Kept $KEPT_COUNT enodes, removed $REMOVED_COUNT old entries"
|
||
|
|
else
|
||
|
|
echo "✗ Generated invalid JSON"
|
||
|
|
exit 1
|
||
|
|
fi
|