Example #1
0
 def as_secured_node(self, node_url, user=None, as_node_func=None, **kw):
     dereference = kw.get("dereference_aliases", False)
     if user is None:
         user = self.user_manager.user_from_current_thread()
     elif isinstance(user, str):
         user = self.user_manager.get_user(user)
     if as_node_func:
         node = as_node_func(node_url)
     elif (not dereference and 
           isinstance(node_url, str) and 
           node_url.startswith("/aliases")):
         try:
             node = as_internal_node(node_url)
         except ENoSuchName:
             node = self.nodespace.as_node(node_url)
     else:
         node = self.nodespace.as_node(node_url)
     configurable = IConfigurableNode(node)
     return query_multi_adapter((configurable, user), ISecure)
Example #2
0
from mpx.lib.node import as_node
try:
    test = as_node('/services/Security Test')
except KeyError:
    test = CompositeNode()
    test.configure({'name': 'Security Test', 'parent': '/services'})

try:
    node = as_node('/services/Security Test/Node')
except KeyError:
    node = Node()
    node.configure({'name': 'Node', 'parent': test})

sm = as_node('/services/Security Manager')
securednodes = []
assecurednodes = []
users = sm.user_manager.get_users()
for user in users:
    securednodes.append(query_multi_adapter((node, user), ISecure))
    assecurednodes.append(
        sm.as_secured_node('/services/Security Test/Node', user))

node1a = securednodes[5]
node1b = assecurednodes[5]
node1a.show_name()
node1b.show_name()
node1a.get_name()
node1b.get_name()
node1a.set_name('Node Renamed 2')
node1b.set_name('Node Renamed 2')
Example #3
0
 def handle_request(self, request):
     exceptions = []
     userobject = request.user_object()
     if not userobject:
         username = request.get_cookie("NBMUSER", None)
         if not username:
             raise Unauthorized("User unknown")
         address = request.get_address()
         if not self._cloud_manager.is_host_in_formation(address):
             raise Unauthorized("Address unrecognized: " + address)
         message = "Getting user because address/usrename: %r, %r"
         msglog.debug(message % (address, username))
         userobject = self.user_manager.get_user(username)
     request_data = request.get_post_data_as_dictionary()
     request_data.update(request.get_query_string_as_dictionary())
     if request_data.has_key('command') and request_data.has_key('guid'):
         exceptions = []
         path = request.get_path()
         username = userobject.name()
         method = request.get_command()
         protocol = request.get_protocol()
         command = request_data['command'][0]
         user = self.user_service.user_from_object(userobject)
         origins = {}
         for guid in request_data['guid']:
             try:
                 event = AlarmEvent.get_event(guid)
             except KeyError:
                 msglog.warn("Attempt to get event %r failed." % guid)
             else:
                 origins.setdefault(event.origin, []).append(event)
         for origin, events in origins.items():
             if origin == AlarmEvent.LOCALORIGIN:
                 for event in events:
                     message = "User '%s'" % username
                     if self.secured:
                         event = query_multi_adapter((event, user), ISecure)
                     try:
                         event.notify(command, self, time.time(), message)
                     except Exception, error:
                         msg = "Notify %r of %r failed." % (event, command)
                         msglog.log("broadway", msglog.types.WARN, msg)
                         msglog.exception(prefix="handled")
                         # CSCte94039 - form the proper error msg
                         exceptions.append((command, str(error)))
             else:
                 headers = {"Cookie": "NBMUSER=%s" % userobject.name()}
                 guids = [event.GUID for event in events]
                 parameters = [("command", command)]
                 parameters.extend([("guid", guid) for guid in guids])
                 data = urllib.urlencode(parameters)
                 url = '%s://%s%s' % (protocol, origin, path)
                 if method == "GET":
                     url = "?".join([url, data])
                     data = None
                 redirect = urllib2.Request(url, data, headers)
                 try:
                     urllib2.urlopen(redirect).read()
                 except Exception, error:
                     message = "'%s' remote events on '%s' failed."
                     msglog.warn(message % (command, origin))
                     msglog.exception(prefix="handled")
                     exceptions.append((origin, command, error))
