Commit graph

101 commits

Author SHA1 Message Date
KoenigMjr
dada0d635b [feat/multicast]: refactor: isolate module state by moving class variables to instance scope
This commit refactors the internal state management to ensure true
multi-instance capability. While previous commits shared state via class
variables, this change encapsulates all buffers and flags within the
individual instance.

Key changes:
- Migration of state: Moved `_tone_ric_packets`, `_last_tone_ric_time`,
  and processing flags from class variables to instance variables (`self`).
- Thread Isolation: Shifted the cleanup logic to a per-instance
  `_cleanup_worker` thread, ensuring that timeouts are managed
  independently for each route/configuration.
- Wildcard Safety: Isolated `_wildcards_registered` to prevent
  registration conflicts between multiple multicast instances.
- Robust Hard-Timeout: Simplified `_cleanup_hard_timeout` to act
  strictly on the instance's own state.

This refactoring resolves the "architectural dinosaur" of shared class
state, making the module fully thread-safe and reliable for complex
multi-route and multi-frequency deployments.
2026-04-17 11:53:46 +02:00
KoenigMjr
08d09b4f50 [feat/multicast] refactor: move packet filtering from module to downstream
Remove internal filtering of delimiter and netident packets from the
multicast module. All packets are now passed through with multicastRole
metadata set, allowing downstream filters (e.g. filter.regexFilter) to
handle filtering as needed.

Tone-RICs remain internally consumed as they carry no alarm-relevant
information outside the module.

Update documentation to reflect new behavior and add regexFilter
example for filtering by multicastRole.
2026-03-28 15:41:54 +01:00
KoenigMjr
e53cb8cff2 [feat/multicast] adding Config-Editor 2026-03-05 13:52:48 +01:00
KoenigMjr
0b9387af08 [feat/multicast]: add multi-instance multicast module with active trigger system
Introduce a robust multicast processing module for POCSAG that correlates
empty tone-RICs (recipients) with subsequent text-RICs (content).

Key Features:
- Four Output Modes: Internally supports 'complete', 'incomplete', 'single',
  and 'control'. Functional alarms are delivered as the first three, while
  technical 'control' packets (Delimiters/NetIdent) are filtered by default.
- Active Trigger System: Implements a loss-free deferred delivery mechanism
  using a loopback socket (TCP) to re-inject wakeup packets, flushing the
  internal queue during auto-clear timeouts.
- Shared State & Multi-Instance: State is shared across instances but
  separated by frequency to prevent crosstalk in multi-frequency setups.
- Data Aggregation: Automatically generates '{FIELD}_list' wildcards (e.g.,
  RIC_LIST, DESCRIPTION_LIST) for all collected recipients, enabling
  consolidated notifications in downstream plugins.
- Dynamic Filtering: Automatically blocks Delimiter and NetIdent RICs from
  reaching subsequent plugins if they are defined in the configuration.

Infrastructural Changes:
- ModuleBase: Expanded return semantics to support:
  * False: Explicitly blocks/drops a packet.
  * List: Allows a module to expand one input into multiple output packets.
- PluginBase: Updated to handle lists of packets, ensuring a full
  setup->alarm->teardown lifecycle for every individual element.
2026-03-05 13:52:48 +01:00
Bastian Schroll
9d9d678730
Merge branch 'develop' into develop 2026-02-11 10:48:34 +01:00
MrMurdog
e4a316923a See Last Commit message in BW3-Core Repo 2026-02-11 04:12:37 +01:00
MrMurdog
5e544c4077 docs(config): add server.yaml generator page and link from Quick Start
Embed HTML generator page in docs. Includes back button to docs start page.
Supports standard plugins/modules via schemas (AI-assisted).
2026-02-08 07:50:04 +01:00
KoenigMjr
edf7a6afe8 [upd/telegram]: improve stability, safety and production robustness
Updated the Telegram plugin to handle high-load scenarios and prevent
resource exhaustion. Key focus areas were message formatting,
concurrency management, and configuration resilience.

- Implement bounded message queue (max 100) with non-blocking drops to prevent memory leaks
- Add graceful shutdown logic with worker thread joining and queue draining
- Add self-healing initialization (`_ensure_sender`) to handle race conditions during startup
- Implement robust escaping/sanitization for HTML and MarkdownV2 parse modes
- Enforce Telegram's 4096 character limit with graceful truncation
- Enhance error diagnostics for API responses (Rate limiting, 4xx/5xx errors)
- Validate and sanitize GPS coordinates (range and type checking)
- Decouple logging from global config by using module-level logger

