diff --git a/CHANGELOG.md b/CHANGELOG.md index 52572a94..85da8837 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to PyHSS are documented in this file, beginning from [Servic The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [2.0.0] - 2026-08-17 ### Added @@ -221,3 +221,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [1.0.0]: https://github.com/nickvsnetworking/pyhss/releases/tag/1.0.0 [1.0.1]: https://github.com/nickvsnetworking/pyhss/releases/tag/1.0.1 [1.0.2]: https://github.com/nickvsnetworking/pyhss/releases/tag/1.0.2 +[2.0.0]: https://github.com/nickvsnetworking/pyhss/releases/tag/2.0.0 diff --git a/debian/changelog b/debian/changelog index 0e5c4178..70cdc4fe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,340 @@ +pyhss (2.0.0) unstable; urgency=medium + + [ Dragos Vingarzan ] + * small fix in case the username is checked against MSISDN and it's prefixed by a + + + [ davidkneipp ] + * Staging - use pydantic for base model structure + * Refactor complete pending AAR test + * Staging - Initial commit + * Added pcrf/pcrf_subscriber_list, fixed duplicate_ips + * incoming and outgoing communication barring support in UDA + * Remove type declaration + * Reply with valid UDA on MSISDN not found + * Support for influxdb v1 + * Store MCC and MNC as tags + * Add influxdb to requirements.txt + * Query IP on AAR if service URN not present + * Working IP-based lookup + * Initialize apnId in parent scope + * Fix for apnId not being set + * Support for geored-based IP lookup on AAR + * Handle exception in ipServingApn lookup + * Additional logging + * Additional logging + * Add timeout to requests + * Parse call forwarding data in UDA + * Remove unused import + * Support for multiple diameter messages in single frame + * CEA Support for external socket service + * Accompanying fixes for socket_service/CEA + * Return Unknown and not None on unknown peer type + * Fallback DRA support + * DRA fallback fix + * Improved support for DRA fallback, incl. RAR + * Undefined variable fix for emergency calling + * Clear expired emergency subscribers, duplicate detection, TFT fix + * DB UPDATED: Subscriber location information + * Log fixes + * Check if session ID matches stored session on CCR-T before wiping state + * Fix call to Get_Serving_APN + * Fix clr_subscriber + * Geored support for subscriber location + * Working DSR on MME change + * Remove redundant IMS subscriber lookup on CLR when IMSI used + * Feedback on unconnected peer for CLR + * Race condition fix: Only clear serving APN when session ID matches + * Improved logging + + [ Runamook ] + * Fix attach without charging rules in the DB + + [ nickvsnetworking ] + * Fix Sh UDA + * Support for multiple IMS dedicated bearers, differentiated by the SessionID on the Rx + * Log for ReAuth requests for emergency calls + * Logging in getting emergency subscriber + * Fixes for GBR bearers for Video + * Server Assignment sanity checking + * Generated Alembic and renamed functions to make generic 2G not just GSUP_ + * Add missing fields to subscriber table in database migration + + [ Victor Seva ] + * tools/view_stats.py: exit properly when no info is on Redis + * services/databaseService: support postgresql + * diameter: don't fail if charging_rule.precedence is not defined + + [ jmasterfunk84 ] + * CLR Issue on New Subscriber + + [ omnitouch ] + * Assorted fixes, local HSS lookup for STA + * Config option to ignore Purge UE Request changes to DB + * Remove webhookPeers length check - support for OCS only notifications + + [ Nick ] + * Fix "Push Charging Rules" API Endpoint + * Update Dockerfile + * Update Dockerfile + * Update Dockerfile + * Lock to PyYAML==5.4.1 + * Update requirements.txt + * Update Dockerfile + * Hotfix - AKA for Vector Generation API + * Use latest pyosmocom + * Handle Private Identity as Public Identity + * Handle Private Identity as Public Identity + * Handle Private Identity as Public Identity + + [ Alexander Couzens ] + * lib/diameter: add protocol comments to Command/Request list + * database.py: add support for sqlite + * apiService: drop a lot of print() + * apiService: Update: use db object for ISD + * ISR: consider the role of the peer + * GSUP: ISD: allow to receive ISD Errors + * feat(2g): implement USSD support + + [ Ali Jomeiy ] + * Fix dockerfile throw the application changes + * remove extra files + * update docker compose + * Update Dockerfile: remove extra WORKDIR command + + [ Lennart Rosam ] + * Implement GSUP support + * feat(docker): one container per service + * feat(docker): add docker ignore file + * docs(docker): Document docker compose + configuration + * docs(changelog): Add docker images in the unreleased section + * chore(ci): delete unused workflow file + * fix(ci): Update CI commands to build the new image + * fix(docker): Ensure irrelevant dirs are omitted + * fix(docker): Ensure log directory is app writable + * chore(docker): improve IDE experience + * docs(readme): Document how to run through the IDE in docker + * FIXUP Readme + * refactor(gsup): make SubscriberInfo generic + fix APNs + * refactor(ulr): use generic base transaction + * refactor(ulr): centralize ISD creation + * chore(ulr): fix imports + typehints + * feat(gsup): Update subscriber on change + * fix: use monotonic clock + * fix(gsup): always add CN domain to ISD + * fix(gsup): add stack trace to log + * fix(gsup): use APN DB ID as PDP context id + * fix(gsup): only include imsi IE once in ULA + * chore(gsup): move CN IE to end + * feat(ci): publish debian packages on release + * Revert "github: temporarily disable publishing debian pkg" + * fix(debian): use correct tag scheme + * feat(gsup): implement RAT restriction check + * feat(diameter): implement RAT restriction + * fix(diameter): remove incorrect kwargs + * fix(diameter): use the orign hostname as redis key + * fix: install strenum on earlier python versions + * fix: consistent behavior if RAT type IE is missing + * fix: find ulr / isd trx with imsi + peer + * fix: transaction name in log message + * chore(spdx): update copyright + * docs(readme): note default bind address for native install + * chore(.gitignore): Ignore Jetbrains IDE files + * feat: implement inbound roaming reject + * fix: Typo + * fix(config): correct typo in outbound roaming comment + * docs: note reject_unknown_imsis_with in CHANGELOG + * feat: add config validation at startup + * fix: default roaming reject cause to IMSI_UNKNOWN + * test: add unit tests for config validation + * feat(python): raise minimum Python version to 3.11 + + [ Carsten Bock ] + * Pre-Emption-Vulnerability should not be mandatory as per Spec + + [ Oliver Smith ] + * lib/__pycache__: remove + * systemd: set PYTHONUNBUFFERED=1 + * systemd/pyhss_gsup: set PYTHONUNBUFFERED=1 + * GSUP: SAI/UL: set cause for invalid/unknown IMSI + * tools/hss_Async_client: fix parsing config twice + * lib/S6a_crypt: remove unused config loading + * tools/MIB_generator: remove unused config loading + * tools/databaseUpgrade/alembic/env: config -> alembic_config + * Rework loading of config.yaml + * lib/milenage: remove unused sys.path.append + * Fix running services outside of source tree + * services: add main() functions + * pyproject.toml: new file + * lib/S26a_crypt: fix call to comp128v3() + * systemd/pyhss_gsup.service: fix description + * systemd/pyhss_gsup.service: fix description + * GSUP: SAI: send correct amount of auth vectors + * requirements.txt: upgrade SQLAlchemy + * lib/gsup/controller/ulr: add traceback to GSUP err + * requirements.txt: set pyosmocom==0.0.11 + * GSUP: fix responding to unhandled requests + * GSUP: Update Location Request: no destination name + * systemd: remove extra empty line before [Service] + * systemd/pyhss_api.service: move API service here + * docs/API: update command for starting API service + * debian: initial + * github: add workflow for the debian package + * GSUP: don't merge pdp_info IEs + * GSUP: msg builder with pdp: remove empty qos + * github: temporarily disable publishing debian pkg + * tests: add pytest configs and fixtures + * tests/test_Diameter: fix test_A_Instantiate + * tests/test_Diameter: rework test_B_Recv_AIR + * tests/test_gsup_air: run with pytest + * tests/test_gsup_air: add asserts for response msgs + * tests/test_API: rename from tests_API + * tests/test_API: remove 'global log' line + * tests/test_API: use pytest fixtures + * tests/test_API: use localhost:8080 + * tests/test_API: compare without last_modified + * tests/test_API: APN_Tests: update payload + * tests/test_API: AUC_Tests: add missing algo + * tests/test_API: unset unittest.TestCase.maxDiff + * tests/test_API: Subscriber: update payload + * tests/test_API: GeoRed_MME: update payload + * tests/test_API: GeoRed_MME: fix patch payloads + * tests/test_API: GeoRed_IMS: update payload + * services/apiService: fix error code paths + * tests/test_database: split from lib/database + * tests/test_database: fix call to Database() + * tests/test_database: create auc: use bytes.hex + * lib/database: fix declarative_base warning + * lib/database: fix inspector warning + * lib/database: fix Query.get() warning + * README: describe how to run tests + * gitignore: add .venv + * github/workflows/test: new workflow + * tests/fixtures: proper error if redis is not installed + * tests: remove code for running standalone + * config: remove unused hss.test_sub_imsi + * config: remove unused hss.SLh_enabled + * config: remove duplicate hss.client_socket_timeout + * config: remove unused hss.Insert_Subscriber_Data_Force + * config: remove unused prometheus section + * config: remove unused hss.Default_iFC + * config: remove unused redis.sentinel + * lib/{lte,milenage}: update copyright and license + * treewide: update copyright and license lines + * tests: add new license headers test + * tests/test_API: ChargingRule: remove last_modified + * README: link to matrix room + * config: remove readCache{Enabled,Interval} options + * config: database: default to sqlite + * tests/config: remove DB server, username, password + * tests/config: remove redis/sentinel options + * README: update supported databases + * CHANGELOG: make formatting consistent + * CHANGELOG: update + * gitignore: add hss.db + * lib/rat: update license header + * docker: use sqlite + * docker/docker-compose: speed up start checks + * services: add #!/usr/bin/env python3 + * tests/conftest.py: rename from fixtures.py + * pyproject.toml: add ruff options + * DB: let only the main service create/upgrade it + * tests: add database_upgrade_sqlite + * DB: add database_schema_version table + * DB: rework logic for initializing an empty db + * DB: upgrade from 1.0.1 + * DB: refuse start with schema below release 1.0.1 + * DB: handle NULL in auc.algo + * tests: add database_upgrade_mariadb + * tests: add database_upgrade_postgresql + * CHANGELOG: mention automatic db upgrades + * docs/database: document how to change the schema + * tools/databaseUpgrade: remove + * CI: test: install mariadb, postgresql + * lib/gsup: update license headers + * requirements: update pydantic/pydantic_core + * CI: run 'apt-get update' before installing pkgs + * docker/docker-compose: fix startup order + * docker/docker-compose: speed up shutdown + * requirements: upgrade flask for python 3.14 compat + * github/workflows/test: add python 3.14 + * config: default: bind diameter/gsup to 127.0.0.1 + * services/apiService: bind to 127.0.0.1 by default + * services/metricService: bind to 127.0.0.1 by default + * CHANGELOG: mention new default bind IP + * lib/pyhss_config: format with ruff + * tests/test_gsup_ussd: format with ruff + * lib/gsup/controller/ss: format with ruff + * lib/gsup/protocol/gsup_msg: format with ruff + * pyproject: ruff: ignore new failing default rules + * lib/gsup/protocol/gsup_msg: fix C408 + * tests/test_license_headers: fix FURB129 + * treewide: fix I001 in files we lint with ruff + * tests/test_database_upgrade_sqlite: fix PLW1510 + * lib/databaseSchema: ignore S110 + * github: add lint workflow + * requirements: remove alembic + * requirements: remove mysqlclient + * requirements: remove tzlocal + * pyproject: ignore new warnings from asn1tools + * tests: postgres: remove obsolete workaround + * tests: postgres: try createdb multiple times + * lib/mongodb_insert_subscriber: remove + * lib/milenage: use Cryptodome instead of Crypto + * tests/test_license_headers: remove leftover code + * tests: license_headers: add skip_packaging marker + * requirements: remove xmltodict + * debian: update packaging + * debian/rules: never download packages during build + * github/workflows/debian-package: run pyhss_download_deps.sh + * github/workflows/debian-package: add ubuntu 26.04 + * github/workflows: use latest actions versions + * github/workflows: make permissions + names consistent + * tests: verify debian/control runtime deps blocks + * config: add comment for logfiles section + * docker/docker-compose: remove pyhss_logs volume + * systemd: fix duplicate timestamp in logs + * services/apiService: redirect from / to /docs + * services/apiService: display real PyHSS version + * docs/release: document how to make a release + * config: change default site name to empty string + * README: add gsupService + * systemd: add comments on top of service files + * systemd: ensure proper startup order + * debian/pyhss.install: add missing pyhss_api.service + + [ Carsten ] + * Subscription-Id is 0..* according to 3GPP TS 29.212 (e.g. Open5GS sends IMSI AND End-User-E164), so just look for Type IMSI + + [ Gavin Holtzapple ] + * Update databases.md + + [ Andreas Eversberg ] + * Corrected encoding of MSISDN IE + + [ Bjoern ] + * Add SQN resync to REST api + * fix typo on log init message + + [ Robin Rhee ] + * Refactor item_id retrieval logic in operation logging + * Update lib/database.py + + [ Alexander Kuleshov ] + * tools/Diameter_client: fix instantiation of Diameter class + * diameter: fix malformed ULA for subscribers without MSISDN + + [ Sai Asish Y ] + * Fix UnboundLocalError in UAR handler when username decode fails + + [ Kumar ] + * Add missing Result-Code AVP to Answer_16777217_307 + * fix(diameter): resolve AttributeError on IMS_SUBSCRIBER in Answer_16777217_307 + + [ eta ] + * feat(2g): roaming reject cause for ULR + + -- Oliver Smith Mon, 17 Aug 2026 10:46:08 +0200 + pyhss (1.0.2) unstable; urgency=medium * debian: initial diff --git a/lib/version.py b/lib/version.py index 90448443..4d7d66dd 100644 --- a/lib/version.py +++ b/lib/version.py @@ -1,4 +1,4 @@ # Copyright 2026 sysmocom - s.f.m.c. GmbH # SPDX-License-Identifier: AGPL-3.0-or-later -pyhss_version = "1.0.2" +pyhss_version = "2.0.0"