Example #4
0
from mpx.lib.node import as_node
try:
    test = as_node('/services/Security Test')
except KeyError:
    test = CompositeNode()
    test.configure({'name': 'Security Test', 'parent': '/services'})

try:
    node = as_node('/services/Security Test/Node')
except KeyError:
    node = Node()
    node.configure({'name': 'Node', 'parent': test})

sm = as_node('/services/Security Manager')
securednodes = []
assecurednodes = []
users = sm.user_manager.get_users()
for user in users:
    securednodes.append(query_multi_adapter((node, user), ISecure))
    assecurednodes.append(sm.as_secured_node('/services/Security Test/Node', user))

node1a = securednodes[5]
node1b = assecurednodes[5]
node1a.show_name()
node1b.show_name()
node1a.get_name()
node1b.get_name()
node1a.set_name('Node Renamed 2')
node1b.set_name('Node Renamed 2')

Example #5
0
 def handle_request(self, request):
     exceptions = []
     userobject = request.user_object()
     if not userobject:
         username = request.get_cookie("NBMUSER", None)
         if not username:
             raise Unauthorized("User unknown")
         address = request.get_address()
         if not self._cloud_manager.is_host_in_formation(address):
             raise Unauthorized("Address unrecognized: " + address)
         message = "Getting user because address/usrename: %r, %r"
         msglog.debug(message % (address, username))
         userobject = self.user_manager.get_user(username)
     request_data = request.get_post_data_as_dictionary()
     request_data.update(request.get_query_string_as_dictionary())
     if request_data.has_key("command") and request_data.has_key("guid"):
         exceptions = []
         path = request.get_path()
         username = userobject.name()
         method = request.get_command()
         protocol = request.get_protocol()
         command = request_data["command"][0]
         user = self.user_service.user_from_object(userobject)
         origins = {}
         for guid in request_data["guid"]:
             try:
                 event = AlarmEvent.get_event(guid)
             except KeyError:
                 msglog.warn("Attempt to get event %r failed." % guid)
             else:
                 origins.setdefault(event.origin, []).append(event)
         for origin, events in origins.items():
             if origin == AlarmEvent.LOCALORIGIN:
                 for event in events:
                     message = "User '%s'" % username
                     if self.secured:
                         event = query_multi_adapter((event, user), ISecure)
                     try:
                         event.notify(command, self, time.time(), message)
                     except Exception, error:
                         msg = "Notify %r of %r failed." % (event, command)
                         msglog.log("broadway", msglog.types.WARN, msg)
                         msglog.exception(prefix="handled")
                         # CSCte94039 - form the proper error msg
                         exceptions.append((command, str(error)))
             else:
                 headers = {"Cookie": "NBMUSER=%s" % userobject.name()}
                 guids = [event.GUID for event in events]
                 parameters = [("command", command)]
                 parameters.extend([("guid", guid) for guid in guids])
                 data = urllib.urlencode(parameters)
                 url = "%s://%s%s" % (protocol, origin, path)
                 if method == "GET":
                     url = "?".join([url, data])
                     data = None
                 redirect = urllib2.Request(url, data, headers)
                 try:
                     urllib2.urlopen(redirect).read()
                 except Exception, error:
                     message = "'%s' remote events on '%s' failed."
                     msglog.warn(message % (command, origin))
                     msglog.exception(prefix="handled")
                     exceptions.append((origin, command, error))
Example #6
0

class MultiAdapts(object):
    implements(IB)
    adapts(INoA, INoB)
    def __init__(self, a, b):
        self.contexts = [a, b]
    def show(self, name = 'shane'):
        for context in self.contexts:
            context.say(name)


register_adapter(MultiAdapts)
noia = NoIA()
noib = NoIB()
adapted = query_multi_adapter((noia, noib), IB)



class AnyAdapts(object):
    implements(IB)
    adapts(None, INoB)
    def __init__(self, a, b):
        self.contexts = [a, b]
    def show(self, name = 'shane'):
        for context in self.contexts:
            try: context.say(name)
            except AttributeError:
                print 'Context %s has no say!' % context