Commit graph

709 commits

Author SHA1 Message Date
Bastian Schroll 22f1b7dc29
Merge pull request #142 from KoenigMjr/enh/telegram-format
Some checks failed
build_docs / Build documentation (push) Has been cancelled
CodeQL / CodeQL-Build (push) Has been cancelled
pytest / build (ubuntu-latest, 3.10) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.11) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.12) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.13) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.9) (push) Has been cancelled
build_docs / deploy (push) Has been cancelled
enh(telegram): parse_mode Unterstützung hinzugefügt
2025-11-26 08:27:28 +01:00
Bastian Schroll 9a3b3336aa
Merge branch 'develop' into enh/telegram-format 2025-11-26 08:14:53 +01:00
Bastian Schroll 8ec7aecc2f
Merge pull request #143 from KoenigMjr/bugfix/service-colorama
feat(install_service): Colorama Auto-Install, bugfix, improvements
2025-11-26 08:14:28 +01:00
Bastian Schroll ce3bec23d4
Merge branch 'develop' into bugfix/service-colorama 2025-11-26 08:13:15 +01:00
Bastian Schroll 71fc7c52c2
Merge pull request #145 from KoenigMjr/bugfix/mysql
(bugfix/mysql): Change: Remove whitespace and check for empty strings
2025-11-26 08:10:32 +01:00
KoenigMjr 4415697d31 (bugfix/mysql): Change: Remove whitespace and check for empty strings
Error:

??? python[22805]: Traceback (most recent call last):
??? python[22805]:    File "/opt/boswatch3/venv/lib/python3.13/site-packages/mysql/connector/connection_cext.py", line 772, in cmd_query
??? python[22805]:       self._cmysql.query(
??? python[22805]:       ~~~~~~~~~~~~~~~~~~^
??? python[22805]:             query,
??? python[22805]:             ^^^^^^
??? python[22805]:       ...<3 lines>...
??? python[22805]:             query_attrs=self.query_attrs,
??? python[22805]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
??? python[22805]:       )
??? python[22805]:       ^
??? python[22805]: _mysql_connector.MySQLInterfaceError: Query was empty
??? python[22805]: The above exception was the direct cause of the following exception:
??? python[22805]: Traceback (most recent call last):
??? python[22805]:    File "/opt/boswatch3/bw_server.py", line 79, in <module>
??? python[22805]:       if not bwRoutMan.buildRouters(bwConfig):
??? python[22805]:              ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
??? python[22805]:    File "/opt/boswatch3/boswatch/router/routerManager.py", line 77, in buildRouters
??? python[22805]:       loadedClass = importedFile.BoswatchPlugin(routeConfig)
??? python[22805]:    File "/opt/boswatch3/plugin/mysql.py", line 35, in __init__
??? python[22805]:       super().__init__(__name__, config)  # you can access the config class on 'self.config'
??? python[22805]:       ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
??? python[22805]:    File "/opt/boswatch3/plugin/pluginBase.py", line 54, in __init__
??? python[22805]:       self.onLoad()
??? python[22805]:       ~~~~~~~~~~~^^
??? python[22805]:    File "/opt/boswatch3/plugin/mysql.py", line 60, in onLoad
??? python[22805]:       self.cursor.execute(stmnt)
??? python[22805]:       ~~~~~~~~~~~~~~~~~~~^^^^^^^
??? python[22805]:    File "/opt/boswatch3/venv/lib/python3.13/site-packages/mysql/connector/cursor_cext.py", line 353, in execute
??? python[22805]:       self._connection.cmd_query(
??? python[22805]:       ~~~~~~~~~~~~~~~~~~~~~~~~~~^
??? python[22805]:             self._stmt_partition["mappable_stmt"],
??? python[22805]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
??? python[22805]:       ...<2 lines>...
??? python[22805]:             raw_as_string=self._raw_as_string,
??? python[22805]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
??? python[22805]:       )
??? python[22805]:       ^
??? python[22805]:    File "/opt/boswatch3/venv/lib/python3.13/site-packages/mysql/connector/opentelemetry/context_propagation.py", line 97, in wrapper
??? python[22805]:       return method(cnx, *args, **kwargs)
??? python[22805]:    File "/opt/boswatch3/venv/lib/python3.13/site-packages/mysql/connector/connection_cext.py", line 781, in cmd_query
??? python[22805]:       raise get_mysql_exception(
??? python[22805]:             err.errno, msg=err.msg, sqlstate=err.sqlstate
??? python[22805]:       ) from err
??? python[22805]: mysql.connector.errors.ProgrammingError: 1065 (42000): Query was empty
2025-11-21 17:42:38 +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 81b93a9f77 feat(install): Colorama Auto-Install, bugfix, improvements
Implementiert automatische Installation des 'colorama'-Pakets mit Fallback-Mechanismus (Dummy-Klassen) hinzu.
Erhöhung der Robustheit der Service-Installation.

