diff --git a/boswatch.py b/boswatch.py index 76d8f99..0c2457f 100755 --- a/boswatch.py +++ b/boswatch.py @@ -291,8 +291,9 @@ try: # Load location RegEx # try: - from includes import locationCoordinates - locationCoordinates.loadFilters() + if globalVars.config.getboolean("LocationCoordinates", "locationCoordinates"): + from includes import locationCoordinates + locationCoordinates.loadFilters() except: # It's an error, but we could work without that stuff... logging.error("cannot load location regex") diff --git a/config/config.template.ini b/config/config.template.ini index 8c4ed23..b468c37 100644 --- a/config/config.template.ini +++ b/config/config.template.ini @@ -127,22 +127,29 @@ geo_enable = 0 geo_format = #C(\d{2})(\d{5}),(\d{2})(\d{5})# geo_order = LON, lon, LAT, lat -#[LocationCoordinates] +[LocationCoordinates] # Regex Coordinate replacement (only for POC) # All fields in data structure can be used, also dynamically added fields that have been evaluated in "schemaPOCMsg". # Multiple search criteria can be given, then all of them must be hit (AND-condition). # Coordinates must be the last field, consisting of latitude and longitude (order is important), split by comma. # First match has priority; search will not proceed as soon as one hit is found. # Important: Semicolon and comma must not be part of a field or regex, as they are used internally for splitting up the config value correctly. -#LocationName = field1;regex1;...;lat, lon + +# Do you want to enable this feature? (0 - off | 1 - on) +locationCoordinates = 0 + +# LocationName = field1;regex1;...;lat, lon # Examples: + # msg starting with "BOSWatch-Test" -Location1 = msg;^BOSWatch-Test;49.344394413024084, 8.167496841047555 +#Location1 = msg;^BOSWatch-Test;49.344394413024084, 8.167496841047555 + # Objekt containing "VS Wachtenburg" -Location2 = Objekt;VS Wachtenburg;49.437673, 8.173793 +#Location2 = Objekt;VS Wachtenburg;49.437673, 8.173793 + # Ort starting with "B9 ", Ortsteil starting with "16 AK " -B9_16 = Ort;^B9 .*$;Ortsteil;^16 AK .*$;49.428685, 8.408548 +#B9_16 = Ort;^B9 .*$;Ortsteil;^16 AK .*$;49.428685, 8.408548 [multicastAlarm] diff --git a/includes/decoders/poc.py b/includes/decoders/poc.py index d51e7d0..898085c 100644 --- a/includes/decoders/poc.py +++ b/includes/decoders/poc.py @@ -163,7 +163,8 @@ def decode(freq, decoded): data["lon"] = lon data["lat"] = lat else: - locationCoordinates.findCoordinates(data) + if globalVars.config.getboolean("LocationCoordinates", "locationCoordinates"): + locationCoordinates.findCoordinates(data) # Add function as character a-d to dataset data["functionChar"] = data["function"].replace("1", "a").replace("2", "b").replace("3", "c").replace("4", "d") diff --git a/includes/locationCoordinates.py b/includes/locationCoordinates.py index f5a18c9..ef95ecd 100644 --- a/includes/locationCoordinates.py +++ b/includes/locationCoordinates.py @@ -20,28 +20,27 @@ filterList = [] def loadFilters(): try: - if globalVars.config.has_section("LocationCoordinates"): - logging.debug("Loading location coordinates") - - for key,val in globalVars.config.items("LocationCoordinates"): - logging.debug(" - %s = %s", key, val) - filterData = val.split(";") - - # at least 3 items needed (field1;pattern1;lat,lon), and in any case an uneven count of items - if len(filterData) < 3 and len(filterData) % 2 == 0: - logging.debug("Invalid argument count; skipping") - else: - # first store all regular expressions in list - filterItem = [] - i = 0 + logging.debug("Loading location coordinates") + + for key,val in globalVars.config.items("LocationCoordinates"): + logging.debug(" - %s = %s", key, val) + filterData = val.split(";") + + # at least 3 items needed (field1;pattern1;lat,lon), and in any case an uneven count of items + if len(filterData) < 3 and len(filterData) % 2 == 0: + logging.debug("Invalid argument count; skipping") + else: + # first store all regular expressions in list + filterItem = [] + i = 0 + + while i < len(filterData) - 2: + filterItem.append({"field": filterData[i], "pattern": filterData[i+1]}) - while i < len(filterData) - 2: - filterItem.append({"field": filterData[i], "pattern": filterData[i+1]}) - - # step to next field - i += 2 - # then transfer to filterList; include coordinates - filterList.append({"name": key, "filterItem": filterItem, "coordinates": filterData[len(filterData) - 1]}) + # step to next field + i += 2 + # then transfer to filterList; include coordinates + filterList.append({"name": key, "filterItem": filterItem, "coordinates": filterData[len(filterData) - 1]}) except: logging.error("cannot read config file") logging.debug("cannot read config file", exc_info=True)