#!/bin/bash # Add missing PORT variable to .env file # Run this if PORT is not defined in .env set -e echo "=== Fix Missing PORT in .env ===" echo APP_DIR="/opt/mockapi" ENV_FILE="${APP_DIR}/.env" if [[ ! -f "$ENV_FILE" ]]; then echo "ERROR: .env file not found: $ENV_FILE" exit 1 fi # Check if PORT exists if grep -q "^PORT=" "$ENV_FILE"; then CURRENT_PORT=$(grep "^PORT=" "$ENV_FILE" | cut -d'=' -f2) echo "PORT already exists in .env: $CURRENT_PORT" # Validate it's numeric if [[ ! "$CURRENT_PORT" =~ ^[0-9]+$ ]]; then echo "WARNING: PORT is not numeric: '$CURRENT_PORT'. Fixing to 8000." sed -i "s/^PORT=.*/PORT=8000/" "$ENV_FILE" echo "Updated PORT to 8000." else echo "PORT is valid numeric value." fi else echo "PORT not found in .env. Adding PORT=8000..." echo "PORT=8000" >> "$ENV_FILE" echo "Added PORT=8000 to .env." fi # Check if HOST exists if ! grep -q "^HOST=" "$ENV_FILE"; then echo "HOST not found in .env. Adding HOST=0.0.0.0..." echo "HOST=0.0.0.0" >> "$ENV_FILE" fi # Check if OAUTH2_ISSUER exists and matches port CURRENT_PORT=$(grep "^PORT=" "$ENV_FILE" | cut -d'=' -f2) EXPECTED_ISSUER="http://localhost:${CURRENT_PORT}" if grep -q "^OAUTH2_ISSUER=" "$ENV_FILE"; then CURRENT_ISSUER=$(grep "^OAUTH2_ISSUER=" "$ENV_FILE" | cut -d'=' -f2) if [[ "$CURRENT_ISSUER" != "$EXPECTED_ISSUER" ]]; then echo "Updating OAUTH2_ISSUER to match port..." sed -i "s|^OAUTH2_ISSUER=.*|OAUTH2_ISSUER=$EXPECTED_ISSUER|" "$ENV_FILE" echo "Updated OAUTH2_ISSUER to: $EXPECTED_ISSUER" else echo "OAUTH2_ISSUER already matches port." fi else echo "OAUTH2_ISSUER not found. Adding: $EXPECTED_ISSUER" echo "OAUTH2_ISSUER=$EXPECTED_ISSUER" >> "$ENV_FILE" fi echo echo "=== Updated .env file ===" echo "Contents of $ENV_FILE:" echo "------------------------" grep -E "^(PORT|HOST|OAUTH2_ISSUER)=" "$ENV_FILE" echo "------------------------" echo echo "Note: After updating .env, you may need to:" echo "1. Update service file with new port (if changed)" echo "2. Run: sudo systemctl daemon-reload" echo "3. Run: sudo systemctl restart mockapi" echo echo "Use 'sudo bash change_port.sh' to update both .env and service file."