X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fcomponentserver.py;h=85969778e004d862f28b3bb18a19a033544a79bd;hb=00018e8f437f02c99e438f17c57aafc038052171;hp=86a00c29c9f999b2ee864aa80d0ebe5dd8580ff3;hpb=abdeda282baacc586a9c110fcbfdd059efdb2ef7;p=sfa.git diff --git a/sfa/util/componentserver.py b/sfa/util/componentserver.py index 86a00c29..85969778 100644 --- a/sfa/util/componentserver.py +++ b/sfa/util/componentserver.py @@ -6,28 +6,22 @@ # TODO: investigate ways to combine this with existing PLC server? ## -### $Id: geniserver.py 15849 2009-11-23 01:36:21Z tmack $ -### $URL: https://svn.planet-lab.org/svn/sfa/trunk/sfa/util/geniserver.py $ - import sys import traceback import threading import socket, os - import SocketServer import BaseHTTPServer import SimpleHTTPServer import SimpleXMLRPCServer - from OpenSSL import SSL +from sfa.util.sfalogging import logger from sfa.trust.certificate import Keypair, Certificate from sfa.trust.credential import * - from sfa.util.faults import * from sfa.plc.api import ComponentAPI -from sfa.util.geniserver import verify_callback, SecureXMLRPCServer -from sfa.util.debug import log +from sfa.server.sfaserver import verify_callback, ThreadedServer ## @@ -49,7 +43,9 @@ class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): It was copied out from SimpleXMLRPCServer.py and modified to shutdown the socket cleanly. """ try: - self.api = ComponentAPI(peer_cert = self.server.peer_cert, + peer_cert = Certificate() + peer_cert.load_from_pyopenssl_x509(self.connection.get_peer_certificate()) + self.api = ComponentAPI(peer_cert = peer_cert, interface = self.server.interface, key_file = self.server.key_file, cert_file = self.server.cert_file) @@ -75,6 +71,7 @@ class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): # internal error, report as HTTP server error self.send_response(500) self.end_headers() + logger.log_exc("componentserver.SecureXMLRpcRequestHandler.do_POST") else: # got a valid XML RPC response self.send_response(200) @@ -88,7 +85,7 @@ class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): self.connection.shutdown() # Modified here! ## -# Implements an HTTPS XML-RPC server. Generally it is expected that GENI +# Implements an HTTPS XML-RPC server. Generally it is expected that SFA # functions will take a credential string, which is passed to # decode_authentication. Decode_authentication() will verify the validity of # the credential, and verify that the user is using the key that matches the @@ -97,7 +94,7 @@ class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): class ComponentServer(threading.Thread): ## - # Create a new GeniServer object. + # Create a new SfaServer object. # # @param ip the ip address to listen on # @param port the port to listen on @@ -109,7 +106,7 @@ class ComponentServer(threading.Thread): threading.Thread.__init__(self) self.key = Keypair(filename = key_file) self.cert = Certificate(filename = cert_file) - self.server = SecureXMLRPCServer((ip, port), SecureXMLRpcRequestHandler, key_file, cert_file) + self.server = ThreadedServer((ip, port), SecureXMLRpcRequestHandler, key_file, cert_file) self.trusted_cert_list = None self.register_functions()