Changeset 6348


Ignore:
Timestamp:
Nov 16, 2017, 2:50:44 PM (2 years ago)
Author:
hectorgh
Message:

fixing missing import and error handling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • n4d/trunk/fuentes/install-files/usr/share/n4d/xmlrpc-server/server.py

    r3547 r6348  
    3232import imp
    3333import glob
    34 
     34import sys
    3535
    3636import fcntl
     
    4545
    4646import xmlrpclib
     47
    4748import threading
    48 
    4949threading._DummyThread._Thread__stop = lambda x: 42
    5050
    51 #locale.resetlocale()
    52 
    53 # static stuff
    54 
    55 '''
    56 DEFAULTKEYFILE='/etc/lliurex-secrets/pki/n4d/n4d.key'   # Replace with your PEM formatted key file
    57 DEFAULTCERTFILE='/etc/lliurex-secrets/certs/n4d/n4d'  # Replace with your PEM formatted certificate file
    58 '''
    59 
    60 DEFAULTKEYFILE='/etc/n4d/cert/n4dkey.pem'       # Replace with your PEM formatted key file
    61 DEFAULTCERTFILE='/etc/n4d/cert/n4dcert.pem'  # Replace with your PEM formatted certificate file
     51
     52
     53DEFAULTKEYFILE='/etc/n4d/cert/n4dkey.pem'
     54DEFAULTCERTFILE='/etc/n4d/cert/n4dcert.pem'
    6255
    6356SITESENABLEDPATH="/usr/share/n4d/sites-enabled/"
     
    7366       
    7467        def setup(self):
     68               
    7569                self.connection = self.request
    7670                self.rfile = socket._fileobject(self.request, "rb", self.rbufsize)
    7771                self.wfile = socket._fileobject(self.request, "wb", self.wbufsize)
     72               
     73        #def setup
    7874
    7975        def address_string(self):
     
    8783                #return socket.getfqdn(host)
    8884                return host
     85       
     86        #def address_string
    8987
    9088
     
    9492                """
    9593                try:
    96                         # get arguments
    9794                        data = self.rfile.read(int(self.headers["content-length"]))
    98                         # In previous versions of SimpleXMLRPCServer, _dispatch
    99                         # could be overridden in this class, instead of in
    100                         # SimpleXMLRPCDispatcher. To maintain backwards compatibility,
    101                         # check to see if a subclass implements _dispatch and dispatch
    102                         # using that method if present.
    10395                        addr,num=self.client_address
    10496                        response = self.server._marshaled_dispatch(data, getattr(self, '_dispatch', None),client_address=addr)
    10597                       
    10698                       
    107                 except: # This should only happen if the module is buggy
     99                except:
    108100                        # internal error, report as HTTP server error
    109101                        self.send_response(500)
     
    117109                        self.wfile.write(response)
    118110
    119                         # shut down the connection
    120111                        self.wfile.flush()
    121                         '''
    122                         global TRIGGER_BLOCK
    123                         while(TRIGGER_BLOCK):
    124                                 print "waiting for trigger_block to be unlocked..."
    125                                 time.sleep(int(5*random.random()))
    126                         TRIGGER_BLOCK=True
    127                         print "done with response. Sleeping..."
    128                         time.sleep(5)
    129                         print "done sleeping."
    130                         TRIGGER_BLOCK=False
    131                         '''
    132                         self.connection.shutdown() # Modified here!
     112                        self.connection.shutdown()
     113                       
     114        #def do_POST
     115
    133116
    134117        def do_GET(self):
     
    164147                                print e
    165148                               
    166                
    167149                '''
    168150                if "/n4d/" in self.path:
     
    185167                '''
    186168               
    187                 # Check that the path is legal
    188169               
    189170                if not self.is_rpc_path_valid():
    190171                        self.report_404()
    191172                        return
    192                
    193                
    194                 #print self.path
    195                 #response = self.server.generate_html_documentation()
    196173               
    197174                header="<html><body>"
     
    204181                        for method in plugin.function:
    205182                                try:
    206                                         #server.register_function(getattr(l.objects[plugin.class_name],method))
    207183                                        args=getattr(l.objects[plugin.class_name],method).func_code.co_varnames[:getattr(l.objects[plugin.class_name],method).func_code.co_argcount]
    208184                                        response+="<pre>      " + method+str(args).replace("'self',","")+" , " + str(getattr(l.objects[plugin.class_name],method).__doc__) + "</pre>"
     
    211187               
    212188                response+=foot
    213                
    214 
    215189               
    216190                self.send_response(200)
     
    220194                self.wfile.write(response)
    221195
    222                 # shut down the connection
    223196                self.wfile.flush()
    224                 self.connection.shutdown() # Modified here!
    225                
    226                
     197                self.connection.shutdown()
     198               
     199        #def do_GET
     200
    227201
    228202        def report_404 (self):
     
    234208                self.end_headers()
    235209                self.wfile.write(response)
    236                 # shut down the connection
    237210                self.wfile.flush()
    238211                self.connection.shutdown() # Modified here!
    239212               
     213        #def report_404
     214
     215
    240216        def do_OPTIONS(self):
    241217                self.send_response(200)
    242218                self.end_headers()
    243219                self.wfile.flush()
    244                 self.connection.shutdown() # Modified here!
     220                self.connection.shutdown()
     221               
     222        #def do_OPTIONS
    245223
    246224        def end_headers(self):
     
    248226                self.send_header("Access-Control-Allow-Origin", "*")
    249227                DocXMLRPCRequestHandler.end_headers(self)
     228               
     229        #def end_headers
    250230
    251231class CustomThreadingMixIn:
     
    275255                t.start()
    276256
    277 
     257#class CustomThreadingMixIn
    278258
    279259class SecureDocXMLRPCServer(CustomThreadingMixIn, DocXMLRPCServer):
     260       
    280261        def __init__(self, registerInstance, server_address, keyFile=DEFAULTKEYFILE, certFile=DEFAULTCERTFILE, logRequests=True):
    281262                """Secure Documenting XML-RPC server.
     
    294275                else: self.set_server_documentation('default documentation')
    295276               
    296                
    297                 #self.register_introspection_functions()
    298                
    299277                # init stuff, handle different versions:
    300278                try:
     
    312290                ctx.use_certificate_file(certFile)
    313291                self.socket = SSL.Connection(ctx, socket.socket(self.address_family, self.socket_type))
    314                 #self.socket = socket.socket(self.address_family, self.socket_type)
    315292               
    316293                old = fcntl.fcntl(self.socket.fileno(), fcntl.F_GETFD) 
     
    323300                self.requests = 0
    324301                self.rCondition = Condition()
     302               
     303        #def __init__
    325304
    326305
     
    378357                        response = xmlrpclib.dumps(response, methodresponse=1,allow_none=self.allow_none, encoding=self.encoding)
    379358
    380                 except Fault, fault:
     359                except xmlrpclib.Fault, fault:
    381360                        response = xmlrpclib.dumps(fault, allow_none=self.allow_none,encoding=self.encoding)
    382361                except:
Note: See TracChangeset for help on using the changeset viewer.