b374k
m1n1 1.01
Apache/2.2.15 (CentOS)
Linux obd60-6c49958d75-2q7cw 5.4.0-174-generic #193-Ubuntu SMP Thu Mar 7 14:29:28 UTC 2024 x86_64
uid=48(apache) gid=48(apache) groups=48(apache)
server ip : 104.21.65.202 | your ip : 10.244.126.0
safemode OFF
 >  / usr / lib64 / python2.6 /
Filename/usr/lib64/python2.6/SimpleXMLRPCServer.pyo
Size19.17 kb
Permissionrw-r--r--
Ownerapache
Create time23-Dec-2025 17:41
Last modified20-Jun-2019 19:45
Last accessed22-Apr-2026 05:23
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
Ñò
§ÚêLc@s\dZddkZddklZddkZddkZddkZddkZddkZyddkZWne j
o
e
ZnXe d�Z d�Z
d�Zdfd��YZd eifd
��YZd eiefd ��YZd
efd��YZedjoEdGHeddf�Zeie�eid�d�ei�ndS(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()
iÿÿÿÿN(tFaultcCsk|o|id�}n
|g}xA|D]9}|id�otd|��q*t||�}q*W|S(sGresolve_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"(tsplitt
startswithtAttributeErrortgetattr(tobjtattrtallow_dotted_namestattrsti((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pytresolve_dotted_attributers
 cCsSg}t|�D];}|id� o$tt||�d�o ||qq~S(skReturns a list of attribute strings, found in the specified
object, which represent callable attributesRt__call__(tdirRthasattrR(Rt_[1]tmember((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pytlist_public_methods�scCs+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(tkeys(tlsttutx((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pytremove_duplicates�s
tSimpleXMLRPCDispatchercBs�eZdZed d�Zed�Zd d�Zd�Zd�Z d d�Z
d�Z d�Z d �Z
d
�Zd �ZRS(
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.
cCs(h|_d|_||_||_dS(N(tfuncstNonetinstancet
allow_nonetencoding(tselfRR((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyt__init__§s   cCs||_||_dS(sRegisters 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(RR (RRR ((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pytregister_instance­s! cCs+|djo
|i}n||i|<dS(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(Rt__name__R(Rtfunctiontname((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pytregister_functionÑs

cCs2|iih|id6|id6|id6�dS(s�Registers the XML-RPC introspection methods in the system
namespace.

see http://xmlrpc.usefulinc.com/doc/reserved.html
ssystem.listMethodsssystem.methodSignaturessystem.methodHelpN(Rtupdatetsystem_listMethodstsystem_methodSignaturetsystem_methodHelp(R((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyt register_introspection_functionsÜs
cCs|iih|id6�dS(s�Registers the XML-RPC multicall method in the system
namespace.

see http://www.xmlrpc.com/discuss/msgReader$1208ssystem.multicallN(RR%tsystem_multicall(R((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pytregister_multicall_functionsçsc
Cs
y{ti|�\}}|dj o|||�}n|i||�}|f}ti|ddd|id|i�}Wn�tj
o*}ti|d|id|i�}nTti �\}}} titidd||f�d|id|i�}nX|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.
tmethodresponseiRRs%s:%sN(
t xmlrpclibtloadsRt _dispatchtdumpsRRRtsystexc_info(
Rtdatatdispatch_methodtparamstmethodtresponsetfaulttexc_typet exc_valuetexc_tb((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyt_marshaled_dispatchïs" 
 cCs�|ii�}|idj odt|id�ot||ii��}q�t|id�pt|t|i��}q�n|i�|S(swsystem.listMethods() => ['add', 'subtract', 'multiple']

Returns a list of the methods supported by the server.t _listMethodsR/N( RRRRRRR=Rtsort(Rtmethods((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR&s
cCsdS(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.ssignatures not supported((Rt method_name((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR'+s cCs×d}||ijo|i|}n�|idj oqt|id�o|ii|�St|id�p6yt|i||i�}Wq¤tj
oq¤Xq¨n|djodSddk}|i |�SdS(s�system.methodHelp('add') => "Adds two integers together"

Returns a string containing documentation for the specified method.t _methodHelpR/tiÿÿÿÿN(
RRRRRAR R Rtpydoctgetdoc(RR@R6RC((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR(8s$

 c
CsÈg}x»|D]³}|d}|d}y |i|i||�g�Wq
tj
o*}|ih|id6|id6�q
ti�\}}} |ihdd6d||fd6�q
Xq
W|S(sísystem.multicall([{'methodName': 'add', 'params': [2, 2]}, ...]) => [[4], ...]

Allows the caller to package multiple XML-RPC calls into a single
request.

See http://www.xmlrpc.com/discuss/msgReader$1208
t
methodNameR5t faultCodet faultStringis%s:%s(tappendR/RRFRGR1R2(
Rt call_listtresultstcallR@R5R8R9R:R;((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR*Xs"


 

cCsÆd}y|i|}Wn�tj
ot|idj o]t|id�o|ii||�Syt|i||i�}Wq�tj
oq�Xq�nX|dj o ||�St d|��dS(sóDispatches the XML-RPC method.

XML-RPC calls are forwarded to a registered function that
matches the called XML-RPC method name. If no such function
exists then the call is forwarded to the registered instance,
if available.

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.
R/smethod "%s" is not supportedN(
RRtKeyErrorRRR/R R Rt Exception(RR6R5tfunc((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR/xs"
 N(R!t
__module__t__doc__tFalseRRR R$R)R+R<R&R'R(R*R/(((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR�s $  % 
tSimpleXMLRPCRequestHandlercBs>eZdZdZd�Zd�Zd�Zddd�ZRS( s�Simple XML-RPC request handler class.

Handles all HTTP POST requests and attempts to decode them as
XML-RPC requests.
t/s/RPC2cCs#|io|i|ijStSdS(N(t rpc_pathstpathtTrue(R((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pytis_rpc_path_valid±s
c Cs¿|i�p|i�dSy°d}t|id�}g}xZ|oRt||�}|ii|�}|pPn|i|�|t|d�8}qAWdi |�}|i
i |t |dd��}Wn|tj
op}|id�t|i
d �o=|i
io0|id
t|��|id ti��n|i�nrX|id �|id
d�|idtt|���|i�|ii|�|ii�|iid�dS(sºHandles the HTTP POST request.

Attempts to interpret all HTTP POST requests as XML-RPC calls,
which are forwarded to the server's _dispatch method for handling.
Ni
iscontent-lengthiÿÿÿÿRBR/iôt_send_traceback_headers X-exceptions X-tracebackiÈs Content-typestext/xmlsContent-lengthii(i (RWt
report_404tinttheaderstmintrfiletreadRHtlentjointserverR<RRRMt
send_responseRRXt send_headertstrt tracebackt
format_exct end_headerstwfiletwritetflusht
connectiontshutdown( Rtmax_chunk_sizetsize_remainingtLt
chunk_sizetchunkR3R7te((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pytdo_POST¸s@


 




cCsz|id�d}|idd�|idtt|���|i�|ii|�|ii�|ii d�dS(Ni�s No such pages Content-types
text/plainsContent-lengthi(
RbRcRdR_RgRhRiRjRkRl(RR7((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyRYôs


t-cCs+|iiotii|||�ndS(s$Selectively log an accepted request.N(Rat logRequeststBaseHTTPServertBaseHTTPRequestHandlert log_request(Rtcodetsize((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyRxs
(RSs/RPC2(R!RORPRTRWRsRYRx(((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyRR¦s   < tSimpleXMLRPCServercBs2eZdZeZeZeeeded�Z RS(sgSimple XML-RPC server.

Simple XML-RPC server that allows functions and a single instance
to be installed to handle requests. The default implementation
attempts to dispatch XML-RPC calls to the functions or instance
installed in the server. Override the _dispatch method inhereted
from SimpleXMLRPCDispatcher to change this behavior.
cCs�||_ti|||�tii||||�tdj oXttd�oHti|i�ti �}|ti
O}ti|i�ti |�ndS(Nt
FD_CLOEXEC( RuRRt SocketServert TCPServertfcntlRRtfilenotF_GETFDR|tF_SETFD(RtaddrtrequestHandlerRuRRtbind_and_activatetflags((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyRs 
N(
R!RORPRVtallow_reuse_addressRQRXRRRR(((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR{s
 tCGIXMLRPCRequestHandlercBs;eZdZedd�Zd�Zd�Zdd�ZRS(s3Simple handler for XML-RPC data passed through CGI.cCsti|||�dS(N(RR(RRR((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR+scCs8|i|�}dGHdt|�GHHtii|�dS(sHandle a single XML-RPC requestsContent-Type: text/xmlsContent-Length: %dN(R<R_R1tstdoutRi(Rt request_textR7((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyt
handle_xmlrpc.s
cCsvd}tii|\}}tih|d6|d6|d6}d||fGHdGHdt|�GHHtii|�dS( s�Handle a single HTTP GET request.

Default implementation indicates an error because
XML-RPC uses the POST method.
i�Rytmessagetexplains
Status: %d %ssContent-Type: text/htmlsContent-Length: %dN(RvRwt responsestDEFAULT_ERROR_MESSAGER_R1R�Ri(RRyR�R�R7((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyt
handle_get8s cCs¬|djo*tiidd�djo|i�nryttiidd��}Wnttfj
o
d}nX|djoti i
|�}n|i |�dS(sðHandle a single XML-RPC request passed through a CGI post method.

If no XML data is given then it is read from stdin. The resulting
XML-RPC response is printed to stdout along with the correct HTTP
headers.
tREQUEST_METHODtGETtCONTENT_LENGTHiÿÿÿÿN( RtostenvirontgetR�RZt TypeErrort
ValueErrorR1tstdinR^R�(RR�tlength((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pythandle_requestOs
 
N( R!RORPRQRRR�R�R�(((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyR�(s

t__main__s#Running XML-RPC server on port 8000t localhosti@cCs||S(((Rty((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyt<lambda>istadd(RPR-RR}RvR1R�ReRt ImportErrorRRVR RRRRwRRR~R{R�R!RaR$tpowt
serve_forever(((s*/usr/lib64/python2.6/SimpleXMLRPCServer.pyt<module>as4         
ÿ` !=