diff --git a/nginx-ldap-auth-daemon.py b/nginx-ldap-auth-daemon.py index 55582d51d7253fd2725532adea0d865f0f53d4f7..388364c4ad5e891554a2c03ca69566a1db8dc725 100755 --- a/nginx-ldap-auth-daemon.py +++ b/nginx-ldap-auth-daemon.py @@ -4,8 +4,15 @@ # Copyright (C) 2014-2015 Nginx, Inc. -import sys, os, signal, base64, ldap, Cookie, argparse -from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler +import sys, os, signal, base64, ldap, argparse +if sys.version_info.major == 2: + from Cookie import BaseCookie + from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler +elif sys.version_info.major == 3: + from http.cookies import BaseCookie + from http.server import HTTPServer, BaseHTTPRequestHandler + +if not hasattr(__builtins__, "basestring"): basestring = (str, bytes) #Listen = ('localhost', 8888) #Listen = "/tmp/auth.sock" # Also uncomment lines in 'Requests are @@ -16,7 +23,11 @@ from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler # ----------------------------------------------------------------------------- # Requests are processed in separate thread import threading -from SocketServer import ThreadingMixIn +if sys.version_info.major == 2: + from SocketServer import ThreadingMixIn +elif sys.version_info.major == 3: + from socketserver import ThreadingMixIn + class AuthHTTPServer(ThreadingMixIn, HTTPServer): pass # ----------------------------------------------------------------------------- @@ -71,6 +82,7 @@ class AuthHandler(BaseHTTPRequestHandler): try: auth_decoded = base64.b64decode(auth_header[6:]) + if sys.version_info.major == 3: auth_decoded = auth_decoded.decode("utf-8") user, passwd = auth_decoded.split(':', 1) except: @@ -86,7 +98,7 @@ class AuthHandler(BaseHTTPRequestHandler): def get_cookie(self, name): cookies = self.headers.get('Cookie') if cookies: - authcookie = Cookie.BaseCookie(cookies).get(name) + authcookie = BaseCookie(cookies).get(name) if authcookie: return authcookie.value else: