diff --git a/bazarr/logger.py b/bazarr/logger.py index caf55cdb6..db7f2476f 100644 --- a/bazarr/logger.py +++ b/bazarr/logger.py @@ -94,7 +94,26 @@ class MyFilter(logging.Filter): return 1 -class BlacklistFilter(logging.Filter): +class ArgsFilteringFilter(logging.Filter): + def filter_args(self, record, func): + if isinstance(record.args, (types.ListType, types.TupleType)): + final_args = [] + for arg in record.args: + if not isinstance(arg, basestring): + final_args.append(arg) + continue + + final_args.append(func(arg)) + record.args = type(record.args)(final_args) + elif isinstance(record.args, dict): + for key, arg in record.args.items(): + if not isinstance(arg, basestring): + continue + + record.args[key] = func(arg) + + +class BlacklistFilter(ArgsFilteringFilter): """ Log filter for blacklisted tokens and passwords """ @@ -106,7 +125,7 @@ class BlacklistFilter(logging.Filter): def mask_apikeys(s): apikeys = re.findall(r'apikey(?:=|%3D)([a-zA-Z0-9]+)', s) for apikey in apikeys: - s = arg.replace(apikey, 8 * '*' + apikey[-2:]) + s = s.replace(apikey, 8 * '*' + apikey[-2:]) return s try: @@ -114,27 +133,13 @@ class BlacklistFilter(logging.Filter): for apikey in apikeys: record.msg = record.msg.replace(apikey, 8 * '*' + apikey[-2:]) - if isinstance(record.args, (types.ListType, types.TupleType)): - final_args = [] - for arg in record.args: - if not isinstance(arg, basestring): - final_args.append(arg) - continue - - final_args.append(mask_apikeys(arg)) - record.args = type(record.args)(final_args) - elif isinstance(record.args, dict): - for key, arg in record.args.items(): - if not isinstance(arg, basestring): - continue - - record.args[key] = mask_apikeys(arg) + self.filter_args(record, mask_apikeys) except: pass return 1 -class PublicIPFilter(logging.Filter): +class PublicIPFilter(ArgsFilteringFilter): """ Log filter for public IP addresses """ @@ -155,22 +160,7 @@ class PublicIPFilter(logging.Filter): for ip in ipv4: record.msg = record.msg.replace(ip, ip.partition('.')[0] + '.***.***.***') - if isinstance(record.args, (types.ListType, types.TupleType)): - final_args = [] - for arg in record.args: - if not isinstance(arg, basestring): - final_args.append(arg) - continue - - final_args.append(mask_ipv4(arg)) - - record.args = type(record.args)(final_args) - elif isinstance(record.args, dict): - for key, arg in record.args.items(): - if not isinstance(arg, basestring): - continue - - record.args[key] = mask_ipv4(arg) + self.filter_args(record, mask_ipv4) except: pass