mirror of
https://github.com/SELinuxProject/setools
synced 2025-04-08 10:31:21 +00:00
InfoFlowAnalysisTab: add permission exclude option
This commit is contained in:
parent
7938a89e0d
commit
897427e5da
@ -143,6 +143,20 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QPushButton" name="edit_permmap">
|
||||||
|
<property name="text">
|
||||||
|
<string>Edit...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Excluded Permissions:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -18,15 +18,18 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import copy
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSignal, Qt, QObject, QStringListModel, QThread
|
from PyQt5.QtCore import pyqtSignal, Qt, QObject, QStringListModel, QThread
|
||||||
from PyQt5.QtGui import QPalette, QTextCursor
|
from PyQt5.QtGui import QPalette, QTextCursor
|
||||||
from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, QScrollArea
|
from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, QScrollArea
|
||||||
from setools import InfoFlowAnalysis
|
from setools import InfoFlowAnalysis
|
||||||
|
from setools.exception import UnmappedClass, UnmappedPermission
|
||||||
|
|
||||||
from ..logtosignal import LogHandlerToSignal
|
from ..logtosignal import LogHandlerToSignal
|
||||||
from .excludetypes import ExcludeTypes
|
|
||||||
from ..widget import SEToolsWidget
|
from ..widget import SEToolsWidget
|
||||||
|
from .excludetypes import ExcludeTypes
|
||||||
|
from .permmapedit import PermissionMapEditor
|
||||||
|
|
||||||
|
|
||||||
class InfoFlowAnalysisTab(SEToolsWidget, QScrollArea):
|
class InfoFlowAnalysisTab(SEToolsWidget, QScrollArea):
|
||||||
@ -39,7 +42,21 @@ class InfoFlowAnalysisTab(SEToolsWidget, QScrollArea):
|
|||||||
|
|
||||||
@perm_map.setter
|
@perm_map.setter
|
||||||
def perm_map(self, pmap):
|
def perm_map(self, pmap):
|
||||||
self.query.perm_map = pmap
|
# copy permission map to keep enabled/disabled
|
||||||
|
# settings private to this map.
|
||||||
|
perm_map = copy.deepcopy(pmap)
|
||||||
|
|
||||||
|
# transfer enabled/disabled settings from
|
||||||
|
# current permission map, to the new map
|
||||||
|
for classname in self.query.perm_map.classes():
|
||||||
|
for mapping in self.query.perm_map.perms(classname):
|
||||||
|
try:
|
||||||
|
perm_map.mapping(classname, mapping.perm).enabled = mapping.enabled
|
||||||
|
except (UnmappedClass, UnmappedPermission):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# apply updated permission map
|
||||||
|
self.query.perm_map = perm_map
|
||||||
|
|
||||||
def __init__(self, parent, policy, perm_map):
|
def __init__(self, parent, policy, perm_map):
|
||||||
super(InfoFlowAnalysisTab, self).__init__(parent)
|
super(InfoFlowAnalysisTab, self).__init__(parent)
|
||||||
@ -63,6 +80,9 @@ class InfoFlowAnalysisTab(SEToolsWidget, QScrollArea):
|
|||||||
self.error_msg = QMessageBox(self)
|
self.error_msg = QMessageBox(self)
|
||||||
self.error_msg.setStandardButtons(QMessageBox.Ok)
|
self.error_msg.setStandardButtons(QMessageBox.Ok)
|
||||||
|
|
||||||
|
# set up perm map editor
|
||||||
|
self.permmap_editor = PermissionMapEditor(self, False)
|
||||||
|
|
||||||
# set up source/target autocompletion
|
# set up source/target autocompletion
|
||||||
type_completion_list = [str(t) for t in self.policy.types()]
|
type_completion_list = [str(t) for t in self.policy.types()]
|
||||||
type_completer_model = QStringListModel(self)
|
type_completer_model = QStringListModel(self)
|
||||||
@ -119,6 +139,7 @@ class InfoFlowAnalysisTab(SEToolsWidget, QScrollArea):
|
|||||||
self.flows_out.toggled.connect(self.flows_out_toggled)
|
self.flows_out.toggled.connect(self.flows_out_toggled)
|
||||||
self.min_perm_weight.valueChanged.connect(self.set_min_weight)
|
self.min_perm_weight.valueChanged.connect(self.set_min_weight)
|
||||||
self.exclude_types.clicked.connect(self.choose_excluded_types)
|
self.exclude_types.clicked.connect(self.choose_excluded_types)
|
||||||
|
self.edit_permmap.clicked.connect(self.open_permmap_editor)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Analysis mode
|
# Analysis mode
|
||||||
@ -194,6 +215,13 @@ class InfoFlowAnalysisTab(SEToolsWidget, QScrollArea):
|
|||||||
chooser = ExcludeTypes(self, self.policy)
|
chooser = ExcludeTypes(self, self.policy)
|
||||||
chooser.show()
|
chooser.show()
|
||||||
|
|
||||||
|
def open_permmap_editor(self):
|
||||||
|
self.permmap_editor.show(self.perm_map)
|
||||||
|
|
||||||
|
def apply_permmap(self, pmap):
|
||||||
|
# used only by permission map editor
|
||||||
|
self.query.perm_map = pmap
|
||||||
|
|
||||||
#
|
#
|
||||||
# Results runner
|
# Results runner
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user