From d92ae5f7e0543b026911ddf1351fe9c3abb5fc02 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Fri, 5 Mar 2010 21:37:10 +0000 Subject: [PATCH] make server an instance of sfa.util.server.ThreadedServer. peer_cert is now defined in do_POST() --- sfa/util/componentserver.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/sfa/util/componentserver.py b/sfa/util/componentserver.py index 933ecfef..542b4be0 100644 --- a/sfa/util/componentserver.py +++ b/sfa/util/componentserver.py @@ -13,20 +13,16 @@ import sys import traceback import threading import socket, os - import SocketServer import BaseHTTPServer import SimpleHTTPServer import SimpleXMLRPCServer - from OpenSSL import SSL - 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.server import verify_callback, ThreadedServer from sfa.util.debug import log @@ -49,7 +45,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 +73,7 @@ class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): # internal error, report as HTTP server error self.send_response(500) self.end_headers() + traceback.print_exc() else: # got a valid XML RPC response self.send_response(200) @@ -109,7 +108,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() -- 2.43.0