#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$ROOT_DIR" PYTHON_BIN="${PYTHON_BIN:-python3}" VENV_DIR="${VENV_DIR:-.venv}" if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then echo "[dev] $PYTHON_BIN was not found. Install Python 3 first." >&2 exit 1 fi if [[ ! -x "$VENV_DIR/bin/python" ]]; then echo "[dev] Creating virtual environment in $VENV_DIR" if ! "$PYTHON_BIN" -m venv "$VENV_DIR"; then echo "[dev] Failed to create a virtual environment." >&2 echo "[dev] On Debian/Ubuntu install: sudo apt install python3-venv" >&2 exit 1 fi fi PYTHON="$VENV_DIR/bin/python" PIP="$VENV_DIR/bin/pip" if grep -Eq "^[[:space:]]*[^#[:space:]]" requirements.txt; then echo "[dev] Installing Python dependencies" "$PIP" install --disable-pip-version-check -r requirements.txt else echo "[dev] No third-party Python dependencies to install" fi mkdir -p data/dev logs export PYTHONUNBUFFERED=1 export PIP_DISABLE_PIP_VERSION_CHECK=1 export PIP_NO_CACHE_DIR=1 export WEB_BIND="${WEB_BIND:-127.0.0.1}" export WEB_PORT="${WEB_PORT:-8080}" export DB_PATH="${DB_PATH:-$ROOT_DIR/data/dev/ids.db}" export AUTO_BLOCK=false if [[ "${1:-}" == "--test" ]]; then echo "[dev] Running tests" exec "$PYTHON" -m unittest discover -s tests -v fi if [[ "${RUN_TESTS:-false}" == "true" ]]; then echo "[dev] Running tests" "$PYTHON" -m unittest discover -s tests -v fi echo "[dev] Starting web-only development server" echo "[dev] URL: http://${WEB_BIND}:${WEB_PORT}" echo "[dev] Database: ${DB_PATH}" echo "[dev] Docker, Suricata, TAP and TZSP are NOT started in this mode." exec "$PYTHON" -m app.dev_web