mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-08-22 01:57:43 +00:00
logprof/genprof and related utilities in python. Because the branch that was worked on was not based on the apparmor tree, not all of the history can be maintained for files that are not newly created or entirely rewritten in the branch. (This merge also includes a subsequent commit to the branch I was merging from which includes my missed bzr add of utils/apparmor/translations.py)
54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
#!/usr/bin/python
|
|
# ----------------------------------------------------------------------
|
|
# Copyright (C) 2013 Kshitij Gupta <kgupta8592@gmail.com>
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of version 2 of the GNU General Public
|
|
# License as published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# ----------------------------------------------------------------------
|
|
import argparse
|
|
import os
|
|
|
|
import apparmor.aa as apparmor
|
|
|
|
# setup module translations
|
|
from apparmor.translations import init_translation
|
|
_ = init_translation()
|
|
|
|
parser = argparse.ArgumentParser(description=_('Process log entries to generate profiles'))
|
|
parser.add_argument('-d', '--dir', type=str, help=_('path to profiles'))
|
|
parser.add_argument('-f', '--file', type=str, help=_('path to logfile'))
|
|
parser.add_argument('-m', '--mark', type=str, help=_('mark in the log to start processing after'))
|
|
args = parser.parse_args()
|
|
|
|
profiledir = args.dir
|
|
filename = args.file
|
|
logmark = args.mark or ''
|
|
|
|
|
|
if filename:
|
|
if not os.path.isfile(filename):
|
|
raise apparmor.AppArmorException(_('The logfile %s does not exist. Please check the path') % filename)
|
|
else:
|
|
apparmor.filename = filename
|
|
|
|
aa_mountpoint = apparmor.check_for_apparmor()
|
|
if not aa_mountpoint:
|
|
raise apparmor.AppArmorException(_('It seems AppArmor was not started. Please enable AppArmor and try again.'))
|
|
|
|
if profiledir:
|
|
apparmor.profile_dir = apparmor.get_full_path(profiledir)
|
|
if not os.path.isdir(apparmor.profile_dir):
|
|
raise apparmor.AppArmorException("%s is not a directory."%profiledir)
|
|
|
|
apparmor.loadincludes()
|
|
|
|
apparmor.do_logprof_pass(logmark)
|
|
|