[apparmor] [patch] [3/7] Copy code to ask for adding includes to aa.py ask_the_questions()

Christian Boltz apparmor at cboltz.de
Sun Jan 15 15:24:09 UTC 2017


Hello,

$subject.

This is an exact copy of the code in aa-mergeprof (with whitespace changed).



[ 03-aa.py-ask-for-includes.diff ]

--- utils/apparmor/aa.py	2017-01-11 22:59:32.112384000 +0100
+++ utils/apparmor/aa.py	2017-01-14 22:56:12.081131108 +0100
@@ -1,6 +1,6 @@
 # ----------------------------------------------------------------------
 #    Copyright (C) 2013 Kshitij Gupta <kgupta8592 at gmail.com>
-#    Copyright (C) 2014-2016 Christian Boltz <apparmor at cboltz.de>
+#    Copyright (C) 2014-2017 Christian Boltz <apparmor at cboltz.de>
 #
 #    This program is free software; you can redistribute it and/or
 #    modify it under the terms of version 2 of the GNU General Public
@@ -1520,6 +1520,39 @@
                     debug_logger.debug("Ignoring events for non-existing profile %s" % combine_name(profile, hat))
                     continue
 
+                #Add the includes from the other profile to the user profile
+                done = False
+
+                options = []
+                for inc in log_dict[aamode][profile][hat]['include'].keys():
+                    if not inc in aa[profile][hat]['include'].keys():
+                        options.append('#include <%s>' %inc)
+
+                default_option = 1
+
+                q = aaui.PromptQuestion()
+                q.options = options
+                q.selected = default_option - 1
+                q.headers = [_('File includes'), _('Select the ones you wish to add')]
+                q.functions = ['CMD_ALLOW', 'CMD_IGNORE_ENTRY', 'CMD_ABORT', 'CMD_FINISHED']
+                q.default = 'CMD_ALLOW'
+
+                while not done and options:
+                    ans, selected = q.promptUser()
+                    if ans == 'CMD_IGNORE_ENTRY':
+                        done = True
+                    elif ans == 'CMD_ALLOW':
+                        selection = options[selected]
+                        inc = re_match_include(selection)
+                        deleted = apparmor.aa.delete_duplicates(aa[profile][hat], inc)
+                        aa[profile][hat]['include'][inc] = True
+                        options.pop(selected)
+                        aaui.UI_Info(_('Adding %s to the file.') % selection)
+                        if deleted:
+                            aaui.UI_Info(_('Deleted %s previous matching profile entries.') % deleted)
+                    elif ans == 'CMD_FINISHED':
+                        return
+
                 for ruletype in ruletypes:
                     for rule_obj in log_dict[aamode][profile][hat][ruletype].rules:
                         # XXX aa-mergeprof also has this code - if you change it, keep aa-mergeprof in sync!





Regards,

Christian Boltz
-- 
[Fontlinge für Linux 0.0.2] Warte nur ab, die 0.0.3 funktioniert sogar,
wenn man nicht "ratti" heisst. ;-)                              [Ratti]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20170115/70497cb0/attachment-0001.pgp>


More information about the AppArmor mailing list