From 79c86bd033fc96b18f2833fc810601c335b323c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rajmund=20Hru=C5=A1ka?= <rajmund.hruska@cesnet.cz>
Date: Mon, 24 Aug 2020 14:35:34 +0200
Subject: [PATCH] Add support for Python3

---
 warden_ra/ejbcaws.py | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/warden_ra/ejbcaws.py b/warden_ra/ejbcaws.py
index af63d99..ded68e2 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)
-- 
GitLab