mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-08-22 01:57:43 +00:00
Merge aa-notify: precompile filter regexes
Precompile each filter regex with re.compile so they don't need to be recompiled for each log message when using re.match directly. Signed-off-by: Georgia Garcia <georgia.garcia@canonical.com> MR: https://gitlab.com/apparmor/apparmor/-/merge_requests/1158 Approved-by: Christian Boltz <apparmor@cboltz.de> Merged-by: Christian Boltz <apparmor@cboltz.de>
This commit is contained in:
commit
909e330fd0
@ -94,17 +94,17 @@ def format_event(event, logsource):
|
||||
|
||||
def is_event_in_filter(event, filters):
|
||||
"""Checks if event is in filter"""
|
||||
if filters['profile'] and event.profile and not re.match(filters['profile'], event.profile):
|
||||
if filters['profile'] and event.profile and not filters['profile_re'].match(event.profile):
|
||||
return False
|
||||
if filters['operation'] and event.operation and not re.match(filters['operation'], event.operation):
|
||||
if filters['operation'] and event.operation and not filters['operation_re'].match(event.operation):
|
||||
return False
|
||||
if filters['name'] and event.name and not re.match(filters['name'], event.name):
|
||||
if filters['name'] and event.name and not filters['name_re'].match(event.name):
|
||||
return False
|
||||
if filters['denied_mask'] and event.denied_mask and not re.match(filters['denied_mask'], event.denied_mask):
|
||||
if filters['denied_mask'] and event.denied_mask and not filters['denied_mask_re'].match(event.denied_mask):
|
||||
return False
|
||||
if filters['net_family'] and event.net_family and not re.match(filters['net_family'], event.net_family):
|
||||
if filters['net_family'] and event.net_family and not filters['net_family_re'].match(event.net_family):
|
||||
return False
|
||||
if filters['net_sock_type'] and event.net_sock_type and not re.match(filters['net_sock_type'], event.net_sock_type):
|
||||
if filters['net_sock_type'] and event.net_sock_type and not filters['net_sock_type_re'].match(event.net_sock_type):
|
||||
return False
|
||||
return True
|
||||
|
||||
@ -380,6 +380,24 @@ def read_notify_conf(path, shell_config):
|
||||
return {}
|
||||
|
||||
|
||||
def compile_filter_regex(filters):
|
||||
"""Compile each filter regex and add it to filters"""
|
||||
if filters['profile']:
|
||||
filters['profile_re'] = re.compile(filters['profile'])
|
||||
if filters['operation']:
|
||||
filters['operation_re'] = re.compile(filters['operation'])
|
||||
if filters['name']:
|
||||
filters['name_re'] = re.compile(filters['name'])
|
||||
if filters['denied_mask']:
|
||||
filters['denied_mask_re'] = re.compile(filters['denied_mask'])
|
||||
if filters['net_family']:
|
||||
filters['net_family_re'] = re.compile(filters['net_family'])
|
||||
if filters['net_sock_type']:
|
||||
filters['net_sock_type_re'] = re.compile(filters['net_sock_type'])
|
||||
|
||||
return filters
|
||||
|
||||
|
||||
def main():
|
||||
"""Run aa-notify.
|
||||
|
||||
@ -561,6 +579,8 @@ def main():
|
||||
if getattr(args, 'filter.socket'):
|
||||
filters['net_sock_type'] = getattr(args, 'filter.socket')
|
||||
|
||||
filters = compile_filter_regex(filters)
|
||||
|
||||
# Warn if use_group is defined and current group does not match defined
|
||||
if 'use_group' in config['']:
|
||||
user = pwd.getpwuid(os.geteuid())[0]
|
||||
|
Loading…
x
Reference in New Issue
Block a user