Exemplo n.º 1
0
    def _fetchServers(self, host):
        try:
            service = "_matrix._tcp.%s" % host
            answers, auth, add = yield client.lookupService(service)
        except DNSNameError:
            answers = []

        if (len(answers) == 1
                and answers[0].type == dns.SRV
                and answers[0].payload
                and answers[0].payload.target == dns.Name(".")):
            raise DNSNameError("Service %s unavailable", service)

        servers = []

        for answer in answers:
            if answer.type != dns.SRV or not answer.payload:
                continue
            payload = answer.payload
            servers.append(ThreepidBinder._Server(
                host=str(payload.target),
                port=int(payload.port),
                priority=int(payload.priority),
                weight=int(payload.weight)
            ))

        servers.sort()
        defer.returnValue(servers)
 def __init__(self, errorMessage, dnsError=False):
     self.value = None
     if dnsError:
         self.value = Dummy()
         self.value.subFailure = Dummy()
         self.value.subFailure.value = DNSNameError(errorMessage)
     self.getErrorMessage = lambda: errorMessage
Exemplo n.º 3
0
    def test_SRVNotPresent(self):
        """
        Test connectTCP gets called with fallback parameters on NXDOMAIN.
        """
        client.theResolver.failure = DNSNameError(b'example.org')
        self.connector.connect()

        self.assertIsNone(self.factory.reason)
        self.assertEqual(self.reactor.tcpClients.pop()[:2],
                         ('example.org', 'xmpp-server'))
Exemplo n.º 4
0
    def test_SRVNotPresent(self):
        """
        Test connectTCP gets called with fallback parameters on NXDOMAIN.
        """
        client.theResolver.failure = DNSNameError('example.org')
        self.connector.connect()

        self.assertIdentical(None, self.factory.reason)
        self.assertEqual('example.org', self.reactor.host)
        self.assertEqual('xmpp-server', self.reactor.port)
Exemplo n.º 5
0
 def getHostByName(*args, **kwargs) -> Deferred:
     return fail(DNSNameError())