Files
explorer-monorepo/scripts/enable-debug-api-on-node.sh

155 lines
6.4 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# Enable DEBUG API on Besu RPC Node
# Run this script ON the RPC node (besu-rpc-1)
set -euo pipefail
CONFIG_FILE="/etc/besu/config-rpc-core.toml"
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ ENABLING DEBUG API IN BESU CONFIGURATION ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
echo "Config file: $CONFIG_FILE"
echo ""
# Check if config file exists
if [ ! -f "$CONFIG_FILE" ]; then
echo "❌ Config file not found: $CONFIG_FILE"
echo ""
echo "Available config files:"
ls -la /etc/besu/*.toml 2>/dev/null || echo "No config files found"
exit 1
fi
echo "Step 1: Checking current configuration..."
echo "───────────────────────────────────────────────────────────"
CURRENT_API=$(grep "rpc-http-api" "$CONFIG_FILE" | head -1)
echo "Current: $CURRENT_API"
echo ""
# Check if DEBUG is already enabled
if echo "$CURRENT_API" | grep -q "DEBUG"; then
echo "✅ DEBUG API is already enabled in configuration"
echo ""
echo "Checking if service needs restart..."
if systemctl is-active --quiet besu-rpc; then
echo "⚠️ Service is running. Restarting to ensure DEBUG API is active..."
systemctl restart besu-rpc
sleep 5
echo "✅ Service restarted"
else
echo "⚠️ Service is not running"
fi
exit 0
fi
echo "Step 2: Creating backup..."
BACKUP_FILE="${CONFIG_FILE}.backup.$(date +%Y%m%d-%H%M%S)"
cp "$CONFIG_FILE" "$BACKUP_FILE"
echo "✅ Backup created: $BACKUP_FILE"
echo ""
echo "Step 3: Updating configuration..."
echo "───────────────────────────────────────────────────────────"
# Try different patterns to match the rpc-http-api line
if grep -q 'rpc-http-api=\["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN"\]' "$CONFIG_FILE"; then
echo "Pattern 1: Found standard config"
sed -i 's/rpc-http-api=\["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN"\]/rpc-http-api=["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN","DEBUG","TRACE"]/g' "$CONFIG_FILE"
elif grep -q 'rpc-http-api=\["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN","DEBUG","TRACE"\]' "$CONFIG_FILE"; then
echo "✅ DEBUG and TRACE already in config"
elif grep -q 'rpc-http-api=\["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN","DEBUG"\]' "$CONFIG_FILE"; then
echo "Pattern 2: Found config with DEBUG but missing TRACE"
sed -i 's/rpc-http-api=\["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN","DEBUG"\]/rpc-http-api=["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN","DEBUG","TRACE"]/g' "$CONFIG_FILE"
else
echo "⚠️ Could not match standard pattern. Showing current line:"
grep "rpc-http-api" "$CONFIG_FILE" | head -1
echo ""
echo "Please edit manually:"
echo " nano $CONFIG_FILE"
echo ""
echo "Find the rpc-http-api line and add \"DEBUG\", \"TRACE\" to the array"
exit 1
fi
echo "✅ Configuration updated"
echo ""
echo "Step 4: Verifying update..."
echo "───────────────────────────────────────────────────────────"
UPDATED_API=$(grep "rpc-http-api" "$CONFIG_FILE" | head -1)
echo "Updated: $UPDATED_API"
echo ""
if echo "$UPDATED_API" | grep -q "DEBUG" && echo "$UPDATED_API" | grep -q "TRACE"; then
echo "✅ DEBUG and TRACE successfully added"
else
echo "❌ Update may have failed. Please check manually:"
echo " grep rpc-http-api $CONFIG_FILE"
exit 1
fi
echo ""
echo "Step 5: Updating rpc-ws-api (if present)..."
if grep -q "rpc-ws-api" "$CONFIG_FILE"; then
echo "Found rpc-ws-api, updating..."
if grep -q 'rpc-ws-api=\["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN"\]' "$CONFIG_FILE"; then
sed -i 's/rpc-ws-api=\["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN"\]/rpc-ws-api=["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN","DEBUG","TRACE"]/g' "$CONFIG_FILE"
echo "✅ rpc-ws-api updated"
fi
else
echo " rpc-ws-api not found (may not be configured)"
fi
echo ""
echo "Step 6: Restarting Besu service..."
systemctl restart besu-rpc
echo "✅ Service restart initiated"
echo ""
echo "Step 7: Waiting for service to start..."
sleep 10
if systemctl is-active --quiet besu-rpc; then
echo "✅ Service is running"
else
echo "⚠️ Service may not be running. Check status:"
systemctl status besu-rpc --no-pager | head -10
fi
echo ""
echo "Step 8: Testing DEBUG API..."
sleep 5
DEBUG_TEST=$(curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"debug_traceTransaction","params":["0x0000000000000000000000000000000000000000000000000000000000000000",{"tracer":"callTracer"}],"id":1}' \
http://localhost:8545 2>&1)
if echo "$DEBUG_TEST" | grep -q "Method not enabled"; then
echo "❌ DEBUG API still not enabled"
echo " Response: $DEBUG_TEST"
echo ""
echo " Possible issues:"
echo " 1. Service may need more time to restart"
echo " 2. Config file may not be the one being used"
echo " 3. Check which config Besu is actually using:"
echo " ps aux | grep besu | grep -v grep"
else
echo "✅ DEBUG API is enabled!"
echo " (Returned error for invalid transaction, which is expected)"
fi
echo ""
echo "═══════════════════════════════════════════════════════════════"
echo "SUMMARY"
echo "═══════════════════════════════════════════════════════════════"
echo ""
echo "Config file: $CONFIG_FILE"
echo "Backup: $BACKUP_FILE"
echo ""
echo "To test with your failed transaction:"
echo " curl -X POST -H 'Content-Type: application/json' \\"
echo " --data '{\"jsonrpc\":\"2.0\",\"method\":\"debug_traceTransaction\",\"params\":[\"0x4dc9f5eedf580c2b37457916b04048481aba19cf3c1a106ea1ee9eefa0dc03c8\",{\"tracer\":\"callTracer\"}],\"id\":1}' \\"
echo " http://localhost:8545 | jq"
echo ""