**Breaking Changes / Fixes:**
- Korrigiert den ExecStart-Pfad im Server-Service von 'python' zu 'python3'.
- Ersetzt 'systemctl daemon-reexec' durch 'systemctl daemon-reload'.

**Verbesserungen (Improvements):**
- Führt Timeouts (5s/10s) für systemd-Befehle ('verify', 'is-active') ein.
- Standardisiert Dateivorgänge (YAML) auf UTF-8-Encoding.
- Sortiert gefundene YAML-Dateien alphabetisch.
- Codekommentare einheitlich auf Englisch
2025-11-17 19:27:56 +01:00
Bastian Schroll 524efbb0aa
Merge pull request #141 from BOSWatch/alert-autofix-2
Some checks failed
build_docs / Build documentation (push) Has been cancelled
CodeQL / CodeQL-Build (push) Has been cancelled
pytest / build (ubuntu-latest, 3.10) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.11) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.12) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.13) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.9) (push) Has been cancelled
build_docs / deploy (push) Has been cancelled
Potential fix for code scanning alert no. 2: Workflow does not contain permissions
2025-11-17 10:19:44 +01:00
Bastian Schroll a6c3395f39
Potential fix for code scanning alert no. 2: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-11-17 10:18:08 +01:00
Bastian Schroll a58bc12296
Merge pull request #140 from KoenigMjr/bugfix/pocsagDecoder
Some checks are pending
build_docs / Build documentation (push) Waiting to run
build_docs / deploy (push) Blocked by required conditions
CodeQL / CodeQL-Build (push) Waiting to run
pytest / build (ubuntu-latest, 3.10) (push) Waiting to run
pytest / build (ubuntu-latest, 3.11) (push) Waiting to run
pytest / build (ubuntu-latest, 3.12) (push) Waiting to run
pytest / build (ubuntu-latest, 3.13) (push) Waiting to run
pytest / build (ubuntu-latest, 3.9) (push) Waiting to run
Fix POCSAG decoding crash caused by invalid subric parsing
2025-11-16 11:17:47 +01:00
KoenigMjr 23d1b1a328 Fix POCSAG decoding crash caused by invalid subric parsing
Errorcode führte zu Programmexit:

> 12.10.2025 02:20:39,918 - inputThread sdrInput _runThread [ERROR] error in sdr input routine
Traceback (most recent call last):
>   File "/opt/boswatch3/boswatch/inputSource/sdrInput.py", line 65, in _runThread
>     self.addToQueue(line)
>   ...
> ValueError: invalid literal for int() with base 10: ' '

Ursache:
Die Funktion `_getBitrateRicSubric()` in `pocsagDecoder.py` griff fest auf `data[40]` zu, um den SubRIC-Wert zu ermitteln. Bei Fehlerhaften Datensätzen von multimon-ng kann sich die Position jedoch verschieben, wodurch an dieser Stelle ein Leerzeichen (' ') statt einer Ziffer stand. Dies führte zu einem ValueError und damit zum Abbruch des gesamten SDR-Threads.

