Files
routeros-suricata-tzsp/dev.sh
T
2026-08-14 11:33:01 +02:00

65 lines
2.1 KiB
Bash
Executable File

#!/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 SURICATA_LOCAL_RULES="${SURICATA_LOCAL_RULES:-$ROOT_DIR/suricata/local.rules}"
export SURICATA_EXTRA_RULES_GLOB="${SURICATA_EXTRA_RULES_GLOB:-$ROOT_DIR/data/dev/*.rules}"
export SURICATA_CUSTOM_RULES="${SURICATA_CUSTOM_RULES:-$ROOT_DIR/data/dev/custom.rules}"
export SURICATA_THRESHOLD_CONFIG="${SURICATA_THRESHOLD_CONFIG:-$ROOT_DIR/data/dev/threshold.config}"
export EVE_PATH="${EVE_PATH:-$ROOT_DIR/logs/eve.json}"
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