Version 1.0.0; expose version in /api/status

First published version. __version__ and pyproject bumped to 1.0.0,
/api/status now returns 'version' so the PWA can check compatibility.

Tests: 107 (status includes version, package version).
This commit is contained in:
catarrh committed 2026-08-14 10:24:24 +03:00
1 parent 73f40ad570
commit 8b7b10b8fa
4 files changed
+38 -2

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.backends._legacy:_Backend"
[project] [project]
name = "simtrace2-pysniff" name = "simtrace2-pysniff"
version = "0.1.0" version = "1.0.0"
description = "Python-based sniffing tool for SIMtrace2 hardware (SIM card communication sniffer)" description = "Python-based sniffing tool for SIMtrace2 hardware (SIM card communication sniffer)"
readme = {file = "README.md", content-type = "text/markdown"} readme = {file = "README.md", content-type = "text/markdown"}
license = {text = "GPL-2.0-or-later"} license = {text = "GPL-2.0-or-later"}
+1 -1
View File
@@ -6,7 +6,7 @@ from .gsmtap import GsmtapSender, GsmtapReceiver
from .pcap import PcapWriter from .pcap import PcapWriter
from .dump import FileDumper, format_message from .dump import FileDumper, format_message
__version__ = '0.1.0' __version__ = '1.0.0'
__all__ = [ __all__ = [
'SniffSession', 'SniffSession',
'DeviceDisconnected', 'DeviceDisconnected',
+2
View File
@@ -13,6 +13,7 @@ from .database import Database
from .capture import CaptureManager, GsmtapListener, DirectSniffer from .capture import CaptureManager, GsmtapListener, DirectSniffer
from ..gsmtap import build_gsmtap_packet, GSMTAP_SIM_ATR, GSMTAP_SIM_APDU from ..gsmtap import build_gsmtap_packet, GSMTAP_SIM_ATR, GSMTAP_SIM_APDU
from ..pcap import build_pcap, parse_pcap, parse_pcapng from ..pcap import build_pcap, parse_pcap, parse_pcapng
from .. import __version__
def _content_disposition(filename): def _content_disposition(filename):
@@ -151,6 +152,7 @@ class RequestHandler(BaseHTTPRequestHandler):
active_session = self.db.get_active_session() active_session = self.db.get_active_session()
self._send_json({ self._send_json({
'server': 'simtrace-analyser-server', 'server': 'simtrace-analyser-server',
'version': __version__,
'capture_active': self.capture.active, 'capture_active': self.capture.active,
'session_id': self.capture.session_id, 'session_id': self.capture.session_id,
'mode': active_session['mode'] if active_session else None, 'mode': active_session['mode'] if active_session else None,
+34
View File
@@ -137,5 +137,39 @@ class TestImportEndpoint(unittest.TestCase):
self.assertEqual(h.db.count_sessions(), 0) self.assertEqual(h.db.count_sessions(), 0)
class TestVersion(unittest.TestCase):
def test_package_version(self):
from simtrace2_pysniff import __version__
self.assertEqual(__version__, '1.0.0')
def test_status_includes_version(self):
import os
from simtrace2_pysniff.server.server import RequestHandler
from simtrace2_pysniff.server.database import Database
from simtrace2_pysniff import __version__
class FakeCapture:
active = False
session_id = None
class Fake(RequestHandler):
def __init__(self, db):
self.db = db
self.capture = FakeCapture()
self._json = None
def _send_json(self, data, status=200):
self._json = data
tmp = tempfile.NamedTemporaryFile(suffix='.db', delete=False)
tmp.close()
db = Database(tmp.name)
self.addCleanup(lambda: (db._conn.close(), os.remove(tmp.name)))
h = Fake(db)
h._handle_status()
self.assertEqual(h._json['version'], __version__)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()