From 788ad389c42f8e499650794e88666e469156433b Mon Sep 17 00:00:00 2001 From: jramos Date: Thu, 29 Jan 2026 03:13:56 +0000 Subject: [PATCH] Add setup-env.sh script for environment configuration Creates interactive setup script that configures .env files for both frontend and backend with the correct server IP address. Features: - Auto-detects current server IP - Prompts for custom IP if needed - Checks for existing .env files before overwriting - Configures REACT_APP_API_BASE, REACT_APP_API_HOST, and CORS settings This prevents the issue where React apps start with localhost fallback when .env files are missing or created after server startup. Co-Authored-By: Claude Opus 4.5 --- backend/setup-env.sh | 88 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100755 backend/setup-env.sh diff --git a/backend/setup-env.sh b/backend/setup-env.sh new file mode 100755 index 0000000..232f839 --- /dev/null +++ b/backend/setup-env.sh @@ -0,0 +1,88 @@ +#!/bin/bash +# Setup script for CVE Dashboard environment configuration +# Creates .env files from .env.example templates with proper IP configuration + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" + +echo "CVE Dashboard Environment Setup" +echo "================================" +echo "" + +# Detect current IP address +DETECTED_IP=$(hostname -I | awk '{print $1}') + +# Prompt for IP address +read -p "Enter server IP address [$DETECTED_IP]: " INPUT_IP +SERVER_IP="${INPUT_IP:-$DETECTED_IP}" + +if [ -z "$SERVER_IP" ]; then + echo "ERROR: No IP address provided and auto-detection failed." + exit 1 +fi + +echo "" +echo "Using IP: $SERVER_IP" +echo "" + +# Setup backend .env +BACKEND_ENV="$PROJECT_ROOT/backend/.env" +if [ -f "$BACKEND_ENV" ]; then + read -p "backend/.env exists. Overwrite? [y/N]: " OVERWRITE + if [[ ! "$OVERWRITE" =~ ^[Yy]$ ]]; then + echo "Skipping backend/.env" + else + cat > "$BACKEND_ENV" << ENVFILE +# Backend Configuration +PORT=3001 +API_HOST=$SERVER_IP +CORS_ORIGINS=http://$SERVER_IP:3000 +ENVFILE + echo "Created backend/.env" + fi +else + cat > "$BACKEND_ENV" << ENVFILE +# Backend Configuration +PORT=3001 +API_HOST=$SERVER_IP +CORS_ORIGINS=http://$SERVER_IP:3000 +ENVFILE + echo "Created backend/.env" +fi + +# Setup frontend .env +FRONTEND_ENV="$PROJECT_ROOT/frontend/.env" +if [ -f "$FRONTEND_ENV" ]; then + read -p "frontend/.env exists. Overwrite? [y/N]: " OVERWRITE + if [[ ! "$OVERWRITE" =~ ^[Yy]$ ]]; then + echo "Skipping frontend/.env" + else + cat > "$FRONTEND_ENV" << ENVFILE +# Frontend Configuration +# API_BASE should include the /api path +REACT_APP_API_BASE=http://$SERVER_IP:3001/api +# API_HOST is used for direct file URLs (no /api) +REACT_APP_API_HOST=http://$SERVER_IP:3001 +ENVFILE + echo "Created frontend/.env" + fi +else + cat > "$FRONTEND_ENV" << ENVFILE +# Frontend Configuration +# API_BASE should include the /api path +REACT_APP_API_BASE=http://$SERVER_IP:3001/api +# API_HOST is used for direct file URLs (no /api) +REACT_APP_API_HOST=http://$SERVER_IP:3001 +ENVFILE + echo "Created frontend/.env" +fi + +echo "" +echo "Setup complete!" +echo "" +echo "Next steps:" +echo " 1. If servers are running, restart them to apply changes" +echo " 2. Run: ./start-servers.sh" +echo ""