Behavioral Changes:
- BREAKING: Location messages now require `coordinates: true` in config (previously default)
- Messages are dropped with an error log when the queue is full (prevents system hang)
- Invalid HTML/Markdown characters are now automatically escaped to prevent API errors
2026-01-19 09:34:13 +01:00
KoenigMjr
e3eb997656 docs(packet): Ergänzung um {TIME}, {BR}, {LPAR}, {RPAR} 2025-12-22 19:32:18 +01:00
KoenigMjr
475e4bc5b3 CSV-Cleaning, new matching strategy, new Debug-message, updating docu
- csv-data sets will now be corrected, no matter if the "for"-value is: 1234567, "1234567" or '1234567'
- depending on "isregex" value in csv first exact matches, second regex matches. So it is safe that if double matches occur, exact matches always wins.
- debug for CSV row read implemented
- updating readme to newest development
2025-12-03 22:28:08 +01:00
Bastian Schroll
1a721f4258
Merge branch 'develop' into enh/descr-csv 2025-11-26 10:47:48 +01:00
KoenigMjr
c5015f2160 enh(telegram): parse_mode Unterstützung hinzugefügt
- Internationalisierung der Kommentare
- parse_mode hinzugefügt (für Formatierungsmöglichkeiten) mit Auswahlmöglichkeit "HTML" und "MarkdownV2"
- Ergänzung in Dokumentation
- kleinere Korrekturen in Dokumentation
- Dokumentation um die Möglichkeit von Block-Strings (|) ergänzt (Danke sm7tix für den Input!)
2025-11-18 20:49:27 +01:00
KoenigMjr
1bd192b0d9 enh: CSV + Regex für descriptor-Modul
- Füge CSV-Import über csvPath-Konfiguration hinzu
- Implementiere Regex-Matching mit isRegex-Flag (YAML & CSV)
- Erstelle unified cache für YAML- und CSV-Einträge
- Wildcard-Replacement mit dynamische Beschreibungen
- Erweitere Logging für bessere Debugging-Möglichkeiten

Neue Features:
* CSV-Dateien können parallel zu YAML-Beschreibungen verwendet werden
* Regex-Unterstützung ermöglicht Pattern-basiertes Matching
* Wildcards wie {TONE} werden in Beschreibungen ("add"-Werte) ersetzt
* Vollständige Abwärtskompatibilität zu bestehenden Konfigurationen

Technische Verbesserungen:
* Unified cache-System für bessere Performance
* Korrekte Iteration über Config-Objekte mit default-Parametern
* Robuste Fehlerbehandlung für CSV-Import
* continue statt break bei fehlenden scanFields

Einschränkungen / known limitations:
* Keine explizite Behandlung von Duplikaten
* Standardverhalten ist „last one wins“, d. h. das zuletzt passende Descriptor-Objekt überschreibt den Wert
* Wenn mehrere CSV/YAML denselben Schlüssel liefern, hängt das Ergebnis von Lade- bzw. Listen-Reihenfolge ab
2025-11-17 17:03:16 +01:00
Bastian Schroll
2e5479cde2
Merge branch 'develop' into feature/telegram-neu 2025-10-21 13:39:04 +02:00
KoenigMjr
cd21f07755 feat: Interaktives Installationsskript mit Mehrsprachigkeit, argparse und Logging
- Neues CLI-Interface via argparse für flexible Steuerung
- Unterstützt Dry-Run-Modus zur sicheren Vorschau
- Sprachumschaltung via --lang (de/en)
- Internationalisierung aller Ausgaben via `t()` und `TEXT`-Dict (Deutsch/Englisch)
- Logging mit farbiger Terminalausgabe und Logdatei (log/install/)
- YAML-Validierung und Service-Typ-Erkennung (client/server)
- Interaktive Benutzerführung für (De)Installation von Services
- Verbesserte Fehlerbehandlung und Nutzerabfragen mit Fallback
- DOKU:
- Install.md (Installation von BW3) ergänzt
- Service.md (für Install as a Service-Skript) zweisprachig (Deutsch/Englisch) ergänzt
- mkdocs um Seiten Install/Service/Usage.md ergänzt
2025-08-08 21:12:17 +02:00
KoenigMjr
523329a9bb Doku-Ergänzung
update zur neuen Telegram Version

