diff --git a/warden_ra/ejbcaws.py b/warden_ra/ejbcaws.py index af63d991b6157c0081736afc7904119d80587213..ded68e238a3a7696a9614695a7594734337b03ae 100755 --- a/warden_ra/ejbcaws.py +++ b/warden_ra/ejbcaws.py @@ -13,12 +13,19 @@ import M2Crypto if sys.version_info[0] >= 3: - import urllib.request as urllib2 - import http.client as httplib + import urllib.request, urllib.error, urllib.parse + import http.client + + def get_https_handler(): + return urllib.request.HTTPSHandler else: import urllib2 import httplib + def get_https_handler(): + return urllib2.HTTPSHandler + + STATUS_FAILED = 11 STATUS_GENERATED = 40 STATUS_HISTORICAL = 60 @@ -145,10 +152,10 @@ REVOKATION_REASON_PRIVILEGESWITHDRAWN = 9 REVOKATION_REASON_AACOMPROMISE = 10 -class HTTPSClientAuthHandler(urllib2.HTTPSHandler): +class HTTPSClientAuthHandler(get_https_handler()): def __init__(self, key, cert): - urllib2.HTTPSHandler.__init__(self) + get_https_handler().__init__(self) self.key = key self.cert = cert @@ -156,7 +163,10 @@ class HTTPSClientAuthHandler(urllib2.HTTPSHandler): return self.do_open(self.get_connection, req) def get_connection(self, host, timeout=5): - return httplib.HTTPSConnection(host, key_file=self.key, cert_file=self.cert, timeout=timeout) + if sys.version_info[0] >= 3: + return http.client.HTTPSConnection(host, key_file=self.key, cert_file=self.cert, timeout=timeout) + else: + return httplib.HTTPSConnection(host, key_file=self.key, cert_file=self.cert, timeout=timeout) class HTTPSClientCertTransport(suds.transport.http.HttpTransport): @@ -168,7 +178,10 @@ class HTTPSClientCertTransport(suds.transport.http.HttpTransport): def u2open(self, u2request): tm = self.options.timeout - url = urllib2.build_opener(HTTPSClientAuthHandler(self.key, self.cert)) + if sys.version_info[0] >= 3: + url = urllib.request.build_opener(HTTPSClientAuthHandler(self.key, self.cert)) + else: + url = urllib2.build_opener(HTTPSClientAuthHandler(self.key, self.cert)) if self.u2ver() < 2.6: socket.setdefaulttimeout(tm) return url.open(u2request)