diff --git a/README.md b/README.md index bad33ae..823c018 100644 --- a/README.md +++ b/README.md @@ -48,13 +48,23 @@ For each Plugin that requires configurations a own Section with his Name is avai For the other Functions see "Usage" below. -##### Filtering Functions -For the Filter Functions see Section `[Filters]` -Syntax: INDIVIDUAL_NAME = TYP;PLUGIN;REGEX -TYP = FMS|ZVEI|POC -PLUGIN = Name of the Plugin -REGEX = Filtering with RegEx -my_own_Filter = ZVEI;template;25[0-9F]{3} #all ZVEI alarm to Plugin template where 25### +##### Filtering Functions (RegEX) +For the RegEX Filter Functions see Section `[Filters]` +http://www.regexr.com/ - RegEX Test Tool an Documentation +No Filter for a Typ/Plugin Combination = all Data pass + +Syntax: INDIVIDUAL_NAME = TYP;DATAFIELD;PLUGIN;FREQUENZ;REGEX +- TYP = the Data Typ (FMS|ZVEI|POC) +- DATAFIELD = the field of the Data Array (See interface.txt) +- PLUGIN = the name of the Plugin to call with this Filter (* for all) +- FREQUENZ = the Frequenz to use the Filter (for more SDR Sticks (* for all)) +- REGEX = the RegEX + +only ZVEI to all Plugins with 25### at 85.5MHz +testfilter = ZVEI;zvei;*;85500000;25[0-9]{3} + +only POCSAG to MySQL with the text "ALARM:" in the Message +pocTest = POC;msg;MySQL;*;ALARM: ##### Web Frontend Put the Files in Folder /wwww/ into your local Webserver Folder (/var/www/). diff --git a/config/config.template.ini b/config/config.template.ini index f26d802..e7e07bb 100644 --- a/config/config.template.ini +++ b/config/config.template.ini @@ -50,17 +50,18 @@ filter_range_end = 9999999 #RegEX Filter Configuration #http://www.regexr.com/ - RegEX Test Tool an Documentation #No Filter for a Typ/Plugin Combination = all Data pass -#INDIVIDUAL_NAME = TYP;DATAFIELD;PLUGIN;REGEX -#TYP = the Data Typ (FMS|ZVEI|POC) +#INDIVIDUAL_NAME = TYP;DATAFIELD;PLUGIN;FREQUENZ;REGEX +#TYP = the Data Typ (FMS|ZVEI|POC) #DATAFIELD = the field of the Data Array (See interface.txt) -#PLUGIN = the name of the Plugin to call with this Filter -#REGEX = the RegEX +#PLUGIN = the name of the Plugin to call with this Filter (* for all) +#FREQUENZ = the Frequenz to use the Filter (for more SDR Sticks (* for all)) +#REGEX = the RegEX -#only ZVEI to template with 25### -#testfilter = ZVEI;zvei;template;25[0-9]{3} +#only ZVEI to all Plugins with 25### at 85.5MHz +#testfilter = ZVEI;zvei;*;85500000;25[0-9]{3} #only POCSAG to MySQL with the text "ALARM:" in the Message -#pocTest = POC;msg;MySQL;ALARM: +#pocTest = POC;msg;MySQL;*;ALARM: [Plugins] diff --git a/includes/alarmHandler.py b/includes/alarmHandler.py index bbcc24f..c5d75ea 100644 --- a/includes/alarmHandler.py +++ b/includes/alarmHandler.py @@ -38,7 +38,7 @@ def processAlarm(typ,freq,data): #if enabled use RegEx-Filter if globals.config.getint("BOSWatch","useRegExFilter"): from includes import filter - if filter.checkFilters(data,typ,pluginName): + if filter.checkFilters(typ,data,pluginName,freq): logging.debug("call Plugin: %s", pluginName) plugin.run(typ,freq,data) logging.debug("return from: %s", pluginName) diff --git a/includes/filter.py b/includes/filter.py index 63ee3b6..52745b0 100644 --- a/includes/filter.py +++ b/includes/filter.py @@ -32,22 +32,24 @@ def loadFilters(): logging.debug(" - %s = %s", key, val) filter = val.split(";") #insert splitet Data into globals.filterList - globals.filterList.append({"name": key, "typ": filter[0], "dataField": filter[1], "plugin": filter[2], "regex": filter[3]}) + globals.filterList.append({"name": key, "typ": filter[0], "dataField": filter[1], "plugin": filter[2], "freq": filter[3], "regex": filter[4]}) except: logging.exception("cannot read config file") -def checkFilters(data,typ,plugin): +def checkFilters(typ,data,plugin,freq): """ Check the Typ/Plugin combination with the RegEX Filter If no Filter for the combination is found, Function returns True. - - @type data: map of data (structure see interface.txt) - @param data: Contains the parameter + @type typ: string (FMS|ZVEI|POC) @param typ: Typ of the dataset + @type data: map of data (structure see interface.txt) + @param data: Contains the parameter @type plugin: string @param plugin: Name of the Plugin to checked + @type freq: string + @param freq: frequency of the SDR Stick @requires: all Filters in the filterList @@ -55,13 +57,13 @@ def checkFilters(data,typ,plugin): @exception: Exception if Filter check failed """ try: - logging.debug("search Filter for %s to %s", typ, plugin) + logging.debug("search Filter for %s to %s at %s Hz", typ, plugin, freq) foundFilter = False #go to all Filter in globals.filterList for i in globals.filterList: - #if Typ/Plugin combination is found - if i["typ"] == typ and i["plugin"] == plugin: + #if Typ/Plugin/Freq combination is found + if i["typ"] == typ and (i["plugin"] == plugin or i['plugin'] == "*") and (i["freq"] == freq or i['freq'] == "*"): foundFilter = True logging.debug("found Filter: %s = %s", i["name"], i["regex"]) #Check the RegEX