commit
a58e4e0d48
|
@ -25,7 +25,7 @@ from synapse.http.endpoint import SpiderEndpoint
|
||||||
from canonicaljson import encode_canonical_json
|
from canonicaljson import encode_canonical_json
|
||||||
|
|
||||||
from twisted.internet import defer, reactor, ssl, protocol, task
|
from twisted.internet import defer, reactor, ssl, protocol, task
|
||||||
from twisted.internet.endpoints import SSL4ClientEndpoint, TCP4ClientEndpoint
|
from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS
|
||||||
from twisted.web.client import (
|
from twisted.web.client import (
|
||||||
BrowserLikeRedirectAgent, ContentDecoderAgent, GzipDecoder, Agent,
|
BrowserLikeRedirectAgent, ContentDecoderAgent, GzipDecoder, Agent,
|
||||||
readBody, PartialDownloadError,
|
readBody, PartialDownloadError,
|
||||||
|
@ -386,26 +386,23 @@ class SpiderEndpointFactory(object):
|
||||||
|
|
||||||
def endpointForURI(self, uri):
|
def endpointForURI(self, uri):
|
||||||
logger.info("Getting endpoint for %s", uri.toBytes())
|
logger.info("Getting endpoint for %s", uri.toBytes())
|
||||||
|
|
||||||
if uri.scheme == "http":
|
if uri.scheme == "http":
|
||||||
return SpiderEndpoint(
|
endpoint_factory = HostnameEndpoint
|
||||||
reactor, uri.host, uri.port, self.blacklist, self.whitelist,
|
|
||||||
endpoint=TCP4ClientEndpoint,
|
|
||||||
endpoint_kw_args={
|
|
||||||
'timeout': 15
|
|
||||||
},
|
|
||||||
)
|
|
||||||
elif uri.scheme == "https":
|
elif uri.scheme == "https":
|
||||||
tlsPolicy = self.policyForHTTPS.creatorForNetloc(uri.host, uri.port)
|
tlsCreator = self.policyForHTTPS.creatorForNetloc(uri.host, uri.port)
|
||||||
return SpiderEndpoint(
|
|
||||||
reactor, uri.host, uri.port, self.blacklist, self.whitelist,
|
def endpoint_factory(reactor, host, port, **kw):
|
||||||
endpoint=SSL4ClientEndpoint,
|
return wrapClientTLS(
|
||||||
endpoint_kw_args={
|
tlsCreator,
|
||||||
'sslContextFactory': tlsPolicy,
|
HostnameEndpoint(reactor, host, port, **kw))
|
||||||
'timeout': 15
|
|
||||||
},
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
logger.warn("Can't get endpoint for unrecognised scheme %s", uri.scheme)
|
logger.warn("Can't get endpoint for unrecognised scheme %s", uri.scheme)
|
||||||
|
return None
|
||||||
|
return SpiderEndpoint(
|
||||||
|
reactor, uri.host, uri.port, self.blacklist, self.whitelist,
|
||||||
|
endpoint=endpoint_factory, endpoint_kw_args=dict(timeout=15),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SpiderHttpClient(SimpleHttpClient):
|
class SpiderHttpClient(SimpleHttpClient):
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from twisted.internet.endpoints import SSL4ClientEndpoint, TCP4ClientEndpoint
|
from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
from twisted.internet.error import ConnectError
|
from twisted.internet.error import ConnectError
|
||||||
from twisted.names import client, dns
|
from twisted.names import client, dns
|
||||||
|
@ -58,11 +58,13 @@ def matrix_federation_endpoint(reactor, destination, ssl_context_factory=None,
|
||||||
endpoint_kw_args.update(timeout=timeout)
|
endpoint_kw_args.update(timeout=timeout)
|
||||||
|
|
||||||
if ssl_context_factory is None:
|
if ssl_context_factory is None:
|
||||||
transport_endpoint = TCP4ClientEndpoint
|
transport_endpoint = HostnameEndpoint
|
||||||
default_port = 8008
|
default_port = 8008
|
||||||
else:
|
else:
|
||||||
transport_endpoint = SSL4ClientEndpoint
|
def transport_endpoint(reactor, host, port, timeout):
|
||||||
endpoint_kw_args.update(sslContextFactory=ssl_context_factory)
|
return wrapClientTLS(
|
||||||
|
ssl_context_factory,
|
||||||
|
HostnameEndpoint(reactor, host, port, timeout=timeout))
|
||||||
default_port = 8448
|
default_port = 8448
|
||||||
|
|
||||||
if port is None:
|
if port is None:
|
||||||
|
@ -80,7 +82,7 @@ class SpiderEndpoint(object):
|
||||||
Implements twisted.internet.interfaces.IStreamClientEndpoint.
|
Implements twisted.internet.interfaces.IStreamClientEndpoint.
|
||||||
"""
|
"""
|
||||||
def __init__(self, reactor, host, port, blacklist, whitelist,
|
def __init__(self, reactor, host, port, blacklist, whitelist,
|
||||||
endpoint=TCP4ClientEndpoint, endpoint_kw_args={}):
|
endpoint=HostnameEndpoint, endpoint_kw_args={}):
|
||||||
self.reactor = reactor
|
self.reactor = reactor
|
||||||
self.host = host
|
self.host = host
|
||||||
self.port = port
|
self.port = port
|
||||||
|
@ -118,7 +120,7 @@ class SRVClientEndpoint(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, reactor, service, domain, protocol="tcp",
|
def __init__(self, reactor, service, domain, protocol="tcp",
|
||||||
default_port=None, endpoint=TCP4ClientEndpoint,
|
default_port=None, endpoint=HostnameEndpoint,
|
||||||
endpoint_kw_args={}):
|
endpoint_kw_args={}):
|
||||||
self.reactor = reactor
|
self.reactor = reactor
|
||||||
self.service_name = "_%s._%s.%s" % (service, protocol, domain)
|
self.service_name = "_%s._%s.%s" % (service, protocol, domain)
|
||||||
|
|
|
@ -24,7 +24,7 @@ REQUIREMENTS = {
|
||||||
"signedjson>=1.0.0": ["signedjson>=1.0.0"],
|
"signedjson>=1.0.0": ["signedjson>=1.0.0"],
|
||||||
"pynacl==0.3.0": ["nacl==0.3.0", "nacl.bindings"],
|
"pynacl==0.3.0": ["nacl==0.3.0", "nacl.bindings"],
|
||||||
"service_identity>=1.0.0": ["service_identity>=1.0.0"],
|
"service_identity>=1.0.0": ["service_identity>=1.0.0"],
|
||||||
"Twisted>=15.1.0": ["twisted>=15.1.0"],
|
"Twisted>=16.0.0": ["twisted>=16.0.0"],
|
||||||
"pyopenssl>=0.14": ["OpenSSL>=0.14"],
|
"pyopenssl>=0.14": ["OpenSSL>=0.14"],
|
||||||
"pyyaml": ["yaml"],
|
"pyyaml": ["yaml"],
|
||||||
"pyasn1": ["pyasn1"],
|
"pyasn1": ["pyasn1"],
|
||||||
|
|
Loading…
Reference in New Issue