aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugeni Dodonov <eugeni@mandriva.org>2010-01-29 14:42:31 +0000
committerEugeni Dodonov <eugeni@mandriva.org>2010-01-29 14:42:31 +0000
commit148dc78cd3bf63dbc20ea8b4c13bf7ffc8b47745 (patch)
tree390d516b726b1b8ce66245240d566a14ca52f5e1
parent72b974639ca0bd1f83761ddf3859861929239b27 (diff)
downloadmsec-148dc78cd3bf63dbc20ea8b4c13bf7ffc8b47745.tar
msec-148dc78cd3bf63dbc20ea8b4c13bf7ffc8b47745.tar.gz
msec-148dc78cd3bf63dbc20ea8b4c13bf7ffc8b47745.tar.bz2
msec-148dc78cd3bf63dbc20ea8b4c13bf7ffc8b47745.tar.xz
msec-148dc78cd3bf63dbc20ea8b4c13bf7ffc8b47745.zip
Properly handle base levels in msecgui and with deleted parameters.
-rw-r--r--src/msec/config.py7
-rwxr-xr-xsrc/msec/libmsec.py2
-rwxr-xr-xsrc/msec/msec.py8
-rwxr-xr-xsrc/msec/msecgui.py27
4 files changed, 32 insertions, 12 deletions
diff --git a/src/msec/config.py b/src/msec/config.py
index 4e300a4..7669619 100644
--- a/src/msec/config.py
+++ b/src/msec/config.py
@@ -253,8 +253,8 @@ class MsecConfig:
# TODO: integrate with remove()
if value == None or value == OPTION_DISABLED:
self.log.debug("Skipping %s" % option)
- else:
- print >>fd, "%s=%s" % (option, self.options[option])
+ value=""
+ print >>fd, "%s=%s" % (option, value)
return True
# }}}
@@ -446,6 +446,9 @@ class PermConfig(MsecConfig):
if value == new_value:
self.log.debug("Option %s=%s already on base level!" % (file, value))
continue
+ if not value:
+ # the option was removed
+ continue
user, group, perm, force = value
if force:
force = "\tforce"
diff --git a/src/msec/libmsec.py b/src/msec/libmsec.py
index f4e2b01..bcd7e7b 100755
--- a/src/msec/libmsec.py
+++ b/src/msec/libmsec.py
@@ -746,7 +746,7 @@ class MSEC:
# validating parameters
param = curconfig.get(opt)
# if param is None, this option is to be skipped
- if param == None:
+ if param == None or len(param) == 0:
self.log.debug("Skipping %s" % opt)
continue
if param not in valid_params and '*' not in valid_params:
diff --git a/src/msec/msec.py b/src/msec/msec.py
index 3f3d489..556a082 100755
--- a/src/msec/msec.py
+++ b/src/msec/msec.py
@@ -156,6 +156,12 @@ if __name__ == "__main__":
else:
msec_config.load()
+ # load base levels
+ baselevel_name = msec_config.get_base_level()
+ if baselevel_name:
+ levelconf = config.load_defaults(log, baselevel_name, root=root)
+ standard_permconf = config.load_default_perms(log, baselevel_name, root=root)
+
# load variables from base levels
config.merge_with_baselevel(log, msec_config, msec_config.get_base_level(), config.load_defaults, root='')
config.merge_with_baselevel(log, permconf, msec_config.get_base_level(), config.load_default_perms, root='')
@@ -181,7 +187,7 @@ if __name__ == "__main__":
# writing back changes
msec.commit(commit)
# saving updated config
- if force_level and commit:
+ if commit:
if not msec_config.save(levelconf):
log.error(_("Unable to save config!"))
if not permconf.save(standard_permconf):
diff --git a/src/msec/msecgui.py b/src/msec/msecgui.py
index f276cf5..4260c04 100755
--- a/src/msec/msecgui.py
+++ b/src/msec/msecgui.py
@@ -362,13 +362,16 @@ class MsecGui:
# new base level
self.msecconfig.set("BASE_LEVEL", self.base_level)
+ levelconf = config.load_defaults(log, self.base_level)
+ standard_permconf = config.load_default_perms(log, self.base_level)
+
# saving the configuration
- self.msecconfig.save()
+ self.msecconfig.save(levelconf)
self.msec.apply(self.msecconfig)
self.msec.commit(True)
# saving permissions
- self.permconfig.save()
+ self.permconfig.save(standard_permconf)
self.reload_config()
@@ -379,9 +382,11 @@ class MsecGui:
# msecconfig
self.msecconfig.reset()
self.msecconfig.load()
+ config.merge_with_baselevel(log, self.msecconfig, self.msecconfig.get_base_level(), config.load_defaults, root='')
# permconfig
self.permconfig.reset()
self.permconfig.load()
+ config.merge_with_baselevel(log, self.permconfig, self.msecconfig.get_base_level(), config.load_default_perms, root='')
# exceptions
self.exceptions.reset()
self.exceptions.load()
@@ -664,6 +669,9 @@ class MsecGui:
iter = options.iter_next(iter)
elif curconfig.__class__ == config.PermConfig:
# Use should enforce it in the Permission tab
+ print options
+ print self.base_level
+ self.reset_permissions(None, options, level=level)
pass
else:
#print curconfig.__class__
@@ -930,10 +938,10 @@ class MsecGui:
# button.connect('clicked', self.move_rule_up, lstore)
# hbox.pack_start(button, False)
- # default
- button = gtk.Button(_("Reset to default level permissions"))
- button.connect('clicked', self.reset_permissions, lstore)
- hbox.pack_start(button, False)
+ # # default
+ # button = gtk.Button(_("Reset to default level permissions"))
+ # button.connect('clicked', self.reset_permissions, lstore)
+ # hbox.pack_start(button, False)
# add
button = gtk.Button(_("Add a rule"))
@@ -954,11 +962,14 @@ class MsecGui:
return vbox
- def reset_permissions(self, widget, model):
+ def reset_permissions(self, widget, model, level=None):
"""Reset permissions to default specified by level"""
model.clear()
self.permconfig.reset()
- defperms = self.perm_defaults[self.base_level]
+ if not level:
+ defperms = self.perm_defaults[self.base_level]
+ else:
+ defperms = self.perm_defaults[level]
for file in defperms.list_options():
user_s, group_s, perm_s, force_s = defperms.get(file)