*in Konfiguration hinzugefügt:*
Startup_message
max_retries
initial_delay
max_delay

*gelöscht:*
queue

*im Beispiel:*
Startup_message hinzugefügt
2025-08-08 21:11:48 +02:00
KoenigMjr
c676f3b4a3 .css Stylesheet integriert
mkdocs.yml ergänzt:

markdown_extensions:
  - attr_list
stylesheet
2025-07-09 16:11:05 +02:00
KoenigMjr
b487e6bbb6 Bugfix der Bild-Links, Typo in Menü 2025-07-03 12:08:15 +02:00
Bastian Schroll
251cd73713
Merge branch 'develop' into feature/ISSUE-67 2025-06-11 07:35:25 +02:00
Bastian Schroll
e164533ad4
Update regex_filter.md 2024-05-05 17:13:44 +02:00
Jan Speller
07953e0d3b
Typo 2023-01-24 13:27:23 +01:00
Jan Speller
efeb271de4 Documentation, fix config flag for logging 2022-05-23 23:20:54 +02:00
Lars Gremme
b12c11d268 Update fir_size value and correct fir_size in docu 2022-02-23 19:15:45 +01:00
Lars Gremme
3b65052a5b Update Changelog and remove double negation 2022-02-18 19:34:00 +01:00
Lars Gremme
e4822cbf70 Add hint for fir_size in docu 2022-01-23 12:46:47 +01:00
Lars Gremme
0e386e79c9 Changes request by review 2022-01-23 12:25:30 +01:00
Lars Gremme
c6df7a6b7b Add fir_size as optionally value 2022-01-23 11:06:24 +01:00
Lars Gremme
112254b928 Add python3-pip, alsa-utils to install-script; Fix install-script to use GIT in boswatch3-folder, use running RTL-FM version 2022-01-23 11:01:50 +01:00
Lars Gremme
18d2ff7e1f Add Divera24/7-Plugin 2022-01-23 10:54:36 +01:00
Jan Speller
31ee935628 Change spacing in init_db.sql and add comment on table creation 2021-03-04 12:40:57 +01:00
Jan Speller
3354a7d5f2 add documentation 2021-03-01 08:13:26 +01:00
Bastian Schroll
87eafc898f
Update descriptor.md 2021-02-04 17:07:30 +01:00
Bastian Schroll
6ad99a56cc
Merge branch 'develop' into feature/tg_message_queuing 2020-07-15 10:03:07 +02:00
B-Watch
1f57119a7b Merge branch 'FR-DoubleFilter' of https://github.com/b-watch/BW3-Core into FR-DoubleFilter 2020-07-15 08:10:13 +02:00
B-Watch
4e95d14d88 added changes from PR-Discussion 2020-07-15 08:09:57 +02:00
Jan Speller
6d2b398014
Merge branch 'develop' into feature/tg_message_queuing 2020-07-14 09:08:54 +02:00
Jan Speller
b19d2e7eda Add Notice to documentation 2020-07-14 08:40:04 +02:00
Bastian Schroll
dda218f622
Merge branch 'develop' into FR-DoubleFilter 2020-07-14 08:34:55 +02:00
B-Watch
24899f3d08 changed var-names 2020-07-13 20:02:00 +02:00
B-Watch
2f96e4aa9b added documentation 2020-07-10 21:35:08 +02:00
B-Watch
99df0340a6 renamed config vars 2020-07-09 15:20:54 +02:00
B-Watch
546ecada42 added/modified documentation 2020-07-09 14:20:16 +02:00
B-Watch
5b3f1c3bd1 additional documentation for inputsource 2020-07-06 09:48:27 +02:00
B-Watch
7f35d0592e Added PulseAudio as Source 2020-06-29 21:11:07 +02:00
Bastian Schroll
df4ffaac53
Update config.md 2020-06-29 07:25:24 +02:00
Bastian Schroll
117ea5347e
Update config.md 2020-06-29 07:21:33 +02:00
Bastian Schroll
4a1bcf7df9
Merge branch 'develop' into FR-mmChar 2020-06-29 07:20:50 +02:00
b-watch
23ae9b9aa0
Added default description for mmChar 2020-06-28 21:02:14 +02:00
B-Watch
c3ccc11b5d FR #42 - added config for Char-set mm 2020-06-24 21:38:11 +02:00
Schrolli91
c94938dd3d
update docs 2020-05-01 23:52:38 +02:00