forked from MirrorHub/synapse
include private functions from twisted
This commit is contained in:
parent
d5c0ce4cad
commit
64899341dc
1 changed files with 35 additions and 2 deletions
|
@ -16,10 +16,10 @@ import logging
|
||||||
from zope.interface import implementer
|
from zope.interface import implementer
|
||||||
|
|
||||||
from OpenSSL import SSL, crypto
|
from OpenSSL import SSL, crypto
|
||||||
from twisted.internet._idna import _idnaBytes
|
from twisted.internet._sslverify import _defaultCurveName
|
||||||
from twisted.internet._sslverify import _defaultCurveName, _tolerateErrors
|
|
||||||
from twisted.internet.interfaces import IOpenSSLClientConnectionCreator
|
from twisted.internet.interfaces import IOpenSSLClientConnectionCreator
|
||||||
from twisted.internet.ssl import CertificateOptions, ContextFactory
|
from twisted.internet.ssl import CertificateOptions, ContextFactory
|
||||||
|
from twisted.python.failure import Failure
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -53,6 +53,39 @@ class ServerContextFactory(ContextFactory):
|
||||||
return self._context
|
return self._context
|
||||||
|
|
||||||
|
|
||||||
|
def _idnaBytes(text):
|
||||||
|
"""
|
||||||
|
Convert some text typed by a human into some ASCII bytes. This is a
|
||||||
|
copy of twisted.internet._idna._idnaBytes. For documentation, see the
|
||||||
|
twisted documentation.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
import idna
|
||||||
|
except ImportError:
|
||||||
|
return text.encode("idna")
|
||||||
|
else:
|
||||||
|
return idna.encode(text)
|
||||||
|
|
||||||
|
|
||||||
|
def _tolerateErrors(wrapped):
|
||||||
|
"""
|
||||||
|
Wrap up an info_callback for pyOpenSSL so that if something goes wrong
|
||||||
|
the error is immediately logged and the connection is dropped if possible.
|
||||||
|
This is a copy of twisted.internet._sslverify._tolerateErrors. For
|
||||||
|
documentation, see the twisted documentation.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def infoCallback(connection, where, ret):
|
||||||
|
try:
|
||||||
|
return wrapped(connection, where, ret)
|
||||||
|
except: # noqa: E722, taken from the twisted implementation
|
||||||
|
f = Failure()
|
||||||
|
logger.exception("Error during info_callback")
|
||||||
|
connection.get_app_data().failVerification(f)
|
||||||
|
|
||||||
|
return infoCallback
|
||||||
|
|
||||||
|
|
||||||
@implementer(IOpenSSLClientConnectionCreator)
|
@implementer(IOpenSSLClientConnectionCreator)
|
||||||
class ClientTLSOptions(object):
|
class ClientTLSOptions(object):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue