catarrh
c21b655fe1
Fix pcapng timestamp resolution + imported-session duration
...
- pcap.py: _parse_tsresol now pads options to a 32-bit boundary
((-length) % 4) and uses 2** for the MSB-set (power-of-2) case, so
nanosecond if_tsresol is read correctly (was defaulting to µs and
scaling timestamps 1000x)
- database/server: set imported session started/ended from the first/last
packet timestamps (falling back to wall-clock for synthetic SPB)
- frontend: formatDuration renders hours
- tests: tsresol (ns after padded option, default µs, ns round-trip) and
session-window/fallback (119 total)
2026-08-15 02:02:44 +03:00
catarrh
5ba55ac3a9
Decode EVENT DOWNLOAD location/caller and CELL BROADCAST DOWNLOAD CB page
...
- EVENT DOWNLOAD: decode location information (PLMN/LAC/Cell), caller
number (MT call Address), transaction identifier, subaddress
- CELL BROADCAST DOWNLOAD: decode CB page header (serial, message ID,
DCS, page) with raw content hex
- frontend: render Caller/Transaction/Subaddress and CB page fields
Tests: 114.
2026-08-15 00:55:07 +03:00
catarrh
d32da2b375
sw.js: ignore non-http(s) and non-GET requests in fetch handler
...
The fetch handler tried to cache every intercepted request, so a
chrome-extension:// request made cache.put() throw 'Request scheme
chrome-extension is unsupported'. Skip non-http(s) and non-GET requests,
and swallow cache-write failures.
2026-08-15 00:40:26 +03:00
catarrh
9362bef869
Add server-source selector (same-origin default) and drop SIMTRACE_EMBEDDED
...
- Settings: 'Server' selector — 'Same origin' (default) vs 'Custom URL'
(URL input revealed only in custom mode, placeholder 127.0.0.1:8081)
- serverUrl defaults to '' (same-origin); persisted per choice
- remove SIMTRACE_EMBEDDED frontend check and the server's _EMBEDDED_MARKER
index.html injection (no longer needed)
- i18n: Server / Same origin / Custom URL (EN/RU)
2026-08-15 00:24:58 +03:00
catarrh
24d0decd51
Add --capture disabled mode + capture-mode status in PWA
...
Server:
- --capture accepts 'disabled'; no backend is created, capture_mode exposed
- /api/status returns capture_mode; capture start/stop return 403 when
disabled; latest/status/delete_session are None-safe
PWA:
- captureMode state; conn-status shows server version
- new capture-mode line (Settings) explaining gsmtap/direct/disabled
- hide capture + New capture UI when disabled; trace empty-state shows
'Capture unavailable'
- 7 new EN/RU i18n keys
Version 1.2.0 (server + PWA); tests: 111.
2026-08-14 23:49:10 +03:00
catarrh
b900a8a3e1
Merge simtrace-analyser PWA into frontend/ (monorepo); serve it same-origin
...
- frontend/: simtrace-analyser PWA (index.html, sw.js, manifest.json,
icons, tests/index.test.html) copied in fresh
- server.py: static file serving (_STATIC_MIME, _serve_static) with
path-traversal guard; injects window.SIMTRACE_EMBEDDED='1' into
index.html so the PWA defaults to a relative API base
- server __main__: --web-dir (default <repo>/frontend)
- frontend: embedded same-origin mode; sw.js relative precache paths +
cache v4; GitHub link + version-warn point at simtrace2-pysniff
- version 1.1.0 everywhere (__version__, pyproject, PWA_VERSION,
manifest); MIN_SERVER_VERSION stays 1.0.0
- README/scripts/.gitignore updated
Tests: 107.
2026-08-14 16:26:28 +03:00