syncplay: fix tls support in client
Adds "pem", which is a new dependency added in the last release from upstream. Nixos patches certifi to return the system ca bundle, which includes openssl-format "trusted certificate"s, which pyopenssl seems to choke on when syncplay tries to load them. Therefore, we add a patch that skips those "trusted certificates".
This commit is contained in:
parent
b88ce3f367
commit
aefce34bc5
2 changed files with 15 additions and 1 deletions
|
@ -3,6 +3,7 @@
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, buildPythonApplication
|
, buildPythonApplication
|
||||||
, fetchpatch
|
, fetchpatch
|
||||||
|
, pem
|
||||||
, pyside6
|
, pyside6
|
||||||
, twisted
|
, twisted
|
||||||
, certifi
|
, certifi
|
||||||
|
@ -30,10 +31,11 @@ buildPythonApplication rec {
|
||||||
url = "https://github.com/Syncplay/syncplay/commit/b62b038cdf58c54205987dfc52ebf228505ad03b.patch";
|
url = "https://github.com/Syncplay/syncplay/commit/b62b038cdf58c54205987dfc52ebf228505ad03b.patch";
|
||||||
hash = "sha256-pSP33Qn1I+nJBW8T1E1tSJKRh5OnZMRsbU+jr5z4u7c=";
|
hash = "sha256-pSP33Qn1I+nJBW8T1E1tSJKRh5OnZMRsbU+jr5z4u7c=";
|
||||||
})
|
})
|
||||||
|
./trusted_certificates.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = lib.optionals enableGUI [ (if stdenv.isLinux then qt6.qtwayland else qt6.qtbase) ];
|
buildInputs = lib.optionals enableGUI [ (if stdenv.isLinux then qt6.qtwayland else qt6.qtbase) ];
|
||||||
propagatedBuildInputs = [ twisted certifi ]
|
propagatedBuildInputs = [ certifi pem twisted ]
|
||||||
++ twisted.optional-dependencies.tls
|
++ twisted.optional-dependencies.tls
|
||||||
++ lib.optional enableGUI pyside6
|
++ lib.optional enableGUI pyside6
|
||||||
++ lib.optional (stdenv.isDarwin && enableGUI) appnope;
|
++ lib.optional (stdenv.isDarwin && enableGUI) appnope;
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/syncplay/client.py b/syncplay/client.py
|
||||||
|
index b7cb245..be72d94 100755
|
||||||
|
--- a/syncplay/client.py
|
||||||
|
+++ b/syncplay/client.py
|
||||||
|
@@ -848,6 +848,7 @@ class SyncplayClient(object):
|
||||||
|
self._endpoint = HostnameEndpoint(reactor, host, port)
|
||||||
|
try:
|
||||||
|
certs = pem.parse_file(SSL_CERT_FILE)
|
||||||
|
+ certs = [cert for cert in certs if type(cert) is pem.Certificate]
|
||||||
|
trustRoot = trustRootFromCertificates([Certificate.loadPEM(str(cert)) for cert in certs])
|
||||||
|
self.protocolFactory.options = optionsForClientTLS(hostname=host, trustRoot=trustRoot)
|
||||||
|
self._clientSupportsTLS = True
|
Loading…
Reference in a new issue