From 30c8cbbc088b5b0bc243dffdd99c94196392f3df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Wr=C3=B3bel?= Date: Sat, 23 Feb 2019 20:54:35 +0100 Subject: [PATCH 1/3] Workaround for older twisted versions which don't support raiseMinimumTo. --- syncplay/server.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/syncplay/server.py b/syncplay/server.py index 82765c9..c8c2c7b 100755 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -13,6 +13,7 @@ from twisted.internet.protocol import Factory try: from OpenSSL import crypto from twisted.internet import ssl + from OpenSSL.SSL import TLSv1_2_METHOD except: pass @@ -225,9 +226,14 @@ class SyncFactory(Factory): "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384" accCiphers = ssl.AcceptableCiphers.fromOpenSSLCipherString(cipherListString) - contextFactory = ssl.CertificateOptions(privateKey=privKeyPySSL, certificate=certifPySSL, - extraCertChain=chainPySSL, acceptableCiphers=accCiphers, - raiseMinimumTo=ssl.TLSVersion.TLSv1_2) + try: + contextFactory = ssl.CertificateOptions(privateKey=privKeyPySSL, certificate=certifPySSL, + extraCertChain=chainPySSL, acceptableCiphers=accCiphers, + raiseMinimumTo=ssl.TLSVersion.TLSv1_2) + except: + contextFactory = ssl.CertificateOptions(privateKey=privKeyPySSL, certificate=certifPySSL, + extraCertChain=chainPySSL, acceptableCiphers=accCiphers, + method=TLSv1_2_METHOD) self.options = contextFactory self.serverAcceptsTLS = True From 75416463a605d8fe0959badd940643cb40c0214d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Wr=C3=B3bel?= Date: Sun, 24 Feb 2019 17:50:15 +0100 Subject: [PATCH 2/3] Make catching the SSL exception due to old Twisted version more specific. --- syncplay/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/server.py b/syncplay/server.py index c8c2c7b..6b5d737 100755 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -230,7 +230,7 @@ class SyncFactory(Factory): contextFactory = ssl.CertificateOptions(privateKey=privKeyPySSL, certificate=certifPySSL, extraCertChain=chainPySSL, acceptableCiphers=accCiphers, raiseMinimumTo=ssl.TLSVersion.TLSv1_2) - except: + except AttributeError: contextFactory = ssl.CertificateOptions(privateKey=privKeyPySSL, certificate=certifPySSL, extraCertChain=chainPySSL, acceptableCiphers=accCiphers, method=TLSv1_2_METHOD) From ddca044641079bfedf585aaca4d48fab8036912d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Wr=C3=B3bel?= Date: Sun, 24 Feb 2019 17:51:21 +0100 Subject: [PATCH 3/3] Rearrange import order for OpenSSL --- syncplay/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/server.py b/syncplay/server.py index 6b5d737..21de91b 100755 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -12,8 +12,8 @@ from twisted.internet.protocol import Factory try: from OpenSSL import crypto - from twisted.internet import ssl from OpenSSL.SSL import TLSv1_2_METHOD + from twisted.internet import ssl except: pass