From 890b2630cb219da79ec8ee2b377cee5108259839 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Wed, 3 Feb 2021 10:40:38 +0100 Subject: [PATCH 01/13] Fix timer error --- boswatch/timer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boswatch/timer.py b/boswatch/timer.py index fe600ea..11bb03f 100644 --- a/boswatch/timer.py +++ b/boswatch/timer.py @@ -61,9 +61,9 @@ class RepeatedTimer: """!Stop the timer worker thread @return True or False""" - self._event.set() if self._thread is not None: logging.debug("stop repeatedTimer: %s", self._thread.name) + self._event.set() self._thread.join() return True logging.warning("repeatedTimer always stopped") From 0363979c6c9771dcede53df5109c25fe5cc348d6 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Wed, 3 Feb 2021 10:43:12 +0100 Subject: [PATCH 02/13] Update timer.py --- boswatch/timer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/boswatch/timer.py b/boswatch/timer.py index 11bb03f..5c4e8dd 100644 --- a/boswatch/timer.py +++ b/boswatch/timer.py @@ -64,7 +64,8 @@ class RepeatedTimer: if self._thread is not None: logging.debug("stop repeatedTimer: %s", self._thread.name) self._event.set() - self._thread.join() + if self._thread is not None: + self._thread.join() return True logging.warning("repeatedTimer always stopped") return True From 5ac2ad213e10dec9aff1d653f26d7b6e4378cc00 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Tue, 16 Feb 2021 01:09:04 +0100 Subject: [PATCH 03/13] implement basic mysql functionality --- boswatch/router/routerManager.py | 6 +- plugin/mysql.py | 175 +++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+), 3 deletions(-) create mode 100644 plugin/mysql.py diff --git a/boswatch/router/routerManager.py b/boswatch/router/routerManager.py index cf26d5f..28a1788 100644 --- a/boswatch/router/routerManager.py +++ b/boswatch/router/routerManager.py @@ -28,6 +28,7 @@ logging.debug("- %s loaded", __name__) class RouterManager: """!Class to manage all routers""" + def __init__(self): """!Create new router""" self._routerDict = {} @@ -92,9 +93,8 @@ class RouterManager: logging.error("unknown type '%s' in %s", routeType, route) return False - # except ModuleNotFoundError: # only since Py3.6 - except ImportError: - logging.error("%s not found: %s", route.get("type"), route.get("res")) + except ModuleNotFoundError as e: + logging.error("%s not found: %s (%s)", route.get("type"), route.get("res"), str(e)) return False logging.debug("finished building routers") diff --git a/plugin/mysql.py b/plugin/mysql.py new file mode 100644 index 0000000..e4c153e --- /dev/null +++ b/plugin/mysql.py @@ -0,0 +1,175 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +"""! + ____ ____ ______ __ __ __ _____ + / __ )/ __ \/ ___/ | / /___ _/ /______/ /_ |__ / + / __ / / / /\__ \| | /| / / __ `/ __/ ___/ __ \ /_ < + / /_/ / /_/ /___/ /| |/ |/ / /_/ / /_/ /__/ / / / ___/ / +/_____/\____//____/ |__/|__/\__,_/\__/\___/_/ /_/ /____/ + German BOS Information Script + by Bastian Schroll + +@file: mysql.py +@date: 15.02.2021 +@author: Jan Speller +@description: Mysql Plugin +""" +import logging +from plugin.pluginBase import PluginBase + +# ###################### # +# Custom plugin includes # +import mysql.connector +from datetime import datetime + +# ###################### # + +logging.debug("- %s loaded", __name__) + + +class BoswatchPlugin(PluginBase): + """!Description of the Plugin""" + + def __init__(self, config): + """!Do not change anything here!""" + super().__init__(__name__, config) # you can access the config class on 'self.config' + + def onLoad(self): + """!Called by import of the plugin + Remove if not implemented""" + self.connection = mysql.connector.connect( + host=self.config.get("host"), + user=self.config.get("user"), + password=self.config.get("password"), + database=self.config.get("database"), + ) + self.sqlInserts = { + "pocsag": "INSERT INTO boswatch (packetTimestamp, packetMode, pocsag_ric, pocsag_subric, pocsag_subricText, pocsag_message, pocsag_bitrate, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", + "zvei": "INSERT INTO boswatch (packetTimestamp, packetMode, zvei_tone, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", + "fms": "INSERT INTO boswatch (packetTimestamp, packetMode, fms_fms, fms_service, fms_country, fms_location, fms_vehicle, fms_status, fms_direction, fms_directionText, fms_tacticalInfo, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUE (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", + "msg": "INSERT INTO boswatch (packetTimestamp, packetMode, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUE (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" + } + + def setup(self): + """!Called before alarm + Remove if not implemented""" + try: + self.connection.ping(reconnect=True, attempts=3, delay=2) + except mysql.connector.Error as err: + logging.warning("Connection was down, trying to reconnect...") + self.onLoad() + + self.cursor = self.connection.cursor() + + def fms(self, bwPacket): + """!Called on FMS alarm + + @param bwPacket: bwPacket instance + Remove if not implemented""" + val = ( + datetime.fromtimestamp(float(bwPacket.get("timestamp"))), + bwPacket.get("mode"), + bwPacket.get("fms"), + bwPacket.get("service"), + bwPacket.get("country"), + bwPacket.get("location"), + bwPacket.get("vehicle"), + bwPacket.get("status"), + bwPacket.get("direction"), + bwPacket.get("directionText"), + bwPacket.get("tacticalInfo"), + bwPacket.get("serverName"), + bwPacket.get("serverVersion"), + bwPacket.get("serverBuildDate"), + bwPacket.get("serverBranch"), + bwPacket.get("clientName"), + bwPacket.get("clientIP"), + bwPacket.get("clientVersion"), + bwPacket.get("clientBuildDate"), + bwPacket.get("clientBranch"), + bwPacket.get("inputSource"), + bwPacket.get("frequency") + ) + self.cursor.execute(self.sqlInserts.get("fms"), val) + + def pocsag(self, bwPacket): + """!Called on POCSAG alarm + + @param bwPacket: bwPacket instance + Remove if not implemented""" + val = ( + datetime.fromtimestamp(float(bwPacket.get("timestamp"))), + bwPacket.get("mode"), + bwPacket.get("ric"), + bwPacket.get("subric"), + bwPacket.get("subricText"), + bwPacket.get("message"), + bwPacket.get("bitrate"), + bwPacket.get("serverName"), + bwPacket.get("serverVersion"), + bwPacket.get("serverBuildDate"), + bwPacket.get("serverBranch"), + bwPacket.get("clientName"), + bwPacket.get("clientIP"), + bwPacket.get("clientVersion"), + bwPacket.get("clientBuildDate"), + bwPacket.get("clientBranch"), + bwPacket.get("inputSource"), + bwPacket.get("frequency") + ) + self.cursor.execute(self.sqlInserts.get("pocsag"), val) + + def zvei(self, bwPacket): + """!Called on ZVEI alarm + + @param bwPacket: bwPacket instance + Remove if not implemented""" + val = ( + datetime.fromtimestamp(float(bwPacket.get("timestamp"))), + bwPacket.get("mode"), + bwPacket.get("tone"), + bwPacket.get("serverName"), + bwPacket.get("serverVersion"), + bwPacket.get("serverBuildDate"), + bwPacket.get("serverBranch"), + bwPacket.get("clientName"), + bwPacket.get("clientIP"), + bwPacket.get("clientVersion"), + bwPacket.get("clientBuildDate"), + bwPacket.get("clientBranch"), + bwPacket.get("inputSource"), + bwPacket.get("frequency") + ) + self.cursor.execute(self.sqlInserts.get("pocsag"), val) + + def msg(self, bwPacket): + """!Called on MSG packet + + @param bwPacket: bwPacket instance + Remove if not implemented""" + val = ( + datetime.fromtimestamp(float(bwPacket.get("timestamp"))), + bwPacket.get("mode"), + bwPacket.get("serverName"), + bwPacket.get("serverVersion"), + bwPacket.get("serverBuildDate"), + bwPacket.get("serverBranch"), + bwPacket.get("clientName"), + bwPacket.get("clientIP"), + bwPacket.get("clientVersion"), + bwPacket.get("clientBuildDate"), + bwPacket.get("clientBranch"), + bwPacket.get("inputSource"), + bwPacket.get("frequency") + ) + self.cursor.execute(self.sqlInserts.get("msg"), val) + + def teardown(self): + """!Called after alarm + Remove if not implemented""" + self.connection.commit() + + def onUnload(self): + """!Called by destruction of the plugin + Remove if not implemented""" + pass From 3b4a594110bd83a1d434c4fa5cebd66076bcd5ee Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Sun, 28 Feb 2021 13:58:29 +0100 Subject: [PATCH 04/13] update mysql plugin: add init_db.sql and create table automatically --- boswatch/router/routerManager.py | 4 ++-- init_db.sql | 34 ++++++++++++++++++++++++++++++++ plugin/mysql.py | 29 +++++++++++++++++++-------- 3 files changed, 57 insertions(+), 10 deletions(-) create mode 100644 init_db.sql diff --git a/boswatch/router/routerManager.py b/boswatch/router/routerManager.py index 28a1788..86f6326 100644 --- a/boswatch/router/routerManager.py +++ b/boswatch/router/routerManager.py @@ -93,8 +93,8 @@ class RouterManager: logging.error("unknown type '%s' in %s", routeType, route) return False - except ModuleNotFoundError as e: - logging.error("%s not found: %s (%s)", route.get("type"), route.get("res"), str(e)) + except ModuleNotFoundError: + logging.exception("%s not found: %s", route.get("type"), route.get("res")) return False logging.debug("finished building routers") diff --git a/init_db.sql b/init_db.sql new file mode 100644 index 0000000..79a86fc --- /dev/null +++ b/init_db.sql @@ -0,0 +1,34 @@ +create table boswatch +( + id int auto_increment primary key, + packetTimestamp timestamp default now() not null, + packetMode enum('fms', 'pocsag', 'zvei', 'msg') not null, + pocsag_ric char(7) default null, + pocsag_subric enum('1', '2', '3', '4') default null, + pocsag_subricText enum('a', 'b', 'c', 'd') default null, + pocsag_message text default null, + pocsag_bitrate enum('512', '1200', '2400') default null, + zvei_tone char(5) default null, + fms_fms char(8) default null, + fms_service varchar(255) default null, + fms_country varchar(255) default null, + fms_location varchar(255) default null, + fms_vehicle varchar(255) default null, + fms_status char(1) default null, + fms_direction char(1) default null, + fms_directionText tinytext default null, + fms_tacticalInfo char(3) default null, + serverName varchar(255) not null, + serverVersion varchar(100) not null, + serverBuildDate varchar(255) not null, + serverBranch varchar(255) not null, + clientName varchar(255) not null, + clientIP varchar(255) not null, + clientVersion varchar(100) not null, + clientBuildDate varchar(255) not null, + clientBranch varchar(255) not null, + inputSource varchar(30) not null, + frequency varchar(30) not null +); +create unique index boswatch_id_uindex + on boswatch (id); \ No newline at end of file diff --git a/plugin/mysql.py b/plugin/mysql.py index e4c153e..f882703 100644 --- a/plugin/mysql.py +++ b/plugin/mysql.py @@ -37,12 +37,6 @@ class BoswatchPlugin(PluginBase): def onLoad(self): """!Called by import of the plugin Remove if not implemented""" - self.connection = mysql.connector.connect( - host=self.config.get("host"), - user=self.config.get("user"), - password=self.config.get("password"), - database=self.config.get("database"), - ) self.sqlInserts = { "pocsag": "INSERT INTO boswatch (packetTimestamp, packetMode, pocsag_ric, pocsag_subric, pocsag_subricText, pocsag_message, pocsag_bitrate, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", "zvei": "INSERT INTO boswatch (packetTimestamp, packetMode, zvei_tone, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", @@ -50,12 +44,30 @@ class BoswatchPlugin(PluginBase): "msg": "INSERT INTO boswatch (packetTimestamp, packetMode, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUE (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" } + self.connection = mysql.connector.connect( + host=self.config.get("host"), + user=self.config.get("user"), + password=self.config.get("password"), + database=self.config.get("database"), + ) + + self.cursor = self.connection.cursor() + self.cursor.execute("SHOW TABLES LIKE 'boswatch'") + + if self.cursor.fetchone() is None: + with open('init_db.sql') as f: + for stmnt in f.read().split(';'): + self.cursor.execute(stmnt) + self.connection.commit() + + self.cursor.close() + def setup(self): """!Called before alarm Remove if not implemented""" try: self.connection.ping(reconnect=True, attempts=3, delay=2) - except mysql.connector.Error as err: + except mysql.connector.Error: logging.warning("Connection was down, trying to reconnect...") self.onLoad() @@ -168,8 +180,9 @@ class BoswatchPlugin(PluginBase): """!Called after alarm Remove if not implemented""" self.connection.commit() + self.cursor.close() def onUnload(self): """!Called by destruction of the plugin Remove if not implemented""" - pass + self.connection.close() From 75f9a259829bcb2de17b2a1a8de2f9292c958146 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Tue, 16 Feb 2021 15:06:18 +0100 Subject: [PATCH 05/13] Update Dockerfile --- Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 36568ce..95db75b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.10 AS build-base +FROM alpine:3.13 AS build-base RUN apk add git make cmake g++ libusb-dev libpulse FROM build-base AS rtl_fm @@ -8,18 +8,18 @@ WORKDIR /opt/rtl_sdr/build RUN cmake .. && make FROM build-base AS multimon -ARG MULTIMON_VERSION=1.1.8 +ARG MULTIMON_VERSION=1.1.9 RUN git clone --depth 1 --branch ${MULTIMON_VERSION} https://github.com/EliasOenal/multimon-ng.git /opt/multimon WORKDIR /opt/multimon/build RUN cmake .. && make -FROM alpine:3.10 AS boswatch +FROM alpine:3.13 AS boswatch ARG BW_VERSION=develop RUN apk add git && \ git clone --depth 1 --branch ${BW_VERSION} https://github.com/BOSWatch/BW3-Core.git /opt/boswatch -FROM python:3.6-alpine AS runner +FROM python:3.9.1-alpine AS runner LABEL maintainer="bastian@schroll-software.de" # for RTL for MM @@ -28,4 +28,4 @@ RUN apk add libusb-dev libpulse && \ COPY --from=boswatch /opt/boswatch/ /opt/boswatch/ COPY --from=multimon /opt/multimon/build/multimon-ng /opt/multimon/multimon-ng -COPY --from=rtl_fm /opt/rtl_sdr/build/src/ /opt/rtl_sdr/build/src/ \ No newline at end of file +COPY --from=rtl_fm /opt/rtl_sdr/build/src/ /opt/rtl_sdr/build/src/ From 13592f593f7f2c0fb39073db5f3047e83014f8f2 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Tue, 16 Feb 2021 15:08:30 +0100 Subject: [PATCH 06/13] Update Dockerfile --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 95db75b..8ac0c9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,5 +27,5 @@ RUN apk add libusb-dev libpulse && \ pip3 install pyyaml COPY --from=boswatch /opt/boswatch/ /opt/boswatch/ -COPY --from=multimon /opt/multimon/build/multimon-ng /opt/multimon/multimon-ng -COPY --from=rtl_fm /opt/rtl_sdr/build/src/ /opt/rtl_sdr/build/src/ +COPY --from=multimon /opt/multimon/build/multimon-ng /opt/multimon-ng +COPY --from=rtl_fm /opt/rtl_sdr/build/src/ /opt/rtl_sdr From 7e45fca8fb1d6850d940d844a18199a0a8f09a69 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Mon, 1 Mar 2021 08:13:26 +0100 Subject: [PATCH 07/13] add documentation --- docu/docs/plugin/mysql.md | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 docu/docs/plugin/mysql.md diff --git a/docu/docs/plugin/mysql.md b/docu/docs/plugin/mysql.md new file mode 100644 index 0000000..0497aeb --- /dev/null +++ b/docu/docs/plugin/mysql.md @@ -0,0 +1,42 @@ +#
Mysql
+--- + +## Beschreibung +Mit diesem Plugin ist es moeglich, die Alarmierungen in einer Mysql / Mariadb Datenbank zu speichern. + +## Unterstütze Alarmtypen +- Fms +- Pocsag +- Zvei +- Msg + +## Resource +`mysql` + +## Konfiguration +|Feld|Beschreibung|Default| +|----|------------|-------| +|host|IP-Adresse bzw. URL des Hosts|| +|user|Username|| +|password|Passwort|| +|database|Name der Datenbank|| + +**Beispiel:** +```yaml + - type: plugin + name: mysql + res: mysql + config: + host: HOST + user: USERNAME + password: PASSWORD + database: DATABASE +``` + +--- +## Modul Abhängigkeiten +- keine + +--- +## Externe Abhängigkeiten +- mysql-connector-python From 45dcd53bd9e30a1c06c93257328ea6b69c4b3cf3 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Thu, 4 Mar 2021 12:40:57 +0100 Subject: [PATCH 08/13] Change spacing in init_db.sql and add comment on table creation --- docu/docs/plugin/mysql.md | 1 + init_db.sql | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/docu/docs/plugin/mysql.md b/docu/docs/plugin/mysql.md index 0497aeb..b2cd2d4 100644 --- a/docu/docs/plugin/mysql.md +++ b/docu/docs/plugin/mysql.md @@ -3,6 +3,7 @@ ## Beschreibung Mit diesem Plugin ist es moeglich, die Alarmierungen in einer Mysql / Mariadb Datenbank zu speichern. +Das Plugin legt die Tabelle "boswatch" selbststaendig an, wenn diese nicht vorhanden ist. ## Unterstütze Alarmtypen - Fms diff --git a/init_db.sql b/init_db.sql index 79a86fc..b5948bc 100644 --- a/init_db.sql +++ b/init_db.sql @@ -8,16 +8,16 @@ create table boswatch pocsag_subricText enum('a', 'b', 'c', 'd') default null, pocsag_message text default null, pocsag_bitrate enum('512', '1200', '2400') default null, - zvei_tone char(5) default null, - fms_fms char(8) default null, - fms_service varchar(255) default null, - fms_country varchar(255) default null, - fms_location varchar(255) default null, - fms_vehicle varchar(255) default null, - fms_status char(1) default null, - fms_direction char(1) default null, - fms_directionText tinytext default null, - fms_tacticalInfo char(3) default null, + zvei_tone char(5) default null, + fms_fms char(8) default null, + fms_service varchar(255) default null, + fms_country varchar(255) default null, + fms_location varchar(255) default null, + fms_vehicle varchar(255) default null, + fms_status char(1) default null, + fms_direction char(1) default null, + fms_directionText tinytext default null, + fms_tacticalInfo char(3) default null, serverName varchar(255) not null, serverVersion varchar(100) not null, serverBuildDate varchar(255) not null, @@ -31,4 +31,5 @@ create table boswatch frequency varchar(30) not null ); create unique index boswatch_id_uindex - on boswatch (id); \ No newline at end of file + on boswatch (id); + From 53a862375bbaf4640d0333d2a92875b52eef0f1e Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Sat, 13 Mar 2021 17:37:28 +0100 Subject: [PATCH 09/13] add log option for server --- boswatch/router/routerManager.py | 3 ++- config/server.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/boswatch/router/routerManager.py b/boswatch/router/routerManager.py index 86f6326..bd4b434 100644 --- a/boswatch/router/routerManager.py +++ b/boswatch/router/routerManager.py @@ -116,7 +116,8 @@ class RouterManager: else: logging.warning("unknown router: %s", routerName) - self._saveStats() # write stats to stats file + if self.config.get('server.logging', False): + self._saveStats() # write stats to stats file def cleanup(self): """!Run cleanup routines for all loaded route points""" diff --git a/config/server.yaml b/config/server.yaml index 03e260d..9ba8715 100644 --- a/config/server.yaml +++ b/config/server.yaml @@ -11,6 +11,7 @@ server: port: 8080 name: BW3 Server # name of the BW3 Server instance useBroadcast: no # serve server ip on broadcast request + log: true # enable log file alarmRouter: - Router 1 From fb703fbf9659910b3d52235fdce094acbed4224e Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Sat, 13 Mar 2021 17:41:25 +0100 Subject: [PATCH 10/13] fix issue if additionalWildcard is not set (eg. descriptor) --- boswatch/wildcard.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/boswatch/wildcard.py b/boswatch/wildcard.py index 3519502..3c7debd 100644 --- a/boswatch/wildcard.py +++ b/boswatch/wildcard.py @@ -97,8 +97,9 @@ def replaceWildcards(message, bwPacket): if field is not None: message = message.replace(wildcard, field) - for wildcard, field in _additionalWildcards.items(): + for wildcard, fieldName in _additionalWildcards.items(): + field = bwPacket.get(fieldName) if field is not None: - message = message.replace(wildcard, bwPacket.get(field)) + message = message.replace(wildcard, field) return message From d0f0792793d39cbddc617156110de0bc94a8c97d Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Wed, 4 May 2022 23:01:40 +0200 Subject: [PATCH 11/13] Disable most logging by default --- boswatch/router/routerManager.py | 2 ++ config/logger_client.ini | 2 +- config/logger_server.ini | 2 +- config/server.yaml | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/boswatch/router/routerManager.py b/boswatch/router/routerManager.py index bd4b434..b4e6e55 100644 --- a/boswatch/router/routerManager.py +++ b/boswatch/router/routerManager.py @@ -31,6 +31,7 @@ class RouterManager: def __init__(self): """!Create new router""" + self.config = None self._routerDict = {} self._startTime = int(time.time()) @@ -40,6 +41,7 @@ class RouterManager: @param config: instance of ConfigYaml class @return True or False""" + self.config = config self._routerDict = {} # all routers and instances of modules/plugins would be destroyed routerDict_tmp = {} logging.debug("build routers") diff --git a/config/logger_client.ini b/config/logger_client.ini index fc97d55..bdaacbe 100644 --- a/config/logger_client.ini +++ b/config/logger_client.ini @@ -33,7 +33,7 @@ class=handlers.TimedRotatingFileHandler interval=midnight backupCount=7 formatter=complex -level=DEBUG +level=ERROR args=('log/client.log',) [handler_screen] diff --git a/config/logger_server.ini b/config/logger_server.ini index faf2f45..b0c591e 100644 --- a/config/logger_server.ini +++ b/config/logger_server.ini @@ -33,7 +33,7 @@ class=handlers.TimedRotatingFileHandler interval=midnight backupCount=7 formatter=complex -level=DEBUG +level=ERROR args=('log/server.log',) [handler_screen] diff --git a/config/server.yaml b/config/server.yaml index 9ba8715..3cb07b1 100644 --- a/config/server.yaml +++ b/config/server.yaml @@ -11,7 +11,7 @@ server: port: 8080 name: BW3 Server # name of the BW3 Server instance useBroadcast: no # serve server ip on broadcast request - log: true # enable log file + log: false # enable log file alarmRouter: - Router 1 From efeb271de41663919dc67a9b7ece4528e02d7297 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Mon, 23 May 2022 23:20:54 +0200 Subject: [PATCH 12/13] Documentation, fix config flag for logging --- boswatch/router/routerManager.py | 2 +- config/server.yaml | 2 +- docu/docs/config.md | 18 ++++++++++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/boswatch/router/routerManager.py b/boswatch/router/routerManager.py index b4e6e55..dad37e9 100644 --- a/boswatch/router/routerManager.py +++ b/boswatch/router/routerManager.py @@ -118,7 +118,7 @@ class RouterManager: else: logging.warning("unknown router: %s", routerName) - if self.config.get('server.logging', False): + if self.config.get("server", "logging", default=False): self._saveStats() # write stats to stats file def cleanup(self): diff --git a/config/server.yaml b/config/server.yaml index 3cb07b1..57c9f0b 100644 --- a/config/server.yaml +++ b/config/server.yaml @@ -11,7 +11,7 @@ server: port: 8080 name: BW3 Server # name of the BW3 Server instance useBroadcast: no # serve server ip on broadcast request - log: false # enable log file + logging: False # enable log file alarmRouter: - Router 1 diff --git a/docu/docs/config.md b/docu/docs/config.md index 08a761f..3350341 100644 --- a/docu/docs/config.md +++ b/docu/docs/config.md @@ -157,15 +157,16 @@ decoder: ``` --- -## Server +

