remove old config class

This commit is contained in:
Bastian Schroll 2019-02-27 12:41:29 +01:00
parent e2ca436e5d
commit a879f27407
7 changed files with 16 additions and 202 deletions

View file

@ -1,131 +0,0 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""!
____ ____ ______ __ __ __ _____
/ __ )/ __ \/ ___/ | / /___ _/ /______/ /_ |__ /
/ __ / / / /\__ \| | /| / / __ `/ __/ ___/ __ \ /_ <
/ /_/ / /_/ /___/ /| |/ |/ / /_/ / /_/ /__/ / / / ___/ /
/_____/\____//____/ |__/|__/\__,_/\__/\___/_/ /_/ /____/
German BOS Information Script
by Bastian Schroll
@file: config.py
@date: 25.12.2017
@author: Bastian Schroll
@description: Module for the configuration
"""
import logging
import configparser
logging.debug("- %s loaded", __name__)
class Config:
_sharePoints = {}
def __init__(self):
"""!Create a new config object and load the ini file directly"""
self._config = configparser.ConfigParser()
def loadConfigFile(self, configPath, sharePoint=""):
"""!loads a given configuration in the class wide config variable
@param configPath: Path to the config file
@param sharePoint: If you want to share the config set name here
@return True or False"""
logging.debug("load config file from: %s", configPath)
try:
self._config.read(configPath, "utf-8")
if sharePoint:
self._shareConfig(sharePoint)
return True
except: # pragma: no cover
logging.exception("cannot load config file")
return False
def _shareConfig(self, sharePoint):
"""!Shares the configuration
Shares the local _config to the class wide global _sharedConfig
@param sharePoint: Name of the global share point
@return True or False"""
if sharePoint in self._sharePoints:
logging.error("cannot share config - name is always in use: %s", sharePoint)
return False
else:
self._sharePoints[sharePoint] = self._config
logging.debug("add config sharePoint: %s", sharePoint)
return True
def getInt(self, section, key, sharePoint=""):
"""!Method to read a single config entry as integer
@param section: Section to read from
@param key: Value to read
@param sharePoint: Name of the global config share (empty is only local)
@return An Integer or None"""
value = self._get(section, key, sharePoint)
if value is None:
return None
return int(value)
def getBool(self, section, key, sharePoint=""):
"""!Method to read a single config entry as boolean
@param section: Section to read from
@param key: Value to read
@param sharePoint: Name of the global config share (empty is only local)
@return True or False"""
if self._get(section, key, sharePoint).lower() in ["1", "true", "yes"]:
return True
return False
def getStr(self, section, key, sharePoint=""):
"""!Method to read a single config entry as string
@param section: Section to read from
@param key: Value to read
@param sharePoint: Name of the global config share (empty is only local)
@return The value or None"""
value = self._get(section, key, sharePoint)
if value is None:
return None
return str(value)
def _get(self, section, key, sharePoint=""):
"""!Method to read a single config entry
@param section: Section to read from
@param key: Value to read
@param sharePoint: Name of the global config share (empty is only local)
@return The value or None"""
if sharePoint:
try:
return self._sharePoints[sharePoint].get(section, key)
except KeyError:
logging.error("no sharePoint named: %s", sharePoint)
except configparser.NoSectionError:
logging.warning("no shared config section: %s", section)
except configparser.NoOptionError:
logging.warning("no shared config option: %s", key)
except: # pragma: no cover
logging.exception("error while reading shared config")
return None
else:
try:
return self._config.get(section, key)
except configparser.NoSectionError:
logging.warning("no local config section: %s", section)
except configparser.NoOptionError:
logging.warning("no local config option: %s", key)
except: # pragma: no cover
logging.exception("error while reading local config")
return None
def getAllSharepoints(self):
"""!Return a python dict of all set sharepoints
@return Sharepoint dict"""
return self._sharePoints

View file

@ -18,7 +18,7 @@ import logging
import time import time
from boswatch.utils import paths from boswatch.utils import paths
from boswatch.config import Config from boswatch import configYaml
from boswatch.utils import wildcard from boswatch.utils import wildcard
logging.debug("- %s loaded", __name__) logging.debug("- %s loaded", __name__)
@ -52,9 +52,8 @@ class Plugin:
self._alarmErrorCount = 0 self._alarmErrorCount = 0
self._teardownErrorCount = 0 self._teardownErrorCount = 0
if paths.fileExist(paths.PLUGIN_PATH + pluginName + "/" + pluginName + ".ini"): if paths.fileExist(paths.PLUGIN_PATH + pluginName + "/" + pluginName + ".yaml"):
self.config = Config() self.config = configYaml.loadConfigFile(paths.PLUGIN_PATH + pluginName + "/" + pluginName + ".yaml")
self.config.loadConfigFile(paths.PLUGIN_PATH + pluginName + "/" + pluginName + ".ini")
else: else:
logging.debug("no config for %s found", pluginName) logging.debug("no config for %s found", pluginName)

View file

@ -20,7 +20,7 @@ import os
import time import time
import importlib import importlib
from boswatch.config import Config from boswatch import configYaml
from boswatch.utils import paths from boswatch.utils import paths
logging.debug("- %s loaded", __name__) logging.debug("- %s loaded", __name__)
@ -33,7 +33,7 @@ class PluginManager:
def __init__(self): def __init__(self):
"""!init comment""" """!init comment"""
self._config = Config() self._config = configYaml.loadConfigSharepoint("serverConfig")
self._pluginList = [] self._pluginList = []
def searchPluginDir(self): def searchPluginDir(self):
@ -45,7 +45,7 @@ class PluginManager:
if not os.path.isdir(location) or not name + ".py" in os.listdir(location): if not os.path.isdir(location) or not name + ".py" in os.listdir(location):
continue continue
pluginPriority = self._config.getInt("Plugins", name, "serverConfig") pluginPriority = self._config["plugins"][name]
if pluginPriority is None: if pluginPriority is None:
logging.warning("no entry in server config for plugin: %s", name) logging.warning("no entry in server config for plugin: %s", name)

View file

@ -1,60 +0,0 @@
# -*- coding: utf-8 -*-
# ____ ____ ______ __ __ __ _____
# / __ )/ __ \/ ___/ | / /___ _/ /______/ /_ |__ /
# / __ / / / /\__ \| | /| / / __ `/ __/ ___/ __ \ /_ <
# / /_/ / /_/ /___/ /| |/ |/ / /_/ / /_/ /__/ / / / ___/ /
#/_____/\____//____/ |__/|__/\__,_/\__/\___/_/ /_/ /____/
# German BOS Information Script
# by Bastian Schroll
[Server]
PORT = 8080
Name = BW3 Server
[FMS]
UseLists =
Allowed =
Denied =
RegEx =
[POCSAG]
UseLists =
Allowed =
Denied =
Range =
RegEx =
[ZVEI]
UseLists =
Allowed =
Denied =
Range =
RegEx =
[Filter]
UseDoubleFilter = 0
UseRegexFilter = 0
[doubleFilter]
# max number of entrys to save for comparison
MaxEntry = 30
# time to ignore same alarm in seconds
IgnoreTime = 10
# include pocsag msg in comparison
CheckMsg = 0
[regexFilter]
[Description]
# load CSV description files with short and lon description
fms = 0
pocsag = 0
zvei = 0
[Plugins]
# here you can enable needed plugins
# 0 is disabled
# all greater than 0 enable the plugin
# the higher the number the earlier the plugin is called on alarm
# we call ist Plugin Prioority
template = 1

View file

@ -10,11 +10,16 @@
server: server:
name: BW3 Server # name of the BW3 Server instance name: BW3 Server # name of the BW3 Server instance
plugins:
template: 1
filter: filter:
doubleFilter: doubleFilter:
maxEntry: 30 maxEntry: 30
ignoreTime: 10 ignoreTime: 10
checkMsg: no checkMsg: no
#[Server] #[Server]
#PORT = 8080 #PORT = 8080
#Name = BW3 Server #Name = BW3 Server
@ -66,3 +71,4 @@ filter:
## the higher the number the earlier the plugin is called on alarm ## the higher the number the earlier the plugin is called on alarm
## we call ist Plugin Prioority ## we call ist Plugin Prioority
#template = 1 #template = 1

View file

@ -1,4 +0,0 @@
[Example]
String = Hello World!
bool = 1
integer = 12

View file

@ -0,0 +1,4 @@
example:
string: Hello World!
bool: true
integer: 12