johnmaguire / Cardinal

A Python IRC bot, designed to make adding functionality quick and simple. (est. 2013)
MIT License
100 stars 38 forks source link

New OpenSSL breaks Cardinal #200

Closed vwbusguy closed 1 year ago

vwbusguy commented 1 year ago

OpenSSL 3.9 has a breaking change that affects Cardinal for newly built container images:

   File "/usr/src/app/./cardinal.py", line 9, in <module>
     from twisted.internet import reactor
   File "/usr/local/lib/python3.11/site-packages/twisted/internet/reactor.py", line 38, in <module>
     from twisted.internet import default
   File "/usr/local/lib/python3.11/site-packages/twisted/internet/default.py", line 55, in <module>
     install = _getInstallFunction(platform)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/local/lib/python3.11/site-packages/twisted/internet/default.py", line 43, in _getInstallFunction
     from twisted.internet.epollreactor import install
   File "/usr/local/lib/python3.11/site-packages/twisted/internet/epollreactor.py", line 19, in <module>
     from twisted.internet import posixbase
   File "/usr/local/lib/python3.11/site-packages/twisted/internet/posixbase.py", line 16, in <module>
     from twisted.internet import error, tcp, udp
   File "/usr/local/lib/python3.11/site-packages/twisted/internet/tcp.py", line 38, in <module>
     from twisted.internet._newtls import (
   File "/usr/local/lib/python3.11/site-packages/twisted/internet/_newtls.py", line 18, in <module>
     from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol
   File "/usr/local/lib/python3.11/site-packages/twisted/protocols/tls.py", line 42, in <module>
     from OpenSSL.SSL import Connection, Error, SysCallError, WantReadError, ZeroReturnError
   File "/usr/local/lib/python3.11/site-packages/OpenSSL/__init__.py", line 8, in <module>
     from OpenSSL import crypto, SSL
   File "/usr/local/lib/python3.11/site-packages/OpenSSL/crypto.py", line 3268, in <module>
     _lib.OpenSSL_add_all_algorithms()
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 module lib has no attribute OpenSSL_add_all_algorithms

The workaround seems to be adding "cryptography==38.0.4" to requirements.txt. I've just tested it out locally and will submit a PR for it shortly.