Server

Nachfolgend alle Paramater der Server Konfiguration ### `server:` |Feld|Beschreibung|Default| |----|------------|-------| -|port|Port auf dem der Server lauscht|8080 +|port|Port auf dem der Server lauscht| 8080 |name|Name zur Identifizierung der Server Instanz|| |useBroadcast|Verbindungsdaten per Broadcast Server bereitstellen|no| +|logging|Aktivieren / Deaktivieren des Schreibens von Statistik-Dateien|False| --- ### `alarmRouter:` @@ -215,3 +216,16 @@ router: ## Module/Plugins Die möglichen Einstellungen der einzelnen Module und Plugins sind im jeweiligen Kapitel aufgelistet. + +--- +## Logging + +Um den Datenträger, auf dem Boswatch läuft, zu schützen ist das Logging in +Dateien standartmäßig auf Fehlermeldungen begrenzt. +In den Dateien `logger_client.ini` bzw `logger_server.ini` kann dies +entsprechend im Bereich `handler_file` unter `level=` angepasst werden. + +Das Schreiben einer Statistik-Datei, welche die Durchläufe aller Module +und Plugins dokumentiert, kann in der Server-Konfiguration über den Parameter +`logging` aktiviert werden. +(siehe [Server-Konfiguration](#server-configuration)) From 07953e0d3bbfd1eabf57b21a8af7be0c66af1ea6 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Tue, 24 Jan 2023 13:27:23 +0100 Subject: [PATCH 13/13] Typo --- docu/docs/config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docu/docs/config.md b/docu/docs/config.md index 3350341..5ab376f 100644 --- a/docu/docs/config.md +++ b/docu/docs/config.md @@ -158,7 +158,7 @@ decoder: ---

Server

-Nachfolgend alle Paramater der Server Konfiguration +Nachfolgend alle Parameter der Server Konfiguration ### `server:` |Feld|Beschreibung|Default|