diff --git a/frontend/index.html b/frontend/index.html index 38a4f15..9ff7174 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2583,7 +2583,7 @@ async function checkConnection() { git clone https://github.com/anttro/simtrace2-pysniff.git
cd simtrace2-pysniff && pip install -e .
  • ${t('Start the server in direct mode (recommended):')}
    - ./server-start.sh --capture direct
    + ./start.sh --capture direct
    ${t('Requires SIMtrace2 hardware connected via USB; captures directly from the device.')}
  • ${t('Then set the URL above to http://127.0.0.1:8081 and return to the Trace tab.')}

    @@ -2591,7 +2591,7 @@ async function checkConnection() {

    ${t('Use an external sniffer alongside the server. This mode is compatible with the original Osmocom simtrace2-sniff.')}

    1. ${t('Start the server:')}
      - ./server-start.sh --capture gsmtap
    2. + ./start.sh --capture gsmtap
    3. ${t('Start a GSMTAP source in another terminal — either:')}
      ./sniff-start.sh --gsmtap 127.0.0.1  (simtrace2-pysniff)
       or
      @@ -2625,7 +2625,7 @@ function onFilterChange() { } // ──────────────────── Versioning ──────────────────── -const PWA_VERSION = '1.22.16'; +const PWA_VERSION = '1.22.17'; const MIN_SERVER_VERSION = '1.0.0'; function parseVersion(v) { diff --git a/frontend/sw.js b/frontend/sw.js index 166908c..4158c6a 100644 --- a/frontend/sw.js +++ b/frontend/sw.js @@ -1,4 +1,4 @@ -const CACHE = 'simtrace-analyser-v48'; +const CACHE = 'simtrace-analyser-v49'; const PRECACHE = [ 'index.html', diff --git a/pyproject.toml b/pyproject.toml index 56eecd9..e6a4059 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.backends._legacy:_Backend" [project] name = "simtrace2-pysniff" -version = "1.22.16" +version = "1.22.17" description = "Python-based sniffing tool for SIMtrace2 hardware (SIM card communication sniffer)" readme = {file = "README.md", content-type = "text/markdown"} license = {text = "GPL-2.0-or-later"} diff --git a/simtrace2_pysniff/__init__.py b/simtrace2_pysniff/__init__.py index 181a7be..567bd28 100644 --- a/simtrace2_pysniff/__init__.py +++ b/simtrace2_pysniff/__init__.py @@ -6,7 +6,7 @@ from .gsmtap import GsmtapSender, GsmtapReceiver from .pcap import PcapWriter from .dump import FileDumper, format_message -__version__ = '1.22.16' +__version__ = '1.22.17' __all__ = [ 'SniffSession', 'DeviceDisconnected', diff --git a/sniff-start.bat b/sniff-start.bat new file mode 100644 index 0000000..d27c379 --- /dev/null +++ b/sniff-start.bat @@ -0,0 +1,77 @@ +@echo off +setlocal enabledelayedexpansion + +:: simtrace2-pysniff startup script for Windows +:: +:: Usage: sniff-start.bat [--format FORMAT] [--gsmtap HOST[:PORT]] [--pcap FILE] [--output FILE] [--inactivity-timeout SECONDS] +:: +:: Options set via environment variables act as defaults; CLI flags override them. + +set "GSMTAP=%GSMTAP%" +set "PCAP=%PCAP%" +set "OUTPUT=%OUTPUT%" +set "FORMAT=%FORMAT%" +set "INACTIVITY_TIMEOUT=%INACTIVITY_TIMEOUT%" +if "%INACTIVITY_TIMEOUT%"=="" set "INACTIVITY_TIMEOUT=0" +set "EXTRA_ARGS=" + +:parse_args +if "%~1"=="" goto :run +if "%~1"=="--gsmtap" ( + set "GSMTAP=%~2" + shift + shift + goto :parse_args +) +if "%~1"=="--pcap" ( + set "PCAP=%~2" + shift + shift + goto :parse_args +) +if "%~1"=="--output" ( + set "OUTPUT=%~2" + shift + shift + goto :parse_args +) +if "%~1"=="-o" ( + set "OUTPUT=%~2" + shift + shift + goto :parse_args +) +if "%~1"=="--format" ( + set "FORMAT=%~2" + shift + shift + goto :parse_args +) +if "%~1"=="-f" ( + set "FORMAT=%~2" + shift + shift + goto :parse_args +) +if "%~1"=="--inactivity-timeout" ( + set "INACTIVITY_TIMEOUT=%~2" + shift + shift + goto :parse_args +) +set "EXTRA_ARGS=!EXTRA_ARGS! %~1" +shift +goto :parse_args + +:run +echo Starting simtrace2-pysniff... + +set "ARGS=" +if not "%GSMTAP%"=="" set "ARGS=!ARGS! --gsmtap %GSMTAP%" +if not "%PCAP%"=="" set "ARGS=!ARGS! --pcap %PCAP%" +if not "%OUTPUT%"=="" set "ARGS=!ARGS! --output %OUTPUT%" +if not "%FORMAT%"=="" set "ARGS=!ARGS! --format %FORMAT%" +if not "%INACTIVITY_TIMEOUT%"=="0" set "ARGS=!ARGS! --inactivity-timeout %INACTIVITY_TIMEOUT%" + +set "PYTHONPATH=%~dp0" +python -m simtrace2_pysniff %ARGS% %EXTRA_ARGS% diff --git a/server-start.bat b/start.bat similarity index 91% rename from server-start.bat rename to start.bat index 8bb6970..ab0ab30 100644 --- a/server-start.bat +++ b/start.bat @@ -3,7 +3,7 @@ setlocal enabledelayedexpansion :: simtrace2-pysniff-server startup script for Windows :: -:: Usage: server-start.bat [--capture gsmtap|direct] [--port PORT] [--db PATH] [--gsmtap-port PORT] +:: Usage: start.bat [--capture gsmtap|direct] [--port PORT] [--db PATH] [--gsmtap-port PORT] :: :: Options set via environment variables act as defaults; CLI flags override them. diff --git a/server-start.sh b/start.sh similarity index 96% rename from server-start.sh rename to start.sh index 7460b82..2160fdf 100755 --- a/server-start.sh +++ b/start.sh @@ -1,7 +1,7 @@ #!/bin/bash # simtrace2-pysniff-server startup script # -# Usage: ./server-start.sh [--capture gsmtap|direct] [--port PORT] [--db PATH] [--gsmtap-port PORT] +# Usage: ./start.sh [--capture gsmtap|direct] [--port PORT] [--db PATH] [--gsmtap-port PORT] # # Options set via environment variables act as defaults; CLI flags override them. diff --git a/tests/test_pcap_import.py b/tests/test_pcap_import.py index d0d0ba3..b430985 100644 --- a/tests/test_pcap_import.py +++ b/tests/test_pcap_import.py @@ -224,7 +224,7 @@ class TestImportEndpoint(unittest.TestCase): class TestVersion(unittest.TestCase): def test_package_version(self): from simtrace2_pysniff import __version__ - self.assertEqual(__version__, '1.22.16') + self.assertEqual(__version__, '1.22.17') def test_status_includes_version(self): import os