Änderung:
Die Funktion wurde auf robuste Regex-Analyse umgestellt (analog fmsDecoder.py und pocsagDecoder.py):
- Bitrate, Address (RIC) und Function (SubRIC) werden nun mit regulären Ausdrücken extrahiert.
- Die ursprüngliche Logik (`subric = int(Function) + 1`) bleibt vollständig erhalten.
- Enthält die Zeile keine gültige Function, wird eine Warnung geloggt ("Invalid POCSAG function (not 0–3)")
- Zusätzliche Fehlerabsicherung durch try/except.

Ergebnis:
Der Decoder ist nun tolerant gegenüber Formatabweichungen und verhindert Abstürze bei fehlerhaften oder unvollständigen multimon-ng-Zeilen.
2025-10-22 09:59:59 +02:00
Bastian Schroll 017e882363
Merge pull request #134 from KoenigMjr/feature/telegram-neu
Some checks failed
build_docs / Build documentation (push) Has been cancelled
CodeQL / CodeQL-Build (push) Has been cancelled
pytest / build (ubuntu-latest, 3.10) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.11) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.12) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.13) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.9) (push) Has been cancelled
build_docs / deploy (push) Has been cancelled
Telegram-Plugin Refactor
2025-10-22 08:53:40 +02:00
Bastian Schroll 2e5479cde2
Merge branch 'develop' into feature/telegram-neu 2025-10-21 13:39:04 +02:00
Bastian Schroll 16dbd731e8
Merge pull request #136 from KoenigMjr/feature/service
Some checks are pending
build_docs / Build documentation (push) Waiting to run
build_docs / deploy (push) Blocked by required conditions
CodeQL / CodeQL-Build (push) Waiting to run
pytest / build (ubuntu-latest, 3.10) (push) Waiting to run
pytest / build (ubuntu-latest, 3.11) (push) Waiting to run
pytest / build (ubuntu-latest, 3.12) (push) Waiting to run
pytest / build (ubuntu-latest, 3.13) (push) Waiting to run
pytest / build (ubuntu-latest, 3.9) (push) Waiting to run
feat: Interaktives Installationsskript mit Mehrsprachigkeit, argparse und Logging
2025-10-21 13:38:50 +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 6a0a59c3ac Telegram mit Warteschlange
Durch Einbau einer Warteschlange kein Datenverlust bei belegter API (Sendelimit ca. 30 Nachrichten/min, gibt aber Soft-Limit)

Exponentielles Backoff mit Maximalgrenze
Retry-Zähler mit Abbruch bei zu vielen Fehlversuchen
Kein Wiederholen bei permanenten Fehlern (400/401)
dynamische Zeitanpassung bei 429 Fehlern

Fehlerrobustheit verbessert hinsichtlich Connection Error

neues Plugin ohne telegram-bot

* Timeout (timeout=10),
* HTTP-Fehlerprüfung (raise_for_status()),
* Retry-Logik (3 Versuche mit wachsender Wartezeit),
* Sauberem Logging mit logger statt print).

