mirror of
https://github.com/SELinuxProject/setools
synced 2025-04-27 05:39:29 +00:00
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:
parent
c6198c4fed
commit
8f907fe0f0
@ -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)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user