§
{<ˆj¥‘ ã óæ — d Z ddlmZmZmZmZ ddlmZmZ ddl m
Z
mZmZm
Z
mZ ddlmZ ddlmc mc mZ ddlmZ ddlZddlZddlZddlZddlZddlZ ddlZn
# e$ r dZY nw xY wd)d „Zd
„ Z G d„ de!¦ « Z" G d
„ de¦ « Z# G d„ dej$ e"¦ « Z% G d„ de%¦ « Z& G d„ de"¦ « Z' G d„ dej( ¦ « Z) G d„ de!¦ « Z* G d„ de#¦ « Z+ G d„ de%e*¦ « Z, G d„ de'e*¦ « Z-e.dk rãddl/Z/ G d „ d!¦ « Z0 e%d"¦ « Ze 1 e2¦ « e 1 d#„ d$¦ « e 3 e0¦ « d¬%¦ « e 4 ¦ « e5d&¦ « e5d'¦ « e 6 ¦ « dS # e7$ r3 e5d(¦ « e 8 ¦ « ej9 d¦ « Y dS w xY wdS )*aK
Ported using Python-Future from the Python 3.3 standard library.
XML-RPC Servers.
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.
The Doc* classes can be used to create XML-RPC servers that
serve pydoc-style documentation in response to HTTP
GET requests. This documentation is dynamically generated
based on the functions and methods registered with the
server.
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 sys functions available through sys.func_name
import sys
self.sys = sys
def _listMethods(self):
# implement this method so that system.listMethods
# knows to advertise the sys methods
return list_public_methods(self) + \
['sys.' + method for method in list_public_methods(self.sys)]
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 ValueError('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()
é )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)ÚintÚstr)ÚFaultÚdumpsÚloadsÚgzip_encodeÚgzip_decode)ÚBaseHTTPRequestHandlerN)ÚsocketserverTc ó´ — |r| d¦ « }n|g}|D ]9}| d¦ « rt d|z ¦ « ‚t | |¦ « } Œ:| S )aG 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).
ú.Ú_z(attempt to access private attribute "%s")ÚsplitÚ
startswithÚAttributeErrorÚgetattr)ÚobjÚattrÚallow_dotted_namesÚattrsÚis úp/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/future/backports/xmlrpc/server.pyÚresolve_dotted_attributer € sw € ð ð Ø—
’
˜3‘”ˆˆà�ˆà
ð !ð !ˆØ�<Š<˜ÑÔð !Ý Ø:¸QÑ>ñô ð
õ ˜#˜a‘.”.ˆCˆCØ€Jó c ó: ‡ — ˆ fd„t ‰ ¦ « D ¦ « S )zkReturns a list of attribute strings, found in the specified
object, which represent callable attributesc óx •— g | ]6}| d ¦ « °t t ‰|¦ « ¦ « ¯4|‘Œ7S )r )r Úcallabler )Ú.0Úmemberr s €r ú