[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Revert 10521, 10526 and 10527. This completes reversion of ACM modifications to xm.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxxxx
# Node ID 9dbcf482f60035aa024ec41569dba3715848b2b8
# Parent  53f552ad404234c457fdd62560c9e8b0ea976674
Revert 10521, 10526 and 10527. This completes reversion of ACM modifications to 
xm.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 tools/python/xen/xm/dry-run.py        |   95 ------------------
 tools/python/xen/xm/getlabel.py       |  134 --------------------------
 tools/python/xen/xm/resources.py      |   70 -------------
 tools/python/xen/xm/rmlabel.py        |  134 --------------------------
 tools/python/xen/util/security.py     |  102 --------------------
 tools/python/xen/xend/server/blkif.py |   12 --
 tools/python/xen/xm/addlabel.py       |  171 +++++++---------------------------
 tools/python/xen/xm/create.py         |   59 -----------
 tools/python/xen/xm/main.py           |   28 -----
 9 files changed, 44 insertions(+), 761 deletions(-)

diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/util/security.py
--- a/tools/python/xen/util/security.py Fri Jun 30 13:25:43 2006 +0100
+++ b/tools/python/xen/util/security.py Fri Jun 30 13:33:20 2006 +0100
@@ -14,7 +14,6 @@
 #============================================================================
 # Copyright (C) 2006 International Business Machines Corp.
 # Author: Reiner Sailer
-# Author: Bryan D. Payne <bdpayne@xxxxxxxxxx>
 #============================================================================
 
 import commands
@@ -22,14 +21,11 @@ import sys, os, string, re
 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
 
 #global directories and tools for security management
 policy_dir_prefix = "/etc/xen/acm-security/policies"
-res_label_filename = policy_dir_prefix + "/resource_labels"
 boot_filename = "/boot/grub/menu.lst"
 xensec_xml2bin = "/usr/sbin/xensec_xml2bin"
 xensec_tool = "/usr/sbin/xensec_tool"
@@ -534,101 +530,3 @@ def list_labels(policy_name, condition):
             if label not in labels:
                 labels.append(label)
     return labels
-
-
-def get_res_label(resource):
-    """Returns resource label information (label, policy) if it exists.
-       Otherwise returns null label and policy.
-    """
-    def default_res_label():
-        ssidref = NULL_SSIDREF
-        if on():
-            label = ssidref2label(ssidref)
-        else:
-            label = None
-        return (label, 'NULL')
-
-    (label, policy) = default_res_label()
-
-    # load the resource label file
-    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]
-
-    return (label, policy)
-
-
-def get_res_security_details(resource):
-    """Returns the (label, ssidref, policy) associated with a given
-       resource from the global resource label file.
-    """
-    def default_security_details():
-        ssidref = NULL_SSIDREF
-        if on():
-            label = ssidref2label(ssidref)
-        else:
-            label = None
-        policy = active_policy
-        return (label, ssidref, policy)
-
-    (label, ssidref, policy) = default_security_details()
-
-    # find the entry associated with this resource
-    (label, policy) = get_res_label(resource)
-    if policy == 'NULL':
-        log.info("Resource label for "+resource+" not in file, using DEFAULT.")
-        return default_security_details()
-
-    # is this resource label for the running policy?
-    if policy == active_policy:
-        ssidref = label2ssidref(label, policy, 'res')
-    else:
-        log.info("Resource label not for active policy, using DEFAULT.")
-        return default_security_details()
-
-    return (label, ssidref, policy)
-
-
-def res_security_check(resource, domain_label):
-    """Checks if the given resource can be used by the given domain
-       label.  Returns 1 if the resource can be used, otherwise 0.
-    """
-    rtnval = 1
-
-    # if security is on, ask the hypervisor for a decision
-    if on():
-        (label, ssidref, policy) = get_res_security_details(resource)
-        domac = ['access_control']
-        domac.append(['policy', active_policy])
-        domac.append(['label', domain_label])
-        domac.append(['type', 'dom'])
-        decision = get_decision(domac, ['ssidref', str(ssidref)])
-
-        # provide descriptive error messages
-        if decision == 'DENIED':
-            if label == ssidref2label(NULL_SSIDREF):
-                raise ACMError("Resource '"+resource+"' is not labeled")
-                rtnval = 0
-            else:
-                raise ACMError("Permission denied for resource '"+resource+"' 
because label '"+label+"' is not allowed")
-                rtnval = 0
-
-    # security is off, make sure resource isn't labeled
-    else:
-        (label, policy) = get_res_label(resource)
-        if policy != 'NULL':
-            raise ACMError("Security is off, but '"+resource+"' is labeled")
-            rtnval = 0
-
-    return rtnval
diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/xend/server/blkif.py
--- a/tools/python/xen/xend/server/blkif.py     Fri Jun 30 13:25:43 2006 +0100
+++ b/tools/python/xen/xend/server/blkif.py     Fri Jun 30 13:33:20 2006 +0100
@@ -21,7 +21,6 @@ import string
 import string
 
 from xen.util import blkif
-from xen.util import security
 from xen.xend import sxp
 from xen.xend.XendError import VmError
 
@@ -41,22 +40,15 @@ class BlkifController(DevController):
 
     def getDeviceDetails(self, config):
         """@see DevController.getDeviceDetails"""
-        uname = sxp.child_value(config, 'uname')
 
         dev = sxp.child_value(config, 'dev')
 
-        (typ, params) = string.split(uname, ':', 1)
+        (typ, params) = string.split(sxp.child_value(config, 'uname'), ':', 1)
         back = { 'dev'    : dev,
                  'type'   : typ,
                  'params' : params,
                  'mode'   : sxp.child_value(config, 'mode', 'r')
-               }
-
-        if security.on():
-            (label, ssidref, policy) = security.get_res_security_details(uname)
-            back.update({'acm_label'  : label,
-                         'acm_ssidref': str(ssidref),
-                         'acm_policy' : policy})
+                 }
 
         if 'ioemu:' in dev:
             (dummy, dev1) = string.split(dev, ':', 1)
diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/xm/addlabel.py
--- a/tools/python/xen/xm/addlabel.py   Fri Jun 30 13:25:43 2006 +0100
+++ b/tools/python/xen/xm/addlabel.py   Fri Jun 30 13:33:20 2006 +0100
@@ -14,156 +14,61 @@
 #============================================================================
 # Copyright (C) 2006 International Business Machines Corp.
 # Author: Reiner Sailer <sailer@xxxxxxxxxx>
-# Author: Bryan D. Payne <bdpayne@xxxxxxxxxx>
 #============================================================================
 
-"""Labeling a domain configuration file or a resoruce.
+"""Labeling a domain configuration file.
 """
 import sys, os
-import string
 import traceback
-#from xml.marshal import generic
-from xen.util import security
+
+
+from xen.util.security import ACMError, err, active_policy, label2ssidref, on, 
access_control_re
+
 
 def usage():
-    print "\nUsage: xm addlabel <label> dom <configfile> [<policy>]"
-    print "       xm addlabel <label> res <resource> [<policy>]\n"
-    print "  This program adds an acm_label entry into the 'configfile'"
-    print "  for a domain or to the global resource label file for a"
-    print "  resource. It derives the policy from the running hypervisor"
-    print "  if it is not given (optional parameter). If a label already"
-    print "  exists for the given domain or resource, then addlabel fails.\n"
-    security.err("Usage")
+    print "\nUsage: xm addlabel <configfile> <label> [<policy>]\n"
+    print "  This program adds an acm_label entry into the 'configfile'."
+    print "  It derives the policy from the running hypervisor if it"
+    print "  is not given (optional parameter). If the configfile is"
+    print "  already labeled, then addlabel fails.\n"
+    err("Usage")
 
-def validate_config_file(configfile):
-    """Performs a simple sanity check on the configuration file passed on
-       the command line.  We basically just want to make sure that it's
-       not a domain image file so we check for a few configuration values
-       and then we are satisfied.  Returned 1 on success, otherwise 0.
-    """
-    # read in the config file
-    globs = {}
-    locs = {}
+
+def main(argv):
     try:
-        execfile(configfile, globs, locs)
-    except:
-        print "Invalid configuration file."
-        return 0
+        policyref = None
+        if len(argv) not in [3,4]:
+            usage()
+        configfile = argv[1]
+        label = argv[2]
 
-    # sanity check on the data from the file
-    count = 0
-    required = ['kernel', 'memory', 'name']
-    for (k, v) in locs.items():
-        if k in required:
-            count += 1
-    if count != 3:
-        print "Invalid configuration file."
-        return 0
-    else:
-        return 1
+        if len(argv) == 4:
+            policyref = argv[3]
+        elif on():
+            policyref = active_policy
+        else:
+            err("No active policy. Policy must be specified in command line.")
 
+        #sanity checks: make sure this label can be instantiated later on
+        ssidref = label2ssidref(label, policyref, 'dom')
 
-def add_resource_label(label, resource, policyref):
-    """Adds a resource label to the global resource label file.
-    """
-    try:
-        # sanity check: make sure this label can be instantiated later on
-        ssidref = security.label2ssidref(label, policyref, 'res')
+        new_label = "access_control = ['policy=%s,label=%s']\n" % (policyref, 
label)
+        if not os.path.isfile(configfile):
+            err("Configuration file \'" + configfile + "\' not found.")
+        config_fd = open(configfile, "ra+")
+        for line in config_fd:
+            if not access_control_re.match(line):
+                continue
+            config_fd.close()
+            err("Config file \'" + configfile + "\' is already labeled.")
+        config_fd.write(new_label)
+        config_fd.close()
 
-        # sanity check on resource name
-        (type, file) = resource.split(":")
-        if type == "phy":
-            file = "/dev/" + file
-        if not os.path.exists(file):
-            print "Invalid resource '"+resource+"'"
-            return
-
-        # see if this resource is already in the file
-        file = security.res_label_filename
-        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)
-        fd = open(file, "wb")
-#        generic.dump(access_control, fd)
-        fd.close()
-
-    except security.ACMError:
+    except ACMError:
         pass
     except:
         traceback.print_exc(limit=1)
 
-def add_domain_label(label, configfile, policyref):
-    try:
-        # sanity checks: make sure this label can be instantiated later on
-        ssidref = security.label2ssidref(label, policyref, 'dom')
-
-        new_label = "access_control = ['policy=%s,label=%s']\n" % (policyref, 
label)
-        if not os.path.isfile(configfile):
-            security.err("Configuration file \'" + configfile + "\' not 
found.")
-        config_fd = open(configfile, "ra+")
-        for line in config_fd:
-            if not security.access_control_re.match(line):
-                continue
-            config_fd.close()
-            security.err("Config file \'" + configfile + "\' is already 
labeled.")
-        config_fd.write(new_label)
-        config_fd.close()
-
-    except security.ACMError:
-        pass
-    except:
-        traceback.print_exc(limit=1)
-
-def main (argv):
-    try:
-        policyref = None
-        if len(argv) not in [4,5]:
-            usage()
-        label = argv[1]
-
-        if len(argv) == 5:
-            policyref = argv[4]
-        elif security.on():
-            policyref = security.active_policy
-        else:
-            security.err("No active policy. Policy must be specified in 
command line.")
-
-        if argv[2].lower() == "dom":
-            configfile = argv[3]
-            if configfile[0] != '/':
-                for prefix in [".", "/etc/xen"]:
-                    configfile = prefix + "/" + configfile
-                    if os.path.isfile(configfile):
-                        fd = open(configfile, "rb")
-                        break
-            if not validate_config_file(configfile):
-                usage()
-            else:
-                add_domain_label(label, configfile, policyref)
-        elif argv[2].lower() == "res":
-            resource = argv[3]
-            add_resource_label(label, resource, policyref)
-        else:
-            usage()
-
-    except security.ACMError:
-        pass
-    except:
-        traceback.print_exc(limit=1)
 
 if __name__ == '__main__':
     main(sys.argv)
diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/xm/create.py
--- a/tools/python/xen/xm/create.py     Fri Jun 30 13:25:43 2006 +0100
+++ b/tools/python/xen/xm/create.py     Fri Jun 30 13:33:20 2006 +0100
@@ -985,56 +985,6 @@ def parseCommandLine(argv):
     return (gopts, config)
 
 
-def config_security_check(config, verbose):
-    """Checks each resource listed in the config to see if the active
-       policy will permit creation of a new domain using the config.
-       Returns 1 if the config passes all tests, otherwise 0.
-    """
-    answer = 1
-
-    # get the domain acm_label
-    domain_label = None
-    domain_policy = None
-    for x in sxp.children(config):
-        if sxp.name(x) == 'security':
-            domain_label = sxp.child_value(sxp.name(sxp.child0(x)), 'label')
-            domain_policy = sxp.child_value(sxp.name(sxp.child0(x)), 'policy')
-
-    # if no domain label, use default
-    if not domain_label and security.on():
-        domain_label = security.ssidref2label(security.NULL_SSIDREF)
-        domain_policy = 'NULL'
-    elif not domain_label:
-        domain_label = ""
-        domain_policy = 'NULL'
-
-    if verbose:
-        print "Checking resources:"
-
-    # build a list of all resources in the config file
-    resources = []
-    for x in sxp.children(config):
-        if sxp.name(x) == 'device':
-            if sxp.name(sxp.child0(x)) == 'vbd':
-                resources.append(sxp.child_value(sxp.child0(x), 'uname'))
-
-    # perform a security check on each resource
-    for resource in resources:
-        try:
-            security.res_security_check(resource, domain_label)
-            if verbose:
-                print "   %s: PERMITTED" % (resource)
-
-        except security.ACMError:
-            print "   %s: DENIED" % (resource)
-            (res_label, res_policy) = security.get_res_label(resource)
-            print "   --> res:"+res_label+" ("+res_policy+")"
-            print "   --> dom:"+domain_label+" ("+domain_policy+")"
-            answer = 0
-
-    return answer
-
-
 def main(argv):
     try:
         (opts, config) = parseCommandLine(argv)
@@ -1047,12 +997,9 @@ def main(argv):
     if opts.vals.dryrun:
         PrettyPrint.prettyprint(config)
     else:
-        if not config_security_check(config, verbose=0):
-            err("Resource access violation")
-        else:
-            dom = make_domain(opts, config)
-            if opts.vals.console_autoconnect:
-                console.execConsole(dom)
+        dom = make_domain(opts, config)
+        if opts.vals.console_autoconnect:
+            console.execConsole(dom)
         
 if __name__ == '__main__':
     main(sys.argv)
diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Fri Jun 30 13:25:43 2006 +0100
+++ b/tools/python/xen/xm/main.py       Fri Jun 30 13:33:20 2006 +0100
@@ -30,7 +30,6 @@ import warnings
 import warnings
 warnings.filterwarnings('ignore', category=FutureWarning)
 import xmlrpclib
-import traceback
 
 import xen.xend.XendProtocol
 
@@ -120,11 +119,7 @@ vnet_create_help = "vnet-create <config>
 vnet_create_help = "vnet-create <config>             create a vnet from a 
config file"
 vnet_delete_help = "vnet-delete <vnetid>             delete a vnet"
 vtpm_list_help = "vtpm-list <DomId> [--long]       list virtual TPM devices"
-addlabel_help =  "addlabel <label> dom <configfile> Add security label to 
domain\n            <label> res <resource>   or resource"
-rmlabel_help =  "rmlabel dom <configfile>         Remove security label from 
domain\n           res <resource>           or resource"
-getlabel_help =  "getlabel dom <configfile>        Show security label for 
domain\n            res <resource>          or resource"
-dry_run_help =  "dry-run <configfile>             Tests if domain can access 
its resources"
-resources_help =  "resources                        Show info for each labeled 
resource"
+addlabel_help =  "addlabel <ConfigFile> <label>    Add security label to 
ConfigFile"
 cfgbootpolicy_help = "cfgbootpolicy <policy>           Add policy to boot 
configuration "
 dumppolicy_help = "dumppolicy                       Print hypervisor ACM state 
information"
 loadpolicy_help = "loadpolicy <policy>              Load binary policy into 
hypervisor"
@@ -208,10 +203,6 @@ acm_commands = [
 acm_commands = [
     "labels",
     "addlabel",
-    "rmlabel",
-    "getlabel",
-    "dry-run",
-    "resources",
     "makepolicy",
     "loadpolicy",
     "cfgbootpolicy",
@@ -1000,19 +991,6 @@ def xm_block_attach(args):
            ['mode',  args[3]]]
     if len(args) == 5:
         vbd.append(['backend', args[4]])
-
-    # verify that policy permits attaching this resource
-    try:
-        dominfo = server.xend.domain(dom)
-        domid = sxp.child_value(dominfo, 'domid')
-        (tmp1, label, tmp2, tmp3) = security.get_ssid(domid)
-        security.res_security_check(args[1], label)
-    except security.ACMError, e:
-        print e.value
-        sys.exit(1)
-    except:
-        traceback.print_exc(limit=1)
-        sys.exit(1)
 
     server.xend.domain.device_create(dom, vbd)
 
@@ -1146,10 +1124,6 @@ subcommands = [
     'shutdown',
     'labels',
     'addlabel',
-    'rmlabel',
-    'getlabel',
-    'dry-run',
-    'resources',
     'cfgbootpolicy',
     'makepolicy',
     'loadpolicy',
diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/xm/dry-run.py
--- a/tools/python/xen/xm/dry-run.py    Fri Jun 30 13:25:43 2006 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-#============================================================================
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of version 2.1 of the GNU Lesser General Public
-# License as published by the Free Software Foundation.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-#============================================================================
-# Copyright (C) 2006 International Business Machines Corp.
-# Author: Bryan D. Payne <bdpayne@xxxxxxxxxx>
-#============================================================================
-
-"""Tests the security settings for a domain and its resources.
-"""
-from xen.util import security
-from xen.xm import create
-from xen.xend import sxp
-
-def usage():
-    print "\nUsage: xm dry-run <configfile>\n"
-    print "This program checks each resource listed in the configfile"
-    print "to see if the domain created by the configfile can access"
-    print "the resources.  The status of each resource is listed"
-    print "individually along with the final security decision.\n"
-
-
-def check_domain_label(config):
-    """All that we need to check here is that the domain label exists and
-       is not null when security is on.  Other error conditions are
-       handled when the config file is parsed.
-    """
-    answer = 0
-    secon = 0
-    default_label = security.ssidref2label(security.NULL_SSIDREF)
-    if security.on():
-        secon = 1
-
-    # get the domain acm_label
-    dom_label = None
-    dom_name = None
-    for x in sxp.children(config):
-        if sxp.name(x) == 'security':
-            dom_label = sxp.child_value(sxp.name(sxp.child0(x)), 'label')
-        if sxp.name(x) == 'name':
-            dom_name = sxp.child0(x)
-
-    # sanity check on domain label
-    print "Checking domain:"
-    if (not secon) and (not dom_label):
-        print "   %s: PERMITTED" % (dom_name)
-        answer = 1
-    elif (secon) and (dom_label) and (dom_label != default_label):
-        print "   %s: PERMITTED" % (dom_name)
-        answer = 1
-    else:
-        print "   %s: DENIED" % (dom_name)
-        if not secon:
-            print "   --> Security off, but domain labeled"
-        else:
-            print "   --> Domain not labeled"
-        answer = 0
-
-    return answer
-
-
-def main (argv):
-    if len(argv) != 2:
-        usage()
-        return
-
-    try:
-        passed = 0
-        (opts, config) = create.parseCommandLine(argv)
-        if check_domain_label(config):
-            if create.config_security_check(config, verbose=1):
-                passed = 1
-        else:
-            print "Checking resources: (skipped)"
-
-        if passed:
-            print "Dry Run: PASSED"
-        else:
-            print "Dry Run: FAILED"
-    except security.ACMError:
-        pass
-
-
-if __name__ == '__main__':
-    main(sys.argv)
diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/xm/getlabel.py
--- a/tools/python/xen/xm/getlabel.py   Fri Jun 30 13:25:43 2006 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-#============================================================================
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of version 2.1 of the GNU Lesser General Public
-# License as published by the Free Software Foundation.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-#============================================================================
-# Copyright (C) 2006 International Business Machines Corp.
-# Author: Bryan D. Payne <bdpayne@xxxxxxxxxx>
-#============================================================================
-
-"""Show the label for a domain or resoruce.
-"""
-import sys, os, re
-import string
-import traceback
-#from xml.marshal import generic
-from xen.util import security
-
-def usage():
-    print "\nUsage: xm getlabel dom <configfile>"
-    print "       xm getlabel res <resource>\n"
-    print "  This program shows the label for a domain or resource.\n"
-
-
-def get_resource_label(resource):
-    """Gets the resource label
-    """
-    try:
-        # 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
-
-        # get the entry and print label
-        if access_control.has_key(resource):
-            policy = access_control[resource][0]
-            label = access_control[resource][1]
-            print "policy="+policy+",label="+label
-        else:
-            print "Resource not labeled"
-            return
-
-    except security.ACMError:
-        pass
-    except:
-        traceback.print_exc(limit=1)
-
-
-def get_domain_label(configfile):
-    try:
-        # open the domain config file
-        fd = None
-        file = None
-        if configfile[0] == '/':
-            fd = open(configfile, "rb")
-        else:
-            for prefix in [".", "/etc/xen"]:
-                file = prefix + "/" + configfile
-                if os.path.isfile(file):
-                    fd = open(file, "rb")
-                    break
-        if not fd:
-            print "Configuration file '"+configfile+"' not found."
-            return
-
-        # read in the domain config file, finding the label line
-        ac_entry_re = re.compile("^access_control\s*=.*", re.IGNORECASE)
-        ac_exit_re = re.compile(".*'\].*")
-        acline = ""
-        record = 0
-        for line in fd.readlines():
-            if ac_entry_re.match(line):
-                record = 1
-            if record:
-                acline = acline + line
-            if record and ac_exit_re.match(line):
-                record = 0
-        fd.close()
-
-        # send error message if we didn't find anything
-        if acline == "":
-            print "Label does not exist in domain configuration file."
-            return
-
-        # print out the label
-        (title, data) = acline.split("=", 1)
-        data = data.strip()
-        data = data.lstrip("[\'")
-        data = data.rstrip("\']")
-        (p, l) = data.split(",")
-        print data
-
-    except security.ACMError:
-        pass
-    except:
-        traceback.print_exc(limit=1)
-
-
-def main (argv):
-    try:
-        if len(argv) != 3:
-            usage()
-            return
-
-        if argv[1].lower() == "dom":
-            configfile = argv[2]
-            get_domain_label(configfile)
-        elif argv[1].lower() == "res":
-            resource = argv[2]
-            get_resource_label(resource)
-        else:
-            usage()
-
-    except security.ACMError:
-        traceback.print_exc(limit=1)
-
-
-if __name__ == '__main__':
-    main(sys.argv)
-
-
diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/xm/resources.py
--- a/tools/python/xen/xm/resources.py  Fri Jun 30 13:25:43 2006 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#============================================================================
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of version 2.1 of the GNU Lesser General Public
-# License as published by the Free Software Foundation.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-#============================================================================
-# Copyright (C) 2006 International Business Machines Corp.
-# Author: Bryan D. Payne <bdpayne@xxxxxxxxxx>
-#============================================================================
-
-"""List the resource label information from the global resource label file
-"""
-import sys, os
-import string
-import traceback
-#from xml.marshal import generic
-from xen.util import security
-
-def usage():
-    print "\nUsage: xm resource\n"
-    print "  This program lists information for each resource in the"
-    print "  global resource label file\n"
-
-
-def print_resource_data(access_control):
-    """Prints out a resource dictionary to stdout
-    """
-    for resource in access_control:
-        (policy, label) = access_control[resource]
-        print resource
-        print "    policy: "+policy
-        print "    label:  "+label
-
-
-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:
-        traceback.print_exc(limit=1)
-
-
-if __name__ == '__main__':
-    main(sys.argv)
-
-
diff -r 53f552ad4042 -r 9dbcf482f600 tools/python/xen/xm/rmlabel.py
--- a/tools/python/xen/xm/rmlabel.py    Fri Jun 30 13:25:43 2006 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-#============================================================================
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of version 2.1 of the GNU Lesser General Public
-# License as published by the Free Software Foundation.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-#============================================================================
-# Copyright (C) 2006 International Business Machines Corp.
-# Author: Bryan D. Payne <bdpayne@xxxxxxxxxx>
-#============================================================================
-
-"""Remove a label from a domain configuration file or a resoruce.
-"""
-import sys, os, re
-import string
-import traceback
-#from xml.marshal import generic
-from xen.util import security
-
-def usage():
-    print "\nUsage: xm rmlabel dom <configfile>"
-    print "       xm rmlabel res <resource>\n"
-    print "  This program removes an acm_label entry from the 'configfile'"
-    print "  for a domain or from the global resource label file for a"
-    print "  resource. If the label does not exist for the given domain or"
-    print "  resource, then rmlabel fails.\n"
-
-
-def rm_resource_label(resource):
-    """Removes a resource label from the global resource label file.
-    """
-    try:
-        # 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!")
-
-        # remove the entry and update file
-        if access_control.has_key(resource):
-            del access_control[resource]
-            fd = open(file, "wb")
-#            generic.dump(access_control, fd)
-            fd.close()
-        else:
-            security.err("Label does not exist in resource label file.")
-
-    except security.ACMError:
-        pass
-    except:
-        traceback.print_exc(limit=1)
-
-
-def rm_domain_label(configfile):
-    try:
-        # open the domain config file
-        fd = None
-        file = None
-        if configfile[0] == '/':
-            fd = open(configfile, "rb")
-        else:
-            for prefix in [".", "/etc/xen"]:
-                file = prefix + "/" + configfile
-                if os.path.isfile(file):
-                    fd = open(file, "rb")
-                    break
-        if not fd:
-            security.err("Configuration file '"+configfile+"' not found.")
-
-        # read in the domain config file, removing label
-        ac_entry_re = re.compile("^access_control\s*=.*", re.IGNORECASE)
-        ac_exit_re = re.compile(".*'\].*")
-        file_contents = ""
-        comment = 0
-        removed = 0
-        for line in fd.readlines():
-            if ac_entry_re.match(line):
-                comment = 1
-            if comment:
-                removed = 1
-                line = "#"+line
-            if comment and ac_exit_re.match(line):
-                comment = 0
-            file_contents = file_contents + line
-        fd.close()
-
-        # send error message if we didn't find anything to remove
-        if not removed:
-            security.err("Label does not exist in domain configuration file.")
-
-        # write the data back out to the file
-        fd = open(file, "wb")
-        fd.writelines(file_contents)
-        fd.close()
-
-    except security.ACMError:
-        pass
-    except:
-        traceback.print_exc(limit=1)
-
-
-def main (argv):
-    try:
-        if len(argv) != 3:
-            usage()
-            return
-
-        if argv[1].lower() == "dom":
-            configfile = argv[2]
-            rm_domain_label(configfile)
-        elif argv[1].lower() == "res":
-            resource = argv[2]
-            rm_resource_label(resource)
-        else:
-            usage()
-
-    except security.ACMError:
-        traceback.print_exc(limit=1)
-
-
-if __name__ == '__main__':
-    main(sys.argv)
-
-

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.