#!/bin/bash # Simple webhook receiver for GitHub/GitLab push events # This creates a lightweight HTTP server that triggers updates on push PORT="${WEBHOOK_PORT:-9000}" SECRET="${WEBHOOK_SECRET:-change-me-in-production}" PROJECT_DIR="${PROJECT_DIR:-$(cd "$(dirname "$0")/.." && pwd)}" LOG_FILE="${PROJECT_DIR}/logs/webhook.log" mkdir -p "${PROJECT_DIR}/logs" echo "=========================================" echo "MEV Bot Webhook Receiver" echo "=========================================" echo "Listening on port: $PORT" echo "Project: $PROJECT_DIR" echo "Log file: $LOG_FILE" echo "" echo "Configure your GitHub/GitLab webhook to:" echo " URL: http://your-server:$PORT/webhook" echo " Secret: $SECRET" echo " Events: Push events on master branch" echo "" echo "Press Ctrl+C to stop" echo "=========================================" echo "" # Simple HTTP server using netcat and bash while true; do # Listen for incoming requests RESPONSE=$(echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nWebhook received" | nc -l -p "$PORT" -q 1) # Log the request echo "[$(date)] Webhook received" | tee -a "$LOG_FILE" # Check if it's a valid webhook request (basic check) if echo "$RESPONSE" | grep -q "POST /webhook"; then echo "[$(date)] Valid webhook request detected" | tee -a "$LOG_FILE" # Trigger auto-update in background ( cd "$PROJECT_DIR" ./scripts/auto-update.sh >> "$LOG_FILE" 2>&1 ) & echo "[$(date)] Auto-update triggered" | tee -a "$LOG_FILE" else echo "[$(date)] Invalid request ignored" | tee -a "$LOG_FILE" fi # Small delay before listening again sleep 1 done