send_location aus altem Skript übernommen und angepasst
2025-08-08 21:11:48 +02:00
Bastian Schroll a1cb545c39
Merge pull request #137 from KoenigMjr/bugfix/fieldnotfound
Some checks failed
build_docs / Build documentation (push) Has been cancelled
CodeQL / CodeQL-Build (push) Has been cancelled
pytest / build (ubuntu-latest, 3.10) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.11) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.12) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.13) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.9) (push) Has been cancelled
build_docs / deploy (push) Has been cancelled
bugfix: Behebung der "[WARNING ] field not found" im Log
2025-08-08 13:49:18 +02:00
KoenigMjr f53102d8c8 Behebung der WARNING "field not found" im Log Bedingt durch die modeunabhängige Verarbeitung sämtlicher Wildcards warnt das Programm, dass manche Felder nicht verfügbar sind, die in der derzeitigen Auswertung jedoch gar nicht vorhanden sein können (z.B. FMS Felder in ZVEI-Datensatz etc.)
Änderungen:
- Wildcard-Ersetzung in `replaceWildcards()` nach Paketmodus (fms, pocsag, zvei, msg) aufgeteilt
- Unnötige Wildcards werden nun abhängig vom Modus nicht mehr verarbeitet
- `{MSG}` wird nun explizit für den Modus `msg` unterstützt
- Kopfzeile mit aktuellem Änderungsdatum versehen
2025-08-08 12:01:41 +02:00
Bastian Schroll 7ae6dfa820
Merge pull request #135 from KoenigMjr/feature/log-multi-clients
Some checks failed
build_docs / Build documentation (push) Has been cancelled
build_docs / deploy (push) Has been cancelled
CodeQL / CodeQL-Build (push) Has been cancelled
pytest / build (ubuntu-latest, 3.10) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.11) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.12) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.13) (push) Has been cancelled
pytest / build (ubuntu-latest, 3.9) (push) Has been cancelled
feat(logging): dynamische Logdateibenennung des Client basierend auf YAML-Datei
2025-08-04 06:46:51 +02:00
KoenigMjr 34fd0c2f10 Fehlerbehebung: Logging-Setup für Multi-Client-Betrieb korrigiert
- Logdateipfad wird vor dem Aufruf von fileConfig() über builtins.log_filename gesetzt
- Entfernt manuelles Patchen des Loghandlers (BaseFilename, Stream etc.) nach dem Laden
- Logging-Konfiguration (logger_client.ini) wird nur noch einmal geladen
- logger_*.ini: Korrektur: interval=midnight ist nicht (mehr) offiziell unterstützt, Änderung auf korrekte Schreibweise (when=midnight, interval=1)
- Ändern der Kommentare auf Englisch (stringent zu anderen Kommentaren)
2025-07-31 16:02:22 +02:00
KoenigMjr 676312e581 feat(logging): dynamische Logdateibenennung basierend auf YAML-Datei
- Logdatei wird nun zur Laufzeit anhand des Konfigurationsdateinamens gesetzt, z. B.:
  client1.yaml → log/client1.log
- Ermöglicht parallele Ausführung mehrerer Clients mit getrennten Logs auf derselben Hardware
- Der bisher fest codierte client.log entfällt
- Argumente (args.config) werden nun vor dem Logging-Setup geparst
- logger_client.ini bleibt erhalten; Pfad des TimedRotatingFileHandler
  wird nachträglich im Code gesetzt
- Log-Rotation (Mitternacht, 7 Backups) funktioniert weiterhin wie konfiguriert
- `disable_existing_loggers=False` verhindert das Deaktivieren benutzerdefinierter Logger in den BOSWatch-Modulen
- Falls die zuvor standardmäßige placeholder-Datei `log/client.log` noch existiert und nicht mehr verwendet wird,
  wird sie beim Start automatisch gelöscht

