X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fcomponentserver.py;h=85969778e004d862f28b3bb18a19a033544a79bd;hb=00018e8f437f02c99e438f17c57aafc038052171;hp=933ecfef4cb01427076a28763a22108f65bf1214;hpb=3d7237fa0b5f2b4a60cb97c7fb3b6aecfd94558a;p=sfa.git diff --git a/sfa/util/componentserver.py b/sfa/util/componentserver.py index 933ecfef..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$ -### $URL$ - 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.server 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) @@ -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()