import sys, os, string, re
import traceback
import shutil
+#from xml.marshal import generic
from xen.lowlevel import acm
from xen.xend import sxp
from xen.xend.XendLogging import log
-from xen.util import dictio
#global directories and tools for security management
policy_dir_prefix = "/etc/xen/acm-security/policies"
(label, policy) = default_res_label()
# load the resource label file
- res_label_cache = {}
- try:
- res_label_cache = dictio.dict_read("resources", res_label_filename)
- except:
+ configfile = res_label_filename
+ if not os.path.isfile(configfile):
log.info("Resource label file not found.")
return default_res_label()
+#
+# Commented out pending replacement for xml.marshal.generic
+#
+# fd = open(configfile, "rb")
+# res_label_cache = generic.load(fd)
+# fd.close()
- # find the resource information
- if res_label_cache.has_key(resource):
- (policy, label) = res_label_cache[resource]
+# # find the resource information
+# if res_label_cache.has_key(resource):
+# (policy, label) = res_label_cache[resource]
return (label, policy)
import sys, os
import string
import traceback
-from xen.util import dictio
+#from xml.marshal import generic
from xen.util import security
def usage():
return
# see if this resource is already in the file
- access_control = {}
file = security.res_label_filename
- try:
- access_control = dictio.dict_read("resources", file)
- except:
+ if not os.path.isfile(file):
print "Resource file not found, creating new file at:"
print "%s" % (file)
+ fd = open(file, "w")
+ fd.close();
+ access_control = {}
+ else:
+ fd = open(file, "rb")
+# access_control = generic.load(fd)
+ fd.close()
if access_control.has_key(resource):
security.err("This resource is already labeled.")
# write the data to file
new_entry = { resource : tuple([policyref, label]) }
access_control.update(new_entry)
- dictio.dict_write(access_control, "resources", file)
+ fd = open(file, "wb")
+# generic.dump(access_control, fd)
+ fd.close()
except security.ACMError:
pass
import sys, os, re
import string
import traceback
-from xen.util import dictio
+#from xml.marshal import generic
from xen.util import security
def usage():
def get_resource_label(resource):
"""Gets the resource label
"""
- # read in the resource file
- file = security.res_label_filename
try:
- access_control = dictio.dict_read("resources", file)
- except:
- print "Resource label file not found"
- return
+ # read in the resource file
+ file = security.res_label_filename
+ if os.path.isfile(file):
+ fd = open(file, "rb")
+# access_control = generic.load(fd)
+ fd.close()
+ else:
+ print "Resource label file not found"
+ return
- try:
# get the entry and print label
if access_control.has_key(resource):
policy = access_control[resource][0]
data = data.strip()
data = data.lstrip("[\'")
data = data.rstrip("\']")
+ (p, l) = data.split(",")
print data
except security.ACMError:
import sys, os
import string
import traceback
-from xen.util import dictio
+#from xml.marshal import generic
from xen.util import security
def usage():
print " label: "+label
-def main (argv):
- try:
- file = security.res_label_filename
- access_control = dictio.dict_read("resources", file)
- except:
+def get_resource_data():
+ """Returns the resource dictionary.
+ """
+ file = security.res_label_filename
+ if not os.path.isfile(file):
security.err("Resource file not found.")
+ fd = open(file, "rb")
+# access_control = generic.load(fd)
+ fd.close()
+ return access_control
+
+
+def main (argv):
try:
+ access_control = get_resource_data()
print_resource_data(access_control)
+
except security.ACMError:
pass
except:
import sys, os, re
import string
import traceback
-from xen.util import dictio
+#from xml.marshal import generic
from xen.util import security
def usage():
def rm_resource_label(resource):
"""Removes a resource label from the global resource label file.
"""
- # read in the resource file
- file = security.res_label_filename
try:
- access_control = dictio.dict_read("resources", file)
- except:
- security.err("Resource file not found, cannot remove label!")
+ # read in the resource file
+ file = security.res_label_filename
+ if os.path.isfile(file):
+ fd = open(file, "rb")
+# access_control = generic.load(fd)
+ fd.close()
+ else:
+ security.err("Resource file not found, cannot remove label!")
- try:
# remove the entry and update file
if access_control.has_key(resource):
del access_control[resource]
- dictio.dict_write(access_control, "resources", file)
+ fd = open(file, "wb")
+# generic.dump(access_control, fd)
+ fd.close()
else:
security.err("Label does not exist in resource label file.")