ApolMainWindow: revise policy and permmap loading for status messages

Revise ordering of initialization so log messages about permisison map and
policy loading can be seen on the status bar.  Also fix exception handling
so a failure loading the policy specified on the CLI is handled.
This commit is contained in:
Chris PeBenito 2016-03-30 13:47:20 -04:00
parent c6198c4fed
commit 8f907fe0f0

View File

@ -1,4 +1,4 @@
# Copyright 2015, Tresys Technology, LLC # Copyright 2015-2016, Tresys Technology, LLC
# #
# This file is part of SETools. # This file is part of SETools.
# #
@ -46,28 +46,22 @@ class ApolMainWindow(SEToolsWidget, QMainWindow):
def __init__(self, filename): def __init__(self, filename):
super(ApolMainWindow, self).__init__() super(ApolMainWindow, self).__init__()
self.log = logging.getLogger(__name__) self.log = logging.getLogger(__name__)
self._permmap = None
self._policy = None
self.setupUi()
self.load_permmap()
if filename: if filename:
self._policy = SELinuxPolicy(filename) self.load_policy(filename)
else:
self._policy = None
try: self.update_window_title()
# try to load default permission map
self._permmap = PermissionMap()
except (IOError, OSError) as ex:
self.log.info("Failed to load default permission map: {0}".format(ex))
self._permmap = None
self.setupUi()
def setupUi(self): def setupUi(self):
self.load_ui("apol.ui") self.load_ui("apol.ui")
self.tab_counter = 0 self.tab_counter = 0
self.update_window_title()
# set up error message dialog # set up error message dialog
self.error_msg = QMessageBox(self) self.error_msg = QMessageBox(self)
self.error_msg.setStandardButtons(QMessageBox.Ok) self.error_msg.setStandardButtons(QMessageBox.Ok)
@ -112,9 +106,13 @@ class ApolMainWindow(SEToolsWidget, QMainWindow):
def select_policy(self): def select_policy(self):
filename = QFileDialog.getOpenFileName(self, "Open policy file", ".")[0] filename = QFileDialog.getOpenFileName(self, "Open policy file", ".")[0]
if filename: if filename:
self.load_policy(filename)
def load_policy(self, filename):
try: try:
self._policy = SELinuxPolicy(filename) self._policy = SELinuxPolicy(filename)
except Exception as ex: except Exception as ex:
self.log.critical("Failed to load policy \"{0}\"".format(filename))
self.error_msg.critical(self, "Policy loading error", str(ex)) self.error_msg.critical(self, "Policy loading error", str(ex))
else: else:
self.update_window_title() self.update_window_title()
@ -125,12 +123,15 @@ class ApolMainWindow(SEToolsWidget, QMainWindow):
def select_permmap(self): def select_permmap(self):
filename = QFileDialog.getOpenFileName(self, "Open permission map file", ".")[0] filename = QFileDialog.getOpenFileName(self, "Open permission map file", ".")[0]
if filename: if filename:
self.load_permmap(filename)
def load_permmap(self, filename=None):
try: try:
self._permmap = PermissionMap(filename) self._permmap = PermissionMap(filename)
except Exception as ex: except Exception as ex:
self.log.critical("Failed to load default permission map: {0}".format(ex))
self.error_msg.critical(self, "Permission map loading error", str(ex)) self.error_msg.critical(self, "Permission map loading error", str(ex))
else: else:
if self._policy: if self._policy:
self._permmap.map_policy(self._policy) self._permmap.map_policy(self._policy)