95 lines
3.0 KiB
Bash
Executable File
95 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# GreySec Supabase Data Layer — One-command setup
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
DOCKER_DIR="$SCRIPT_DIR/docker"
|
|
CREDENTIALS_FILE="$HOME/.greysec/credentials.env"
|
|
|
|
echo "=== GreySec Supabase Setup ==="
|
|
|
|
# Check Docker
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "ERROR: Docker not installed. Install from https://docs.docker.com/get-docker/"
|
|
exit 1
|
|
fi
|
|
if ! docker ps &> /dev/null 2>&1; then
|
|
echo "ERROR: Docker daemon not running. Start Docker and try again."
|
|
exit 1
|
|
fi
|
|
echo "[OK] Docker available: $(docker --version)"
|
|
|
|
# Generate secrets if not set
|
|
source /dev/stdin <<<"$(grep SUPABASE_ "$CREDENTIALS_FILE" 2>/dev/null | sed 's/^/export /')" 2>/dev/null || true
|
|
|
|
JWT_SECRET="${SUPABASE_JWT_SECRET:-$(openssl rand -base64 32)}"
|
|
ANON_KEY="${SUPABASE_ANON_KEY:-$(openssl rand -base64 32)}"
|
|
SERVICE_ROLE_KEY="${SUPABASE_SERVICE_ROLE_KEY:-$(openssl rand -base64 32)}"
|
|
POSTGRES_PASSWORD="${SUPABASE_POSTGRES_PASSWORD:-$(openssl rand -base64 24)}"
|
|
|
|
# Create credentials file if it doesn't exist
|
|
mkdir -p "$(dirname "$CREDENTIALS_FILE")"
|
|
if [ ! -f "$CREDENTIALS_FILE" ]; then
|
|
cat > "$CREDENTIALS_FILE" <<EOF
|
|
# GreySec Supabase Configuration
|
|
# Generated: $(date)
|
|
SUPABASE_JWT_SECRET=$JWT_SECRET
|
|
SUPABASE_ANON_KEY=$ANON_KEY
|
|
SUPABASE_SERVICE_ROLE_KEY=$SERVICE_ROLE_KEY
|
|
SUPABASE_POSTGRES_PASSWORD=$POSTGRES_PASSWORD
|
|
SUPABASE_URL=http://localhost:9999
|
|
EOF
|
|
echo "[CREATED] $CREDENTIALS_FILE"
|
|
else
|
|
echo "[EXISTS] $CREDENTIALS_FILE"
|
|
fi
|
|
|
|
# Write docker env
|
|
cat > "$DOCKER_DIR/.env" <<EOF
|
|
POSTGRES_PASSWORD=$POSTGRES_PASSWORD
|
|
POSTGRES_USER=postgres
|
|
ANON_KEY=$ANON_KEY
|
|
SERVICE_ROLE_KEY=$SERVICE_ROLE_KEY
|
|
JWT_SECRET=$JWT_SECRET
|
|
EOF
|
|
echo "[OK] Docker environment configured"
|
|
|
|
# Start Supabase
|
|
cd "$DOCKER_DIR"
|
|
docker compose up -d
|
|
echo "[OK] Supabase stack started"
|
|
|
|
# Wait for Postgres
|
|
echo -n "[WAIT] Postgres "
|
|
for i in $(seq 1 30); do
|
|
if docker exec supabase-db-1 pg_isready -U postgres &>/dev/null 2>&1; then
|
|
echo "ready"
|
|
break
|
|
fi
|
|
echo -n "."
|
|
sleep 1
|
|
done
|
|
|
|
# Apply schema
|
|
echo "[MIGRATE] Applying schema..."
|
|
docker exec -i supabase-db-1 psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";" 2>/dev/null || true
|
|
docker exec -i supabase-db-1 psql -U postgres postgres 2>/dev/null < "$SCRIPT_DIR/migrations/001_initial_schema.sql"
|
|
echo "[OK] Schema applied"
|
|
|
|
# Start phishing webhook receiver
|
|
echo "[START] Phishing webhook receiver on :5001..."
|
|
cd "$SCRIPT_DIR"
|
|
python3 phishing_to_supabase.py --supabase-url http://localhost:9999 --service-role-key "$SERVICE_ROLE_KEY" &
|
|
echo "[OK] Webhook receiver started (PID: $!)"
|
|
|
|
echo ""
|
|
echo "=== Supabase is running ==="
|
|
echo " REST API: http://localhost:9999/rest/"
|
|
echo " Kong Admin: http://localhost:9998/"
|
|
echo " Postgres: postgresql://postgres:$POSTGRES_PASSWORD@localhost:5432/postgres"
|
|
echo " Phishing webhook: POST http://localhost:5001/webhook/gophish"
|
|
echo ""
|
|
echo "Add to Gophish sending profile:"
|
|
echo " Host: localhost:5001"
|
|
echo " URL path: /webhook/gophish"
|