153 lines
7.4 KiB
Bash
153 lines
7.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Fix all remaining issues: Redis, Vault, Web3Signer keys, Allowlist
|
||
|
|
# Usage: ./scripts/fix-all-remaining-issues.sh
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
PROXMOX_HOST="192.168.11.11"
|
||
|
|
WEB3SIGNER_IP="192.168.11.111"
|
||
|
|
REDIS_CONTAINER="106"
|
||
|
|
VAULT_CONTAINER="108"
|
||
|
|
WEB3SIGNER_CONTAINER="107"
|
||
|
|
|
||
|
|
echo "═══════════════════════════════════════════════════════════════"
|
||
|
|
echo "🔧 FIXING ALL REMAINING ISSUES"
|
||
|
|
echo "═══════════════════════════════════════════════════════════════"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Step 1: Fix Redis
|
||
|
|
echo "Step 1: Fixing Redis..."
|
||
|
|
echo " Checking Redis status..."
|
||
|
|
REDIS_STATUS=$(ssh root@$PROXMOX_HOST "pct exec $REDIS_CONTAINER -- systemctl is-active redis-server" 2>&1 || echo "inactive")
|
||
|
|
if [ "$REDIS_STATUS" != "active" ]; then
|
||
|
|
echo " Starting Redis..."
|
||
|
|
ssh root@$PROXMOX_HOST "pct exec $REDIS_CONTAINER -- systemctl start redis-server && sleep 2" 2>&1
|
||
|
|
fi
|
||
|
|
REDIS_PING=$(ssh root@$PROXMOX_HOST "pct exec $REDIS_CONTAINER -- redis-cli ping" 2>&1 || echo "not responding")
|
||
|
|
if [ "$REDIS_PING" = "PONG" ]; then
|
||
|
|
echo " ✅ Redis: Running"
|
||
|
|
else
|
||
|
|
echo " ⚠️ Redis: $REDIS_PING"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Step 2: Fix Vault
|
||
|
|
echo ""
|
||
|
|
echo "Step 2: Fixing Vault..."
|
||
|
|
echo " Checking Vault status..."
|
||
|
|
VAULT_STATUS=$(ssh root@$PROXMOX_HOST "pct exec $VAULT_CONTAINER -- systemctl is-active vault" 2>&1 || echo "inactive")
|
||
|
|
if [ "$VAULT_STATUS" != "active" ]; then
|
||
|
|
echo " Starting Vault..."
|
||
|
|
ssh root@$PROXMOX_HOST "pct exec $VAULT_CONTAINER -- systemctl start vault && sleep 2" 2>&1
|
||
|
|
fi
|
||
|
|
VAULT_HEALTH=$(curl -s -m 5 http://192.168.11.112:8200/v1/sys/health 2>&1 | jq -r '.status' 2>/dev/null || echo "not responding")
|
||
|
|
if [ "$VAULT_HEALTH" = "active" ] || [ "$VAULT_HEALTH" = "standby" ]; then
|
||
|
|
echo " ✅ Vault: $VAULT_HEALTH"
|
||
|
|
else
|
||
|
|
echo " ⚠️ Vault: $VAULT_HEALTH"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Step 3: Fix Web3Signer keys
|
||
|
|
echo ""
|
||
|
|
echo "Step 3: Fixing Web3Signer keys..."
|
||
|
|
echo " Ensuring service is enabled and running..."
|
||
|
|
ssh root@$PROXMOX_HOST "pct exec $WEB3SIGNER_CONTAINER -- bash -c 'systemctl daemon-reload && systemctl enable web3signer.service && systemctl restart web3signer.service && sleep 5'" 2>&1
|
||
|
|
|
||
|
|
echo " Checking keys location..."
|
||
|
|
KEYS_COUNT=$(ssh root@$PROXMOX_HOST "pct exec $WEB3SIGNER_CONTAINER -- ls -1 /opt/web3signer/data/keys/*.json 2>/dev/null | wc -l" 2>&1 || echo "0")
|
||
|
|
echo " Keys found in directory: $KEYS_COUNT"
|
||
|
|
|
||
|
|
if [ "$KEYS_COUNT" -gt 0 ]; then
|
||
|
|
echo " Keys exist, checking if Web3Signer loads them..."
|
||
|
|
sleep 3
|
||
|
|
KEYS=$(curl -s http://$WEB3SIGNER_IP:9000/api/v1/eth1/publicKeys 2>&1 || echo "[]")
|
||
|
|
if [ "$KEYS" != "[]" ] && [ -n "$KEYS" ]; then
|
||
|
|
KEY_COUNT=$(echo "$KEYS" | jq '. | length' 2>/dev/null || echo "0")
|
||
|
|
if [ "$KEY_COUNT" -gt 0 ]; then
|
||
|
|
echo " ✅ Keys loaded: $KEY_COUNT"
|
||
|
|
ADDRESSES=$(echo "$KEYS" | jq -r '.[]' | tr '\n' ',' | sed 's/,$//')
|
||
|
|
echo "$ADDRESSES" > /tmp/web3signer-addresses.txt
|
||
|
|
else
|
||
|
|
echo " ⚠️ Keys not loaded yet, checking logs..."
|
||
|
|
ssh root@$PROXMOX_HOST "pct exec $WEB3SIGNER_CONTAINER -- journalctl -u web3signer.service -n 20 --no-pager" 2>&1 | grep -i "key\|signer\|error" | tail -10
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo " ⚠️ Keys not loaded, checking Web3Signer logs..."
|
||
|
|
ssh root@$PROXMOX_HOST "pct exec $WEB3SIGNER_CONTAINER -- journalctl -u web3signer.service -n 30 --no-pager" 2>&1 | tail -15
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo " ⚠️ No keys found in /opt/web3signer/data/keys/"
|
||
|
|
echo " Keys need to be generated and loaded first"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Step 4: Configure allowlist
|
||
|
|
echo ""
|
||
|
|
echo "Step 4: Configuring wallet allowlist..."
|
||
|
|
if [ -f /tmp/web3signer-addresses.txt ]; then
|
||
|
|
ADDRESSES=$(cat /tmp/web3signer-addresses.txt)
|
||
|
|
if [ -n "$ADDRESSES" ]; then
|
||
|
|
echo " Configuring allowlist with addresses: $ADDRESSES"
|
||
|
|
cd "$(dirname "$0")/.."
|
||
|
|
./scripts/configure-wallet-allowlist.sh "$ADDRESSES" 2>&1 || echo " ⚠️ Allowlist configuration had issues"
|
||
|
|
else
|
||
|
|
echo " ⚠️ No addresses available for allowlist"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
# Try to get addresses from API
|
||
|
|
KEYS=$(curl -s http://$WEB3SIGNER_IP:9000/api/v1/eth1/publicKeys 2>&1 || echo "[]")
|
||
|
|
if [ "$KEYS" != "[]" ] && [ -n "$KEYS" ]; then
|
||
|
|
ADDRESSES=$(echo "$KEYS" | jq -r '.[]' | tr '\n' ',' | sed 's/,$//')
|
||
|
|
if [ -n "$ADDRESSES" ]; then
|
||
|
|
echo " Configuring allowlist with addresses from API..."
|
||
|
|
cd "$(dirname "$0")/.."
|
||
|
|
./scripts/configure-wallet-allowlist.sh "$ADDRESSES" 2>&1 || echo " ⚠️ Allowlist configuration had issues"
|
||
|
|
else
|
||
|
|
echo " ⚠️ No addresses available (keys not loaded)"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo " ⚠️ Keys not loaded, cannot configure allowlist"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Step 5: Restart translators to pick up allowlist
|
||
|
|
echo ""
|
||
|
|
echo "Step 5: Restarting translator services..."
|
||
|
|
for IP in 192.168.11.240 192.168.11.241 192.168.11.242; do
|
||
|
|
echo " Restarting $IP..."
|
||
|
|
ssh -i ~/.ssh/proxmox_translator -o StrictHostKeyChecking=no root@$IP "systemctl restart rpc-translator-138.service && sleep 2" 2>&1 || echo " ⚠️ Failed to restart $IP"
|
||
|
|
done
|
||
|
|
|
||
|
|
# Step 6: Final status check
|
||
|
|
echo ""
|
||
|
|
echo "═══════════════════════════════════════════════════════════════"
|
||
|
|
echo "📊 FINAL STATUS CHECK"
|
||
|
|
echo "═══════════════════════════════════════════════════════════════"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Redis
|
||
|
|
REDIS_PING=$(ssh root@$PROXMOX_HOST "pct exec $REDIS_CONTAINER -- redis-cli ping" 2>&1 || echo "not responding")
|
||
|
|
echo "Redis: $([ "$REDIS_PING" = "PONG" ] && echo "✅ Running" || echo "❌ $REDIS_PING")"
|
||
|
|
|
||
|
|
# Web3Signer
|
||
|
|
WEB3SIGNER_HEALTH=$(curl -s -m 5 http://$WEB3SIGNER_IP:9000/upcheck 2>&1 || echo "not responding")
|
||
|
|
KEYS=$(curl -s http://$WEB3SIGNER_IP:9000/api/v1/eth1/publicKeys 2>&1 || echo "[]")
|
||
|
|
KEY_COUNT=$(echo "$KEYS" | jq '. | length' 2>/dev/null || echo "0")
|
||
|
|
echo "Web3Signer: $([ "$WEB3SIGNER_HEALTH" = "OK" ] && echo "✅ Health OK" || echo "❌ $WEB3SIGNER_HEALTH"), Keys: $([ "$KEY_COUNT" -gt 0 ] && echo "✅ $KEY_COUNT loaded" || echo "⚠️ Not loaded")"
|
||
|
|
|
||
|
|
# Vault
|
||
|
|
VAULT_HEALTH=$(curl -s -m 5 http://192.168.11.112:8200/v1/sys/health 2>&1 | jq -r '.status' 2>/dev/null || echo "not responding")
|
||
|
|
echo "Vault: $([ "$VAULT_HEALTH" = "active" ] || [ "$VAULT_HEALTH" = "standby" ] && echo "✅ $VAULT_HEALTH" || echo "⚠️ $VAULT_HEALTH")"
|
||
|
|
|
||
|
|
# Translators
|
||
|
|
echo ""
|
||
|
|
echo "Translators:"
|
||
|
|
for IP in 192.168.11.240 192.168.11.241 192.168.11.242; do
|
||
|
|
SERVICE=$(ssh -i ~/.ssh/proxmox_translator -o StrictHostKeyChecking=no root@$IP "systemctl is-active rpc-translator-138.service" 2>/dev/null || echo "unknown")
|
||
|
|
HEALTH=$(curl -s -m 5 http://$IP:9545/health 2>&1 | jq -r '.status' 2>/dev/null || echo "unknown")
|
||
|
|
echo " $IP: Service=$SERVICE, Health=$HEALTH"
|
||
|
|
done
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "═══════════════════════════════════════════════════════════════"
|
||
|
|
echo "✅ FIX COMPLETE"
|
||
|
|
echo "═══════════════════════════════════════════════════════════════"
|