BOSWatch / BW3-Core

BOSWatch 3 Core Repo - Documentation at http://docs.boswatch.de
http://bwcc.boswatch.de
GNU General Public License v3.0
52 stars 23 forks source link

Module double filter und regex filter werden nicht geladen, Abbruch Server Start #117

Closed happyphil24 closed 4 months ago

happyphil24 commented 4 months ago

Hallo,

ich habe BW3 erfolgreich auf Raspberry Pi OS (64bit) laufen.

Module Descriptor, sowie die Plugins Telegram und mysql werden fehlerfrei geladen und funktionieren.

Erweitere ich die Config Datei server.yaml um eines der beiden Filter Module double oder regex, lässt sich der BW3 Server nicht mehr starten. Ich verwende den Syntax exakt aus den Beispielen zum ersten Test:

- type: module
  res: filter.doubleFilter
  config:
    ignoreTime: 30
    maxEntry: 10
    pocsagFields:
      - ric
      - subric

oder:

- type: module
  res: filter.regexFilter
  config:
    - name: "Zvei filter"
      checks:
        - field: tone
          regex: "65[0-9]{3}"  # all zvei with starting 65
    - name: "FMS Stat 3"
      checks:
        - field: mode
          regex: "fms"  # check if mode is fms
        - field: status
          regex: "3"  # check if status is 3

Auszug aus dem Log, ab dem Punkt an dem eines der Module geladen werden soll:

Traceback (most recent call last):
  File "/opt/boswatch3/boswatch/configYaml.py", line 53, in loadConfigFile
    self._config = yaml.safe_load(file)
                   ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 125, in safe_load
    return load(stream, SafeLoader)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 81, in load
    return loader.get_single_data()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 49, in get_single_data
    node = self.get_single_node()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 36, in get_single_node
    document = self.compose_document()
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 111, in compose_sequence_node
    node.value.append(self.compose_node(node, index))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 127, in compose_mapping_node
    while not self.check_event(MappingEndEvent):
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
                         ^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/parser.py", line 438, in parse_block_mapping_key
    raise ParserError("while parsing a block mapping", self.marks[-1],
yaml.parser.ParserError: while parsing a block mapping
  in "/opt/boswatch3/boswatch/../config/server.yaml", line 40, column 3
expected <block end>, but found '-'
  in "/opt/boswatch3/boswatch/../config/server.yaml", line 52, column 3
[timestamp] - MainThread      bw_server       <module>           [CRITICAL] cannot load config file

Laut Wiki haben die beiden Module keine Abhängigkeiten. Die beiden Dateien regexFilter.py und doubleFilter.py befinden sich im Ordner /opt/boswatch3/module/filter .

Freue mich über eine Hilfestellung. Vielen Dank!

janspeller commented 4 months ago

Die server.yaml koennte falsch eingerückt sein, oder @Schrolli91 ?

happyphil24 commented 4 months ago

Ich rufe den Server wie folgt auf:

python3 bw_server.py -c server.yaml

die server.yaml liegt unter: /opt/boswatch3/config

Wie geschrieben, ohne den Eintrag für die Module (auch einzeln getestet) startet BW3 einwandfrei und ich habe mit Descriptor, mysql und telegram keinerlei Probleme, Daten kommen einwandfrei rein und werden verarbeitet. Das mit dem korrekten Einrücken hatte ich in einem anderen Beitrag auch gelesen, die Formatierung habe ich 1:1 aus dem Wiki übernommen. Mit dem Descriptor habe ich ein Modul am Laufen, das sieht mir sehr ähnlich vom Aufbau her aus und funktioniert. In meinem ersten Beitrag sieht das in der Tat falsch eingerückt aus, ist jedoch nur hier im Beitrag so, keine Ahnung, wieso es so formatiert wird. In der server.yaml habe ich es exakt stehen, wie im Wiki.

Schrolli91 commented 4 months ago

Ich denke du müsstest mal eine vollständige Config posten. Hier liegt definitiv ein Fehler in der Einrückung vor.

happyphil24 commented 4 months ago

Vielen Dank für Eure Hilfestellung! Ich habe den Code mittels diese Tools geprüft:

https://onlineyamltools.com/validate-yaml

Dabei hat sich herausgestellt, dass die Beispiele aus dem Wiki einzeln korrekt sind, wenn ich diese jedoch 1:1 in meine server.yaml einfüge, dann kommt es zu einem Fehler. Ich habe es dann passend eingerückt anhand des Tools mit meiner Config Datei und beide Module werden nun einwandfrei geladen.

Danke schön!