Current Path : /compat/linux/proc/self/root/usr/local/lib/python2.5/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //compat/linux/proc/self/root/usr/local/lib/python2.5/SimpleXMLRPCServer.pyc |
hRc @ sP d Z d d k Z d d k l Z d d k Z d d k Z d d k Z d d k Z y d d k Z Wn e j o e Z n Xe d Z d Z d Z d f d YZ d e i f d YZ d e i e f d YZ d e f d YZ e d j oE d GHe d d f Z e i e e i d d e i n d S( s9 Simple XML-RPC Server. This module can be used to create simple XML-RPC servers by creating a server and either installing functions, a class instance, or by extending the SimpleXMLRPCServer class. It can also be used to handle XML-RPC requests in a CGI environment using CGIXMLRPCRequestHandler. A list of possible usage patterns follows: 1. Install functions: server = SimpleXMLRPCServer(("localhost", 8000)) server.register_function(pow) server.register_function(lambda x,y: x+y, 'add') server.serve_forever() 2. Install an instance: class MyFuncs: def __init__(self): # make all of the string functions available through # string.func_name import string self.string = string def _listMethods(self): # implement this method so that system.listMethods # knows to advertise the strings methods return list_public_methods(self) + ['string.' + method for method in list_public_methods(self.string)] def pow(self, x, y): return pow(x, y) def add(self, x, y) : return x + y server = SimpleXMLRPCServer(("localhost", 8000)) server.register_introspection_functions() server.register_instance(MyFuncs()) server.serve_forever() 3. Install an instance with custom dispatch method: class Math: def _listMethods(self): # this method must be present for system.listMethods # to work return ['add', 'pow'] def _methodHelp(self, method): # this method must be present for system.methodHelp # to work if method == 'add': return "add(2,3) => 5" elif method == 'pow': return "pow(x, y[, z]) => number" else: # By convention, return empty # string if no help is available return "" def _dispatch(self, method, params): if method == 'pow': return pow(*params) elif method == 'add': return params[0] + params[1] else: raise 'bad method' server = SimpleXMLRPCServer(("localhost", 8000)) server.register_introspection_functions() server.register_instance(Math()) server.serve_forever() 4. Subclass SimpleXMLRPCServer: class MathServer(SimpleXMLRPCServer): def _dispatch(self, method, params): try: # We are forcing the 'export_' prefix on methods that are # callable through XML-RPC to prevent potential security # problems func = getattr(self, 'export_' + method) except AttributeError: raise Exception('method "%s" is not supported' % method) else: return func(*params) def export_add(self, x, y): return x + y server = MathServer(("localhost", 8000)) server.serve_forever() 5. CGI script: server = CGIXMLRPCRequestHandler() server.register_function(pow) server.handle_request() iN( t Faultc C sk | o | i d } n | g } xA | D]9 } | i d o t d | q* t | | } q* W| S( sG resolve_dotted_attribute(a, 'b.c.d') => a.b.c.d Resolves a dotted attribute name to an object. Raises an AttributeError if any attribute in the chain starts with a '_'. If the optional allow_dotted_names argument is false, dots are not supported and this function operates similar to getattr(obj, attr). t .t _s( attempt to access private attribute "%s"( t splitt startswitht AttributeErrort getattr( t objt attrt allow_dotted_namest attrst i( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt resolve_dotted_attributeq s c C sP g } t | D]8 } | i d o! t t | | o | | q q ~ S( sk Returns a list of attribute strings, found in the specified object, which represent callable attributesR ( t dirR t callableR ( R t _[1]t member( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt list_public_methods s c C s+ h } x | D] } d | | <q W| i S( s remove_duplicates([2,2,2,1,3,3]) => [3,1,2] Returns a copy of a list without duplicates. Every list item must be hashable and the order of the items in the resulting list is not defined. i ( t keys( t lstt ut x( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt remove_duplicates s t SimpleXMLRPCDispatcherc B sz e Z d Z d Z e d Z d d Z d Z d Z d d Z d Z d Z d Z d Z d Z RS( s Mix-in class that dispatches XML-RPC requests. This class is used to register XML-RPC method handlers and then to dispatch them. There should never be any reason to instantiate this class directly. c C s( h | _ d | _ | | _ | | _ d S( N( t funcst Nonet instancet allow_nonet encoding( t selfR R ( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt __init__ s c C s | | _ | | _ d S( s Registers an instance to respond to XML-RPC requests. Only one instance can be installed at a time. If the registered instance has a _dispatch method then that method will be called with the name of the XML-RPC method and its parameters as a tuple e.g. instance._dispatch('add',(2,3)) If the registered instance does not have a _dispatch method then the instance will be searched to find a matching method and, if found, will be called. Methods beginning with an '_' are considered private and will not be called by SimpleXMLRPCServer. If a registered function matches a XML-RPC request, then it will be called instead of the registered instance. If the optional allow_dotted_names argument is true and the instance does not have a _dispatch method, method names containing dots are supported and resolved, as long as none of the name segments start with an '_'. *** SECURITY WARNING: *** Enabling the allow_dotted_names options allows intruders to access your module's global variables and may allow intruders to execute arbitrary code on your machine. Only use this option on a secure, closed network. N( R R ( R R R ( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt register_instance s ! c C s+ | d j o | i } n | | i | <d S( s Registers a function to respond to XML-RPC requests. The optional name argument can be used to set a Unicode name for the function. N( R t __name__R ( R t functiont name( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt register_function s c C s8 | i i h | i d <| i d <| i d < d S( s Registers the XML-RPC introspection methods in the system namespace. see http://xmlrpc.usefulinc.com/doc/reserved.html s system.listMethodss system.methodSignatures system.methodHelpN( R t updatet system_listMethodst system_methodSignaturet system_methodHelp( R ( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt register_introspection_functions s c C s | i i h | i d < d S( s Registers the XML-RPC multicall method in the system namespace. see http://www.xmlrpc.com/discuss/msgReader$1208s system.multicallN( R R$ t system_multicall( R ( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt register_multicall_functions s c C s y{ t i | \ } } | d j o | | | } n | i | | } | f } t i | d d d | i d | i } Wny t j o* } t i | d | i d | i } nE t i t i d d t i t i f d | i d | i } n X| S( s Dispatches an XML-RPC method from marshalled (XML) data. XML-RPC methods are dispatched from the marshalled (XML) data using the _dispatch method and the result is returned as marshalled data. For backwards compatibility, a dispatch function can be provided as an argument (see comment in SimpleXMLRPCRequestHandler.do_POST) but overriding the existing method through subclassing is the prefered means of changing method dispatch behavior. t methodresponsei R R s %s:%sN( t xmlrpclibt loadsR t _dispatcht dumpsR R R t syst exc_typet exc_value( R t datat dispatch_methodt paramst methodt responset fault( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyt _marshaled_dispatch s "c C s | i i } | i d j od t | i d o t | | i i } q t | i d p t | t | i } q n | i | S( sw system.listMethods() => ['add', 'subtract', 'multiple'] Returns a list of the methods supported by the server.t _listMethodsR. N( R R R R t hasattrR R: R t sort( R t methods( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyR% s c C s d S( s# system.methodSignature('add') => [double, int, int] Returns a list describing the signature of the method. In the above example, the add method takes two integers as arguments and returns a double result. This server does NOT support system.methodSignature.s signatures not supported( ( R t method_name( ( s. /usr/local/lib/python2.5/SimpleXMLRPCServer.pyR&