diff --git selinux-gui-2.7/Makefile selinux-gui-2.7/Makefile
index 4fc2c1a..a72e58c 100644
--- selinux-gui-2.7/Makefile
+++ selinux-gui-2.7/Makefile
@@ -1,5 +1,5 @@
# Installation directories.
-PREFIX ?= ${DESTDIR}/usr
+PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
SHAREDIR ?= $(PREFIX)/share/system-config-selinux
DATADIR ?= $(PREFIX)/share
@@ -11,42 +11,41 @@ domainsPage.py \
fcontextPage.py \
html_util.py \
loginsPage.py \
-mappingsPage.py \
modulesPage.py \
-polgen.glade \
+polgen.ui \
portsPage.py \
semanagePage.py \
statusPage.py \
-system-config-selinux.glade \
system-config-selinux.png \
+system-config-selinux.ui \
usersPage.py
all: $(TARGETS) system-config-selinux.py polgengui.py
install: all
- -mkdir -p $(MANDIR)/man8
- -mkdir -p $(SHAREDIR)
- -mkdir -p $(BINDIR)
- -mkdir -p $(DATADIR)/pixmaps
- -mkdir -p $(DATADIR)/icons/hicolor/24x24/apps
- -mkdir -p $(DATADIR)/polkit-1/actions/
- install -m 755 system-config-selinux.py $(SHAREDIR)
- install -m 755 system-config-selinux $(BINDIR)
- install -m 755 polgengui.py $(SHAREDIR)
- install -m 644 $(TARGETS) $(SHAREDIR)
- install -m 644 system-config-selinux.8 $(MANDIR)/man8
- install -m 644 selinux-polgengui.8 $(MANDIR)/man8
- install -m 644 system-config-selinux.png $(DATADIR)/pixmaps
- install -m 644 system-config-selinux.png $(DATADIR)/icons/hicolor/24x24/apps
- install -m 644 system-config-selinux.png $(DATADIR)/system-config-selinux
- install -m 644 *.desktop $(DATADIR)/system-config-selinux
- -mkdir -p $(DESTDIR) $(DATADIR)/pixmaps
- install -m 644 sepolicy_256.png $(DATADIR)/pixmaps/sepolicy.png
+ -mkdir -p $(DESTDIR)$(MANDIR)/man8
+ -mkdir -p $(DESTDIR)$(SHAREDIR)
+ -mkdir -p $(DESTDIR)$(BINDIR)
+ -mkdir -p $(DESTDIR)$(DATADIR)/pixmaps
+ -mkdir -p $(DESTDIR)$(DATADIR)/icons/hicolor/24x24/apps
+ -mkdir -p $(DESTDIR)$(DATADIR)/polkit-1/actions/
+ install -m 755 system-config-selinux.py $(DESTDIR)$(SHAREDIR)
+ install -m 755 system-config-selinux $(DESTDIR)$(BINDIR)
+ install -m 755 polgengui.py $(DESTDIR)$(SHAREDIR)
+ install -m 644 $(TARGETS) $(DESTDIR)$(SHAREDIR)
+ install -m 644 system-config-selinux.8 $(DESTDIR)$(MANDIR)/man8
+ install -m 644 selinux-polgengui.8 $(DESTDIR)$(MANDIR)/man8
+ install -m 644 system-config-selinux.png $(DESTDIR)$(DATADIR)/pixmaps
+ install -m 644 system-config-selinux.png $(DESTDIR)$(DATADIR)/icons/hicolor/24x24/apps
+ install -m 644 system-config-selinux.png $(DESTDIR)$(DATADIR)/system-config-selinux
+ install -m 644 *.desktop $(DESTDIR)$(DATADIR)/system-config-selinux
+ -mkdir -p $(DESTDIR)$(DATADIR)/pixmaps
+ install -m 644 sepolicy_256.png $(DESTDIR)$(DATADIR)/pixmaps/sepolicy.png
for i in 16 22 32 48 256; do \
- mkdir -p $(DESTDIR) $(DATADIR)/icons/hicolor/$${i}x$${i}/apps; \
- install -m 644 sepolicy_$${i}.png $(DATADIR)/icons/hicolor/$${i}x$${i}/apps/sepolicy.png; \
+ mkdir -p $(DESTDIR)$(DATADIR)/icons/hicolor/$${i}x$${i}/apps; \
+ install -m 644 sepolicy_$${i}.png $(DESTDIR)$(DATADIR)/icons/hicolor/$${i}x$${i}/apps/sepolicy.png; \
done
- install -m 644 org.selinux.config.policy $(DATADIR)/polkit-1/actions/
+ install -m 644 org.selinux.config.policy $(DESTDIR)$(DATADIR)/polkit-1/actions/
clean:
indent:
diff --git selinux-gui-2.7/booleansPage.py selinux-gui-2.7/booleansPage.py
index a5d04bf..7849bea 100644
--- selinux-gui-2.7/booleansPage.py
+++ selinux-gui-2.7/booleansPage.py
@@ -18,13 +18,8 @@
# You should have received a copy of the GNU General Public License
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
-import string
-import gtk
-import gtk.glade
-import os
-import gobject
import sys
-import tempfile
+from gi.repository import Gdk, GObject, Gtk
import seobject
import semanagePage
@@ -61,8 +56,6 @@ except:
import __builtin__
__builtin__.__dict__['_'] = unicode
-from glob import fnmatch
-
class Modifier:
@@ -94,56 +87,53 @@ class booleansPage:
def __init__(self, xml, doDebug=None):
self.xml = xml
- self.window = self.xml.get_widget("mainWindow").get_root_window()
+ self.window = self.xml.get_object("mainWindow").get_root_window()
self.local = False
self.types = []
self.selinuxsupport = True
self.typechanged = False
self.doDebug = doDebug
- self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
- self.ready_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
+ self.busy_cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
+ self.ready_cursor = Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR)
# Bring in widgets from glade file.
- self.typeHBox = xml.get_widget("typeHBox")
- self.booleanSW = xml.get_widget("booleanSW")
- self.booleansFilter = xml.get_widget("booleansFilter")
+ self.booleansFilter = xml.get_object("booleansFilter")
self.booleansFilter.connect("focus_out_event", self.filter_changed)
self.booleansFilter.connect("activate", self.filter_changed)
+ self.booleansFilter.connect("changed", self.filter_changed)
- self.booleansView = xml.get_widget("booleansView")
- self.typeLabel = xml.get_widget("typeLabel")
- self.modifySeparator = xml.get_widget("modifySeparator")
+ self.booleansView = xml.get_object("booleansView")
- self.revertButton = xml.get_widget("booleanRevertButton")
+ self.revertButton = xml.get_object("booleanRevertButton")
self.revertButton.set_sensitive(self.local)
self.revertButton.connect("clicked", self.on_revert_clicked)
- listStore = gtk.ListStore(gobject.TYPE_STRING)
- cell = gtk.CellRendererText()
+ listStore = Gtk.ListStore(GObject.TYPE_STRING)
+ cell = Gtk.CellRendererText()
- self.store = gtk.ListStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
- self.store.set_sort_column_id(1, gtk.SORT_ASCENDING)
+ self.store = Gtk.ListStore(GObject.TYPE_BOOLEAN, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
+ self.store.set_sort_column_id(1, Gtk.SortType.ASCENDING)
self.booleansView.set_model(self.store)
- checkbox = gtk.CellRendererToggle()
+ checkbox = Gtk.CellRendererToggle()
checkbox.connect("toggled", self.boolean_toggled)
- col = gtk.TreeViewColumn('Active', checkbox, active=ACTIVE)
+ col = Gtk.TreeViewColumn('Active', checkbox, active=ACTIVE)
col.set_clickable(True)
col.set_sort_column_id(ACTIVE)
self.booleansView.append_column(col)
- col = gtk.TreeViewColumn("Module", gtk.CellRendererText(), text=MODULE)
+ col = Gtk.TreeViewColumn("Module", Gtk.CellRendererText(), text=MODULE)
col.set_sort_column_id(MODULE)
col.set_resizable(True)
self.booleansView.append_column(col)
- col = gtk.TreeViewColumn("Description", gtk.CellRendererText(), text=DESC)
- col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ col = Gtk.TreeViewColumn("Description", Gtk.CellRendererText(), text=DESC)
+ col.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
col.set_fixed_width(400)
col.set_sort_column_id(DESC)
col.set_resizable(True)
self.booleansView.append_column(col)
- col = gtk.TreeViewColumn("Name", gtk.CellRendererText(), text=BOOLEAN)
+ col = Gtk.TreeViewColumn("Name", Gtk.CellRendererText(), text=BOOLEAN)
col.set_sort_column_id(BOOLEAN)
col.set_resizable(True)
self.booleansView.set_search_equal_func(self.__search)
@@ -152,10 +142,10 @@ class booleansPage:
self.load(self.filter)
def error(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
- gtk.BUTTONS_CLOSE,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR,
+ Gtk.ButtonsType.CLOSE,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
@@ -178,11 +168,11 @@ class booleansPage:
def deleteDialog(self):
store, iter = self.booleansView.get_selection().get_selected()
- if iter == None:
+ if iter is None:
return
boolean = store.get_value(iter, BOOLEAN)
# change cursor
- if boolean == None:
+ if boolean is None:
return
try:
self.wait()
diff --git selinux-gui-2.7/domainsPage.py selinux-gui-2.7/domainsPage.py
index 66f882a..bad5140 100644
--- selinux-gui-2.7/domainsPage.py
+++ selinux-gui-2.7/domainsPage.py
@@ -16,19 +16,14 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
import os
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
-import gobject
import sys
-import seobject
-import selinux
+from gi.repository import GObject, Gtk
import sepolicy
from semanagePage import *
@@ -58,26 +53,26 @@ class domainsPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "domains", _("Process Domain"))
- self.domain_filter = xml.get_widget("domainsFilterEntry")
+ self.domain_filter = xml.get_object("domainsFilterEntry")
self.domain_filter.connect("focus_out_event", self.filter_changed)
self.domain_filter.connect("activate", self.filter_changed)
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING)
self.view.set_model(self.store)
- self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Domain Name"), gtk.CellRendererText(), text=0)
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Domain Name"), Gtk.CellRendererText(), text=0)
col.set_sort_column_id(0)
col.set_resizable(True)
self.view.append_column(col)
- self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Mode"), gtk.CellRendererText(), text=1)
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Mode"), Gtk.CellRendererText(), text=1)
col.set_sort_column_id(1)
col.set_resizable(True)
self.view.append_column(col)
self.view.get_selection().connect("changed", self.itemSelected)
- self.permissive_button = xml.get_widget("permissiveButton")
- self.enforcing_button = xml.get_widget("enforcingButton")
+ self.permissive_button = xml.get_object("permissiveButton")
+ self.enforcing_button = xml.get_object("enforcingButton")
self.domains = sepolicy.get_all_entrypoint_domains()
self.load()
@@ -112,7 +107,7 @@ class domainsPage(semanagePage):
def itemSelected(self, selection):
store, iter = selection.get_selected()
- if iter == None:
+ if iter is None:
return
p = store.get_value(iter, 1) == _("Permissive")
self.permissive_button.set_sensitive(not p)
diff --git selinux-gui-2.7/fcontextPage.py selinux-gui-2.7/fcontextPage.py
index 2e26666..370bbee 100644
--- selinux-gui-2.7/fcontextPage.py
+++ selinux-gui-2.7/fcontextPage.py
@@ -16,10 +16,7 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import gtk
-import gtk.glade
-import os
-import gobject
+from gi.repository import GObject, Gtk
import seobject
try:
from subprocess import getstatusoutput
@@ -73,40 +70,40 @@ class fcontextPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "fcontext", _("File Labeling"))
- self.fcontextFilter = xml.get_widget("fcontextFilterEntry")
+ self.fcontextFilter = xml.get_object("fcontextFilterEntry")
self.fcontextFilter.connect("focus_out_event", self.filter_changed)
self.fcontextFilter.connect("activate", self.filter_changed)
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
- self.view = xml.get_widget("fcontextView")
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
+ self.view = xml.get_object("fcontextView")
self.view.set_model(self.store)
self.view.set_search_equal_func(self.search)
- col = gtk.TreeViewColumn(_("File\nSpecification"), gtk.CellRendererText(), text=SPEC_COL)
- col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ col = Gtk.TreeViewColumn(_("File\nSpecification"), Gtk.CellRendererText(), text=SPEC_COL)
+ col.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
col.set_fixed_width(250)
col.set_sort_column_id(SPEC_COL)
col.set_resizable(True)
self.view.append_column(col)
- col = gtk.TreeViewColumn(_("Selinux\nFile Type"), gtk.CellRendererText(), text=TYPE_COL)
+ col = Gtk.TreeViewColumn(_("Selinux\nFile Type"), Gtk.CellRendererText(), text=TYPE_COL)
- col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ col.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
col.set_fixed_width(250)
col.set_sort_column_id(TYPE_COL)
col.set_resizable(True)
self.view.append_column(col)
- col = gtk.TreeViewColumn(_("File\nType"), gtk.CellRendererText(), text=2)
+ col = Gtk.TreeViewColumn(_("File\nType"), Gtk.CellRendererText(), text=2)
col.set_sort_column_id(FTYPE_COL)
col.set_resizable(True)
self.view.append_column(col)
- self.store.set_sort_column_id(SPEC_COL, gtk.SORT_ASCENDING)
+ self.store.set_sort_column_id(SPEC_COL, Gtk.SortType.ASCENDING)
self.load()
- self.fcontextEntry = xml.get_widget("fcontextEntry")
- self.fcontextFileTypeCombo = xml.get_widget("fcontextFileTypeCombo")
- self.fcontextTypeEntry = xml.get_widget("fcontextTypeEntry")
- self.fcontextMLSEntry = xml.get_widget("fcontextMLSEntry")
+ self.fcontextEntry = xml.get_object("fcontextEntry")
+ self.fcontextFileTypeCombo = xml.get_object("fcontextFileTypeCombo")
+ self.fcontextTypeEntry = xml.get_object("fcontextTypeEntry")
+ self.fcontextMLSEntry = xml.get_object("fcontextMLSEntry")
def match(self, fcon_dict, k, filter):
try:
@@ -167,6 +164,7 @@ class fcontextPage(semanagePage):
self.fcontextEntry.set_text("")
self.fcontextEntry.set_sensitive(True)
self.fcontextFileTypeCombo.set_sensitive(True)
+ self.fcontextFileTypeCombo.set_active(0)
self.fcontextTypeEntry.set_text("")
self.fcontextMLSEntry.set_text("s0")
@@ -192,7 +190,7 @@ class fcontextPage(semanagePage):
mls = self.fcontextMLSEntry.get_text().strip()
list_model = self.fcontextFileTypeCombo.get_model()
it = self.fcontextFileTypeCombo.get_active_iter()
- ftype = list_model.get_value(it,0)
+ ftype = list_model.get_value(it, 0)
self.wait()
(rc, out) = getstatusoutput("semanage fcontext -a -t %s -r %s -f '%s' '%s'" % (type, mls, seobject.file_type_str_to_option[ftype], fspec))
self.ready()
diff --git selinux-gui-2.7/loginsPage.py selinux-gui-2.7/loginsPage.py
index 1f35a57..b67eb8b 100644
--- selinux-gui-2.7/loginsPage.py
+++ selinux-gui-2.7/loginsPage.py
@@ -16,17 +16,13 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
-import os
-import gobject
import sys
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
+from gi.repository import GObject, Gtk
import seobject
from semanagePage import *
@@ -57,23 +53,23 @@ class loginsPage(semanagePage):
def __init__(self, xml):
self.firstTime = False
semanagePage.__init__(self, xml, "logins", _("User Mapping"))
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
self.view.set_model(self.store)
- self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Login\nName"), gtk.CellRendererText(), text=0)
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Login\nName"), Gtk.CellRendererText(), text=0)
col.set_sort_column_id(0)
col.set_resizable(True)
self.view.append_column(col)
- col = gtk.TreeViewColumn(_("SELinux\nUser"), gtk.CellRendererText(), text=1)
+ col = Gtk.TreeViewColumn(_("SELinux\nUser"), Gtk.CellRendererText(), text=1)
col.set_resizable(True)
self.view.append_column(col)
- col = gtk.TreeViewColumn(_("MLS/\nMCS Range"), gtk.CellRendererText(), text=2)
+ col = Gtk.TreeViewColumn(_("MLS/\nMCS Range"), Gtk.CellRendererText(), text=2)
col.set_resizable(True)
self.view.append_column(col)
self.load()
- self.loginsNameEntry = xml.get_widget("loginsNameEntry")
- self.loginsSelinuxUserCombo = xml.get_widget("loginsSelinuxUserCombo")
- self.loginsMLSEntry = xml.get_widget("loginsMLSEntry")
+ self.loginsNameEntry = xml.get_object("loginsNameEntry")
+ self.loginsSelinuxUserCombo = xml.get_object("loginsSelinuxUserCombo")
+ self.loginsMLSEntry = xml.get_object("loginsMLSEntry")
def load(self, filter=""):
self.filter = filter
@@ -91,12 +87,12 @@ class loginsPage(semanagePage):
self.view.get_selection().select_path((0,))
def __dialogSetup(self):
- if self.firstTime == True:
+ if self.firstTime:
return
self.firstTime = True
- liststore = gtk.ListStore(gobject.TYPE_STRING)
+ liststore = Gtk.ListStore(GObject.TYPE_STRING)
self.loginsSelinuxUserCombo.set_model(liststore)
- cell = gtk.CellRendererText()
+ cell = Gtk.CellRendererText()
self.loginsSelinuxUserCombo.pack_start(cell, True)
self.loginsSelinuxUserCombo.add_attribute(cell, 'text', 0)
diff --git selinux-gui-2.7/modulesPage.py selinux-gui-2.7/modulesPage.py
index 3767896..34c5d9e 100644
--- selinux-gui-2.7/modulesPage.py
+++ selinux-gui-2.7/modulesPage.py
@@ -16,21 +16,16 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
-import os
+import sys
+from subprocess import Popen, PIPE
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
-import gobject
-import sys
-import seobject
+from gi.repository import GObject, Gtk
import selinux
from semanagePage import *
-from subprocess import Popen, PIPE
##
## I18N
@@ -58,27 +53,33 @@ class modulesPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "modules", _("Policy Module"))
- self.module_filter = xml.get_widget("modulesFilterEntry")
+ self.module_filter = xml.get_object("modulesFilterEntry")
self.module_filter.connect("focus_out_event", self.filter_changed)
self.module_filter.connect("activate", self.filter_changed)
self.audit_enabled = False
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING,
+ GObject.TYPE_STRING)
self.view.set_model(self.store)
- self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Module Name"), gtk.CellRendererText(), text=0)
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Module Name"), Gtk.CellRendererText(), text=0)
col.set_sort_column_id(0)
col.set_resizable(True)
self.view.append_column(col)
- self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Version"), gtk.CellRendererText(), text=1)
- self.enable_audit_button = xml.get_widget("enableAuditButton")
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Priority"), Gtk.CellRendererText(), text=1)
+ self.enable_audit_button = xml.get_object("enableAuditButton")
self.enable_audit_button.connect("clicked", self.enable_audit)
- self.new_button = xml.get_widget("newModuleButton")
+ self.new_button = xml.get_object("newModuleButton")
self.new_button.connect("clicked", self.new_module)
col.set_sort_column_id(1)
col.set_resizable(True)
self.view.append_column(col)
+ self.store.set_sort_column_id(2, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Kind"), Gtk.CellRendererText(), text=2)
+ col.set_sort_column_id(2)
+ col.set_resizable(True)
+ self.view.append_column(col)
self.store.set_sort_func(1, self.sort_int, "")
status, self.policy_type = selinux.selinux_getpolicytype()
@@ -100,16 +101,17 @@ class modulesPage(semanagePage):
self.filter = filter
self.store.clear()
try:
- fd = Popen("semodule -l", shell=True, stdout=PIPE).stdout
+ fd = Popen("semodule -lfull", shell=True, stdout=PIPE).stdout
l = fd.readlines()
fd.close()
for i in l:
- module, ver, newline = i.split('\t')
- if not (self.match(module, filter) or self.match(ver, filter)):
+ priority, module, kind = i.decode('utf-8').split()
+ if not (self.match(module, filter) or self.match(priority, filter)):
continue
iter = self.store.append()
self.store.set_value(iter, 0, module.strip())
- self.store.set_value(iter, 1, ver.strip())
+ self.store.set_value(iter, 1, priority.strip())
+ self.store.set_value(iter, 2, kind.strip())
except:
pass
self.view.get_selection().select_path((0,))
@@ -170,20 +172,20 @@ class modulesPage(semanagePage):
return
def addDialog(self):
- dialog = gtk.FileChooserDialog(_("Load Policy Module"),
+ dialog = Gtk.FileChooserDialog(_("Load Policy Module"),
None,
- gtk.FILE_CHOOSER_ACTION_OPEN,
- (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN, gtk.RESPONSE_OK))
- dialog.set_default_response(gtk.RESPONSE_OK)
+ Gtk.FileChooserAction.OPEN,
+ (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+ Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
+ dialog.set_default_response(Gtk.ResponseType.OK)
- filter = gtk.FileFilter()
+ filter = Gtk.FileFilter()
filter.set_name("Policy Files")
filter.add_pattern("*.pp")
dialog.add_filter(filter)
response = dialog.run()
- if response == gtk.RESPONSE_OK:
+ if response == Gtk.ResponseType.OK:
self.add(dialog.get_filename())
dialog.destroy()
diff --git selinux-gui-2.7/polgen.ui selinux-gui-2.7/polgen.ui
new file mode 100644
index 0000000..aa4c70a
--- /dev/null
+++ selinux-gui-2.7/polgen.ui
@@ -0,0 +1,2417 @@
+
+
+
+
+
+
+ False
+ 12
+ Add Booleans Dialog
+ mouse
+ 400
+ dialog
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ False
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ gtk-add
+ True
+ True
+ True
+ False
+ True
+
+
+ False
+ False
+ 1
+
+
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+ True
+ False
+ 2
+ 2
+ 12
+ 6
+
+
+ True
+ False
+ 0
+ Boolean Name
+
+
+ GTK_FILL
+
+
+
+
+
+ True
+ False
+ 0
+ Description
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ True
+ •
+ False
+ False
+ True
+ True
+
+
+ 1
+ 2
+
+
+
+
+
+ True
+ True
+ •
+ False
+ False
+ True
+ True
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+ cancelbutton1
+ okbutton1
+
+
+
+ False
+ 5
+ mouse
+ dialog
+ True
+ True
+
+
+ True
+ False
+ 24
+
+
+ True
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ False
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ gtk-add
+ True
+ True
+ True
+ True
+ False
+ True
+
+
+ False
+ False
+ 1
+
+
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+
+ button5
+ button6
+
+
+
+ True
+ False
+ SELinux Policy Generation Tool
+
+
+ True
+ False
+ 18
+
+
+ True
+ False
+ left
+ False
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Select the policy type for the application or user role you want to confine:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+ True
+ False
+ 12
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 0
+ <b>Applications</b>
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ 6
+
+
+ Standard Init Daemon
+ True
+ True
+ False
+ Standard Init Daemon are daemons started on boot via init scripts. Usually requires a script in /etc/rc.d/init.d
+ True
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ DBUS System Daemon
+ True
+ True
+ False
+ Standard Init Daemon are daemons started on boot via init scripts. Usually requires a script in /etc/rc.d/init.d
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 1
+
+
+
+
+ Internet Services Daemon (inetd)
+ True
+ True
+ False
+ Internet Services Daemon are daemons started by xinetd
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 2
+
+
+
+
+ Web Application/Script (CGI)
+ True
+ True
+ False
+ Web Applications/Script (CGI) CGI scripts started by the web server (apache)
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 3
+
+
+
+
+ User Application
+ True
+ True
+ False
+ User Application are any application that you would like to confine that is started by a user
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 4
+
+
+
+
+ Sandbox
+ True
+ True
+ False
+ User Application are any application that you would like to confine that is started by a user
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 5
+
+
+
+
+ False
+ False
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 0
+ <b>Login Users</b>
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ 6
+
+
+ Existing User Roles
+ True
+ True
+ False
+ Modify an existing login user record.
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 0
+
+
+
+
+ Minimal Terminal User Role
+ True
+ True
+ False
+ This user will login to a machine only via a terminal or remote login. By default this user will have no setuid, no networking, no su, no sudo.
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 1
+
+
+
+
+ Minimal X Windows User Role
+ True
+ True
+ False
+ This user can login to a machine via X or terminal. By default this user will have no setuid, no networking, no sudo, no su
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 2
+
+
+
+
+ User Role
+ True
+ True
+ False
+ User with full networking, no setuid applications without transition, no sudo, no su.
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 3
+
+
+
+
+ Admin User Role
+ True
+ True
+ False
+ User with full networking, no setuid applications without transition, no su, can sudo to Root Administration Roles
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 4
+
+
+
+
+ True
+ False
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 0
+ <b>Root Users</b>
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ Root Admin User Role
+ True
+ True
+ False
+ Select Root Administrator User Role, if this user will be used to administer the machine while running as root. This user will not be able to login to the system directly.
+ True
+ True
+ init_radiobutton
+
+
+ False
+ False
+ 0
+
+
+
+
+ False
+ False
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ Main Tab
+
+
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Enter name of application or user role:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ False
+ 3
+ 3
+ 12
+ 6
+
+
+ True
+ False
+ 0
+ Name
+
+
+ GTK_FILL
+
+
+
+
+
+ True
+ True
+ Enter complete path for executable to be confined.
+ •
+ False
+ False
+ True
+ True
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+
+ ...
+ True
+ True
+ False
+ True
+
+
+
+ 2
+ 3
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ True
+ Enter unique name for the confined application or user role.
+ •
+ False
+ False
+ True
+ True
+
+
+ 1
+ 3
+
+
+
+
+
+ True
+ False
+ 0
+ Executable
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ False
+ 0
+ Init script
+
+
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+
+ True
+ True
+ Enter complete path to init script used to start the confined application.
+ •
+ False
+ False
+ True
+ True
+
+
+ 1
+ 2
+ 2
+ 3
+
+
+
+
+
+ ...
+ True
+ True
+ False
+ True
+
+
+
+ 2
+ 3
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ Name Tab
+
+
+ 1
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Select existing role to modify:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ True
+ automatic
+ automatic
+ in
+
+
+ True
+ True
+ Select the user roles that will transiton to the %s domain.
+ False
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ role tab
+
+
+ 2
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Select roles that %s will transition to:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ True
+
+
+ True
+ True
+ Select applications domains that %s will transition to.
+ False
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ transition
+role tab
+
+
+ 3
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Select the user_roles that will transition to %s:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ True
+
+
+ True
+ True
+ Select the user roles that will transiton to this applications domains.
+ False
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ User Tab
+
+
+ 4
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Select domains that %s will administer:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ True
+
+
+ True
+ True
+ Select the domains that you would like this user administer.
+ False
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ Admin Tab
+
+
+ 5
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Select additional roles for %s:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ True
+
+
+ True
+ True
+ Select the domains that you would like this user administer.
+ False
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ Roles Tab
+
+
+ 6
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Enter network ports that %s binds on:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 0
+ <b>TCP Ports</b>
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 12
+
+
+ All
+ True
+ True
+ False
+ Allows %s to bind to any udp port
+ True
+ True
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ 600-1024
+ True
+ True
+ False
+ Allow %s to call bindresvport with 0. Binding to port 600-1024
+ True
+ True
+
+
+ False
+ False
+ 10
+ 1
+
+
+
+
+ Unreserved Ports (>1024)
+ True
+ True
+ False
+ Enter a comma separated list of udp ports or ranges of ports that %s binds to. Example: 612, 650-660
+ True
+ True
+
+
+ False
+ False
+ 10
+ 2
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ 12
+
+
+ True
+ False
+ 0
+ Select Ports
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ True
+ Allows %s to bind to any udp ports > 1024
+ •
+ False
+ False
+ True
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 0
+ <b>UDP Ports</b>
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 12
+
+
+ All
+ True
+ True
+ False
+ Allows %s to bind to any udp port
+ True
+ True
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ 600-1024
+ True
+ True
+ False
+ Allow %s to call bindresvport with 0. Binding to port 600-1024
+ True
+ True
+
+
+ False
+ False
+ 10
+ 1
+
+
+
+
+ Unreserved Ports (>1024)
+ True
+ True
+ False
+ Enter a comma separated list of udp ports or ranges of ports that %s binds to. Example: 612, 650-660
+ True
+ True
+
+
+ False
+ False
+ 10
+ 2
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ 12
+
+
+ True
+ False
+ 0
+ Select Ports
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ True
+ Allows %s to bind to any udp ports > 1024
+ •
+ False
+ False
+ True
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+
+
+ True
+ False
+ Network
+Bind tab
+
+
+ 7
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Select network ports that %s connects to:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 0
+ <b>TCP Ports</b>
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ 12
+
+
+ All
+ True
+ True
+ False
+ Allows %s to connect to any tcp port
+ True
+ True
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ False
+ 0
+ Select Ports
+
+
+ False
+ False
+ 5
+ 1
+
+
+
+
+ True
+ True
+ Enter a comma separated list of tcp ports or ranges of ports that %s connects to. Example: 612, 650-660
+ •
+ False
+ False
+ True
+ True
+
+
+ True
+ True
+ 2
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ False
+ 6
+
+
+ True
+ False
+ 0
+ <b>UDP Ports</b>
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ 12
+
+
+ All
+ True
+ True
+ False
+ Allows %s to connect to any udp port
+ True
+ True
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ False
+ 0
+ Select Ports
+
+
+ False
+ False
+ 5
+ 1
+
+
+
+
+ True
+ True
+ Enter a comma separated list of udp ports or ranges of ports that %s connects to. Example: 612, 650-660
+ •
+ False
+ False
+ True
+ True
+
+
+ True
+ True
+ 2
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+
+
+ True
+ False
+ Network
+Connect Tab
+
+
+ 8
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Select common application traits for %s:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ False
+ 6
+
+
+ Writes syslog messages
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ Create/Manipulate temporary files in /tmp
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ False
+ 1
+
+
+
+
+ Uses Pam for authentication
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ False
+ 2
+
+
+
+
+ Uses nsswitch or getpw* calls
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ False
+ 3
+
+
+
+
+ Uses dbus
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ False
+ 4
+
+
+
+
+ Sends audit messages
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ False
+ 5
+
+
+
+
+ Interacts with the terminal
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ False
+ 6
+
+
+
+
+ Sends email
+ True
+ True
+ False
+ True
+ True
+
+
+ False
+ False
+ 7
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ Common
+Tab
+
+
+ 9
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Add files/directories that %s manages</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ False
+ 12
+
+
+ True
+ False
+ 6
+
+
+ True
+ True
+ False
+
+
+
+ True
+ False
+ 0
+ 0
+
+
+ True
+ False
+ 2
+
+
+ True
+ False
+ gtk-add
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ Add File
+ True
+
+
+ False
+ False
+ 1
+
+
+
+
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ True
+ False
+
+
+
+ True
+ False
+ 0
+ 0
+
+
+ True
+ False
+ 2
+
+
+ True
+ False
+ gtk-add
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ Add Directory
+ True
+
+
+ False
+ False
+ 1
+
+
+
+
+
+
+
+
+ False
+ False
+ 1
+
+
+
+
+ gtk-delete
+ True
+ True
+ False
+ True
+
+
+
+
+ False
+ False
+ 2
+
+
+
+
+ False
+ False
+ 4
+ 0
+
+
+
+
+ True
+ True
+ automatic
+ automatic
+ in
+
+
+ True
+ True
+ Files/Directories which the %s "manages". Pid Files, Log Files, /var/lib Files ...
+ False
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ Add Tab
+
+
+ 10
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Add booleans from the %s policy:</b>
+ True
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ False
+ 12
+
+
+ True
+ False
+ 6
+
+
+ True
+ True
+ False
+
+
+
+ True
+ False
+ 0
+ 0
+
+
+ True
+ False
+ 2
+
+
+ True
+ False
+ gtk-add
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ Add Boolean
+ True
+
+
+ False
+ False
+ 1
+
+
+
+
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ gtk-delete
+ True
+ True
+ False
+ True
+
+
+
+
+ False
+ False
+ 1
+
+
+
+
+ False
+ True
+ 4
+ 0
+
+
+
+
+ True
+ True
+ automatic
+ automatic
+ in
+
+
+ True
+ True
+ Add/Remove booleans used by the %s domain
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+
+
+ 11
+ False
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ 0
+ <b>Which directory you will generate the %s policy?</b>
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ 12
+
+
+ True
+ False
+ Policy Directory
+
+
+ False
+ False
+ 5
+ 0
+
+
+
+
+ True
+ True
+ •
+ False
+ False
+ True
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ ...
+ True
+ True
+ False
+ True
+
+
+ False
+ False
+ 2
+
+
+
+
+ False
+ False
+ 12
+ 1
+
+
+
+
+
+
+ True
+ False
+
+
+ 12
+ False
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ False
+ True
+
+
+ False
+ False
+ 0
+
+
+
+
+ gtk-go-back
+ True
+ True
+ True
+ False
+ True
+
+
+ False
+ False
+ 1
+
+
+
+
+ gtk-go-forward
+ True
+ True
+ True
+ False
+ True
+
+
+ False
+ False
+ 2
+
+
+
+
+ False
+ False
+ 5
+ 1
+
+
+
+
+
+
diff --git selinux-gui-2.7/polgengui.py selinux-gui-2.7/polgengui.py
index 7460cce..1601dbe 100644
--- selinux-gui-2.7/polgengui.py
+++ selinux-gui-2.7/polgengui.py
@@ -22,11 +22,11 @@
#
import signal
import string
-import gtk
-import gtk.glade
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
import os
-import gobject
-import gnome
+from gi.repository import GObject
import sys
try:
import sepolicy
@@ -34,7 +34,9 @@ except ValueError as e:
sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e)))
sys.exit(1)
+import sepolicy.generate
import sepolicy.interface
+
try:
from subprocess import getstatusoutput
except ImportError:
@@ -79,8 +81,6 @@ except:
import __builtin__
__builtin__.__dict__['_'] = unicode
-gnome.program_init("SELinux Policy Generation Tool", "5")
-
version = "1.0"
sys.path.append('/usr/share/system-config-selinux')
@@ -95,10 +95,12 @@ def foreach(model, path, iter, selected):
##
## Pull in the Glade file
##
-if os.access("polgen.glade", os.F_OK):
- xml = gtk.glade.XML("polgen.glade", domain=PROGNAME)
+xml = Gtk.Builder()
+xml.set_translation_domain(PROGNAME)
+if os.access("polgen.ui", os.F_OK):
+ xml.add_from_file("polgen.ui")
else:
- xml = gtk.glade.XML("/usr/share/system-config-selinux/polgen.glade", domain=PROGNAME)
+ xml.add_from_file("/usr/share/system-config-selinux/polgen.ui")
FILE = 1
DIR = 2
@@ -123,82 +125,82 @@ class childWindow:
def __init__(self):
self.xml = xml
- self.notebook = xml.get_widget("notebook")
+ self.notebook = xml.get_object("notebook")
self.label_dict = {}
self.tooltip_dict = {}
- label = xml.get_widget("select_label")
+ label = xml.get_object("select_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("select_user_roles_label")
+ label = xml.get_object("select_user_roles_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("select_dir_label")
+ label = xml.get_object("select_dir_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("select_domain_admin_label")
+ label = xml.get_object("select_domain_admin_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("select_in_label")
+ label = xml.get_object("select_in_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("select_out_label")
+ label = xml.get_object("select_out_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("select_common_label")
+ label = xml.get_object("select_common_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("select_manages_label")
+ label = xml.get_object("select_manages_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("select_booleans_label")
+ label = xml.get_object("select_booleans_label")
self.label_dict[label] = label.get_text()
- label = xml.get_widget("existing_user_treeview")
+ label = xml.get_object("existing_user_treeview")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("transition_treeview")
+ label = xml.get_object("transition_treeview")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("in_tcp_all_checkbutton")
+ label = xml.get_object("in_tcp_all_checkbutton")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("in_tcp_reserved_checkbutton")
+ label = xml.get_object("in_tcp_reserved_checkbutton")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("in_tcp_unreserved_checkbutton")
+ label = xml.get_object("in_tcp_unreserved_checkbutton")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("in_tcp_entry")
+ label = xml.get_object("in_tcp_entry")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("in_udp_all_checkbutton")
+ label = xml.get_object("in_udp_all_checkbutton")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("in_udp_reserved_checkbutton")
+ label = xml.get_object("in_udp_reserved_checkbutton")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("in_udp_unreserved_checkbutton")
+ label = xml.get_object("in_udp_unreserved_checkbutton")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("in_udp_entry")
+ label = xml.get_object("in_udp_entry")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("out_tcp_entry")
+ label = xml.get_object("out_tcp_entry")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("out_udp_entry")
+ label = xml.get_object("out_udp_entry")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("out_tcp_all_checkbutton")
+ label = xml.get_object("out_tcp_all_checkbutton")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("out_udp_all_checkbutton")
+ label = xml.get_object("out_udp_all_checkbutton")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("boolean_treeview")
+ label = xml.get_object("boolean_treeview")
self.tooltip_dict[label] = label.get_tooltip_text()
- label = xml.get_widget("write_treeview")
+ label = xml.get_object("write_treeview")
self.tooltip_dict[label] = label.get_tooltip_text()
try:
@@ -214,23 +216,26 @@ class childWindow:
self.error(str(e))
self.name = ""
- xml.signal_connect("on_delete_clicked", self.delete)
- xml.signal_connect("on_delete_boolean_clicked", self.delete_boolean)
- xml.signal_connect("on_exec_select_clicked", self.exec_select)
- xml.signal_connect("on_init_script_select_clicked", self.init_script_select)
- xml.signal_connect("on_add_clicked", self.add)
- xml.signal_connect("on_add_boolean_clicked", self.add_boolean)
- xml.signal_connect("on_add_dir_clicked", self.add_dir)
- xml.signal_connect("on_about_clicked", self.on_about_clicked)
- xml.get_widget("cancel_button").connect("clicked", self.quit)
- self.forward_button = xml.get_widget("forward_button")
+ handlers = {
+ "on_delete_clicked": self.delete,
+ "on_delete_boolean_clicked": self.delete_boolean,
+ "on_exec_select_clicked": self.exec_select,
+ "on_init_script_select_clicked": self.init_script_select,
+ "on_add_clicked": self.add,
+ "on_add_boolean_clicked": self.add_boolean,
+ "on_add_dir_clicked": self.add_dir,
+ "on_about_clicked": self.on_about_clicked
+ }
+ xml.connect_signals(handlers)
+ xml.get_object("cancel_button").connect("clicked", self.quit)
+ self.forward_button = xml.get_object("forward_button")
self.forward_button.connect("clicked", self.forward)
- self.back_button = xml.get_widget("back_button")
+ self.back_button = xml.get_object("back_button")
self.back_button.connect("clicked", self.back)
- self.boolean_dialog = xml.get_widget("boolean_dialog")
- self.boolean_name_entry = xml.get_widget("boolean_name_entry")
- self.boolean_description_entry = xml.get_widget("boolean_description_entry")
+ self.boolean_dialog = xml.get_object("boolean_dialog")
+ self.boolean_name_entry = xml.get_object("boolean_name_entry")
+ self.boolean_description_entry = xml.get_object("boolean_description_entry")
self.pages = {}
for i in sepolicy.generate.USERS:
@@ -249,77 +254,77 @@ class childWindow:
self.network_buttons = {}
- self.in_tcp_all_checkbutton = xml.get_widget("in_tcp_all_checkbutton")
- self.in_tcp_reserved_checkbutton = xml.get_widget("in_tcp_reserved_checkbutton")
- self.in_tcp_unreserved_checkbutton = xml.get_widget("in_tcp_unreserved_checkbutton")
- self.in_tcp_entry = self.xml.get_widget("in_tcp_entry")
+ self.in_tcp_all_checkbutton = xml.get_object("in_tcp_all_checkbutton")
+ self.in_tcp_reserved_checkbutton = xml.get_object("in_tcp_reserved_checkbutton")
+ self.in_tcp_unreserved_checkbutton = xml.get_object("in_tcp_unreserved_checkbutton")
+ self.in_tcp_entry = self.xml.get_object("in_tcp_entry")
self.network_buttons[self.in_tcp_all_checkbutton] = [self.in_tcp_reserved_checkbutton, self.in_tcp_unreserved_checkbutton, self.in_tcp_entry]
- self.out_tcp_all_checkbutton = xml.get_widget("out_tcp_all_checkbutton")
- self.out_tcp_reserved_checkbutton = xml.get_widget("out_tcp_reserved_checkbutton")
- self.out_tcp_unreserved_checkbutton = xml.get_widget("out_tcp_unreserved_checkbutton")
- self.out_tcp_entry = self.xml.get_widget("out_tcp_entry")
+ self.out_tcp_all_checkbutton = xml.get_object("out_tcp_all_checkbutton")
+ self.out_tcp_reserved_checkbutton = xml.get_object("out_tcp_reserved_checkbutton")
+ self.out_tcp_unreserved_checkbutton = xml.get_object("out_tcp_unreserved_checkbutton")
+ self.out_tcp_entry = self.xml.get_object("out_tcp_entry")
self.network_buttons[self.out_tcp_all_checkbutton] = [self.out_tcp_entry]
- self.in_udp_all_checkbutton = xml.get_widget("in_udp_all_checkbutton")
- self.in_udp_reserved_checkbutton = xml.get_widget("in_udp_reserved_checkbutton")
- self.in_udp_unreserved_checkbutton = xml.get_widget("in_udp_unreserved_checkbutton")
- self.in_udp_entry = self.xml.get_widget("in_udp_entry")
+ self.in_udp_all_checkbutton = xml.get_object("in_udp_all_checkbutton")
+ self.in_udp_reserved_checkbutton = xml.get_object("in_udp_reserved_checkbutton")
+ self.in_udp_unreserved_checkbutton = xml.get_object("in_udp_unreserved_checkbutton")
+ self.in_udp_entry = self.xml.get_object("in_udp_entry")
self.network_buttons[self.in_udp_all_checkbutton] = [self.in_udp_reserved_checkbutton, self.in_udp_unreserved_checkbutton, self.in_udp_entry]
- self.out_udp_all_checkbutton = xml.get_widget("out_udp_all_checkbutton")
- self.out_udp_entry = self.xml.get_widget("out_udp_entry")
+ self.out_udp_all_checkbutton = xml.get_object("out_udp_all_checkbutton")
+ self.out_udp_entry = self.xml.get_object("out_udp_entry")
self.network_buttons[self.out_udp_all_checkbutton] = [self.out_udp_entry]
for b in self.network_buttons.keys():
b.connect("clicked", self.network_all_clicked)
- self.boolean_treeview = self.xml.get_widget("boolean_treeview")
- self.boolean_store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.boolean_treeview = self.xml.get_object("boolean_treeview")
+ self.boolean_store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING)
self.boolean_treeview.set_model(self.boolean_store)
- self.boolean_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Name"), gtk.CellRendererText(), text=0)
+ self.boolean_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Name"), Gtk.CellRendererText(), text=0)
self.boolean_treeview.append_column(col)
- col = gtk.TreeViewColumn(_("Description"), gtk.CellRendererText(), text=1)
+ col = Gtk.TreeViewColumn(_("Description"), Gtk.CellRendererText(), text=1)
self.boolean_treeview.append_column(col)
- self.role_treeview = self.xml.get_widget("role_treeview")
- self.role_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.role_treeview = self.xml.get_object("role_treeview")
+ self.role_store = Gtk.ListStore(GObject.TYPE_STRING)
self.role_treeview.set_model(self.role_store)
- self.role_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- self.role_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Role"), gtk.CellRendererText(), text=0)
+ self.role_treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.role_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Role"), Gtk.CellRendererText(), text=0)
self.role_treeview.append_column(col)
- self.existing_user_treeview = self.xml.get_widget("existing_user_treeview")
- self.existing_user_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.existing_user_treeview = self.xml.get_object("existing_user_treeview")
+ self.existing_user_store = Gtk.ListStore(GObject.TYPE_STRING)
self.existing_user_treeview.set_model(self.existing_user_store)
- self.existing_user_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Existing_User"), gtk.CellRendererText(), text=0)
+ self.existing_user_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Existing_User"), Gtk.CellRendererText(), text=0)
self.existing_user_treeview.append_column(col)
for i in self.all_roles:
iter = self.role_store.append()
self.role_store.set_value(iter, 0, i[:-2])
- self.in_tcp_reserved_checkbutton = xml.get_widget("in_tcp_reserved_checkbutton")
+ self.in_tcp_reserved_checkbutton = xml.get_object("in_tcp_reserved_checkbutton")
- self.transition_treeview = self.xml.get_widget("transition_treeview")
- self.transition_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.transition_treeview = self.xml.get_object("transition_treeview")
+ self.transition_store = Gtk.ListStore(GObject.TYPE_STRING)
self.transition_treeview.set_model(self.transition_store)
- self.transition_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- self.transition_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Application"), gtk.CellRendererText(), text=0)
+ self.transition_treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.transition_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Application"), Gtk.CellRendererText(), text=0)
self.transition_treeview.append_column(col)
- self.user_transition_treeview = self.xml.get_widget("user_transition_treeview")
- self.user_transition_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.user_transition_treeview = self.xml.get_object("user_transition_treeview")
+ self.user_transition_store = Gtk.ListStore(GObject.TYPE_STRING)
self.user_transition_treeview.set_model(self.user_transition_store)
- self.user_transition_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- self.user_transition_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Application"), gtk.CellRendererText(), text=0)
+ self.user_transition_treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.user_transition_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Application"), Gtk.CellRendererText(), text=0)
self.user_transition_treeview.append_column(col)
for i in self.all_users:
@@ -328,12 +333,12 @@ class childWindow:
iter = self.existing_user_store.append()
self.existing_user_store.set_value(iter, 0, i[:-2])
- self.admin_treeview = self.xml.get_widget("admin_treeview")
- self.admin_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.admin_treeview = self.xml.get_object("admin_treeview")
+ self.admin_store = Gtk.ListStore(GObject.TYPE_STRING)
self.admin_treeview.set_model(self.admin_store)
- self.admin_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- self.admin_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Application"), gtk.CellRendererText(), text=0)
+ self.admin_treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.admin_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Application"), Gtk.CellRendererText(), text=0)
self.admin_treeview.append_column(col)
try:
@@ -383,17 +388,17 @@ class childWindow:
if self.pages[type][self.current_page] == self.FINISH_PAGE:
self.generate_policy()
- self.xml.get_widget("cancel_button").set_label(gtk.STOCK_CLOSE)
+ self.xml.get_object("cancel_button").set_label(Gtk.STOCK_CLOSE)
else:
self.current_page = self.current_page + 1
self.notebook.set_current_page(self.pages[type][self.current_page])
if self.pages[type][self.current_page] == self.FINISH_PAGE:
- self.forward_button.set_label(gtk.STOCK_APPLY)
+ self.forward_button.set_label(Gtk.STOCK_APPLY)
def back(self, arg):
type = self.get_type()
if self.pages[type][self.current_page] == self.FINISH_PAGE:
- self.forward_button.set_label(gtk.STOCK_GO_FORWARD)
+ self.forward_button.set_label(Gtk.STOCK_GO_FORWARD)
self.current_page = self.current_page - 1
self.notebook.set_current_page(self.pages[type][self.current_page])
@@ -406,30 +411,30 @@ class childWindow:
b.set_sensitive(not active)
def verify(self, message, title=""):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
- gtk.BUTTONS_YES_NO,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
+ Gtk.ButtonsType.YES_NO,
message)
dlg.set_title(title)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
rc = dlg.run()
dlg.destroy()
return rc
def info(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
- gtk.BUTTONS_OK,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
+ Gtk.ButtonsType.OK,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
def error(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
- gtk.BUTTONS_CLOSE,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR,
+ Gtk.ButtonsType.CLOSE,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
@@ -550,7 +555,7 @@ class childWindow:
self.boolean_description_entry.set_text("")
rc = self.boolean_dialog.run()
self.boolean_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
iter = self.boolean_store.append()
self.boolean_store.set_value(iter, 0, self.boolean_name_entry.get_text())
@@ -559,7 +564,7 @@ class childWindow:
def __add(self, type):
rc = self.file_dialog.run()
self.file_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
for i in self.file_dialog.get_filenames():
iter = self.store.append()
@@ -569,29 +574,29 @@ class childWindow:
def exec_select(self, args):
self.file_dialog.set_select_multiple(0)
self.file_dialog.set_title(_("Select executable file to be confined."))
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+ self.file_dialog.set_action(Gtk.FileChooserAction.OPEN)
self.file_dialog.set_current_folder("/usr/sbin")
rc = self.file_dialog.run()
self.file_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
self.exec_entry.set_text(self.file_dialog.get_filename())
def init_script_select(self, args):
self.file_dialog.set_select_multiple(0)
self.file_dialog.set_title(_("Select init script file to be confined."))
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+ self.file_dialog.set_action(Gtk.FileChooserAction.OPEN)
self.file_dialog.set_current_folder("/etc/rc.d/init.d")
rc = self.file_dialog.run()
self.file_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
self.init_script_entry.set_text(self.file_dialog.get_filename())
def add(self, args):
self.file_dialog.set_title(_("Select file(s) that confined application creates or writes"))
self.file_dialog.set_current_folder("/")
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+ self.file_dialog.set_action(Gtk.FileChooserAction.OPEN)
self.file_dialog.set_select_multiple(1)
self.__add(FILE)
@@ -599,87 +604,87 @@ class childWindow:
self.file_dialog.set_title(_("Select directory(s) that the confined application owns and writes into"))
self.file_dialog.set_current_folder("/")
self.file_dialog.set_select_multiple(1)
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ self.file_dialog.set_action(Gtk.FileChooserAction.SELECT_FOLDER)
self.__add(DIR)
def on_about_clicked(self, args):
- dlg = xml.get_widget("about_dialog")
+ dlg = xml.get_object("about_dialog")
dlg.run()
dlg.hide()
def quit(self, args):
- gtk.main_quit()
+ Gtk.main_quit()
def setupScreen(self):
# Bring in widgets from glade file.
- self.mainWindow = self.xml.get_widget("main_window")
- self.druid = self.xml.get_widget("druid")
+ self.mainWindow = self.xml.get_object("main_window")
+ self.druid = self.xml.get_object("druid")
self.type = 0
- self.name_entry = self.xml.get_widget("name_entry")
+ self.name_entry = self.xml.get_object("name_entry")
self.name_entry.connect("insert_text", self.on_name_entry_changed)
self.name_entry.connect("focus_out_event", self.on_focus_out_event)
- self.exec_entry = self.xml.get_widget("exec_entry")
- self.exec_button = self.xml.get_widget("exec_button")
- self.init_script_entry = self.xml.get_widget("init_script_entry")
- self.init_script_button = self.xml.get_widget("init_script_button")
- self.output_entry = self.xml.get_widget("output_entry")
+ self.exec_entry = self.xml.get_object("exec_entry")
+ self.exec_button = self.xml.get_object("exec_button")
+ self.init_script_entry = self.xml.get_object("init_script_entry")
+ self.init_script_button = self.xml.get_object("init_script_button")
+ self.output_entry = self.xml.get_object("output_entry")
self.output_entry.set_text(os.getcwd())
- self.xml.get_widget("output_button").connect("clicked", self.output_button_clicked)
-
- self.xwindows_user_radiobutton = self.xml.get_widget("xwindows_user_radiobutton")
- self.terminal_user_radiobutton = self.xml.get_widget("terminal_user_radiobutton")
- self.root_user_radiobutton = self.xml.get_widget("root_user_radiobutton")
- self.login_user_radiobutton = self.xml.get_widget("login_user_radiobutton")
- self.admin_user_radiobutton = self.xml.get_widget("admin_user_radiobutton")
- self.existing_user_radiobutton = self.xml.get_widget("existing_user_radiobutton")
-
- self.user_radiobutton = self.xml.get_widget("user_radiobutton")
- self.init_radiobutton = self.xml.get_widget("init_radiobutton")
- self.inetd_radiobutton = self.xml.get_widget("inetd_radiobutton")
- self.dbus_radiobutton = self.xml.get_widget("dbus_radiobutton")
- self.cgi_radiobutton = self.xml.get_widget("cgi_radiobutton")
- self.sandbox_radiobutton = self.xml.get_widget("sandbox_radiobutton")
- self.tmp_checkbutton = self.xml.get_widget("tmp_checkbutton")
- self.uid_checkbutton = self.xml.get_widget("uid_checkbutton")
- self.pam_checkbutton = self.xml.get_widget("pam_checkbutton")
- self.dbus_checkbutton = self.xml.get_widget("dbus_checkbutton")
- self.audit_checkbutton = self.xml.get_widget("audit_checkbutton")
- self.terminal_checkbutton = self.xml.get_widget("terminal_checkbutton")
- self.mail_checkbutton = self.xml.get_widget("mail_checkbutton")
- self.syslog_checkbutton = self.xml.get_widget("syslog_checkbutton")
- self.view = self.xml.get_widget("write_treeview")
- self.file_dialog = self.xml.get_widget("filechooserdialog")
-
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_INT)
+ self.xml.get_object("output_button").connect("clicked", self.output_button_clicked)
+
+ self.xwindows_user_radiobutton = self.xml.get_object("xwindows_user_radiobutton")
+ self.terminal_user_radiobutton = self.xml.get_object("terminal_user_radiobutton")
+ self.root_user_radiobutton = self.xml.get_object("root_user_radiobutton")
+ self.login_user_radiobutton = self.xml.get_object("login_user_radiobutton")
+ self.admin_user_radiobutton = self.xml.get_object("admin_user_radiobutton")
+ self.existing_user_radiobutton = self.xml.get_object("existing_user_radiobutton")
+
+ self.user_radiobutton = self.xml.get_object("user_radiobutton")
+ self.init_radiobutton = self.xml.get_object("init_radiobutton")
+ self.inetd_radiobutton = self.xml.get_object("inetd_radiobutton")
+ self.dbus_radiobutton = self.xml.get_object("dbus_radiobutton")
+ self.cgi_radiobutton = self.xml.get_object("cgi_radiobutton")
+ self.sandbox_radiobutton = self.xml.get_object("sandbox_radiobutton")
+ self.tmp_checkbutton = self.xml.get_object("tmp_checkbutton")
+ self.uid_checkbutton = self.xml.get_object("uid_checkbutton")
+ self.pam_checkbutton = self.xml.get_object("pam_checkbutton")
+ self.dbus_checkbutton = self.xml.get_object("dbus_checkbutton")
+ self.audit_checkbutton = self.xml.get_object("audit_checkbutton")
+ self.terminal_checkbutton = self.xml.get_object("terminal_checkbutton")
+ self.mail_checkbutton = self.xml.get_object("mail_checkbutton")
+ self.syslog_checkbutton = self.xml.get_object("syslog_checkbutton")
+ self.view = self.xml.get_object("write_treeview")
+ self.file_dialog = self.xml.get_object("filechooserdialog")
+
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_INT)
self.view.set_model(self.store)
- col = gtk.TreeViewColumn("", gtk.CellRendererText(), text=0)
+ col = Gtk.TreeViewColumn("", Gtk.CellRendererText(), text=0)
col.set_resizable(True)
self.view.append_column(col)
self.view.get_selection().select_path((0,))
def output_button_clicked(self, *args):
self.file_dialog.set_title(_("Select directory to generate policy files in"))
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ self.file_dialog.set_action(Gtk.FileChooserAction.SELECT_FOLDER)
self.file_dialog.set_select_multiple(0)
rc = self.file_dialog.run()
self.file_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
self.output_entry.set_text(self.file_dialog.get_filename())
def on_name_entry_changed(self, entry, text, size, position):
if text.find(" ") >= 0:
- entry.emit_stop_by_name("insert_text")
+ entry.stop_emission_by_name("insert-text")
def on_focus_out_event(self, entry, third):
name = entry.get_text()
if self.name != name:
if name in self.all_types:
- if self.verify(_("Type %s_t already defined in current policy.\nDo you want to continue?") % name, _("Verify Name")) == gtk.RESPONSE_NO:
+ if self.verify(_("Type %s_t already defined in current policy.\nDo you want to continue?") % name, _("Verify Name")) == Gtk.ResponseType.NO:
entry.set_text("")
return False
if name in self.all_modules:
- if self.verify(_("Module %s already loaded in current policy.\nDo you want to continue?") % name, _("Verify Name")) == gtk.RESPONSE_NO:
+ if self.verify(_("Module %s already loaded in current policy.\nDo you want to continue?") % name, _("Verify Name")) == Gtk.ResponseType.NO:
entry.set_text("")
return False
@@ -696,16 +701,16 @@ class childWindow:
def on_in_net_page_next(self, *args):
try:
- generate.verify_ports(self.in_tcp_entry.get_text())
- generate.verify_ports(self.in_udp_entry.get_text())
+ sepolicy.generate.verify_ports(self.in_tcp_entry.get_text())
+ sepolicy.generate.verify_ports(self.in_udp_entry.get_text())
except ValueError as e:
self.error(e.message)
return True
def on_out_net_page_next(self, *args):
try:
- generate.verify_ports(self.out_tcp_entry.get_text())
- generate.verify_ports(self.out_udp_entry.get_text())
+ sepolicy.generate.verify_ports(self.out_tcp_entry.get_text())
+ sepolicy.generate.verify_ports(self.out_udp_entry.get_text())
except ValueError as e:
self.error(e.message)
return True
@@ -741,7 +746,7 @@ class childWindow:
if exe == "":
self.error(_("You must enter a executable"))
return True
- policy = generate.policy(name, self.get_type())
+ policy = sepolicy.generate.policy(name, self.get_type())
policy.set_program(exe)
policy.gen_writeable()
policy.gen_symbols()
@@ -770,7 +775,7 @@ class childWindow:
self.mainWindow.connect("destroy", self.quit)
self.mainWindow.show_all()
- gtk.main()
+ Gtk.main()
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
diff --git selinux-gui-2.7/portsPage.py selinux-gui-2.7/portsPage.py
index b8fdaad..30f5838 100644
--- selinux-gui-2.7/portsPage.py
+++ selinux-gui-2.7/portsPage.py
@@ -16,12 +16,8 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
-import os
-import gobject
import sys
+from gi.repository import GObject, Gtk
import seobject
TYPE_COL = 0
@@ -62,18 +58,19 @@ class portsPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "ports", _("Network Port"))
- xml.signal_connect("on_group_clicked", self.on_group_clicked)
+ group_listview = xml.get_object("listViewButton")
+ group_listview.connect("clicked", self.on_group_clicked)
self.group = False
- self.ports_filter = xml.get_widget("portsFilterEntry")
+ self.ports_filter = xml.get_object("portsFilterEntry")
self.ports_filter.connect("focus_out_event", self.filter_changed)
self.ports_filter.connect("activate", self.filter_changed)
- self.ports_name_entry = xml.get_widget("portsNameEntry")
- self.ports_protocol_combo = xml.get_widget("portsProtocolCombo")
- self.ports_number_entry = xml.get_widget("portsNumberEntry")
- self.ports_mls_entry = xml.get_widget("portsMLSEntry")
- self.ports_add_button = xml.get_widget("portsAddButton")
- self.ports_properties_button = xml.get_widget("portsPropertiesButton")
- self.ports_delete_button = xml.get_widget("portsDeleteButton")
+ self.ports_name_entry = xml.get_object("portsNameEntry")
+ self.ports_protocol_combo = xml.get_object("portsProtocolCombo")
+ self.ports_number_entry = xml.get_object("portsNumberEntry")
+ self.ports_mls_entry = xml.get_object("portsMLSEntry")
+ self.ports_add_button = xml.get_object("portsAddButton")
+ self.ports_properties_button = xml.get_object("portsPropertiesButton")
+ self.ports_delete_button = xml.get_object("portsDeleteButton")
liststore = self.ports_protocol_combo.get_model()
iter = liststore.get_iter_first()
self.ports_protocol_combo.set_active_iter(iter)
@@ -90,28 +87,28 @@ class portsPage(semanagePage):
self.group_load(filter)
def init_store(self):
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
self.view.set_model(self.store)
- self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
self.view.set_search_equal_func(self.search)
- col = gtk.TreeViewColumn(_("SELinux Port\nType"), gtk.CellRendererText(), text=TYPE_COL)
+ col = Gtk.TreeViewColumn(_("SELinux Port\nType"), Gtk.CellRendererText(), text=TYPE_COL)
col.set_sort_column_id(TYPE_COL)
col.set_resizable(True)
self.view.append_column(col)
- self.store.set_sort_column_id(TYPE_COL, gtk.SORT_ASCENDING)
+ self.store.set_sort_column_id(TYPE_COL, Gtk.SortType.ASCENDING)
- col = gtk.TreeViewColumn(_("Protocol"), gtk.CellRendererText(), text=PROTOCOL_COL)
+ col = Gtk.TreeViewColumn(_("Protocol"), Gtk.CellRendererText(), text=PROTOCOL_COL)
col.set_sort_column_id(PROTOCOL_COL)
col.set_resizable(True)
self.view.append_column(col)
- self.mls_col = gtk.TreeViewColumn(_("MLS/MCS\nLevel"), gtk.CellRendererText(), text=MLS_COL)
+ self.mls_col = Gtk.TreeViewColumn(_("MLS/MCS\nLevel"), Gtk.CellRendererText(), text=MLS_COL)
self.mls_col.set_resizable(True)
self.mls_col.set_sort_column_id(MLS_COL)
self.view.append_column(self.mls_col)
- col = gtk.TreeViewColumn(_("Port"), gtk.CellRendererText(), text=PORT_COL)
+ col = Gtk.TreeViewColumn(_("Port"), Gtk.CellRendererText(), text=PORT_COL)
col.set_sort_column_id(PORT_COL)
col.set_resizable(True)
self.view.append_column(col)
@@ -139,7 +136,7 @@ class portsPage(semanagePage):
continue
iter = self.store.append()
if k[0] == k[1]:
- self.store.set_value(iter, PORT_COL, k[0])
+ self.store.set_value(iter, PORT_COL, str(k[0]))
else:
rec = "%s-%s" % k[:2]
self.store.set_value(iter, PORT_COL, rec)
diff --git selinux-gui-2.7/semanagePage.py selinux-gui-2.7/semanagePage.py
index 27367f3..4127804 100644
--- selinux-gui-2.7/semanagePage.py
+++ selinux-gui-2.7/semanagePage.py
@@ -16,13 +16,8 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
-import os
-import gobject
import sys
-import seobject
+from gi.repository import Gdk, Gtk
##
## I18N
@@ -47,24 +42,25 @@ except:
def idle_func():
- while gtk.events_pending():
- gtk.main_iteration()
+ while Gtk.events_pending():
+ Gtk.main_iteration()
class semanagePage:
def __init__(self, xml, name, description):
self.xml = xml
- self.window = self.xml.get_widget("mainWindow").get_root_window()
- self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
- self.ready_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
+ self.window = self.xml.get_object("mainWindow").get_root_window()
+ self.busy_cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
+ self.ready_cursor = Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR)
self.local = False
- self.view = xml.get_widget("%sView" % name)
- self.dialog = xml.get_widget("%sDialog" % name)
- self.filter_entry = xml.get_widget("%sFilterEntry" % name)
+ self.view = xml.get_object("%sView" % name)
+ self.dialog = xml.get_object("%sDialog" % name)
+ self.filter_entry = xml.get_object("%sFilterEntry" % name)
self.filter_entry.connect("focus_out_event", self.filter_changed)
self.filter_entry.connect("activate", self.filter_changed)
+ self.filter_entry.connect("changed", self.filter_changed)
self.view.connect("row_activated", self.rowActivated)
self.view.get_selection().connect("changed", self.itemSelected)
@@ -81,7 +77,7 @@ class semanagePage:
def get_description(self):
return self.description
- def itemSelected(self, args):
+ def itemSelected(self, selection):
return
def filter_changed(self, *arg):
@@ -110,28 +106,28 @@ class semanagePage:
self.propertiesDialog()
def verify(self, message, title=""):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
- gtk.BUTTONS_YES_NO,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
+ Gtk.ButtonsType.YES_NO,
message)
dlg.set_title(title)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
rc = dlg.run()
dlg.destroy()
return rc
def error(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
- gtk.BUTTONS_CLOSE,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR,
+ Gtk.ButtonsType.CLOSE,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
def deleteDialog(self):
store, it = self.view.get_selection().get_selected()
- if (it is not None) and (self.verify(_("Are you sure you want to delete %s '%s'?" % (self.description, store.get_value(it, 0))), _("Delete %s" % self.description)) == gtk.RESPONSE_YES):
+ if (it is not None) and (self.verify(_("Are you sure you want to delete %s '%s'?" % (self.description, store.get_value(it, 0))), _("Delete %s" % self.description)) == Gtk.ResponseType.YES):
self.delete()
def use_menus(self):
@@ -140,11 +136,11 @@ class semanagePage:
def addDialog(self):
self.dialogClear()
self.dialog.set_title(_("Add %s" % self.description))
- self.dialog.set_position(gtk.WIN_POS_MOUSE)
+ self.dialog.set_position(Gtk.WindowPosition.MOUSE)
- while self.dialog.run() == gtk.RESPONSE_OK:
+ while self.dialog.run() == Gtk.ResponseType.OK:
try:
- if self.add() == False:
+ if self.add() is False:
continue
break
except ValueError as e:
@@ -154,10 +150,10 @@ class semanagePage:
def propertiesDialog(self):
self.dialogInit()
self.dialog.set_title(_("Modify %s" % self.description))
- self.dialog.set_position(gtk.WIN_POS_MOUSE)
- while self.dialog.run() == gtk.RESPONSE_OK:
+ self.dialog.set_position(Gtk.WindowPosition.MOUSE)
+ while self.dialog.run() == Gtk.ResponseType.OK:
try:
- if self.modify() == False:
+ if self.modify() is False:
continue
break
except ValueError as e:
diff --git selinux-gui-2.7/statusPage.py selinux-gui-2.7/statusPage.py
index 23d0d0f..766854b 100644
--- selinux-gui-2.7/statusPage.py
+++ selinux-gui-2.7/statusPage.py
@@ -16,23 +16,14 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
import os
-import gobject
import sys
-import tempfile
+from gi.repository import Gtk
import selinux
INSTALLPATH = '/usr/share/system-config-selinux'
sys.path.append(INSTALLPATH)
-try:
- from subprocess import getstatusoutput
-except ImportError:
- from commands import getstatusoutput
-
ENFORCING = 1
PERMISSIVE = 0
DISABLED = -1
@@ -71,12 +62,11 @@ class statusPage:
self.type = selinux.selinux_getpolicytype()
# Bring in widgets from glade file.
- self.typeHBox = xml.get_widget("typeHBox")
- self.selinuxTypeOptionMenu = xml.get_widget("selinuxTypeOptionMenu")
- self.typeLabel = xml.get_widget("typeLabel")
- self.enabledOptionMenu = xml.get_widget("enabledOptionMenu")
- self.currentOptionMenu = xml.get_widget("currentOptionMenu")
- self.relabel_checkbutton = xml.get_widget("relabelCheckbutton")
+ self.selinuxTypeOptionMenu = xml.get_object("selinuxTypeOptionMenu")
+ self.typeLabel = xml.get_object("typeLabel")
+ self.enabledOptionMenu = xml.get_object("enabledOptionMenu")
+ self.currentOptionMenu = xml.get_object("currentOptionMenu")
+ self.relabel_checkbutton = xml.get_object("relabelCheckbutton")
self.relabel_checkbutton.set_active(self.is_relabel())
self.relabel_checkbutton.connect("toggled", self.on_relabel_toggle)
if self.get_current_mode() == ENFORCING or self.get_current_mode() == PERMISSIVE:
@@ -90,7 +80,7 @@ class statusPage:
self.currentOptionMenu.set_active(0)
self.currentOptionMenu.set_sensitive(False)
- if self.read_selinux_config() == None:
+ if self.read_selinux_config() is None:
self.selinuxsupport = False
else:
self.enabledOptionMenu.connect("changed", self.enabled_changed)
@@ -131,10 +121,10 @@ class statusPage:
os.unlink(RELABELFILE)
def verify(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
- gtk.BUTTONS_YES_NO,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
+ Gtk.ButtonsType.YES_NO,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
rc = dlg.run()
dlg.destroy()
@@ -144,7 +134,7 @@ class statusPage:
type = self.get_type()
enabled = self.enabledOptionMenu.get_active()
if self.initialtype != type:
- if self.verify(_("Changing the policy type will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system. Do you wish to continue?")) == gtk.RESPONSE_NO:
+ if self.verify(_("Changing the policy type will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system. Do you wish to continue?")) == Gtk.ResponseType.NO:
menu.set_active(self.typeHistory)
return None
@@ -158,12 +148,12 @@ class statusPage:
type = self.get_type()
if self.initEnabled != DISABLED and enabled == DISABLED:
- if self.verify(_("Changing to SELinux disabled requires a reboot. It is not recommended. If you later decide to turn SELinux back on, the system will be required to relabel. If you just want to see if SELinux is causing a problem on your system, you can go to permissive mode which will only log errors and not enforce SELinux policy. Permissive mode does not require a reboot Do you wish to continue?")) == gtk.RESPONSE_NO:
+ if self.verify(_("Changing to SELinux disabled requires a reboot. It is not recommended. If you later decide to turn SELinux back on, the system will be required to relabel. If you just want to see if SELinux is causing a problem on your system, you can go to permissive mode which will only log errors and not enforce SELinux policy. Permissive mode does not require a reboot Do you wish to continue?")) == Gtk.ResponseType.NO:
combo.set_active(self.enabled)
return None
if self.initEnabled == DISABLED and enabled < 2:
- if self.verify(_("Changing to SELinux enabled will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system. Do you wish to continue?")) == gtk.RESPONSE_NO:
+ if self.verify(_("Changing to SELinux enabled will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system. Do you wish to continue?")) == Gtk.ResponseType.NO:
combo.set_active(self.enabled)
return None
self.relabel_checkbutton.set_active(True)
diff --git selinux-gui-2.7/system-config-selinux.py selinux-gui-2.7/system-config-selinux.py
index ed41e98..ce7c74b 100644
--- selinux-gui-2.7/system-config-selinux.py
+++ selinux-gui-2.7/system-config-selinux.py
@@ -20,20 +20,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
+import os
import signal
-import string
import sys
+import gi
+gi.require_version('Gtk', '3.0')
try:
- import gtk
+ from gi.repository import Gtk
except RuntimeError as e:
print("system-config-selinux:", e)
print("This is a graphical application and requires DISPLAY to be set.")
sys.exit(1)
-import gtk.glade
-import os
-import gobject
-import gnome
+from gi.repository import GObject
import statusPage
import booleansPage
import loginsPage
@@ -64,8 +63,6 @@ except:
import __builtin__
__builtin__.__dict__['_'] = unicode
-gnome.program_init("SELinux Management Tool", "5")
-
version = "1.0"
sys.path.append('/usr/share/system-config-selinux')
@@ -74,10 +71,12 @@ sys.path.append('/usr/share/system-config-selinux')
##
## Pull in the Glade file
##
-if os.access("system-config-selinux.glade", os.F_OK):
- xml = gtk.glade.XML("system-config-selinux.glade", domain=PROGNAME)
+xml = Gtk.Builder()
+xml.set_translation_domain(PROGNAME)
+if os.access("system-config-selinux.ui", os.F_OK):
+ xml.add_from_file("system-config-selinux.ui")
else:
- xml = gtk.glade.XML("/usr/share/system-config-selinux/system-config-selinux.glade", domain=PROGNAME)
+ xml.add_from_file("/usr/share/system-config-selinux/system-config-selinux.ui")
class childWindow:
@@ -85,11 +84,16 @@ class childWindow:
def __init__(self):
self.tabs = []
self.xml = xml
- xml.signal_connect("on_quit_activate", self.destroy)
- xml.signal_connect("on_delete_clicked", self.delete)
- xml.signal_connect("on_add_clicked", self.add)
- xml.signal_connect("on_properties_clicked", self.properties)
- xml.signal_connect("on_local_clicked", self.on_local_clicked)
+ xml.connect_signals({
+ "on_quit_activate": self.destroy,
+ "on_delete_clicked": self.delete,
+ "on_add_clicked": self.add,
+ "on_properties_clicked": self.properties,
+ "on_local_clicked": self.on_local_clicked,
+ "on_policy_activate": self.policy,
+ "on_logging_activate": self.logging,
+ "on_about_activate": self.on_about_activate,
+ })
self.add_page(statusPage.statusPage(xml))
if selinux.is_selinux_enabled() > 0:
try:
@@ -103,20 +107,15 @@ class childWindow:
except ValueError as e:
self.error(e.message)
- xml.signal_connect("on_quit_activate", self.destroy)
- xml.signal_connect("on_policy_activate", self.policy)
- xml.signal_connect("on_logging_activate", self.logging)
- xml.signal_connect("on_about_activate", self.on_about_activate)
-
- self.add_menu = xml.get_widget("add_menu_item")
- self.properties_menu = xml.get_widget("properties_menu_item")
- self.delete_menu = xml.get_widget("delete_menu_item")
+ self.add_menu = xml.get_object("add_menu_item")
+ self.properties_menu = xml.get_object("properties_menu_item")
+ self.delete_menu = xml.get_object("delete_menu_item")
def error(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
- gtk.BUTTONS_CLOSE,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR,
+ Gtk.ButtonsType.CLOSE,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
@@ -143,12 +142,12 @@ class childWindow:
self.tabs[self.notebook.get_current_page()].on_local_clicked(button)
def on_about_activate(self, args):
- dlg = xml.get_widget("aboutWindow")
+ dlg = xml.get_object("aboutWindow")
dlg.run()
dlg.hide()
def destroy(self, args):
- gtk.main_quit()
+ Gtk.main_quit()
def use_menus(self, use_menus):
self.add_menu.set_sensitive(use_menus)
@@ -166,13 +165,13 @@ class childWindow:
def setupScreen(self):
# Bring in widgets from glade file.
- self.mainWindow = self.xml.get_widget("mainWindow")
- self.notebook = self.xml.get_widget("notebook")
- self.view = self.xml.get_widget("selectView")
+ self.mainWindow = self.xml.get_object("mainWindow")
+ self.notebook = self.xml.get_object("notebook")
+ self.view = self.xml.get_object("selectView")
self.view.get_selection().connect("changed", self.itemSelected)
- self.store = gtk.ListStore(gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING)
self.view.set_model(self.store)
- col = gtk.TreeViewColumn("", gtk.CellRendererText(), text=0)
+ col = Gtk.TreeViewColumn("", Gtk.CellRendererText(), text=0)
col.set_resizable(True)
self.view.append_column(col)
@@ -189,7 +188,7 @@ class childWindow:
self.mainWindow.connect("destroy", self.destroy)
self.mainWindow.show_all()
- gtk.main()
+ Gtk.main()
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
diff --git selinux-gui-2.7/system-config-selinux.ui selinux-gui-2.7/system-config-selinux.ui
new file mode 100644
index 0000000..7cc1cc5
--- /dev/null
+++ selinux-gui-2.7/system-config-selinux.ui
@@ -0,0 +1,2024 @@
+
+
+
+
+
+
+ system-config-selinux
+ False
+ 5
+ normal
+ Copyright (c)2006 Red Hat, Inc.
+Copyright (c) 2006 Dan Walsh <dwalsh@redhat.com>
+ Daniel Walsh <dwalsh@redhat.com>
+
+ translator-credits
+ system-config-selinux.png
+
+
+ False
+
+
+ False
+
+
+ False
+ False
+ 0
+
+
+
+
+
+
+
+
+
+ True
+ False
+ gtk-add
+
+
+ True
+ False
+ gtk-properties
+
+
+ True
+ False
+ gtk-delete
+
+
+ False
+ Add SELinux Login Mapping
+ dialog
+
+
+ True
+ False
+
+
+ True
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ False
+ True
+
+
+ True
+ True
+ 0
+
+
+
+
+ gtk-ok
+ True
+ True
+ True
+ False
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ 4
+ 6
+
+
+ True
+ False
+ Login Name
+
+
+ 0
+ 0
+
+
+
+
+ True
+ False
+ SELinux User
+
+
+ 0
+ 1
+
+
+
+
+ True
+ False
+ MLS/MCS Range
+
+
+ 0
+ 2
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 0
+
+
+
+
+ True
+ False
+
+
+ 1
+ 1
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 2
+
+
+
+
+ True
+ True
+ 5
+ 0
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+ cancelbutton1
+ okbutton1
+
+
+
+
+
+
+
+
+
+
+
+
+ tcp
+
+
+ udp
+
+
+
+
+ False
+ Add SELinux Network Ports
+ dialog
+
+
+ True
+ False
+
+
+ True
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ False
+ True
+
+
+ True
+ True
+ 0
+
+
+
+
+ gtk-ok
+ True
+ True
+ True
+ False
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ 4
+ 6
+
+
+ True
+ False
+ Port Number
+
+
+ 0
+ 0
+
+
+
+
+ True
+ False
+ Protocol
+
+
+ 0
+ 1
+
+
+
+
+ True
+ False
+ SELinux Type
+
+
+ 0
+ 2
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 0
+
+
+
+
+ True
+ False
+ model1
+
+
+
+ 0
+
+
+
+
+ 1
+ 1
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 2
+
+
+
+
+ True
+ False
+ MLS/MCS
+Level
+
+
+ 0
+ 3
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 3
+
+
+
+
+ True
+ True
+ 5
+ 0
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+ button1
+ button2
+
+
+
+
+
+
+
+
+
+
+
+
+ all files
+
+
+ regular file
+
+
+ directory
+
+
+ character device
+
+
+ block device
+
+
+ socket file
+
+
+ symbolic link
+
+
+ named pipe
+
+
+
+
+ False
+ Add SELinux Login Mapping
+ dialog
+
+
+ True
+ False
+
+
+ True
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ False
+ True
+
+
+ True
+ True
+ 0
+
+
+
+
+ gtk-ok
+ True
+ True
+ True
+ False
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ 4
+ 6
+
+
+ True
+ False
+ File Specification
+
+
+ 0
+ 0
+
+
+
+
+ True
+ False
+ File Type
+
+
+ 0
+ 1
+
+
+
+
+ True
+ False
+ SELinux Type
+
+
+ 0
+ 2
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 0
+
+
+
+
+ True
+ False
+ model2
+
+
+
+ 0
+
+
+
+
+ 1
+ 1
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 2
+
+
+
+
+ True
+ False
+ MLS
+
+
+ 0
+ 3
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 3
+
+
+
+
+ True
+ True
+ 5
+ 0
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+ button5
+ button6
+
+
+
+
+
+
+
+
+
+
+
+
+ Disabled
+
+
+ Permissive
+
+
+ Enforcing
+
+
+
+
+ False
+ SELinux Administration
+ 800
+ 500
+ system-config-selinux.png
+
+
+ True
+ False
+ vertical
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+
+
+ True
+ False
+ 5
+ 0
+ none
+
+
+ True
+ False
+ 12
+
+
+ True
+ True
+ Select Management Object
+ False
+
+
+
+
+
+
+
+
+
+ True
+ False
+ <b>Select:</b>
+ True
+
+
+
+
+ True
+ False
+
+
+
+
+ True
+ False
+ False
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ 5
+ 5
+
+
+ True
+ False
+ System Default Enforcing Mode
+
+
+ 0
+ 0
+
+
+
+
+
+ 1
+ 0
+
+
+
+
+ True
+ False
+ Current Enforcing Mode
+
+
+ 0
+ 1
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+ True
+ False
+ System Default Policy Type:
+
+
+ 0
+ 2
+
+
+
+
+
+ 1
+ 2
+
+
+
+
+ True
+ True
+ False
+ Select if you wish to relabel then entire file system on next reboot. Relabeling can take a very long time, depending on the size of the system. If you are changing policy types or going from disabled to enforcing, a relabel is required.
+ False
+ True
+
+
+ True
+ False
+ True
+ 0
+ 0
+
+
+ True
+ False
+ True
+ 2
+
+
+ True
+ False
+ gtk-refresh
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+ Relabel on next reboot.
+ True
+
+
+ False
+ False
+ 1
+
+
+
+
+
+
+
+
+ 0
+ 3
+ 2
+
+
+
+
+ True
+ True
+ end
+ 0
+
+
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ both
+
+
+ True
+ False
+ Revert boolean setting to system default
+ gtk-revert-to-saved
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Toggle between Customized and All Booleans
+ Customized
+ True
+ gtk-find
+
+
+
+ False
+ True
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ Filter
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ True
+ •
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 10
+ 1
+
+
+
+
+ True
+ True
+ always
+ always
+
+
+ True
+ True
+ Boolean
+
+
+
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+ 1
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ both
+
+
+ True
+ False
+ Add File Context
+ gtk-add
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Modify File Context
+ gtk-properties
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Delete File Context
+ gtk-delete
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Toggle between all and customized file context
+ Customized
+ True
+ gtk-find
+
+
+
+ False
+ True
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ Filter
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ True
+ •
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ False
+ 1
+
+
+
+
+ True
+ True
+ always
+ always
+
+
+ True
+ True
+ File Labeling
+
+
+
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+ 2
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ both
+
+
+ True
+ False
+ Add SELinux User Mapping
+ gtk-add
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Modify SELinux User Mapping
+ gtk-properties
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Delete SELinux User Mapping
+ gtk-delete
+
+
+
+ False
+ True
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ Filter
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ True
+ •
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 5
+ 1
+
+
+
+
+ True
+ True
+ always
+ always
+
+
+ True
+ True
+ User Mapping
+
+
+
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+ 3
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ both
+
+
+ True
+ False
+ Add User
+ gtk-add
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Modify User
+ gtk-properties
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Delete User
+ gtk-delete
+
+
+
+ False
+ True
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ Filter
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ True
+ •
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 5
+ 1
+
+
+
+
+ True
+ True
+ always
+ always
+
+
+ True
+ True
+ SELinux User
+
+
+
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+ 4
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ both
+
+
+ True
+ False
+ Add Network Port
+ gtk-add
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Edit Network Port
+ gtk-properties
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Delete Network Port
+ gtk-delete
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+
+
+ 32
+ True
+ False
+ vertical
+
+
+
+
+ False
+ False
+
+
+
+
+ True
+ False
+ Toggle between Customized and All Ports
+ Group View
+ True
+ gtk-indent
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Toggle between Customized and All Ports
+ Customized
+ True
+ gtk-find
+
+
+
+ False
+ True
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ Filter
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ True
+ •
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 5
+ 1
+
+
+
+
+ True
+ True
+ always
+ always
+
+
+ True
+ True
+ Network Port
+
+
+
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+ 5
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ both
+
+
+ True
+ False
+ Generate new policy module
+ gtk-new
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Load policy module
+ gtk-add
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Remove loadable policy module
+ gtk-remove
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+
+
+ 10
+ True
+ False
+ vertical
+
+
+
+
+ False
+ False
+
+
+
+
+ True
+ False
+ Enable/Disable additional audit rules, that are normally not reported in the log files.
+ Enable Audit
+ True
+ gtk-zoom-in
+
+
+ False
+ True
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ Filter
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ True
+ •
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 5
+ 1
+
+
+
+
+ True
+ True
+ always
+ always
+
+
+ True
+ True
+ Policy Module
+
+
+
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+ 6
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ both
+
+
+ True
+ False
+ Change process mode to permissive.
+ Permissive
+ True
+ gtk-dialog-warning
+
+
+
+ False
+ True
+
+
+
+
+ True
+ False
+ Change process mode to enforcing
+ Enforcing
+ True
+ gtk-dialog-error
+
+
+
+ False
+ True
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+ Filter
+
+
+ False
+ False
+ 10
+ 0
+
+
+
+
+ True
+ True
+ •
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 5
+ 1
+
+
+
+
+ True
+ True
+ always
+ always
+
+
+ True
+ True
+ Process Domain
+
+
+
+
+
+
+
+ True
+ True
+ 2
+
+
+
+
+ 7
+
+
+
+
+ True
+ True
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+
+
+
+ False
+ Add SELinux User
+ dialog
+
+
+ True
+ False
+
+
+ True
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ False
+ True
+
+
+ True
+ True
+ 0
+
+
+
+
+ gtk-ok
+ True
+ True
+ True
+ False
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ 4
+ 6
+
+
+ True
+ False
+ SELinux User
+
+
+ 0
+ 0
+
+
+
+
+ True
+ False
+ MLS/MCS Range
+
+
+ 0
+ 1
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 1
+
+
+
+
+ True
+ False
+ SELinux Roles
+
+
+ 0
+ 2
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 2
+
+
+
+
+ True
+ True
+ *
+
+
+ 1
+ 0
+
+
+
+
+ True
+ True
+ 5
+ 0
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+ button7
+ button8
+
+
+
+
+
+
diff --git selinux-gui-2.7/usersPage.py selinux-gui-2.7/usersPage.py
index 75b0547..26794ed 100644
--- selinux-gui-2.7/usersPage.py
+++ selinux-gui-2.7/usersPage.py
@@ -16,17 +16,13 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
-import os
-import gobject
import sys
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
+from gi.repository import GObject, Gtk
import seobject
from semanagePage import *
@@ -57,27 +53,27 @@ class usersPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "users", _("SELinux User"))
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
self.view.set_model(self.store)
- self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
- col = gtk.TreeViewColumn(_("SELinux\nUser"), gtk.CellRendererText(), text=0)
+ col = Gtk.TreeViewColumn(_("SELinux\nUser"), Gtk.CellRendererText(), text=0)
col.set_sort_column_id(0)
col.set_resizable(True)
self.view.append_column(col)
- col = gtk.TreeViewColumn(_("MLS/\nMCS Range"), gtk.CellRendererText(), text=1)
+ col = Gtk.TreeViewColumn(_("MLS/\nMCS Range"), Gtk.CellRendererText(), text=1)
col.set_resizable(True)
self.view.append_column(col)
- col = gtk.TreeViewColumn(_("SELinux Roles"), gtk.CellRendererText(), text=2)
+ col = Gtk.TreeViewColumn(_("SELinux Roles"), Gtk.CellRendererText(), text=2)
col.set_resizable(True)
self.view.append_column(col)
self.load()
- self.selinuxUserEntry = xml.get_widget("selinuxUserEntry")
- self.mlsRangeEntry = xml.get_widget("mlsRangeEntry")
- self.selinuxRolesEntry = xml.get_widget("selinuxRolesEntry")
+ self.selinuxUserEntry = xml.get_object("selinuxUserEntry")
+ self.mlsRangeEntry = xml.get_object("mlsRangeEntry")
+ self.selinuxRolesEntry = xml.get_object("selinuxRolesEntry")
def load(self, filter=""):
self.filter = filter
@@ -95,10 +91,6 @@ class usersPage(semanagePage):
self.store.set_value(iter, 2, dict[k][3])
self.view.get_selection().select_path((0,))
- def delete(self):
- if semanagePage.delete(self) == gtk.RESPONSE_NO:
- return None
-
def dialogInit(self):
store, iter = self.view.get_selection().get_selected()
self.selinuxUserEntry.set_text(store.get_value(iter, 0))