From e9b7a4ef125040c506192ded3355e8a51d958629 Mon Sep 17 00:00:00 2001 From: ced <> Date: Tue, 27 Nov 2007 15:43:56 +0000 Subject: [PATCH] Don't launch server in non secure if secure have been ask. bzr revid: ced-2502a6622822d5eb7f639abd6b6ac3f5334fed5d --- bin/netsvc.py | 61 ++++++++++++++++++++++++++----------------- bin/tinyerp-server.py | 11 ++++---- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/bin/netsvc.py b/bin/netsvc.py index c5a9c245bf4..ecfc0f71ecf 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -9,12 +9,6 @@ import socket import logging import os -try: - from ssl import * - HAS_SSL = True -except ImportError: - HAS_SSL = False - _service={} _group={} _res_id=1 @@ -219,36 +213,55 @@ class GenericXMLRPCRequestHandler: pdb.post_mortem(tb) raise xmlrpclib.Fault(s, tb_s) -class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): - SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.rpc_paths = ('/xmlrpc/db', '/xmlrpc/common', '/xmlrpc/object', '/xmlrpc/report', '/xmlrpc/wizard') +class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler, + SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): + SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.rpc_paths = ( + '/xmlrpc/db', + '/xmlrpc/common', + '/xmlrpc/object', + '/xmlrpc/report', + '/xmlrpc/wizard', + ) -if HAS_SSL: - class SecureXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SecureXMLRPCServer.SecureXMLRPCRequestHandler): - SecureXMLRPCServer.SecureXMLRPCRequestHandler.rpc_paths = ('/xmlrpc/db', '/xmlrpc/common', '/xmlrpc/object', '/xmlrpc/report', '/xmlrpc/wizard') +class SimpleThreadedXMLRPCServer(SocketServer.ThreadingMixIn, + SimpleXMLRPCServer.SimpleXMLRPCServer): -class SimpleThreadedXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer): def server_bind(self): - self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + self.socket.setsockopt(socket.SOL_SOCKET, + socket.SO_REUSEADDR, 1) SimpleXMLRPCServer.SimpleXMLRPCServer.server_bind(self) -if HAS_SSL: - class SecureThreadedXMLRPCServer(SocketServer.ThreadingMixIn, SecureXMLRPCServer.SecureXMLRPCServer): - def server_bind(self): - self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - SecureXMLRPCServer.SecureXMLRPCServer.server_bind(self) -else: - pass - class HttpDaemon(threading.Thread): + def __init__(self, interface,port, secure=False): threading.Thread.__init__(self) self.__port=port self.__interface=interface self.secure = secure - if secure and HAS_SSL: - self.server = SecureThreadedXMLRPCServer((interface, port), SecureXMLRPCRequestHandler,0) + if secure: + from ssl import SecureXMLRPCServer + class SecureXMLRPCRequestHandler(GenericXMLRPCRequestHandler, + SecureXMLRPCServer.SecureXMLRPCRequestHandler): + SecureXMLRPCServer.SecureXMLRPCRequestHandler.rpc_paths = ( + '/xmlrpc/db', + '/xmlrpc/common', + '/xmlrpc/object', + '/xmlrpc/report', + '/xmlrpc/wizard', + ) + class SecureThreadedXMLRPCServer(SocketServer.ThreadingMixIn, + SecureXMLRPCServer.SecureXMLRPCServer): + + def server_bind(self): + self.socket.setsockopt(socket.SOL_SOCKET, + socket.SO_REUSEADDR, 1) + SecureXMLRPCServer.SecureXMLRPCServer.server_bind(self) + + self.server = SecureThreadedXMLRPCServer((interface, port), + SecureXMLRPCRequestHandler,0) else: - self.server = SimpleThreadedXMLRPCServer((interface, port), SimpleXMLRPCRequestHandler,0) + self.server = SimpleThreadedXMLRPCServer((interface, port), + SimpleXMLRPCRequestHandler,0) def attach(self,path,gw): pass diff --git a/bin/tinyerp-server.py b/bin/tinyerp-server.py index 77c562a82ec..1fe6f3583bf 100755 --- a/bin/tinyerp-server.py +++ b/bin/tinyerp-server.py @@ -215,18 +215,17 @@ if tools.config['xmlrpc']: if tools.config["xmlrpc"]: xml_gw = netsvc.xmlrpc.RpcGateway('web-services') httpd.attach("/xmlrpc", xml_gw ) - logger.notifyChannel("web-services", netsvc.LOG_INFO, "starting XML-RPC services, port "+str(port)) - + logger.notifyChannel("web-services", netsvc.LOG_INFO, + "starting XML-RPC" + \ + (tools.config['secure'] and ' Secure' or '') + \ + " services, port " + str(port)) + # #if tools.config["soap"]: # soap_gw = netsvc.xmlrpc.RpcGateway('web-services') # httpd.attach("/soap", soap_gw ) # logger.notifyChannel("web-services", netsvc.LOG_INFO, 'starting SOAP services, port '+str(port)) # - if not (netsvc.HAS_SSL and tools.config['secure']): - logger.notifyChannel("web-services", netsvc.LOG_INFO, "You are not using the SSL layer") - else: - logger.notifyChannel("web-services", netsvc.LOG_INFO, "You are using the SSL Layer") if tools.config['netrpc']: try: