- Update to upstream * Merged newrole patch set from Michael Thompson. - Add policycoreutils-gui
4539 lines
172 KiB
Diff
4539 lines
172 KiB
Diff
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/booleansPage.py policycoreutils-1.33.1/gui/booleansPage.py
|
|
--- nsapolicycoreutils/gui/booleansPage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/booleansPage.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,247 @@
|
|
+#
|
|
+# booleansPage.py - GUI for Booleans page in system-config-securitylevel
|
|
+#
|
|
+# Brent Fox <bfox@redhat.com>
|
|
+# Dan Walsh <dwalsh@redhat.com>
|
|
+#
|
|
+# Copyright 2006 Red Hat, Inc.
|
|
+#
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2 of the License, or
|
|
+# (at your option) any later version.
|
|
+#
|
|
+# This program is distributed in the hope that it will be useful,
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+# GNU General Public License for more details.
|
|
+#
|
|
+# 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 libxml2
|
|
+import gobject
|
|
+import sys
|
|
+import tempfile
|
|
+
|
|
+INSTALLPATH='/usr/share/system-config-securitylevel'
|
|
+sys.path.append(INSTALLPATH)
|
|
+
|
|
+from Conf import *
|
|
+import commands
|
|
+ENFORCING=0
|
|
+PERMISSIVE=1
|
|
+DISABLED=2
|
|
+SELINUXDIR="/etc/selinux/"
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="system-config-selinux"
|
|
+
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class Translation:
|
|
+ def __init__(self):
|
|
+ self.translation={}
|
|
+ fd=open(INSTALLPATH + "/selinux.tbl","r")
|
|
+ lines=fd.readlines()
|
|
+ fd.close()
|
|
+ for i in lines:
|
|
+ try:
|
|
+ line=i.strip().split("_(\"")
|
|
+ key=line[0].strip()
|
|
+ category=line[1].split("\"")[0]
|
|
+ value=line[2].split("\"")[0]
|
|
+ self.translation[key]=(category,value)
|
|
+ except:
|
|
+ continue
|
|
+
|
|
+ def get_category(self,key):
|
|
+ try:
|
|
+ return _(self.translation[key][0])
|
|
+ except:
|
|
+ return _("Other")
|
|
+
|
|
+ def get_value(self,key):
|
|
+ try:
|
|
+ return _(self.translation[key][1])
|
|
+ except:
|
|
+ return key
|
|
+
|
|
+class Modifier:
|
|
+ def __init__(self,name, on, save):
|
|
+ self.on=on
|
|
+ self.name=name
|
|
+ self.save=save
|
|
+
|
|
+ def set(self,value):
|
|
+ self.on=value
|
|
+ self.save=True
|
|
+
|
|
+ def isOn(self):
|
|
+ return self.on
|
|
+
|
|
+class Boolean(Modifier):
|
|
+ def __init__(self,name, val, save=False):
|
|
+ Modifier.__init__(self,name, val, save)
|
|
+
|
|
+class Modifiers:
|
|
+ def __init__(self,store):
|
|
+ self.modifiers={}
|
|
+ self.translation=Translation()
|
|
+ self.store=store
|
|
+ self.store.clear()
|
|
+
|
|
+ def add(self,name,val):
|
|
+ if name == "targeted_policy":
|
|
+ return
|
|
+ category=self.translation.get_category(name)
|
|
+ if not self.modifiers.has_key(category):
|
|
+ self.modifiers[category]={}
|
|
+ iter=self.store.append(None)
|
|
+ self.modifiers[category]["iter"] = iter
|
|
+ self.store.set_value(iter, 1, category)
|
|
+ self.store.set_value(iter, 3, False)
|
|
+
|
|
+ self.modifiers[category][name]=val;
|
|
+ iter=self.store.append(self.modifiers[category]["iter"])
|
|
+ self.store.set_value(iter, 0, val.isOn())
|
|
+ self.store.set_value(iter, 1, self.translation.get_value(name))
|
|
+ self.store.set_value(iter, 2, name)
|
|
+ self.store.set_value(iter, 3, True)
|
|
+
|
|
+ def set(self,name,val):
|
|
+ category=self.translation.get_category(name)
|
|
+ self.modifiers[category][name].set(val)
|
|
+ if self.isBoolean(name):
|
|
+ self.booleanDirty=True
|
|
+
|
|
+ def isBoolean(self,name):
|
|
+ c=self.translation.get_category(name)
|
|
+ return isinstance(self.modifiers[c][name], Boolean)
|
|
+
|
|
+ def get_booleans(self):
|
|
+ booleans={}
|
|
+ for c in self.modifiers.keys():
|
|
+ for n in self.modifiers[c].keys():
|
|
+ if isinstance(self.modifiers[c][n], Boolean):
|
|
+ booleans[n]=self.modifiers[c][n]
|
|
+ return booleans
|
|
+
|
|
+ def save(self, boolconf):
|
|
+ if self.booleanDirty == True:
|
|
+ booleans=self.get_booleans()
|
|
+ setseboolS="/usr/sbin/setsebool -P "
|
|
+ for b in booleans.keys():
|
|
+ if booleans[b].save==1:
|
|
+ setseboolS += "%s=%d " % (b, booleans[b].isOn())
|
|
+ boolconf[b]=str(booleans[b].isOn())
|
|
+ commands.getstatusoutput(setseboolS)
|
|
+
|
|
+class booleansPage:
|
|
+ def __init__(self, xml, doDebug=None):
|
|
+ self.xml = xml
|
|
+ self.types=[]
|
|
+ self.selinuxsupport = True
|
|
+ self.translation = Translation()
|
|
+ self.typechanged = False
|
|
+ self.doDebug = doDebug
|
|
+
|
|
+ # Bring in widgets from glade file.
|
|
+ self.typeHBox = xml.get_widget("typeHBox")
|
|
+ self.booleanSW = xml.get_widget("booleanSW")
|
|
+ self.booleansView = xml.get_widget("booleansView")
|
|
+ self.typeLabel = xml.get_widget("typeLabel")
|
|
+ self.modifySeparator = xml.get_widget("modifySeparator")
|
|
+
|
|
+ listStore = gtk.ListStore(gobject.TYPE_STRING)
|
|
+ cell = gtk.CellRendererText()
|
|
+
|
|
+ self.booleansStore = gtk.TreeStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN)
|
|
+ self.booleansStore.set_sort_column_id(1, gtk.SORT_ASCENDING)
|
|
+ self.booleansView.set_model(self.booleansStore)
|
|
+
|
|
+ checkbox = gtk.CellRendererToggle()
|
|
+ checkbox.connect("toggled", self.boolean_toggled)
|
|
+ col = gtk.TreeViewColumn('', checkbox, active = 0,visible=3)
|
|
+ col.set_fixed_width(20)
|
|
+ col.set_clickable(True)
|
|
+ self.booleansView.append_column(col)
|
|
+
|
|
+ col = gtk.TreeViewColumn("", gtk.CellRendererText(), text=1)
|
|
+ self.booleansView.append_column(col)
|
|
+ self.refreshBooleans()
|
|
+
|
|
+ def verify(self, message):
|
|
+ dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
|
|
+ gtk.BUTTONS_YES_NO,
|
|
+ message)
|
|
+ dlg.set_position(gtk.WIN_POS_MOUSE)
|
|
+ dlg.show_all()
|
|
+ rc = dlg.run()
|
|
+ dlg.destroy()
|
|
+ return rc
|
|
+
|
|
+ def loadBooleans(self):
|
|
+ booleansList=commands.getoutput("/usr/sbin/getsebool -a").split("\n")
|
|
+ for i in booleansList:
|
|
+ rec=i.split()
|
|
+ name=rec[0]
|
|
+ if rec[2]=="on" or rec[2]=="active":
|
|
+ on=1
|
|
+ else:
|
|
+ on=0
|
|
+ self.modifiers.add(name,Boolean(name,on))
|
|
+
|
|
+ def refreshBooleans(self):
|
|
+ self.modifiers=Modifiers(self.booleansStore)
|
|
+ self.loadBooleans()
|
|
+
|
|
+ def boolean_toggled(self, widget, row):
|
|
+ if len(row) == 1:
|
|
+ return
|
|
+ iter = self.booleansStore.get_iter(row)
|
|
+ val = self.booleansStore.get_value(iter, 0)
|
|
+ key = self.booleansStore.get_value(iter, 2)
|
|
+ self.booleansStore.set_value(iter, 0 , not val)
|
|
+ self.modifiers.set(key, not val)
|
|
+
|
|
+ def apply(self):
|
|
+ retval = 0
|
|
+
|
|
+ if self.selinuxsupport==False:
|
|
+ return retval
|
|
+
|
|
+ type=self.getType()
|
|
+
|
|
+ return retval
|
|
+
|
|
+ def reloadPolicy(self):
|
|
+ dialog = gtk.MessageDialog (None,
|
|
+ gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL,
|
|
+ gtk.MESSAGE_WARNING,
|
|
+ gtk.BUTTONS_OK,
|
|
+ _("Reloading Policy. This may take a minute."))
|
|
+ dialog.set_position(gtk.WIN_POS_MOUSE)
|
|
+ dialog.show ()
|
|
+ dialog.get_toplevel().window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
|
|
+
|
|
+ while gtk.events_pending():
|
|
+ gtk.main_iteration()
|
|
+
|
|
+ command= "make -C %s/%s/src/policy reload" % (SELINUXDIR , self.getType())
|
|
+ status=commands.getstatusoutput(command)[0]
|
|
+ dialog.destroy ()
|
|
+ return status
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/fcontextPage.py policycoreutils-1.33.1/gui/fcontextPage.py
|
|
--- nsapolicycoreutils/gui/fcontextPage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/fcontextPage.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,158 @@
|
|
+## fcontextPage.py - show selinux mappings
|
|
+## Copyright (C) 2006 Red Hat, Inc.
|
|
+
|
|
+## This program is free software; you can redistribute it and/or modify
|
|
+## it under the terms of the GNU General Public License as published by
|
|
+## the Free Software Foundation; either version 2 of the License, or
|
|
+## (at your option) any later version.
|
|
+
|
|
+## This program is distributed in the hope that it will be useful,
|
|
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+## GNU General Public License for more details.
|
|
+
|
|
+## You should have received a copy of the GNU General Public License
|
|
+## along with this program; if not, write to the Free Software
|
|
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+
|
|
+## Author: Dan Walsh
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import seobject
|
|
+from semanagePage import *;
|
|
+from avc import context
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="system-config-selinux"
|
|
+
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class fcontextPage(semanagePage):
|
|
+ def __init__(self, xml):
|
|
+ semanagePage.__init__(self, xml, "fcontext", "File Context")
|
|
+ self.view = xml.get_widget("fcontextView")
|
|
+ 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(_("File\nSpecification"), gtk.CellRendererText(), text=0)
|
|
+ col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
|
+ col.set_fixed_width(250)
|
|
+
|
|
+ col.set_sort_column_id(0)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ col = gtk.TreeViewColumn(_("Selinux\nFile Context"), gtk.CellRendererText(), text=1)
|
|
+
|
|
+ col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
|
+ col.set_fixed_width(250)
|
|
+ col.set_sort_column_id(1)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ col = gtk.TreeViewColumn(_("File\nType"), gtk.CellRendererText(), text=2)
|
|
+ col.set_sort_column_id(2)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ self.load()
|
|
+ self.fcontextEntry = xml.get_widget("fcontextEntry")
|
|
+ self.fcontextFileTypeCombo = xml.get_widget("fcontextFileTypeCombo")
|
|
+ liststore=self.fcontextFileTypeCombo.get_model()
|
|
+ for k in seobject.file_types:
|
|
+ if len(k) > 0 and k[0] != '-':
|
|
+ iter=liststore.append()
|
|
+ liststore.set_value(iter, 0, k)
|
|
+ iter = liststore.get_iter_first()
|
|
+ self.fcontextFileTypeCombo.set_active_iter(iter)
|
|
+ self.fcontextTypeEntry = xml.get_widget("fcontextTypeEntry")
|
|
+ self.fcontextMLSEntry = xml.get_widget("fcontextMLSEntry")
|
|
+
|
|
+ def load(self):
|
|
+ self.fcontext=seobject.fcontextRecords()
|
|
+ fcon_list=self.fcontext.get_all()
|
|
+ self.store.clear()
|
|
+ for fcon in fcon_list:
|
|
+ iter=self.store.append()
|
|
+ self.store.set_value(iter, 0, fcon[0])
|
|
+ self.store.set_value(iter, 2, fcon[1])
|
|
+ if len(fcon) > 3:
|
|
+ rec="%s:%s:%s:%s " % (fcon[2], fcon[3],fcon[4], seobject.translate(fcon[5],False))
|
|
+ else:
|
|
+ rec="<<None>>"
|
|
+ self.store.set_value(iter, 1, rec)
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+
|
|
+ def dialogInit(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ self.fcontextEntry.set_text(store.get_value(iter, 0))
|
|
+ self.fcontextEntry.set_sensitive(False)
|
|
+ scontext = store.get_value(iter, 1)
|
|
+ scon=context(scontext)
|
|
+ self.fcontextTypeEntry.set_text(scon.type)
|
|
+ self.fcontextMLSEntry.set_text(scon.mls)
|
|
+ type=store.get_value(iter, 2)
|
|
+ liststore=self.fcontextFileTypeCombo.get_model()
|
|
+ iter = liststore.get_iter_first()
|
|
+ while iter != None and liststore.get_value(iter,0) != type:
|
|
+ iter = liststore.iter_next(iter)
|
|
+ if iter != None:
|
|
+ self.fcontextFileTypeCombo.set_active_iter(iter)
|
|
+ self.fcontextFileTypeCombo.set_sensitive(False)
|
|
+
|
|
+ def dialogClear(self):
|
|
+ self.fcontextEntry.set_text("")
|
|
+ self.fcontextEntry.set_sensitive(True)
|
|
+ self.fcontextFileTypeCombo.set_sensitive(True)
|
|
+ self.fcontextTypeEntry.set_text("")
|
|
+ self.fcontextMLSEntry.set_text("s0")
|
|
+
|
|
+ def delete(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ try:
|
|
+ fspec=store.get_value(iter, 0)
|
|
+ type=store.get_value(iter, 1)
|
|
+ self.fcontext.delete(fspec, type)
|
|
+ store.remove(iter)
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+ except ValueError, e:
|
|
+ self.error(e.args[0])
|
|
+
|
|
+ def add(self):
|
|
+ fspec=self.fcontextEntry.get_text().strip()
|
|
+ type=self.fcontextTypeEntry.get_text().strip()
|
|
+ mls=self.fcontextMLSEntry.get_text().strip()
|
|
+ list_model=self.fcontextFileTypeCombo.get_model()
|
|
+ iter = self.fcontextFileTypeCombo.get_active_iter()
|
|
+ ftype=list_model.get_value(iter,0)
|
|
+
|
|
+ self.fcontext.add(fspec, type, ftype, mls)
|
|
+
|
|
+ iter=self.store.append()
|
|
+ self.store.set_value(iter, 0, fspec)
|
|
+ self.store.set_value(iter, 2, ftype)
|
|
+ self.store.set_value(iter, 1, "system_u:object_r:%s:%s" % (type, mls))
|
|
+
|
|
+ def modify(self):
|
|
+ fspec=self.fcontextEntry.get_text().strip()
|
|
+ type=self.fcontextTypeEntry.get_text().strip()
|
|
+ mls=self.fcontextMLSEntry.get_text().strip()
|
|
+ list_model=self.fcontextFileTypeCombo.get_model()
|
|
+ iter = self.fcontextFileTypeCombo.get_active_iter()
|
|
+ ftype=list_model.get_value(iter,0)
|
|
+ self.fcontext.modify(fspec, type, ftype, mls, "")
|
|
+
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ self.store.set_value(iter, 0, fspec)
|
|
+ self.store.set_value(iter, 2, ftype)
|
|
+ self.store.set_value(iter, 1, "system_u:object_r:%s:%s" % (type, mls))
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/loginsPage.py policycoreutils-1.33.1/gui/loginsPage.py
|
|
--- nsapolicycoreutils/gui/loginsPage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/loginsPage.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,161 @@
|
|
+## loginsPage.py - show selinux mappings
|
|
+## Copyright (C) 2006 Red Hat, Inc.
|
|
+
|
|
+## This program is free software; you can redistribute it and/or modify
|
|
+## it under the terms of the GNU General Public License as published by
|
|
+## the Free Software Foundation; either version 2 of the License, or
|
|
+## (at your option) any later version.
|
|
+
|
|
+## This program is distributed in the hope that it will be useful,
|
|
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+## GNU General Public License for more details.
|
|
+
|
|
+## You should have received a copy of the GNU General Public License
|
|
+## along with this program; if not, write to the Free Software
|
|
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+
|
|
+## Author: Dan Walsh
|
|
+import string
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import sys
|
|
+import seobject
|
|
+from semanagePage import *;
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="policycoreutils"
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class loginsPage(semanagePage):
|
|
+ def __init__(self, xml):
|
|
+ self.firstTime = False
|
|
+ semanagePage.__init__(self, xml, "logins", _("SELinux User Mapping"))
|
|
+ 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)
|
|
+ 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.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ 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")
|
|
+
|
|
+ def load(self):
|
|
+ self.login = seobject.loginRecords()
|
|
+ dict = self.login.get_all()
|
|
+ keys = dict.keys()
|
|
+ keys.sort()
|
|
+ self.store.clear()
|
|
+ for k in keys:
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, k)
|
|
+ self.store.set_value(iter, 1, dict[k][0])
|
|
+ self.store.set_value(iter, 2, seobject.translate(dict[k][1]))
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+
|
|
+ def __dialogSetup(self):
|
|
+ if self.firstTime == True:
|
|
+ return
|
|
+ self.firstTime = True
|
|
+ liststore = gtk.ListStore(gobject.TYPE_STRING)
|
|
+ self.loginsSelinuxUserCombo.set_model(liststore)
|
|
+ cell = gtk.CellRendererText()
|
|
+ self.loginsSelinuxUserCombo.pack_start(cell, True)
|
|
+ self.loginsSelinuxUserCombo.add_attribute(cell, 'text', 0)
|
|
+
|
|
+ selusers = seobject.seluserRecords().get_all()
|
|
+ keys = selusers.keys()
|
|
+ keys.sort()
|
|
+ for k in keys:
|
|
+ if k != "system_u":
|
|
+ self.loginsSelinuxUserCombo.append_text(k)
|
|
+
|
|
+ iter = liststore.get_iter_first()
|
|
+ while liststore.get_value(iter,0) != "user_u":
|
|
+ iter = liststore.iter_next(iter)
|
|
+ self.loginsSelinuxUserCombo.set_active_iter(iter)
|
|
+
|
|
+ def dialogInit(self):
|
|
+ self.__dialogSetup()
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ self.loginsNameEntry.set_text(store.get_value(iter, 0))
|
|
+ self.loginsNameEntry.set_sensitive(False)
|
|
+
|
|
+ self.loginsMLSEntry.set_text(store.get_value(iter, 2))
|
|
+ seuser = store.get_value(iter, 1)
|
|
+ liststore = self.loginsSelinuxUserCombo.get_model()
|
|
+ iter = liststore.get_iter_first()
|
|
+ while iter != None and liststore.get_value(iter,0) != seuser:
|
|
+ iter = liststore.iter_next(iter)
|
|
+ if iter != None:
|
|
+ self.loginsSelinuxUserCombo.set_active_iter(iter)
|
|
+
|
|
+
|
|
+ def dialogClear(self):
|
|
+ self.__dialogSetup()
|
|
+ self.loginsNameEntry.set_text("")
|
|
+ self.loginsNameEntry.set_sensitive(True)
|
|
+ self.loginsMLSEntry.set_text("s0")
|
|
+
|
|
+ def delete(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ try:
|
|
+ login=store.get_value(iter, 0)
|
|
+ if login == "root" or login == "__default__":
|
|
+ raise ValueError(_("Login '%s' is required") % login)
|
|
+
|
|
+ self.login.delete(login)
|
|
+ store.remove(iter)
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+ except ValueError, e:
|
|
+ self.error(e.args[0])
|
|
+
|
|
+ def add(self):
|
|
+ target=self.loginsNameEntry.get_text().strip()
|
|
+ serange=self.loginsMLSEntry.get_text().strip()
|
|
+ if serange == "":
|
|
+ serange="s0"
|
|
+ list_model=self.loginsSelinuxUserCombo.get_model()
|
|
+ iter = self.loginsSelinuxUserCombo.get_active_iter()
|
|
+ seuser = list_model.get_value(iter,0)
|
|
+ self.login.add(target, seuser, serange)
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, target)
|
|
+ self.store.set_value(iter, 1, seuser)
|
|
+ self.store.set_value(iter, 2, seobject.translate(serange))
|
|
+
|
|
+ def modify(self):
|
|
+ target=self.loginsNameEntry.get_text().strip()
|
|
+ serange=self.loginsMLSEntry.get_text().strip()
|
|
+ if serange == "":
|
|
+ serange = "s0"
|
|
+ list_model = self.loginsSelinuxUserCombo.get_model()
|
|
+ iter = self.loginsSelinuxUserCombo.get_active_iter()
|
|
+ seuser=list_model.get_value(iter,0)
|
|
+ self.login.modify(target, seuser, serange)
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ self.store.set_value(iter, 0, target)
|
|
+ self.store.set_value(iter, 1, seuser)
|
|
+ self.store.set_value(iter, 2, seobject.translate(serange))
|
|
+
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/Makefile policycoreutils-1.33.1/gui/Makefile
|
|
--- nsapolicycoreutils/gui/Makefile 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/Makefile 2006-11-14 10:27:04.000000000 -0500
|
|
@@ -0,0 +1,20 @@
|
|
+# Installation directories.
|
|
+PREFIX ?= ${DESTDIR}/usr
|
|
+SHAREDIR ?= $(PREFIX)/share/system-config-selinux
|
|
+
|
|
+TARGETS= booleansPage.py portsPage.py fcontextPage.py loginsPage.py \
|
|
+statusPage.py translationsPage.py semanagePage.py usersPage.py \
|
|
+mappingsPage.py system-config-selinux.glade
|
|
+
|
|
+all: $(TARGETS) system-config-selinux.py
|
|
+
|
|
+install: all
|
|
+ -mkdir -p $(SHAREDIR)
|
|
+ install -m 755 system-config-selinux.py $(SHAREDIR)
|
|
+ install -m 644 $(TARGETS) $(SHAREDIR)
|
|
+
|
|
+clean:
|
|
+
|
|
+indent:
|
|
+
|
|
+relabel:
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/mappingsPage.py policycoreutils-1.33.1/gui/mappingsPage.py
|
|
--- nsapolicycoreutils/gui/mappingsPage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/mappingsPage.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,54 @@
|
|
+## mappingsPage.py - show selinux mappings
|
|
+## Copyright (C) 2006 Red Hat, Inc.
|
|
+
|
|
+## This program is free software; you can redistribute it and/or modify
|
|
+## it under the terms of the GNU General Public License as published by
|
|
+## the Free Software Foundation; either version 2 of the License, or
|
|
+## (at your option) any later version.
|
|
+
|
|
+## This program is distributed in the hope that it will be useful,
|
|
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+## GNU General Public License for more details.
|
|
+
|
|
+## You should have received a copy of the GNU General Public License
|
|
+## along with this program; if not, write to the Free Software
|
|
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+
|
|
+## Author: Dan Walsh
|
|
+import string
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import sys
|
|
+import seobject
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="policycoreutils"
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class loginsPage:
|
|
+ def __init__(self, xml):
|
|
+ self.xml = xml
|
|
+ self.view = xml.get_widget("mappingsView")
|
|
+ self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
|
|
+ self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
|
|
+ self.view.set_model(self.store)
|
|
+ self.login = loginRecords()
|
|
+ dict = self.login.get_all()
|
|
+ keys = dict.keys()
|
|
+ keys.sort()
|
|
+ for k in keys:
|
|
+ print "%-25s %-25s %-25s" % (k, dict[k][0], translate(dict[k][1]))
|
|
+
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/portsPage.py policycoreutils-1.33.1/gui/portsPage.py
|
|
--- nsapolicycoreutils/gui/portsPage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/portsPage.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,170 @@
|
|
+## portsPage.py - show selinux mappings
|
|
+## Copyright (C) 2006 Red Hat, Inc.
|
|
+
|
|
+## This program is free software; you can redistribute it and/or modify
|
|
+## it under the terms of the GNU General Public License as published by
|
|
+## the Free Software Foundation; either version 2 of the License, or
|
|
+## (at your option) any later version.
|
|
+
|
|
+## This program is distributed in the hope that it will be useful,
|
|
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+## GNU General Public License for more details.
|
|
+
|
|
+## You should have received a copy of the GNU General Public License
|
|
+## along with this program; if not, write to the Free Software
|
|
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+
|
|
+## Author: Dan Walsh
|
|
+import string
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import sys
|
|
+import seobject
|
|
+from semanagePage import *;
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="policycoreutils"
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class portsPage(semanagePage):
|
|
+ def __init__(self, xml):
|
|
+ semanagePage.__init__(self, xml, "ports", "Network Port")
|
|
+ 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)
|
|
+ col = gtk.TreeViewColumn(_("SELinux Port\nType"), 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(_("Port"), gtk.CellRendererText(), text = 1)
|
|
+ col.set_sort_column_id(1)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ self.store.set_sort_func(1,self.sort_int, "")
|
|
+
|
|
+ col = gtk.TreeViewColumn(_("Protocol"), gtk.CellRendererText(), text = 2)
|
|
+ col.set_sort_column_id(2)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+
|
|
+ col = gtk.TreeViewColumn(_("MLS/MCS\nLevel"), gtk.CellRendererText(), text = 3)
|
|
+ col.set_resizable(True)
|
|
+ col.set_sort_column_id(3)
|
|
+ self.view.append_column(col)
|
|
+
|
|
+ self.load()
|
|
+ self.portsNameEntry = xml.get_widget("portsNameEntry")
|
|
+ self.portsProtocolCombo = xml.get_widget("portsProtocolCombo")
|
|
+ self.portsNumberEntry = xml.get_widget("portsNumberEntry")
|
|
+ self.portsMLSEntry = xml.get_widget("portsMLSEntry")
|
|
+ liststore = self.portsProtocolCombo.get_model()
|
|
+ iter = liststore.get_iter_first()
|
|
+ self.portsProtocolCombo.set_active_iter(iter)
|
|
+
|
|
+ def sort_int(self, treemodel, iter1, iter2, user_data):
|
|
+ try:
|
|
+ p1 = int(treemodel.get_value(iter1,1))
|
|
+ p2 = int(treemodel.get_value(iter1,1))
|
|
+ if p1 > p2:
|
|
+ return 1
|
|
+ if p1 == p2:
|
|
+ return 0
|
|
+ return -1
|
|
+ except:
|
|
+ return 0
|
|
+
|
|
+ def load(self):
|
|
+ self.port = seobject.portRecords()
|
|
+ dict = self.port.get_all()
|
|
+ keys = dict.keys()
|
|
+ keys.sort()
|
|
+ self.store.clear()
|
|
+ for k in keys:
|
|
+ iter = self.store.append()
|
|
+ if k[0] == k[1]:
|
|
+ self.store.set_value(iter, 1, k[0])
|
|
+ else:
|
|
+ rec = "%s-%s" % k
|
|
+ self.store.set_value(iter, 1, rec)
|
|
+ self.store.set_value(iter, 0, dict[k][0])
|
|
+ self.store.set_value(iter, 2, dict[k][1])
|
|
+ self.store.set_value(iter, 3, dict[k][2])
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+
|
|
+ def dialogInit(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ self.portsNumberEntry.set_text(store.get_value(iter, 1))
|
|
+ self.portsNumberEntry.set_sensitive(False)
|
|
+ self.portsProtocolCombo.set_sensitive(False)
|
|
+ self.portsNameEntry.set_text(store.get_value(iter, 0))
|
|
+ self.portsMLSEntry.set_text(store.get_value(iter, 3))
|
|
+ protocol=store.get_value(iter, 2)
|
|
+ liststore=self.portsProtocolCombo.get_model()
|
|
+ iter = liststore.get_iter_first()
|
|
+ while iter != None and liststore.get_value(iter,0) != protocol:
|
|
+ iter = liststore.iter_next(iter)
|
|
+ if iter != None:
|
|
+ self.portsProtocolCombo.set_active_iter(iter)
|
|
+
|
|
+ def dialogClear(self):
|
|
+ self.portsNumberEntry.set_text("")
|
|
+ self.portsNumberEntry.set_sensitive(True)
|
|
+ self.portsProtocolCombo.set_sensitive(True)
|
|
+ self.portsNameEntry.set_text("")
|
|
+ self.portsMLSEntry.set_text("s0")
|
|
+
|
|
+ def delete(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ port = store.get_value(iter, 1)
|
|
+ protocol = store.get_value(iter, 2)
|
|
+ try:
|
|
+ self.port.delete(port, protocol)
|
|
+ store.remove(iter)
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+ except ValueError, e:
|
|
+ self.error(e.args[0])
|
|
+
|
|
+ def add(self):
|
|
+ target = self.portsNameEntry.get_text().strip()
|
|
+ mls = self.portsMLSEntry.get_text().strip()
|
|
+ port_number = self.portsNumberEntry.get_text().strip()
|
|
+ if port_number == "":
|
|
+ port_number = "1"
|
|
+ list_model = self.portsProtocolCombo.get_model()
|
|
+ iter = self.portsProtocolCombo.get_active_iter()
|
|
+ protocol = list_model.get_value(iter,0)
|
|
+ self.port.add(port_number, protocol, mls, target)
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, target)
|
|
+ self.store.set_value(iter, 1, port_number)
|
|
+ self.store.set_value(iter, 2, protocol)
|
|
+ self.store.set_value(iter, 3, mls)
|
|
+
|
|
+ def modify(self):
|
|
+ target = self.portsNameEntry.get_text().strip()
|
|
+ mls = self.portsMLSEntry.get_text().strip()
|
|
+ port_number = self.portsNumberEntry.get_text().strip()
|
|
+ list_model = self.portsProtocolCombo.get_model()
|
|
+ iter = self.portsProtocolCombo.get_active_iter()
|
|
+ protocol = list_model.get_value(iter,0)
|
|
+ self.port.modify(port_number, protocol, mls, target)
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ self.store.set_value(iter, 0, target)
|
|
+ self.store.set_value(iter, 1, port_number)
|
|
+ self.store.set_value(iter, 2, protocol)
|
|
+ self.store.set_value(iter, 3, mls)
|
|
+
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/semanagePage.py policycoreutils-1.33.1/gui/semanagePage.py
|
|
--- nsapolicycoreutils/gui/semanagePage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/semanagePage.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,103 @@
|
|
+## semanagePage.py - show selinux mappings
|
|
+## Copyright (C) 2006 Red Hat, Inc.
|
|
+
|
|
+## This program is free software; you can redistribute it and/or modify
|
|
+## it under the terms of the GNU General Public License as published by
|
|
+## the Free Software Foundation; either version 2 of the License, or
|
|
+## (at your option) any later version.
|
|
+
|
|
+## This program is distributed in the hope that it will be useful,
|
|
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+## GNU General Public License for more details.
|
|
+
|
|
+## You should have received a copy of the GNU General Public License
|
|
+## along with this program; if not, write to the Free Software
|
|
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+
|
|
+## Author: Dan Walsh
|
|
+import string
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import sys
|
|
+import seobject
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="policycoreutils"
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class semanagePage:
|
|
+ def __init__(self, xml, name, description):
|
|
+ self.xml = xml
|
|
+ self.view = xml.get_widget("%sView" % name)
|
|
+ self.dialog = xml.get_widget("%sDialog" % name)
|
|
+ self.view.connect("row_activated", self.rowActivated)
|
|
+ self.view.get_selection().connect("changed", self.itemSelected)
|
|
+ self.description = description;
|
|
+
|
|
+ def itemSelected(self, args):
|
|
+ return
|
|
+
|
|
+ def rowActivated(self, view, row, Column):
|
|
+ self.propertiesDialog()
|
|
+
|
|
+ def verify(self, message):
|
|
+ dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
|
|
+ gtk.BUTTONS_YES_NO,
|
|
+ message)
|
|
+ dlg.set_position(gtk.WIN_POS_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,
|
|
+ message)
|
|
+ dlg.set_position(gtk.WIN_POS_MOUSE)
|
|
+ dlg.show_all()
|
|
+ dlg.run()
|
|
+ dlg.destroy()
|
|
+
|
|
+ def deleteDialog(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ if self.verify(_("Are you sure you want to delete %s '%s'?" % (self.description, store.get_value(iter, 0)))) == gtk.RESPONSE_YES:
|
|
+ self.delete()
|
|
+
|
|
+ def addDialog(self):
|
|
+ self.dialogClear()
|
|
+ self.dialog.set_title(_("Add SELinux %s" % self.description))
|
|
+
|
|
+ while self.dialog.run() == gtk.RESPONSE_OK:
|
|
+ try:
|
|
+ self.add()
|
|
+ break;
|
|
+ except ValueError, e:
|
|
+ self.error(e.args[0])
|
|
+ self.dialog.hide()
|
|
+
|
|
+ def propertiesDialog(self):
|
|
+ self.dialogInit()
|
|
+ self.dialog.set_title(_("Modify SELinux %s" % self.description))
|
|
+ while self.dialog.run() == gtk.RESPONSE_OK:
|
|
+ try:
|
|
+ self.modify()
|
|
+ break;
|
|
+ except ValueError, e:
|
|
+ self.error(e.args[0])
|
|
+ self.dialog.hide()
|
|
+
|
|
+
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/statusPage.py policycoreutils-1.33.1/gui/statusPage.py
|
|
--- nsapolicycoreutils/gui/statusPage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/statusPage.py 2006-11-14 10:46:46.000000000 -0500
|
|
@@ -0,0 +1,231 @@
|
|
+## statusPage.py - show selinux status
|
|
+## Copyright (C) 2006 Red Hat, Inc.
|
|
+
|
|
+## This program is free software; you can redistribute it and/or modify
|
|
+## it under the terms of the GNU General Public License as published by
|
|
+## the Free Software Foundation; either version 2 of the License, or
|
|
+## (at your option) any later version.
|
|
+
|
|
+## This program is distributed in the hope that it will be useful,
|
|
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+## GNU General Public License for more details.
|
|
+
|
|
+## You should have received a copy of the GNU General Public License
|
|
+## along with this program; if not, write to the Free Software
|
|
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+
|
|
+## Author: Dan Walsh
|
|
+import string
|
|
+import selinux
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import sys
|
|
+import tempfile
|
|
+
|
|
+INSTALLPATH = '/usr/share/system-config-selinux'
|
|
+sys.path.append(INSTALLPATH)
|
|
+
|
|
+rhplPath = "/usr/lib/python%d.%d/site-packages/rhpl" % (sys.version_info[0], sys.version_info[1])
|
|
+if not rhplPath in sys.path:
|
|
+ sys.path.append(rhplPath)
|
|
+
|
|
+rhplPath = "/usr/lib64/python%d.%d/site-packages/rhpl" % (sys.version_info[0], sys.version_info[1])
|
|
+if not rhplPath in sys.path:
|
|
+ sys.path.append(rhplPath)
|
|
+
|
|
+from Conf import *
|
|
+import commands
|
|
+ENFORCING = 0
|
|
+PERMISSIVE = 1
|
|
+DISABLED = 2
|
|
+modearray = ( "enforcing", "permissive", "disabled" )
|
|
+
|
|
+SELINUXDIR = "/etc/selinux/"
|
|
+RELABELFILE = "/.autorelabel"
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="policycoreutils"
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class statusPage:
|
|
+ def __init__(self, xml):
|
|
+ self.xml = xml
|
|
+ self.typechanged = False
|
|
+ self.needRelabel = False
|
|
+
|
|
+ # 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.modifySeparator = xml.get_widget("modifySeparator")
|
|
+ self.enabledOptionMenu = xml.get_widget("enabledOptionMenu")
|
|
+ self.currentOptionMenu = xml.get_widget("currentOptionMenu")
|
|
+ self.currentOptionMenu.set_active(self.get_current_mode())
|
|
+
|
|
+ if self.read_selinux_config() == None:
|
|
+ self.selinuxsupport = False
|
|
+ else:
|
|
+ self.enabledOptionMenu.connect("changed", self.enabled_changed)
|
|
+ #
|
|
+ # This line must come after read_selinux_config
|
|
+ #
|
|
+ self.selinuxTypeOptionMenu.connect("changed", self.typemenu_changed)
|
|
+
|
|
+ self.typeLabel.set_mnemonic_widget(self.selinuxTypeOptionMenu)
|
|
+ # This line should always go last
|
|
+ self.dirty = False
|
|
+
|
|
+ def setup_relabel(self):
|
|
+ fd = open(RELABELFILE,"w")
|
|
+ fd.close()
|
|
+
|
|
+ def get_current_mode(self):
|
|
+ if selinux.is_selinux_enabled():
|
|
+ if selinux.security_getenforce() > 0:
|
|
+ return ENFORCING
|
|
+ else:
|
|
+ return PERMISSIVE
|
|
+ else:
|
|
+ return DISABLED
|
|
+
|
|
+ def set_current_mode(self,value):
|
|
+ if selinux.is_selinux_enabled():
|
|
+ selinux.security_setenforce(value)
|
|
+
|
|
+ def verify(self, message):
|
|
+ dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
|
|
+ gtk.BUTTONS_YES_NO,
|
|
+ message)
|
|
+ dlg.set_position(gtk.WIN_POS_MOUSE)
|
|
+ dlg.show_all()
|
|
+ rc = dlg.run()
|
|
+ dlg.destroy()
|
|
+ return rc
|
|
+
|
|
+ def typemenu_changed(self, menu):
|
|
+ print "type changed"
|
|
+ self.dirty = True
|
|
+ type = self.getType()
|
|
+ if self.initialtype != type:
|
|
+ if self.inFirstboot == False and 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:
|
|
+ menu.set_active(self.typeHistory)
|
|
+ return None
|
|
+
|
|
+ self.needRelabel = True
|
|
+
|
|
+ def enabled_changed(self, combo):
|
|
+ self.dirty = True
|
|
+ setting = combo.get_active()
|
|
+
|
|
+ if setting < 2:
|
|
+ enabled = True
|
|
+ else:
|
|
+ enabled = False
|
|
+
|
|
+ if self.initEnabled == DISABLED and enabled:
|
|
+ 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:
|
|
+ return None
|
|
+
|
|
+ self.needRelabel = True
|
|
+ elif not enabled:
|
|
+ self.needRelabel = False
|
|
+
|
|
+ self.typeLabel.set_sensitive(enabled)
|
|
+ self.selinuxTypeOptionMenu.set_sensitive(enabled)
|
|
+
|
|
+ def read_selinux_config(self):
|
|
+ self.initialtype = "targeted"
|
|
+ self.initEnabled = DISABLED
|
|
+ self.types = []
|
|
+ if os.access(SELINUXDIR, os.F_OK) == 0:
|
|
+ #File doesn't exist. return
|
|
+ return None
|
|
+
|
|
+ self.conf = ConfShellVar(SELINUXDIR+"config")
|
|
+ self.conf.rcs = 1
|
|
+ if self.conf.has_key("SELINUX"):
|
|
+ value = self.conf.vars["SELINUX"].upper().strip()
|
|
+ else:
|
|
+ value = "ENFORCING"
|
|
+ self.conf.vars["SELINUX"] = value
|
|
+
|
|
+ if value == "ENFORCING":
|
|
+ self.initEnabled = ENFORCING
|
|
+ self.enabledOptionMenu.set_active(ENFORCING)
|
|
+ elif value == "PERMISSIVE":
|
|
+ self.initEnabled = PERMISSIVE
|
|
+ self.enabledOptionMenu.set_active(PERMISSIVE)
|
|
+ elif value == "DISABLED":
|
|
+ self.initEnabled = DISABLED
|
|
+ self.enabledOptionMenu.set_active(DISABLED)
|
|
+
|
|
+ self.enabled_changed(self.enabledOptionMenu)
|
|
+
|
|
+ if self.conf.has_key("SELINUXTYPE"):
|
|
+ self.initialtype = self.conf.vars["SELINUXTYPE"].strip()
|
|
+ else:
|
|
+ self.conf.vars["SELINUXTYPE"] = self.initialtype
|
|
+
|
|
+ n = 0
|
|
+ current = n
|
|
+
|
|
+ for i in os.listdir(SELINUXDIR):
|
|
+ if os.path.isdir(SELINUXDIR+i) and os.path.isdir(SELINUXDIR+i+"/policy"):
|
|
+ self.types.append(i)
|
|
+ self.selinuxTypeOptionMenu.append_text(i)
|
|
+ if i == self.initialtype:
|
|
+ current = n
|
|
+ n = n+1
|
|
+ self.selinuxTypeOptionMenu.set_active(current)
|
|
+
|
|
+ return 0
|
|
+
|
|
+ def getType(self):
|
|
+ return self.types[self.selinuxTypeOptionMenu.get_active()]
|
|
+
|
|
+ def apply(self):
|
|
+ retval = 0
|
|
+
|
|
+ if self.selinuxsupport == False:
|
|
+ return retval
|
|
+
|
|
+ type = self.getType()
|
|
+
|
|
+ if self.dirty == True:
|
|
+ enabled = self.enabledOptionMenu.get_active()
|
|
+
|
|
+ self.conf["SELINUX"] = modearray[enabled]
|
|
+ if enabled == ENFORCING:
|
|
+ self.set_current_mode(1)
|
|
+ elif enabled == PERMISSIVE:
|
|
+ self.set_current_mode(0)
|
|
+
|
|
+ self.conf["SELINUXTYPE"]=type
|
|
+
|
|
+ if self.doDebug == False:
|
|
+ self.conf.write()
|
|
+
|
|
+ if self.needRelabel:
|
|
+ if self.doDebug == False:
|
|
+ self.setup_relabel()
|
|
+ retval = 1
|
|
+ else:
|
|
+ if os.access(RELABELFILE, os.F_OK) != 0 and self.doDebug == False:
|
|
+ os.unlink(RELABELFILE)
|
|
+
|
|
+ return retval
|
|
+
|
|
+
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/system-config-selinux.glade policycoreutils-1.33.1/gui/system-config-selinux.glade
|
|
--- nsapolicycoreutils/gui/system-config-selinux.glade 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/system-config-selinux.glade 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,2760 @@
|
|
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
|
|
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
|
|
+
|
|
+<glade-interface>
|
|
+<requires lib="gnome"/>
|
|
+<requires lib="bonobo"/>
|
|
+
|
|
+<widget class="GtkAboutDialog" id="aboutWindow">
|
|
+ <property name="destroy_with_parent">False</property>
|
|
+ <property name="name" translatable="yes">system-config-selinux</property>
|
|
+ <property name="copyright" translatable="yes">Copyright (c)2006 Red Hat, Inc.
|
|
+Copyright (c) 2006 Dan Walsh <dwalsh@redhat.com></property>
|
|
+ <property name="wrap_license">False</property>
|
|
+ <property name="authors">Daniel Walsh <dwalsh@redhat.com>
|
|
+</property>
|
|
+ <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
|
|
+ <property name="logo">system-config-selinux.png</property>
|
|
+</widget>
|
|
+
|
|
+<widget class="GtkDialog" id="loginsDialog">
|
|
+ <property name="title" translatable="yes">Add SELinux Login Mapping</property>
|
|
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
|
|
+ <property name="window_position">GTK_WIN_POS_NONE</property>
|
|
+ <property name="modal">False</property>
|
|
+ <property name="resizable">True</property>
|
|
+ <property name="destroy_with_parent">False</property>
|
|
+ <property name="decorated">True</property>
|
|
+ <property name="skip_taskbar_hint">False</property>
|
|
+ <property name="skip_pager_hint">False</property>
|
|
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
|
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
|
+ <property name="focus_on_map">True</property>
|
|
+ <property name="urgency_hint">False</property>
|
|
+ <property name="has_separator">True</property>
|
|
+
|
|
+ <child internal-child="vbox">
|
|
+ <widget class="GtkVBox" id="dialog-vbox1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child internal-child="action_area">
|
|
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="cancelbutton1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-cancel</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-6</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="okbutton1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-ok</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-5</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">True</property>
|
|
+ <property name="pack_type">GTK_PACK_END</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTable" id="table1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="n_rows">3</property>
|
|
+ <property name="n_columns">2</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="row_spacing">4</property>
|
|
+ <property name="column_spacing">6</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label15">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">Login Name</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label16">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">SELinux User</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label17">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">MLS/MCS Range</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">2</property>
|
|
+ <property name="bottom_attach">3</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="loginsNameEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkComboBox" id="loginsSelinuxUserCombo">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="add_tearoffs">False</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options">fill</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="loginsMLSEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">2</property>
|
|
+ <property name="bottom_attach">3</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">5</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+</widget>
|
|
+
|
|
+<widget class="GtkDialog" id="portsDialog">
|
|
+ <property name="title" translatable="yes">Add SELinux Network Ports</property>
|
|
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
|
|
+ <property name="window_position">GTK_WIN_POS_NONE</property>
|
|
+ <property name="modal">False</property>
|
|
+ <property name="resizable">True</property>
|
|
+ <property name="destroy_with_parent">False</property>
|
|
+ <property name="decorated">True</property>
|
|
+ <property name="skip_taskbar_hint">False</property>
|
|
+ <property name="skip_pager_hint">False</property>
|
|
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
|
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
|
+ <property name="focus_on_map">True</property>
|
|
+ <property name="urgency_hint">False</property>
|
|
+ <property name="has_separator">True</property>
|
|
+
|
|
+ <child internal-child="vbox">
|
|
+ <widget class="GtkVBox" id="vbox3">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child internal-child="action_area">
|
|
+ <widget class="GtkHButtonBox" id="hbuttonbox1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="button1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-cancel</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-6</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="button2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-ok</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-5</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">True</property>
|
|
+ <property name="pack_type">GTK_PACK_END</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox4">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTable" id="table2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="n_rows">4</property>
|
|
+ <property name="n_columns">2</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="row_spacing">4</property>
|
|
+ <property name="column_spacing">6</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label18">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">Port Number</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label19">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">Protocol</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label20">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">SELinux Type</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">2</property>
|
|
+ <property name="bottom_attach">3</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="portsNumberEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkComboBox" id="portsProtocolCombo">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="items" translatable="yes">tcp
|
|
+udp</property>
|
|
+ <property name="add_tearoffs">False</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options">fill</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="portsNameEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">2</property>
|
|
+ <property name="bottom_attach">3</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label21">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">MLS/MCS
|
|
+Level</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">3</property>
|
|
+ <property name="bottom_attach">4</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="portsMLSEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">3</property>
|
|
+ <property name="bottom_attach">4</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">5</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+</widget>
|
|
+
|
|
+<widget class="GtkDialog" id="translationsDialog">
|
|
+ <property name="title" translatable="yes">Add SELinux Login Mapping</property>
|
|
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
|
|
+ <property name="window_position">GTK_WIN_POS_NONE</property>
|
|
+ <property name="modal">False</property>
|
|
+ <property name="resizable">True</property>
|
|
+ <property name="destroy_with_parent">False</property>
|
|
+ <property name="decorated">True</property>
|
|
+ <property name="skip_taskbar_hint">False</property>
|
|
+ <property name="skip_pager_hint">False</property>
|
|
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
|
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
|
+ <property name="focus_on_map">True</property>
|
|
+ <property name="urgency_hint">False</property>
|
|
+ <property name="has_separator">True</property>
|
|
+
|
|
+ <child internal-child="vbox">
|
|
+ <widget class="GtkVBox" id="vbox5">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child internal-child="action_area">
|
|
+ <widget class="GtkHButtonBox" id="hbuttonbox2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="button3">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-cancel</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-6</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="button4">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-ok</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-5</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">True</property>
|
|
+ <property name="pack_type">GTK_PACK_END</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox6">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTable" id="table3">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="n_rows">2</property>
|
|
+ <property name="n_columns">2</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="row_spacing">4</property>
|
|
+ <property name="column_spacing">6</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label22">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">SELinux MLS/MCS
|
|
+Level</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label24">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">Translation</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="translationsLevelEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="translationsEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">5</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+</widget>
|
|
+
|
|
+<widget class="GtkDialog" id="fcontextDialog">
|
|
+ <property name="title" translatable="yes">Add SELinux Login Mapping</property>
|
|
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
|
|
+ <property name="window_position">GTK_WIN_POS_NONE</property>
|
|
+ <property name="modal">False</property>
|
|
+ <property name="resizable">True</property>
|
|
+ <property name="destroy_with_parent">False</property>
|
|
+ <property name="decorated">True</property>
|
|
+ <property name="skip_taskbar_hint">False</property>
|
|
+ <property name="skip_pager_hint">False</property>
|
|
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
|
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
|
+ <property name="focus_on_map">True</property>
|
|
+ <property name="urgency_hint">False</property>
|
|
+ <property name="has_separator">True</property>
|
|
+
|
|
+ <child internal-child="vbox">
|
|
+ <widget class="GtkVBox" id="vbox7">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child internal-child="action_area">
|
|
+ <widget class="GtkHButtonBox" id="hbuttonbox3">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="button5">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-cancel</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-6</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="button6">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-ok</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-5</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">True</property>
|
|
+ <property name="pack_type">GTK_PACK_END</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox8">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTable" id="table4">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="n_rows">4</property>
|
|
+ <property name="n_columns">2</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="row_spacing">4</property>
|
|
+ <property name="column_spacing">6</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label25">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">File Specification</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label26">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">File Type</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label27">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">SELinux Type</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">2</property>
|
|
+ <property name="bottom_attach">3</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="fcontextEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkComboBox" id="fcontextFileTypeCombo">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="items" translatable="yes">all files
|
|
+regular file
|
|
+directory
|
|
+character device
|
|
+block device
|
|
+socket
|
|
+symbolic link
|
|
+named pipe
|
|
+</property>
|
|
+ <property name="add_tearoffs">False</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options">fill</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="fcontextTypeEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">2</property>
|
|
+ <property name="bottom_attach">3</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label31">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">MLS</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">3</property>
|
|
+ <property name="bottom_attach">4</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="fcontextMLSEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">3</property>
|
|
+ <property name="bottom_attach">4</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">5</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+</widget>
|
|
+
|
|
+<widget class="GtkDialog" id="usersDialog">
|
|
+ <property name="title" translatable="yes">Add SELinux User</property>
|
|
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
|
|
+ <property name="window_position">GTK_WIN_POS_NONE</property>
|
|
+ <property name="modal">False</property>
|
|
+ <property name="resizable">True</property>
|
|
+ <property name="destroy_with_parent">False</property>
|
|
+ <property name="decorated">True</property>
|
|
+ <property name="skip_taskbar_hint">False</property>
|
|
+ <property name="skip_pager_hint">False</property>
|
|
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
|
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
|
+ <property name="focus_on_map">True</property>
|
|
+ <property name="urgency_hint">False</property>
|
|
+ <property name="has_separator">True</property>
|
|
+
|
|
+ <child internal-child="vbox">
|
|
+ <widget class="GtkVBox" id="vbox9">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child internal-child="action_area">
|
|
+ <widget class="GtkHButtonBox" id="hbuttonbox4">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="button7">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-cancel</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-6</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkButton" id="button8">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_default">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="label">gtk-ok</property>
|
|
+ <property name="use_stock">True</property>
|
|
+ <property name="relief">GTK_RELIEF_NORMAL</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ <property name="response_id">-5</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">True</property>
|
|
+ <property name="pack_type">GTK_PACK_END</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox10">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTable" id="table5">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="n_rows">5</property>
|
|
+ <property name="n_columns">2</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="row_spacing">4</property>
|
|
+ <property name="column_spacing">6</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label32">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">SELinux User</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label33">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">Label Prefix</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label34">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">MLS/MCS Range</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">3</property>
|
|
+ <property name="bottom_attach">4</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="mlsRangeEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">3</property>
|
|
+ <property name="bottom_attach">4</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label35">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">MLS/MCS Level</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">2</property>
|
|
+ <property name="bottom_attach">3</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="mlsLevelEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">2</property>
|
|
+ <property name="bottom_attach">3</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label36">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">SELinux Roles</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">0</property>
|
|
+ <property name="right_attach">1</property>
|
|
+ <property name="top_attach">4</property>
|
|
+ <property name="bottom_attach">5</property>
|
|
+ <property name="x_options">fill</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="selinuxRolesEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">4</property>
|
|
+ <property name="bottom_attach">5</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="selinuxUserEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">0</property>
|
|
+ <property name="bottom_attach">1</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkEntry" id="labelPrefixEntry">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="editable">True</property>
|
|
+ <property name="visibility">True</property>
|
|
+ <property name="max_length">0</property>
|
|
+ <property name="text" translatable="yes"></property>
|
|
+ <property name="has_frame">True</property>
|
|
+ <property name="invisible_char">*</property>
|
|
+ <property name="activates_default">False</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="left_attach">1</property>
|
|
+ <property name="right_attach">2</property>
|
|
+ <property name="top_attach">1</property>
|
|
+ <property name="bottom_attach">2</property>
|
|
+ <property name="y_options"></property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">5</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+</widget>
|
|
+
|
|
+<widget class="GnomeApp" id="mainWindow">
|
|
+ <property name="width_request">800</property>
|
|
+ <property name="height_request">500</property>
|
|
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
|
|
+ <property name="window_position">GTK_WIN_POS_NONE</property>
|
|
+ <property name="modal">False</property>
|
|
+ <property name="resizable">True</property>
|
|
+ <property name="destroy_with_parent">False</property>
|
|
+ <property name="icon">system-config-selinux.png</property>
|
|
+ <property name="decorated">True</property>
|
|
+ <property name="skip_taskbar_hint">False</property>
|
|
+ <property name="skip_pager_hint">False</property>
|
|
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
|
|
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
|
+ <property name="focus_on_map">True</property>
|
|
+ <property name="urgency_hint">False</property>
|
|
+ <property name="enable_layout_config">True</property>
|
|
+
|
|
+ <child internal-child="dock">
|
|
+ <widget class="BonoboDock" id="bonobodock2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="allow_floating">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="BonoboDockItem" id="bonobodockitem3">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkMenuBar" id="menubar1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
|
|
+ <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkMenuItem" id="file1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="stock_item">GNOMEUIINFO_MENU_FILE_TREE</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkMenu" id="file1_menu">
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkImageMenuItem" id="quit">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="stock_item">GNOMEUIINFO_MENU_EXIT_ITEM</property>
|
|
+ <signal name="activate" handler="on_quit_activate" last_modification_time="Fri, 06 Oct 2006 13:58:19 GMT"/>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkMenuItem" id="help1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="stock_item">GNOMEUIINFO_MENU_HELP_TREE</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkMenu" id="help1_menu">
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkImageMenuItem" id="about">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="stock_item">GNOMEUIINFO_MENU_ABOUT_ITEM</property>
|
|
+ <signal name="activate" handler="on_about_activate" last_modification_time="Fri, 06 Oct 2006 13:58:02 GMT"/>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="placement">BONOBO_DOCK_TOP</property>
|
|
+ <property name="band">0</property>
|
|
+ <property name="position">0</property>
|
|
+ <property name="offset">0</property>
|
|
+ <property name="behavior">BONOBO_DOCK_ITEM_BEH_EXCLUSIVE|BONOBO_DOCK_ITEM_BEH_NEVER_VERTICAL|BONOBO_DOCK_ITEM_BEH_LOCKED</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkHPaned" id="hpaned1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkFrame" id="frame1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label_xalign">0</property>
|
|
+ <property name="label_yalign">0.5</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkAlignment" id="alignment1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xscale">1</property>
|
|
+ <property name="yscale">1</property>
|
|
+ <property name="top_padding">0</property>
|
|
+ <property name="bottom_padding">0</property>
|
|
+ <property name="left_padding">12</property>
|
|
+ <property name="right_padding">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="selectView">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">False</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label45">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes"><b>Select:</b></property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">True</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">label_item</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="shrink">True</property>
|
|
+ <property name="resize">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkNotebook" id="notebook">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="show_tabs">False</property>
|
|
+ <property name="show_border">False</property>
|
|
+ <property name="tab_pos">GTK_POS_TOP</property>
|
|
+ <property name="scrollable">False</property>
|
|
+ <property name="enable_popup">False</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkFrame" id="frame1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label_xalign">0</property>
|
|
+ <property name="label_yalign">0.5</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkAlignment" id="alignment1">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xscale">1</property>
|
|
+ <property name="yscale">1</property>
|
|
+ <property name="top_padding">0</property>
|
|
+ <property name="bottom_padding">0</property>
|
|
+ <property name="left_padding">12</property>
|
|
+ <property name="right_padding">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkHBox" id="hbox4">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label28">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">Current </property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">3</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkComboBox" id="currentOptionMenu">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="items" translatable="yes">Enforcing
|
|
+Permissive
|
|
+Disabled
|
|
+</property>
|
|
+ <property name="add_tearoffs">False</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label29">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">System Default</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">6</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkComboBox" id="enabledOptionMenu">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="items" translatable="yes">Enforcing
|
|
+Permissive
|
|
+Disabled
|
|
+</property>
|
|
+ <property name="add_tearoffs">False</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label30">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes"><b>Enforcement Mode</b></property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">True</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">label_item</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">5</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkHBox" id="hbox2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="typeLabel">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">Policy Type: </property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkComboBox" id="selinuxTypeOptionMenu">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="items" translatable="yes"></property>
|
|
+ <property name="add_tearoffs">False</property>
|
|
+ <property name="focus_on_click">True</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ <property name="pack_type">GTK_PACK_END</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">9</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkFrame" id="Booleans">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label_xalign">0</property>
|
|
+ <property name="label_yalign">0.5</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkAlignment" id="alignment2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xscale">1</property>
|
|
+ <property name="yscale">1</property>
|
|
+ <property name="top_padding">0</property>
|
|
+ <property name="bottom_padding">0</property>
|
|
+ <property name="left_padding">12</property>
|
|
+ <property name="right_padding">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkScrolledWindow" id="scrolledwindow10">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="booleansView">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">False</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label32">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes"><b>Booleans</b></property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">True</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">5</property>
|
|
+ <property name="ypad">3</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">label_item</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="tab_expand">False</property>
|
|
+ <property name="tab_fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label37">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">label37</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">tab</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox11">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolbar" id="toolbar2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
|
|
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
|
|
+ <property name="tooltips">True</property>
|
|
+ <property name="show_arrow">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton5">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">New File</property>
|
|
+ <property name="stock_id">gtk-add</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_add_clicked" last_modification_time="Mon, 16 Jan 2006 18:27:03 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton6">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Open File</property>
|
|
+ <property name="stock_id">gtk-properties</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_properties_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:51 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton7">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Save File</property>
|
|
+ <property name="stock_id">gtk-delete</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_delete_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:29 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkScrolledWindow" id="scrolledwindow17">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="fcontextView">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">True</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="tab_expand">False</property>
|
|
+ <property name="tab_fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label38">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">label38</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">tab</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox12">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolbar" id="toolbar3">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
|
|
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
|
|
+ <property name="tooltips">True</property>
|
|
+ <property name="show_arrow">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton8">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">New File</property>
|
|
+ <property name="stock_id">gtk-add</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_add_clicked" last_modification_time="Mon, 16 Jan 2006 18:27:03 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton9">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Open File</property>
|
|
+ <property name="stock_id">gtk-properties</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_properties_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:51 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton10">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Save File</property>
|
|
+ <property name="stock_id">gtk-delete</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_delete_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:29 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkScrolledWindow" id="scrolledwindow16">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="loginsView">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">True</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="tab_expand">False</property>
|
|
+ <property name="tab_fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label39">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">label39</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">tab</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox14">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolbar" id="toolbar5">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
|
|
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
|
|
+ <property name="tooltips">True</property>
|
|
+ <property name="show_arrow">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton14">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">New File</property>
|
|
+ <property name="stock_id">gtk-add</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_add_clicked" last_modification_time="Mon, 16 Jan 2006 18:27:03 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton15">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Open File</property>
|
|
+ <property name="stock_id">gtk-properties</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_properties_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:51 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton16">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Save File</property>
|
|
+ <property name="stock_id">gtk-delete</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_delete_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:29 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkScrolledWindow" id="scrolledwindow11">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="usersView">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">True</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="tab_expand">False</property>
|
|
+ <property name="tab_fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label41">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">label41</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">tab</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox13">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolbar" id="toolbar4">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
|
|
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
|
|
+ <property name="tooltips">True</property>
|
|
+ <property name="show_arrow">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton11">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">New File</property>
|
|
+ <property name="stock_id">gtk-add</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_add_clicked" last_modification_time="Mon, 16 Jan 2006 18:27:03 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton12">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Open File</property>
|
|
+ <property name="stock_id">gtk-properties</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_properties_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:51 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton13">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Save File</property>
|
|
+ <property name="stock_id">gtk-delete</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_delete_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:29 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkScrolledWindow" id="scrolledwindow12">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="translationsView">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">True</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="tab_expand">False</property>
|
|
+ <property name="tab_fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label40">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">label40</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">tab</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox15">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolbar" id="toolbar6">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
|
|
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
|
|
+ <property name="tooltips">True</property>
|
|
+ <property name="show_arrow">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton17">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">New File</property>
|
|
+ <property name="stock_id">gtk-add</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_add_clicked" last_modification_time="Mon, 16 Jan 2006 18:27:03 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton18">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Open File</property>
|
|
+ <property name="stock_id">gtk-properties</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_properties_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:51 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton19">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Save File</property>
|
|
+ <property name="stock_id">gtk-delete</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_delete_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:29 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkScrolledWindow" id="scrolledwindow13">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="portsView">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">True</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="tab_expand">False</property>
|
|
+ <property name="tab_fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label42">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">label42</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">tab</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox16">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolbar" id="toolbar7">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
|
|
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
|
|
+ <property name="tooltips">True</property>
|
|
+ <property name="show_arrow">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton20">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">New File</property>
|
|
+ <property name="stock_id">gtk-add</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_add_clicked" last_modification_time="Mon, 16 Jan 2006 18:27:03 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton21">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Open File</property>
|
|
+ <property name="stock_id">gtk-properties</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_properties_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:51 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton22">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Save File</property>
|
|
+ <property name="stock_id">gtk-delete</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_delete_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:29 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkScrolledWindow" id="scrolledwindow14">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="interfacesView">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">True</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="tab_expand">False</property>
|
|
+ <property name="tab_fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label43">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">label43</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">tab</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkVBox" id="vbox17">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="spacing">0</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolbar" id="toolbar8">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
|
|
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
|
|
+ <property name="tooltips">True</property>
|
|
+ <property name="show_arrow">True</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton23">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">New File</property>
|
|
+ <property name="stock_id">gtk-add</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_add_clicked" last_modification_time="Mon, 16 Jan 2006 18:27:03 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton24">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Open File</property>
|
|
+ <property name="stock_id">gtk-properties</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_properties_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:51 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkToolButton" id="toolbutton25">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="tooltip" translatable="yes">Save File</property>
|
|
+ <property name="stock_id">gtk-delete</property>
|
|
+ <property name="visible_horizontal">True</property>
|
|
+ <property name="visible_vertical">True</property>
|
|
+ <property name="is_important">False</property>
|
|
+ <signal name="clicked" handler="on_delete_clicked" last_modification_time="Mon, 16 Jan 2006 18:26:29 GMT"/>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="homogeneous">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">False</property>
|
|
+ <property name="fill">False</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkScrolledWindow" id="scrolledwindow15">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
|
|
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
|
|
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkTreeView" id="treeview6">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">True</property>
|
|
+ <property name="headers_visible">True</property>
|
|
+ <property name="rules_hint">False</property>
|
|
+ <property name="reorderable">False</property>
|
|
+ <property name="enable_search">True</property>
|
|
+ <property name="fixed_height_mode">False</property>
|
|
+ <property name="hover_selection">False</property>
|
|
+ <property name="hover_expand">False</property>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="tab_expand">False</property>
|
|
+ <property name="tab_fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child>
|
|
+ <widget class="GtkLabel" id="label44">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">label44</property>
|
|
+ <property name="use_underline">False</property>
|
|
+ <property name="use_markup">False</property>
|
|
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
+ <property name="wrap">False</property>
|
|
+ <property name="selectable">False</property>
|
|
+ <property name="xalign">0.5</property>
|
|
+ <property name="yalign">0.5</property>
|
|
+ <property name="xpad">0</property>
|
|
+ <property name="ypad">0</property>
|
|
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
+ <property name="width_chars">-1</property>
|
|
+ <property name="single_line_mode">False</property>
|
|
+ <property name="angle">0</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="type">tab</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="shrink">True</property>
|
|
+ <property name="resize">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </widget>
|
|
+ </child>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <child internal-child="appbar">
|
|
+ <widget class="GnomeAppBar" id="appbar2">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="has_progress">True</property>
|
|
+ <property name="has_status">True</property>
|
|
+ </widget>
|
|
+ <packing>
|
|
+ <property name="padding">0</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="fill">True</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+</widget>
|
|
+
|
|
+</glade-interface>
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/system-config-selinux.py policycoreutils-1.33.1/gui/system-config-selinux.py
|
|
--- nsapolicycoreutils/gui/system-config-selinux.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/system-config-selinux.py 2006-11-14 11:02:17.000000000 -0500
|
|
@@ -0,0 +1,163 @@
|
|
+#!/usr/bin/python
|
|
+#
|
|
+# system-config-selinux.py - GUI for SELinux Config tool in system-config-selinux
|
|
+#
|
|
+# Dan Walsh <dwalsh@redhat.com>
|
|
+#
|
|
+# Copyright 2006 Red Hat, Inc.
|
|
+#
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2 of the License, or
|
|
+# (at your option) any later version.
|
|
+#
|
|
+# This program is distributed in the hope that it will be useful,
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+# GNU General Public License for more details.
|
|
+#
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with this program; if not, write to the Free Software
|
|
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+#
|
|
+import signal
|
|
+import string
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import gnome
|
|
+import sys
|
|
+import statusPage
|
|
+import booleansPage
|
|
+import loginsPage
|
|
+import usersPage
|
|
+import portsPage
|
|
+import fcontextPage
|
|
+import translationsPage
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="system-config-selinux"
|
|
+
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+gnome.program_init("SELinux Management Tool", "5")
|
|
+
|
|
+version = "1.0"
|
|
+
|
|
+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)
|
|
+else:
|
|
+ xml = gtk.glade.XML ("/usr/share/system-config-selinux/system-config-selinux.glade", domain=PROGNAME)
|
|
+
|
|
+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)
|
|
+ self.status_page=statusPage.statusPage(xml)
|
|
+ self.boolean_page=booleansPage.booleansPage(xml)
|
|
+ self.tabs.append(fcontextPage.fcontextPage(xml))
|
|
+ self.tabs.append(loginsPage.loginsPage(xml))
|
|
+ self.tabs.append(translationsPage.translationsPage(xml))
|
|
+ self.tabs.append(usersPage.usersPage(xml))
|
|
+ self.tabs.append(portsPage.portsPage(xml))
|
|
+ self.tabs.append(None) # modules
|
|
+ self.tabs.append(None) # interfaces
|
|
+
|
|
+ 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)
|
|
+
|
|
+ def policy(self, args):
|
|
+ os.spawnl(os.P_NOWAIT, "/usr/share/system-config-selinux/semanagegui.py")
|
|
+ def logging(self, args):
|
|
+ os.spawnl(os.P_NOWAIT, "/usr/bin/seaudit")
|
|
+
|
|
+ def delete(self, args):
|
|
+ self.tabs[self.notebook.get_current_page()].deleteDialog()
|
|
+
|
|
+ def add(self, args):
|
|
+ self.tabs[self.notebook.get_current_page()].addDialog()
|
|
+
|
|
+ def properties(self, args):
|
|
+ self.tabs[self.notebook.get_current_page()].propertiesDialog()
|
|
+
|
|
+ def on_about_activate(self, args):
|
|
+ dlg = xml.get_widget ("aboutWindow")
|
|
+ dlg.run ()
|
|
+ dlg.hide ()
|
|
+
|
|
+ def destroy(self, args):
|
|
+ gtk.main_quit()
|
|
+
|
|
+ def itemSelected(self, selection):
|
|
+ store, rows = selection.get_selected_rows()
|
|
+ if store != None and len(rows) > 0:
|
|
+ self.notebook.set_current_page(rows[0][0])
|
|
+ else:
|
|
+ self.notebook.set_current_page(0)
|
|
+
|
|
+
|
|
+ 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.view.get_selection().connect("changed", self.itemSelected)
|
|
+ self.store = gtk.ListStore(gobject.TYPE_STRING)
|
|
+ self.view.set_model(self.store)
|
|
+ col = gtk.TreeViewColumn("", gtk.CellRendererText(), text = 0)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, _("Setup"))
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, _("File Contexts"))
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, _("Linux to SELinux User Mappings"))
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, _("Translations"))
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, _("SELinux Users"))
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, _("Network Ports"))
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, _("Loaded Policy Modules"))
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+
|
|
+ def stand_alone(self):
|
|
+ desktopName = _("Configue SELinux")
|
|
+
|
|
+ self.setupScreen()
|
|
+
|
|
+ self.mainWindow.connect("destroy", self.destroy)
|
|
+
|
|
+ self.mainWindow.show_all()
|
|
+ gtk.main()
|
|
+
|
|
+if __name__ == "__main__":
|
|
+ signal.signal (signal.SIGINT, signal.SIG_DFL)
|
|
+
|
|
+ app = childWindow()
|
|
+ app.stand_alone()
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/translationsPage.py policycoreutils-1.33.1/gui/translationsPage.py
|
|
--- nsapolicycoreutils/gui/translationsPage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/translationsPage.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,109 @@
|
|
+## translationsPage.py - show selinux translations
|
|
+## Copyright (C) 2006 Red Hat, Inc.
|
|
+
|
|
+## This program is free software; you can redistribute it and/or modify
|
|
+## it under the terms of the GNU General Public License as published by
|
|
+## the Free Software Foundation; either version 2 of the License, or
|
|
+## (at your option) any later version.
|
|
+
|
|
+## This program is distributed in the hope that it will be useful,
|
|
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+## GNU General Public License for more details.
|
|
+
|
|
+## You should have received a copy of the GNU General Public License
|
|
+## along with this program; if not, write to the Free Software
|
|
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+
|
|
+## Author: Dan Walsh
|
|
+import string
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import sys
|
|
+import seobject
|
|
+from semanagePage import *;
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="policycoreutils"
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class translationsPage(semanagePage):
|
|
+ def __init__(self, xml):
|
|
+ self.firstTime = False
|
|
+ semanagePage.__init__(self, xml, "translations", _("SELinux Level Translation"))
|
|
+ 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(_("Sensitvity Level"), gtk.CellRendererText(), text = 0)
|
|
+ col.set_sort_column_id(0)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ col = gtk.TreeViewColumn(_("Translation"), gtk.CellRendererText(), text = 1)
|
|
+ col.set_sort_column_id(1)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+
|
|
+ self.load()
|
|
+ self.translationsLevelEntry = xml.get_widget("translationsLevelEntry")
|
|
+ self.translationsEntry = xml.get_widget("translationsEntry")
|
|
+
|
|
+ def load(self):
|
|
+ self.translation = seobject.setransRecords()
|
|
+ dict = self.translation.get_all()
|
|
+ keys = dict.keys()
|
|
+ keys.sort()
|
|
+ self.store.clear()
|
|
+ for k in keys:
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, k)
|
|
+ self.store.set_value(iter, 1, dict[k])
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+
|
|
+ def dialogInit(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ self.translationsLevelEntry.set_text(store.get_value(iter, 0))
|
|
+ self.translationsLevelEntry.set_sensitive(False)
|
|
+ self.translationsEntry.set_text(store.get_value(iter, 1))
|
|
+
|
|
+ def dialogClear(self):
|
|
+ self.translationsLevelEntry.set_text("")
|
|
+ self.translationsLevelEntry.set_sensitive(True)
|
|
+ self.translationsEntry.set_text("")
|
|
+
|
|
+ def delete(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ try:
|
|
+ level = store.get_value(iter, 0)
|
|
+ self.translation.delete(level)
|
|
+ store.remove(iter)
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+ except ValueError, e:
|
|
+ self.error(e.args[0])
|
|
+
|
|
+ def add(self):
|
|
+ level = self.translationsLevelEntry.get_text().strip()
|
|
+ translation = self.translationsEntry.get_text().strip()
|
|
+ self.translation.add(level, translation)
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, level)
|
|
+ self.store.set_value(iter, 1, translation)
|
|
+
|
|
+ def modify(self):
|
|
+ level = self.translationsLevelEntry.get_text().strip()
|
|
+ translation = self.translationsEntry.get_text().strip()
|
|
+ self.translation.modify(level, translation)
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ self.store.set_value(iter, 0, level)
|
|
+ self.store.set_value(iter, 1, translation)
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/gui/usersPage.py policycoreutils-1.33.1/gui/usersPage.py
|
|
--- nsapolicycoreutils/gui/usersPage.py 1969-12-31 19:00:00.000000000 -0500
|
|
+++ policycoreutils-1.33.1/gui/usersPage.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -0,0 +1,155 @@
|
|
+## usersPage.py - show selinux mappings
|
|
+## Copyright (C) 2006 Red Hat, Inc.
|
|
+
|
|
+## This program is free software; you can redistribute it and/or modify
|
|
+## it under the terms of the GNU General Public License as published by
|
|
+## the Free Software Foundation; either version 2 of the License, or
|
|
+## (at your option) any later version.
|
|
+
|
|
+## This program is distributed in the hope that it will be useful,
|
|
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+## GNU General Public License for more details.
|
|
+
|
|
+## You should have received a copy of the GNU General Public License
|
|
+## along with this program; if not, write to the Free Software
|
|
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
+
|
|
+## Author: Dan Walsh
|
|
+import string
|
|
+import gtk
|
|
+import gtk.glade
|
|
+import os
|
|
+import libxml2
|
|
+import gobject
|
|
+import sys
|
|
+import seobject
|
|
+from semanagePage import *;
|
|
+
|
|
+##
|
|
+## I18N
|
|
+##
|
|
+PROGNAME="policycoreutils"
|
|
+import gettext
|
|
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
|
+gettext.textdomain(PROGNAME)
|
|
+try:
|
|
+ gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
|
|
+except IOError:
|
|
+ import __builtin__
|
|
+ __builtin__.__dict__['_'] = unicode
|
|
+
|
|
+class usersPage(semanagePage):
|
|
+ def __init__(self, xml):
|
|
+ semanagePage.__init__(self, xml, "users", "User")
|
|
+ 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)
|
|
+
|
|
+ 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(_("Labeling\nPrefix"), gtk.CellRendererText(), text = 1)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ col = gtk.TreeViewColumn(_("MLS/\nMCS Level"), gtk.CellRendererText(), text = 2)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+ col = gtk.TreeViewColumn(_("MLS/\nMCS Range"), gtk.CellRendererText(), text = 3)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+
|
|
+ col = gtk.TreeViewColumn(_("SELinux Roles"), gtk.CellRendererText(), text = 4)
|
|
+ col.set_resizable(True)
|
|
+ self.view.append_column(col)
|
|
+
|
|
+ self.load()
|
|
+ self.selinuxUserEntry = xml.get_widget("selinuxUserEntry")
|
|
+ self.labelPrefixEntry = xml.get_widget("labelPrefixEntry")
|
|
+ self.mlsLevelEntry = xml.get_widget("mlsLevelEntry")
|
|
+ self.mlsRangeEntry = xml.get_widget("mlsRangeEntry")
|
|
+ self.selinuxRolesEntry = xml.get_widget("selinuxRolesEntry")
|
|
+
|
|
+ def load(self):
|
|
+ self.user = seobject.seluserRecords()
|
|
+ dict = self.user.get_all()
|
|
+ keys = dict.keys()
|
|
+ keys.sort()
|
|
+ self.store.clear()
|
|
+ for k in keys:
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, k)
|
|
+ self.store.set_value(iter, 1, dict[k][0])
|
|
+ self.store.set_value(iter, 2, seobject.translate(dict[k][1]))
|
|
+ self.store.set_value(iter, 3, seobject.translate(dict[k][2]))
|
|
+ self.store.set_value(iter, 4, 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))
|
|
+ self.selinuxUserEntry.set_sensitive(False)
|
|
+ self.labelPrefixEntry.set_text(store.get_value(iter, 1))
|
|
+ self.mlsLevelEntry.set_text(store.get_value(iter, 2))
|
|
+ self.mlsRangeEntry.set_text(store.get_value(iter, 3))
|
|
+ self.selinuxRolesEntry.set_text(store.get_value(iter, 4))
|
|
+ protocol=store.get_value(iter, 2)
|
|
+
|
|
+ def dialogClear(self):
|
|
+ self.selinuxUserEntry.set_text("")
|
|
+ self.selinuxUserEntry.set_sensitive(True)
|
|
+ self.labelPrefixEntry.set_text("")
|
|
+ self.mlsLevelEntry.set_text("s0")
|
|
+ self.mlsRangeEntry.set_text("s0")
|
|
+ self.selinuxRolesEntry.set_text("")
|
|
+
|
|
+ def add(self):
|
|
+ user = self.selinuxUserEntry.get_text()
|
|
+ prefix = self.labelPrefixEntry.get_text()
|
|
+ level = self.mlsLevelEntry.get_text()
|
|
+ range = self.mlsRangeEntry.get_text()
|
|
+ roles = self.selinuxRolesEntry.get_text()
|
|
+
|
|
+ self.user.add(user, roles.split(), level, range, prefix)
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, user)
|
|
+ self.store.set_value(iter, 1, prefix)
|
|
+ self.store.set_value(iter, 2, level)
|
|
+ self.store.set_value(iter, 3, range)
|
|
+ self.store.set_value(iter, 4, roles)
|
|
+
|
|
+ def modify(self):
|
|
+ user = self.selinuxUserEntry.get_text()
|
|
+ prefix = self.labelPrefixEntry.get_text()
|
|
+ level = self.mlsLevelEntry.get_text()
|
|
+ range = self.mlsRangeEntry.get_text()
|
|
+ roles = self.selinuxRolesEntry.get_text()
|
|
+
|
|
+ self.user.modify(user, roles.split(), level, range, prefix)
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ iter = self.store.append()
|
|
+ self.store.set_value(iter, 0, user)
|
|
+ self.store.set_value(iter, 1, prefix)
|
|
+ self.store.set_value(iter, 2, level)
|
|
+ self.store.set_value(iter, 3, range)
|
|
+ self.store.set_value(iter, 4, roles)
|
|
+
|
|
+ def delete(self):
|
|
+ store, iter = self.view.get_selection().get_selected()
|
|
+ try:
|
|
+ user=store.get_value(iter, 0)
|
|
+ if user == "root" or user == "user_u":
|
|
+ raise ValueError(_("SELinux user '%s' is required") % user)
|
|
+
|
|
+ self.user.delete(user)
|
|
+ store.remove(iter)
|
|
+ self.view.get_selection().select_path ((0,))
|
|
+ except ValueError, e:
|
|
+ self.error(e.args[0])
|
|
+
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/Makefile policycoreutils-1.33.1/Makefile
|
|
--- nsapolicycoreutils/Makefile 2006-08-28 16:58:22.000000000 -0400
|
|
+++ policycoreutils-1.33.1/Makefile 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -1,4 +1,4 @@
|
|
-SUBDIRS=setfiles semanage load_policy newrole run_init restorecon restorecond secon audit2allow audit2why scripts sestatus semodule_package semodule semodule_link semodule_expand semodule_deps setsebool po
|
|
+SUBDIRS=setfiles semanage load_policy newrole run_init restorecon restorecond secon audit2allow audit2why scripts sestatus semodule_package semodule semodule_link semodule_expand semodule_deps setsebool po gui
|
|
|
|
all install relabel clean indent:
|
|
@for subdir in $(SUBDIRS); do \
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/newrole/newrole.c policycoreutils-1.33.1/newrole/newrole.c
|
|
--- nsapolicycoreutils/newrole/newrole.c 2006-11-14 09:46:12.000000000 -0500
|
|
+++ policycoreutils-1.33.1/newrole/newrole.c 2006-11-14 09:55:30.000000000 -0500
|
|
@@ -1028,6 +1028,7 @@
|
|
{
|
|
fprintf(stderr, _("newrole: incorrect password for %s\n"),
|
|
pw.pw_name);
|
|
+ send_audit_message(0, old_context, new_context, ttyn);
|
|
goto err_close_pam;
|
|
}
|
|
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/restorecond/Makefile policycoreutils-1.33.1/restorecond/Makefile
|
|
--- nsapolicycoreutils/restorecond/Makefile 2006-08-28 16:58:19.000000000 -0400
|
|
+++ policycoreutils-1.33.1/restorecond/Makefile 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -5,8 +5,9 @@
|
|
INITDIR = $(DESTDIR)/etc/rc.d/init.d
|
|
SELINUXDIR = $(DESTDIR)/etc/selinux
|
|
|
|
-CFLAGS ?= -g -Werror -Wall -W
|
|
-override CFLAGS += -I$(PREFIX)/include -D_FILE_OFFSET_BITS=64
|
|
+LDFLAGS ?= -pie
|
|
+CFLAGS ?= -g -Werror -Wall -W
|
|
+override CFLAGS += -I$(PREFIX)/include -D_FILE_OFFSET_BITS=64 -fPIE
|
|
LDLIBS += -lselinux -lsepol -L$(PREFIX)/lib
|
|
|
|
all: restorecond
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/restorecond/restorecond.conf policycoreutils-1.33.1/restorecond/restorecond.conf
|
|
--- nsapolicycoreutils/restorecond/restorecond.conf 2006-08-28 16:58:19.000000000 -0400
|
|
+++ policycoreutils-1.33.1/restorecond/restorecond.conf 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -2,5 +2,6 @@
|
|
/etc/samba/secrets.tdb
|
|
/etc/mtab
|
|
/var/run/utmp
|
|
+/var/log/wtmp
|
|
~/public_html
|
|
~/.mozilla/plugins/libflashplayer.so
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/scripts/genhomedircon.8 policycoreutils-1.33.1/scripts/genhomedircon.8
|
|
--- nsapolicycoreutils/scripts/genhomedircon.8 2006-08-28 16:58:19.000000000 -0400
|
|
+++ policycoreutils-1.33.1/scripts/genhomedircon.8 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -45,35 +45,30 @@
|
|
.SH DESCRIPTION
|
|
.PP
|
|
This utility is used to generate file context configuration entries for
|
|
-user home directories based on their default roles and is run when building
|
|
-the policy. It can also be run when ever the
|
|
-.I /etc/selinux/<<SELINUXTYPE>>/users/local.users
|
|
-file is changed
|
|
+user home directories based on their
|
|
+.B prefix
|
|
+entry in the the
|
|
+.B semanage user record.
|
|
+genhomedircon is run when building
|
|
+the policy. It is also run automaticaly when ever the
|
|
+.B semanage
|
|
+utility modifies
|
|
+.B user
|
|
+or
|
|
+.B login
|
|
+records.
|
|
Specifically, we replace HOME_ROOT, HOME_DIR, and ROLE macros in the
|
|
.I /etc/selinux/<<SELINUXTYPE>>/contexts/files/homedir_template
|
|
-file with generic and user-specific values.
|
|
-.I local.users
|
|
-file. If a user has more than one role in
|
|
-.I local.users,
|
|
-.B genhomedircon
|
|
-uses the first role in the list.
|
|
+file with generic and user-specific values. HOME_ROOT and HOME_DIR is replaced with each distinct location where login users homedirectories are located. Defaults to /home. ROLE is replaced based on the prefix entry in the
|
|
+.B user
|
|
+record.
|
|
.PP
|
|
-If a user is not listed in
|
|
-.I local.users,
|
|
-.B genhomedircon
|
|
-assumes that the user's home dir will be found in one of the
|
|
-HOME_ROOTs.
|
|
-When looking for these users,
|
|
-.B genhomedircon
|
|
-only considers real users. "Real" users (as opposed
|
|
-to system users) are those whose UID is greater than or equal
|
|
+genhomedircon searches through all password entires for all "login" user home directories, (as opposed
|
|
+to system users). Login users are those whose UID is greater than or equal
|
|
.I STARTING_UID
|
|
(default 500) and whose login shell is not "/sbin/nologin", or
|
|
"/bin/false".
|
|
.PP
|
|
-Users who are explicitly defined in
|
|
-.I local.users,
|
|
-are always "real" (including root, in the default configuration).
|
|
.SH AUTHOR
|
|
This manual page was originally written by
|
|
.I Manoj Srivastava <srivasta@debian.org>,
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/semanage/semanage.8 policycoreutils-1.33.1/semanage/semanage.8
|
|
--- nsapolicycoreutils/semanage/semanage.8 2006-09-14 08:07:24.000000000 -0400
|
|
+++ policycoreutils-1.33.1/semanage/semanage.8 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -7,7 +7,7 @@
|
|
.br
|
|
.B semanage login \-{a|d|m} [\-sr] login_name
|
|
.br
|
|
-.B semanage user \-{a|d|m} [\-LrR] selinux_name
|
|
+.B semanage user \-{a|d|m} [\-LrRP] selinux_name
|
|
.br
|
|
.B semanage port \-{a|d|m} [\-tr] [\-p protocol] port | port_range
|
|
.br
|
|
@@ -71,6 +71,9 @@
|
|
.I \-R, \-\-role
|
|
SELinux Roles. You must enclose multiple roles within quotes, separate by spaces. Or specify \-R multiple times.
|
|
.TP
|
|
+.I \-P, \-\-prefix
|
|
+SELinux Prefix. Prefix added to home_dir_t and home_t for labeling users home directories.
|
|
+.TP
|
|
.I \-s, \-\-seuser
|
|
SELinux user name
|
|
.TP
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/semanage/seobject.py policycoreutils-1.33.1/semanage/seobject.py
|
|
--- nsapolicycoreutils/semanage/seobject.py 2006-10-17 12:04:55.000000000 -0400
|
|
+++ policycoreutils-1.33.1/semanage/seobject.py 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -456,7 +456,8 @@
|
|
rc = semanage_user_set_mlslevel(self.sh, u, selevel)
|
|
if rc < 0:
|
|
raise ValueError(_("Could not set MLS level for %s") % name)
|
|
-
|
|
+ if selinux.security_check_context("system_u:object_r:%s_home_t:s0" % prefix) != 0:
|
|
+ raise ValueError(_("Invalid prefix %s") % prefix)
|
|
rc = semanage_user_set_prefix(self.sh, u, prefix)
|
|
if rc < 0:
|
|
raise ValueError(_("Could not add prefix %s for %s") % (r, prefix))
|
|
@@ -522,7 +523,9 @@
|
|
semanage_user_set_mlslevel(self.sh, u, untranslate(selevel))
|
|
|
|
if prefix != "":
|
|
- semanage_user_set_prefix(self.sh, u, prefix)
|
|
+ if selinux.security_check_context("system_u:object_r:%s_home_t" % prefix) != 0:
|
|
+ raise ValueError(_("Invalid prefix %s") % prefix)
|
|
+ semanage_user_set_prefix(self.sh, u, prefix)
|
|
|
|
if len(roles) != 0:
|
|
for r in roles:
|
|
diff --exclude-from=exclude --exclude='*.po' --exclude='*.pot' -N -u -r nsapolicycoreutils/semodule_expand/semodule_expand.8 policycoreutils-1.33.1/semodule_expand/semodule_expand.8
|
|
--- nsapolicycoreutils/semodule_expand/semodule_expand.8 2006-08-28 16:58:20.000000000 -0400
|
|
+++ policycoreutils-1.33.1/semodule_expand/semodule_expand.8 2006-11-14 09:54:05.000000000 -0500
|
|
@@ -18,7 +18,7 @@
|
|
.SH "OPTIONS"
|
|
.TP
|
|
.B \-V
|
|
-verbose mode
|
|
+show version
|
|
.TP
|
|
.B \-c [version]
|
|
policy version to create
|