BREAKING CHANGE: Logging wird nicht mehr standardmäßig nach log/client.log geschrieben
2025-07-16 18:57:19 +02:00
Bastian Schroll 5d9ab0a2b7
Merge pull request #132 from KoenigMjr/bugfix/docu
Bugfix der Bild-Links
2025-07-10 07:58:21 +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 01ec8e0715
Merge branch 'BOSWatch:develop' into bugfix/docu 2025-07-08 11:54:07 +02:00
Bastian Schroll a224190a26
Merge pull request #133 from KoenigMjr/update/codeQL
Update CodeQL-Workflow
2025-07-08 06:56:17 +02:00
KoenigMjr 8adb7ad1b6
Merge branch 'BOSWatch:develop' into update/codeQL 2025-07-07 13:30:17 +02:00
KoenigMjr 2523671f1a
actions/checkout@v3 updated
to v4
2025-07-07 13:28:32 +02:00
KoenigMjr 7695711cb7
autobuild and analyze updated to v3
autobuild and analyze are running v2, but v3 is available.
2025-07-07 13:26:38 +02:00
KoenigMjr b487e6bbb6 Bugfix der Bild-Links, Typo in Menü 2025-07-03 12:08:15 +02:00
Bastian Schroll e130555b8b
Merge pull request #130 from BOSWatch/fix-111
fix IndexError: list index out of range in sdr input routine (pocsagDecoder) #111
2025-06-27 19:31:42 +02:00
KoenigMjr c6ed0cd615
neue versionen 2025-06-27 10:31:59 +02:00
Bastian Schroll 8dad67ada2
Merge branch 'develop' into fix-111 2025-06-27 09:27:20 +02:00
Bastian Schroll 7c0a9cc84c
Merge pull request #131 from KoenigMjr/docu-changes
Änderung der Workflow-Datei "build_docs.yml" für das ablösen der ph_pages Branch zum Aufbau der Website
2025-06-27 09:21:40 +02:00
KoenigMjr 07932c3b7b
Anstoßen Workflows 2025-06-14 12:58:14 +02:00
KoenigMjr 77086dd4de
Ablösen des gh_pages Branch
NEU:
* permissions-Sektor
* concurrency-Sektor
* setup Pages in jobs - build_docs eingefügt
* Build mkdocs in jobs - build_docs eingefügt
* Upload artifact in jobs - build_docs eingefügt
* Deployment job-Sektor

Entfernt:
* Build_docs strategy
* Setup Python (in Dokumentation nicht gebraucht? <-- bitte kritisch prüfen)
* Python in jobs - build_docs

Geändert:
* Checkout von v2 auf v4
* Install Dependencies zusammengefasst
* bei Doxygen mattnotmitt/doxygen-action@v1 entfernt, Code verschlankt
2025-06-14 12:56:08 +02:00
Bastian Schroll dc052b94f4
fix IndexError: list index out of range in sdr input routine (pocsagDecoder) #111 2025-06-11 08:33:09 +00:00
Bastian Schroll d4e9b631ab
Merge pull request #104 from GonzoBS/patch-1
Issue #103: Update doubleFilter.py
2025-06-11 10:23:45 +02:00
Bastian Schroll 1ead2cbaa2
Update module/filter/doubleFilter.py
Co-authored-by: Jan Speller <github@speller.biz>
2025-06-11 10:22:12 +02:00
Bastian Schroll a6a1059931
Merge branch 'develop' into patch-1 2025-06-11 10:20:17 +02:00
Bastian Schroll 3388dd16e7
Merge pull request #81 from janspeller/feature/ISSUE-67
Fix Issue #67
2025-06-11 10:01:51 +02:00
Bastian Schroll 399a768498
Merge branch 'develop' into feature/ISSUE-67 2025-06-11 09:59:46 +02:00
Bastian Schroll 31aea6217c
Merge pull request #128 from KoenigMjr/install.sh-patch
Update install.sh
2025-06-11 09:59:30 +02:00
Bastian Schroll 340dfce789
Merge branch 'develop' into install.sh-patch 2025-06-11 09:56:46 +02:00
Bastian Schroll 2c9453f2eb
Merge pull request #129 from KoenigMjr/pytest-update
Pytest update
2025-06-11 09:56:33 +02:00
KoenigMjr 1f7ae72671
Update run_pytest.yml
workflow_dispatch entfernt
2025-06-11 09:38:50 +02:00
Bastian Schroll 251cd73713
Merge branch 'develop' into feature/ISSUE-67 2025-06-11 07:35:25 +02:00
KoenigMjr fcc9634be2
Merge pull request #2 from KoenigMjr/pytest-update-manual-run
Pytest update manual run
2025-06-10 13:20:46 +02:00
KoenigMjr 1a0f981c5c
Update run_pytest.yml
Auskommentieren von workflow_dispatch
2025-06-10 13:18:35 +02:00