Files
anoracleofra-code d419ee63e1 chore: revert docker-compose to GHCR registry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 09:11:53 -06:00

186 lines
5.8 KiB
Batchfile

@echo off
title ShadowBroker - Global Threat Intercept
echo ===================================================
echo S H A D O W B R O K E R -- STARTUP
echo ===================================================
echo.
:: Check for stale docker-compose.yml from pre-migration clones
findstr /R /C:"build:" docker-compose.yml >nul 2>&1
if %errorlevel% equ 0 (
echo.
echo ================================================================
echo [!] WARNING: Your docker-compose.yml is outdated.
echo.
echo It contains 'build:' directives, which means Docker will
echo compile from local source instead of pulling pre-built images.
echo You will NOT receive updates this way.
echo.
echo If you use Docker, re-clone the repository:
echo git clone https://github.com/BigBodyCobain/Shadowbroker.git
echo cd Shadowbroker
echo docker compose pull
echo docker compose up -d
echo ================================================================
echo.
)
:: Check for Python
where python >nul 2>&1
if %errorlevel% neq 0 (
echo [!] ERROR: Python is not installed or not in PATH.
echo [!] Install Python 3.10-3.12 from https://python.org
echo [!] IMPORTANT: Check "Add to PATH" during install.
echo.
pause
exit /b 1
)
:: Check Python version (warn if 3.13+)
for /f "tokens=2 delims= " %%v in ('python --version 2^>^&1') do set PYVER=%%v
echo [*] Found Python %PYVER%
for /f "tokens=1,2 delims=." %%a in ("%PYVER%") do (
if %%b GEQ 13 (
echo [!] WARNING: Python %PYVER% detected. Some packages may fail to build.
echo [!] Recommended: Python 3.10, 3.11, or 3.12.
echo.
)
)
:: Check for Node.js
where npm >nul 2>&1
if %errorlevel% neq 0 (
echo [!] ERROR: Node.js/npm is not installed or not in PATH.
echo [!] Install Node.js 18+ from https://nodejs.org
echo.
pause
exit /b 1
)
for /f "tokens=1 delims= " %%v in ('node --version 2^>^&1') do echo [*] Found Node.js %%v
:: ── AGGRESSIVE ZOMBIE CLEANUP ──────────────────────────────────────
:: Kill ANY process holding ports 8000 or 3000 (LISTENING, TIME_WAIT,
:: ESTABLISHED — all states). Also kill orphaned uvicorn/ais_proxy
:: processes that might be lingering from a previous crashed session.
echo.
echo [*] Clearing zombie processes...
:: Kill by port — catches processes in ANY state, not just LISTENING
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":8000 "') do (
taskkill /F /PID %%a >nul 2>&1
)
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":3000 "') do (
taskkill /F /PID %%a >nul 2>&1
)
:: Note: wmic zombie-kill removed — hangs on Win11. Port-based kill above
:: already catches any process holding 8000/3000.
:: Brief pause to let OS release the ports
timeout /t 1 /nobreak >nul
:: Verify ports are actually free
netstat -ano | findstr ":8000 " | findstr "LISTENING" >nul 2>&1
if %errorlevel% equ 0 (
echo [!] WARNING: Port 8000 is still occupied! Waiting 3s for OS cleanup...
timeout /t 3 /nobreak >nul
)
netstat -ano | findstr ":3000 " | findstr "LISTENING" >nul 2>&1
if %errorlevel% equ 0 (
echo [!] WARNING: Port 3000 is still occupied! Waiting 3s for OS cleanup...
timeout /t 3 /nobreak >nul
)
echo [*] Ports clear.
:: ────────────────────────────────────────────────────────────────────
echo.
echo [*] Setting up backend...
cd backend
:: Check if UV is available (preferred, much faster installs)
where uv >nul 2>&1
if %errorlevel% neq 0 goto :use_pip
echo [*] Using UV for Python dependency management.
if not exist "venv\" (
echo [*] Creating Python virtual environment...
uv venv
if %errorlevel% neq 0 (
echo [!] ERROR: Failed to create virtual environment.
pause
exit /b 1
)
)
call venv\Scripts\activate.bat
echo [*] Installing Python dependencies via UV (fast)...
cd ..
uv sync --frozen --no-dev
if %errorlevel% neq 0 goto :dep_fail
cd backend
goto :deps_ok
:use_pip
echo [*] UV not found, using pip (install UV for faster installs: https://docs.astral.sh/uv/)
if not exist "venv\" (
echo [*] Creating Python virtual environment...
python -m venv venv
if %errorlevel% neq 0 (
echo [!] ERROR: Failed to create virtual environment.
pause
exit /b 1
)
)
call venv\Scripts\activate.bat
echo [*] Installing Python dependencies (this may take a minute)...
pip install -q -r requirements.txt
if %errorlevel% neq 0 goto :dep_fail
goto :deps_ok
:dep_fail
echo.
echo [!] ERROR: Python dependency install failed. See errors above.
echo [!] If you see Rust/cargo errors, your Python version may be too new.
echo [!] Recommended: Python 3.10, 3.11, or 3.12.
echo.
pause
exit /b 1
:deps_ok
echo [*] Backend dependencies OK.
if not exist "node_modules\ws" (
echo [*] Installing backend Node.js dependencies...
call npm ci --omit=dev --silent
)
echo [*] Backend Node.js dependencies OK.
cd ..
echo.
echo [*] Setting up frontend...
cd frontend
if not exist "node_modules\" (
echo [*] Installing frontend dependencies...
call npm install
if %errorlevel% neq 0 (
echo [!] ERROR: npm install failed. See errors above.
pause
exit /b 1
)
)
echo [*] Frontend dependencies OK.
echo.
echo ===================================================
echo Starting services...
echo Dashboard: http://localhost:3000
echo Keep this window open! Initial load takes ~10s.
echo This is the hardened web/local runtime, not the final native shell.
echo Security work must not come at the cost of unusable map responsiveness.
echo ===================================================
echo (Press Ctrl+C to stop)
echo.
call npm run dev