mirror of
https://github.com/SELinuxProject/setools
synced 2025-04-17 20:55:23 +00:00
parent
6927ea885b
commit
42c2bbd606
@ -1,12 +1,15 @@
|
||||
include ChangeLog
|
||||
include COPYING*
|
||||
include data/*
|
||||
include libqpol/*.h
|
||||
include libqpol/*.l
|
||||
include libqpol/*.y
|
||||
include libqpol/include/qpol/*.h
|
||||
include man/*
|
||||
include qhc/*
|
||||
include setools/perm_map
|
||||
include setoolsui/*.ui
|
||||
include setoolsui/apol/*.ui
|
||||
include setoolsui/apol/apol.qhc
|
||||
include tests/*.conf
|
||||
include tests/*.py
|
||||
include tests/perm_map
|
||||
|
@ -1 +0,0 @@
|
||||
../data/icons/Add.png
|
@ -22,6 +22,8 @@ import copy
|
||||
from collections import OrderedDict
|
||||
from errno import ENOENT
|
||||
|
||||
import pkg_resources
|
||||
|
||||
from . import exception
|
||||
from . import policyrep
|
||||
from .descriptors import PermissionMapDescriptor
|
||||
@ -48,15 +50,10 @@ class PermissionMap(object):
|
||||
if permmapfile:
|
||||
self.load(permmapfile)
|
||||
else:
|
||||
for path in ["data/", sys.prefix + "/share/setools/"]:
|
||||
try:
|
||||
self.load(path + "perm_map")
|
||||
break
|
||||
except (IOError, OSError) as err:
|
||||
if err.errno != ENOENT:
|
||||
raise
|
||||
else:
|
||||
raise RuntimeError("Unable to load default permission map.")
|
||||
distro = pkg_resources.get_distribution("setools")
|
||||
# pylint: disable=no-member
|
||||
path = "{0}/setools/perm_map".format(distro.location)
|
||||
self.load(path)
|
||||
|
||||
def __str__(self):
|
||||
return self.permmapfile
|
||||
|
@ -51,7 +51,7 @@ class BoolQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.boolquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("boolquery.ui")
|
||||
self.load_ui("apol/boolquery.ui")
|
||||
|
||||
# populate bool list
|
||||
self.bool_model = SEToolsListModel(self)
|
||||
|
@ -51,7 +51,7 @@ class BoundsQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.boundsquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("boundsquery.ui")
|
||||
self.load_ui("apol/boundsquery.ui")
|
||||
|
||||
# set up results
|
||||
self.table_results_model = BoundsTableModel(self)
|
||||
|
@ -51,7 +51,7 @@ class CategoryQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.categoryquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("categoryquery.ui")
|
||||
self.load_ui("apol/categoryquery.ui")
|
||||
|
||||
# populate category list
|
||||
self.category_model = SEToolsListModel(self)
|
||||
|
@ -92,7 +92,7 @@ class ChooseAnalysis(SEToolsWidget, QDialog):
|
||||
self.setupUi()
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("choose_analysis.ui")
|
||||
self.load_ui("apol/choose_analysis.ui")
|
||||
|
||||
def show(self, mls):
|
||||
analysis_map = {"Domain Transition Analysis": DomainTransitionAnalysisTab,
|
||||
|
@ -51,7 +51,7 @@ class CommonQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.commonquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("commonquery.ui")
|
||||
self.load_ui("apol/commonquery.ui")
|
||||
|
||||
# populate commons list
|
||||
self.common_model = SEToolsListModel(self)
|
||||
|
@ -51,7 +51,7 @@ class ConstraintQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.constraintquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("constraintquery.ui")
|
||||
self.load_ui("apol/constraintquery.ui")
|
||||
|
||||
# set up user autocompletion
|
||||
user_completion_list = [str(u) for u in self.policy.users()]
|
||||
|
@ -51,7 +51,7 @@ class DefaultQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.defaultquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("defaultquery.ui")
|
||||
self.load_ui("apol/defaultquery.ui")
|
||||
|
||||
# set up results
|
||||
self.table_results_model = DefaultTableModel(self)
|
||||
|
@ -53,7 +53,7 @@ class DomainTransitionAnalysisTab(AnalysisTab):
|
||||
|
||||
def setupUi(self):
|
||||
self.log.debug("Initializing UI.")
|
||||
self.load_ui("dta.ui")
|
||||
self.load_ui("apol/dta.ui")
|
||||
|
||||
# set up source/target autocompletion
|
||||
type_completion_list = [str(t) for t in self.policy.types()]
|
||||
|
@ -40,7 +40,7 @@ class ExcludeTypes(SEToolsWidget, QDialog):
|
||||
self.setupUi()
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("exclude_types.ui")
|
||||
self.load_ui("apol/exclude_types.ui")
|
||||
|
||||
# populate the attribute combo box:
|
||||
self.attr_model = SEToolsListModel(self)
|
||||
|
@ -50,7 +50,7 @@ class FSUseQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.fsusequery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("fsusequery.ui")
|
||||
self.load_ui("apol/fsusequery.ui")
|
||||
|
||||
# set up user autocompletion
|
||||
user_completion_list = [str(u) for u in self.policy.users()]
|
||||
|
@ -50,7 +50,7 @@ class GenfsconQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.genfsconquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("genfsconquery.ui")
|
||||
self.load_ui("apol/genfsconquery.ui")
|
||||
|
||||
# set up user autocompletion
|
||||
user_completion_list = [str(u) for u in self.policy.users()]
|
||||
|
@ -79,7 +79,7 @@ class InfoFlowAnalysisTab(AnalysisTab):
|
||||
|
||||
def setupUi(self):
|
||||
self.log.debug("Initializing UI.")
|
||||
self.load_ui("infoflow.ui")
|
||||
self.load_ui("apol/infoflow.ui")
|
||||
|
||||
# set up error message for missing perm map
|
||||
self.error_msg = QMessageBox(self)
|
||||
|
@ -50,7 +50,7 @@ class InitialSIDQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.initsidquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("initsidquery.ui")
|
||||
self.load_ui("apol/initsidquery.ui")
|
||||
|
||||
# set up user autocompletion
|
||||
user_completion_list = [str(u) for u in self.policy.users()]
|
||||
|
@ -24,6 +24,7 @@ import logging
|
||||
import json
|
||||
from errno import ENOENT
|
||||
|
||||
import pkg_resources
|
||||
from PyQt5.QtCore import pyqtSlot, Qt, QProcess
|
||||
from PyQt5.QtWidgets import QApplication, QFileDialog, QLineEdit, QMainWindow, QMessageBox
|
||||
from setools import __version__, PermissionMap, SELinuxPolicy
|
||||
@ -57,7 +58,7 @@ class ApolMainWindow(SEToolsWidget, QMainWindow):
|
||||
self.toggle_workspace_actions()
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("apol.ui")
|
||||
self.load_ui("apol/apol.ui")
|
||||
|
||||
self.tab_counter = 0
|
||||
|
||||
@ -645,17 +646,8 @@ class ApolMainWindow(SEToolsWidget, QMainWindow):
|
||||
if self.help_process.state() != QProcess.NotRunning:
|
||||
return
|
||||
|
||||
for path in ["qhc", sys.prefix + "/share/setools"]:
|
||||
helpfile = "{0}/apol.qhc".format(path)
|
||||
|
||||
try:
|
||||
if stat.S_ISREG(os.stat(helpfile).st_mode):
|
||||
break
|
||||
except (IOError, OSError) as err:
|
||||
if err.errno != ENOENT:
|
||||
raise
|
||||
else:
|
||||
self.log.critical("Unable to find apol help data (apol.qhc).")
|
||||
distro = pkg_resources.get_distribution("setools")
|
||||
helpfile = "{0}/setoolsgui/apol/apol.qhc".format(distro.location)
|
||||
|
||||
self.log.debug("Starting assistant with help file {0}".format(helpfile))
|
||||
self.help_process.start("assistant",
|
||||
|
@ -51,7 +51,7 @@ class MLSRuleQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.mlsrulequery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("mlsrulequery.ui")
|
||||
self.load_ui("apol/mlsrulequery.ui")
|
||||
|
||||
# set up source/target autocompletion
|
||||
typeattr_completion_list = [str(t) for t in self.policy.types()]
|
||||
|
@ -50,7 +50,7 @@ class NetifconQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.netifconquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("netifconquery.ui")
|
||||
self.load_ui("apol/netifconquery.ui")
|
||||
|
||||
# set up user autocompletion
|
||||
user_completion_list = [str(u) for u in self.policy.users()]
|
||||
|
@ -51,7 +51,7 @@ class NodeconQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.nodeconquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("nodeconquery.ui")
|
||||
self.load_ui("apol/nodeconquery.ui")
|
||||
|
||||
# set up user autocompletion
|
||||
user_completion_list = [str(u) for u in self.policy.users()]
|
||||
|
@ -51,7 +51,7 @@ class ObjClassQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.objclassquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("objclassquery.ui")
|
||||
self.load_ui("apol/objclassquery.ui")
|
||||
|
||||
# populate class list
|
||||
self.class_model = SEToolsListModel(self)
|
||||
|
@ -52,7 +52,7 @@ class PermissionMapEditor(SEToolsWidget, QDialog):
|
||||
self.setupUi()
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("permmap_editor.ui")
|
||||
self.load_ui("apol/permmap_editor.ui")
|
||||
|
||||
# set up class list
|
||||
self.class_model = SEToolsListModel(self)
|
||||
@ -172,7 +172,7 @@ class PermissionMapping(SEToolsWidget, QWidget):
|
||||
self.setupUi()
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("permmapping.ui")
|
||||
self.load_ui("apol/permmapping.ui")
|
||||
|
||||
self.permission.setText(str(self.mapping.perm))
|
||||
self.weight.setValue(self.mapping.weight)
|
||||
|
@ -51,7 +51,7 @@ class PortconQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.portconquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("portconquery.ui")
|
||||
self.load_ui("apol/portconquery.ui")
|
||||
|
||||
# set up user autocompletion
|
||||
user_completion_list = [str(u) for u in self.policy.users()]
|
||||
|
@ -51,7 +51,7 @@ class RBACRuleQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.rbacrulequery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("rbacrulequery.ui")
|
||||
self.load_ui("apol/rbacrulequery.ui")
|
||||
|
||||
# set up role autocompletion (source, default)
|
||||
role_completion_list = [str(r) for r in self.policy.roles()]
|
||||
|
@ -51,7 +51,7 @@ class RoleQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.rolequery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("rolequery.ui")
|
||||
self.load_ui("apol/rolequery.ui")
|
||||
|
||||
# populate role list
|
||||
self.role_model = SEToolsListModel(self)
|
||||
|
@ -51,7 +51,7 @@ class SensitivityQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.sensitivityquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("sensitivityquery.ui")
|
||||
self.load_ui("apol/sensitivityquery.ui")
|
||||
|
||||
# populate sensitivity list
|
||||
self.sensitivity_model = SEToolsListModel(self)
|
||||
|
@ -42,7 +42,7 @@ class SummaryTab(AnalysisTab):
|
||||
self.setupUi(policy)
|
||||
|
||||
def setupUi(self, p):
|
||||
self.load_ui("summary.ui")
|
||||
self.load_ui("apol/summary.ui")
|
||||
|
||||
# Ensure settings are consistent with the initial .ui state
|
||||
self.notes.setHidden(not self.notes_expander.isChecked())
|
||||
|
@ -51,7 +51,7 @@ class TERuleQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.terulequery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("terulequery.ui")
|
||||
self.load_ui("apol/terulequery.ui")
|
||||
|
||||
# set up source/target autocompletion
|
||||
typeattr_completion_list = [str(t) for t in self.policy.types()]
|
||||
|
@ -51,7 +51,7 @@ class TypeAttributeQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.typeattrquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("typeattrquery.ui")
|
||||
self.load_ui("apol/typeattrquery.ui")
|
||||
|
||||
# populate attr list
|
||||
self.attr_model = SEToolsListModel(self)
|
||||
|
@ -51,7 +51,7 @@ class TypeQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.typequery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("typequery.ui")
|
||||
self.load_ui("apol/typequery.ui")
|
||||
|
||||
# populate type list
|
||||
self.type_model = SEToolsListModel(self)
|
||||
|
@ -51,7 +51,7 @@ class UserQueryTab(AnalysisTab):
|
||||
logging.getLogger("setools.userquery").removeHandler(self.handler)
|
||||
|
||||
def setupUi(self):
|
||||
self.load_ui("userquery.ui")
|
||||
self.load_ui("apol/userquery.ui")
|
||||
|
||||
# populate user list
|
||||
self.user_model = SEToolsListModel(self)
|
||||
|
@ -19,6 +19,7 @@
|
||||
import sys
|
||||
from errno import ENOENT
|
||||
|
||||
import pkg_resources
|
||||
from PyQt5.uic import loadUi
|
||||
|
||||
|
||||
@ -39,16 +40,8 @@ QGroupBox::title {\
|
||||
|
||||
class SEToolsWidget(object):
|
||||
def load_ui(self, filename):
|
||||
# If we are in the git repo, look at the local
|
||||
# UI file, otherwise look at the installed file.
|
||||
for path in ["data/", sys.prefix + "/share/setools/"]:
|
||||
try:
|
||||
loadUi(path + filename, self)
|
||||
break
|
||||
except (IOError, OSError) as err:
|
||||
if err.errno != ENOENT:
|
||||
raise
|
||||
else:
|
||||
raise RuntimeError("Unable to load Qt UI file \"{0}\"".format(filename))
|
||||
distro = pkg_resources.get_distribution("setools")
|
||||
path = "{0}/setoolsgui/{1}".format(distro.location, filename)
|
||||
loadUi(path, self)
|
||||
|
||||
self.setStyleSheet(stylesheet)
|
||||
|
7
setup.py
7
setup.py
@ -24,7 +24,7 @@ class QtHelpCommand(Command):
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
command = ['qcollectiongenerator', 'apol.qhcp', '-o', 'apol.qhc']
|
||||
command = ['qcollectiongenerator', 'apol.qhcp', '-o', '../setoolsgui/apol/apol.qhc']
|
||||
self.announce("Building Qt help files", level=log.INFO)
|
||||
self.announce(' '.join(command), level=log.INFO)
|
||||
pwd = os.getcwd()
|
||||
@ -182,9 +182,8 @@ setup(name='setools',
|
||||
'build_qhc': QtHelpCommand},
|
||||
packages=['setools', 'setools.diff', 'setools.policyrep', 'setoolsgui', 'setoolsgui.apol'],
|
||||
scripts=['apol', 'sediff', 'seinfo', 'seinfoflow', 'sesearch', 'sedta'],
|
||||
data_files=[(join(sys.prefix, 'share/man/man1'), glob.glob("man/*.1") ),
|
||||
(join(sys.prefix, 'share/setools'), glob.glob("data/*.ui") +
|
||||
["data/perm_map", "qhc/apol.qhc"] )],
|
||||
data_files=[(join(sys.prefix, 'share/man/man1'), glob.glob("man/*.1"))],
|
||||
package_data={'': ['*.ui', '*.qhc'], 'setools': ['perm_map']},
|
||||
ext_modules=ext_py_mods,
|
||||
test_suite='tests',
|
||||
license='GPLv2+, LGPLv2.1+',
|
||||
|
Loading…
Reference in New Issue
Block a user