X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=nagixsc%2F__init__.py;h=a2435134dbb5500b37acde1b917fe3155aa2fd1c;hb=55f460eee729df89ce446eaa1cc1f2bfce7752d5;hp=036fe7e16d33ce474909d327ef6782fece7b8510;hpb=69e267becfdb6498254eeb3805c502a30715dc48;p=nagixsc.git diff --git a/nagixsc/__init__.py b/nagixsc/__init__.py index 036fe7e..a243513 100644 --- a/nagixsc/__init__.py +++ b/nagixsc/__init__.py @@ -572,23 +572,34 @@ def daemonize(pidfile=None, stdin='/dev/null', stdout='/dev/null', stderr='/dev/ ############################################################################## -class MyHTTPServer(SocketServer.ForkingMixIn, BaseHTTPServer.HTTPServer): +if 'ForkingMixIn' in SocketServer.__dict__: + MixInClass = SocketServer.ForkingMixIn +else: + MixInClass = SocketServer.ThreadingMixIn + +class MyHTTPServer(MixInClass, BaseHTTPServer.HTTPServer): def __init__(self, server_address, HandlerClass, ssl=False, sslpemfile=None): + SocketServer.BaseServer.__init__(self, server_address, HandlerClass) + if ssl: - # FIXME: SSL is in Py2.6 try: - from OpenSSL import SSL + import ssl + self.socket = ssl.wrap_socket(socket.socket(self.address_family, self.socket_type), keyfile=sslpemfile, certfile=sslpemfile) + except: - print 'No Python OpenSSL wrapper/bindings found!' - sys.exit(127) - - SocketServer.BaseServer.__init__(self, server_address, HandlerClass) - context = SSL.Context(SSL.SSLv23_METHOD) - context.use_privatekey_file (sslpemfile) - context.use_certificate_file(sslpemfile) - self.socket = SSL.Connection(context, socket.socket(self.address_family, self.socket_type)) + + try: + from OpenSSL import SSL + except: + print 'No Python SSL or OpenSSL wrapper/bindings found!' + sys.exit(127) + + context = SSL.Context(SSL.SSLv23_METHOD) + context.use_privatekey_file (sslpemfile) + context.use_certificate_file(sslpemfile) + self.socket = SSL.Connection(context, socket.socket(self.address_family, self.socket_type)) + else: - SocketServer.BaseServer.__init__(self, server_address, HandlerClass) self.socket = socket.socket(self.address_family, self.socket_type) self.server_bind()