Esempio n. 1
0
def dns_A_resolve (addr, resolve):
        "resolve asynchronously a named address to a numeric one"
        def resolved (request):
                if request.dns_resources:
                        resolve ((request.dns_resources[0], addr[1]))
                else:
                        resolve (None)
        dns_client.lookup ((addr[0], 'A'), resolved)
Esempio n. 2
0
def dns_A_resolve(addr, resolve):
    "resolve asynchronously a named address to a numeric one"

    def resolved(request):
        if request.dns_resources:
            resolve((request.dns_resources[0], addr[1]))
        else:
            resolve(None)

    dns_client.lookup((addr[0], 'A'), resolved)
Esempio n. 3
0
def dns_PTR_resolve(addr, resolve):
    "resolve asynchronously an numeric IP address to a named one"

    def resolved(request):
        if request.dns_resources:
            resolve((request.dns_resources[0], addr[1]))
        else:
            resolve(None)

    dns_client.lookup((ip_peer.in_addr_arpa(addr[0]), 'PTR'), resolved)
Esempio n. 4
0
def dns_PTR_resolve (addr, resolve):
        "resolve asynchronously an numeric IP address to a named one"
        def resolved (request):
                if request.dns_resources:
                        resolve ((request.dns_resources[0], addr[1]))
                else:
                        resolve (None)
        
        dns_client.lookup ((
                ip_peer.in_addr_arpa (addr[0]), 'PTR'
                ), resolved)
def connect(domain):
    dispatcher = Pipeline()

    def resolve(request):
        if not request.dns_resources:
            return

        dispatcher.mx_records = request.dns_resources[:]  # copy!
        tcp_client.connect(dispatcher, (dispatcher.mx_records.pop(0), 25))

    dns_client.lookup((domain, 'MX'), resolve)
    return dispatcher
def connect (domain):
        dispatcher = Pipeline ()
        def resolve (request):
                if not request.dns_resources:
                        return 
                
                dispatcher.mx_records = request.dns_resources[:] # copy!
                tcp_client.connect (
                        dispatcher, (dispatcher.mx_records.pop (0), 25)
                        )
                                                
        dns_client.lookup ((domain, 'MX'), resolve)
        return dispatcher
Esempio n. 7
0
    def resolve_PTR(request):
        if request.dns_resources:
            name = request.dns_resources[0]

            def resolve_A(request):
                if (request.dns_resources
                        and request.dns_resources[0] == addr[0]):
                    resolve((name, addr[1]))
                else:
                    resolve(None)

            dns_client.lookup((name, 'A'), resolve_A)
        else:
            resolve(None)
Esempio n. 8
0
        def resolve_PTR (request):
                if request.dns_resources:
                        name = request.dns_resources[0]
                        def resolve_A (request):
                                if (
                                        request.dns_resources and 
                                        request.dns_resources[0] == addr[0]
                                        ):
                                        resolve ((name, addr[1]))
                                else:
                                        resolve (None)

                        dns_client.lookup ((name, 'A'), resolve_A)
                else:
                        resolve (None)
Esempio n. 9
0
def dns_double_lookup(addr, resolve):
    "resolve the name of a numeric IP address if it is reversed"

    def resolve_PTR(request):
        if request.dns_resources:
            name = request.dns_resources[0]

            def resolve_A(request):
                if (request.dns_resources
                        and request.dns_resources[0] == addr[0]):
                    resolve((name, addr[1]))
                else:
                    resolve(None)

            dns_client.lookup((name, 'A'), resolve_A)
        else:
            resolve(None)

    dns_client.lookup((ip_peer.in_addr_arpa(addr[0]), 'PTR'), resolve_PTR)
Esempio n. 10
0
def dns_double_lookup (addr, resolve):
        "resolve the name of a numeric IP address if it is reversed"
        def resolve_PTR (request):
                if request.dns_resources:
                        name = request.dns_resources[0]
                        def resolve_A (request):
                                if (
                                        request.dns_resources and 
                                        request.dns_resources[0] == addr[0]
                                        ):
                                        resolve ((name, addr[1]))
                                else:
                                        resolve (None)

                        dns_client.lookup ((name, 'A'), resolve_A)
                else:
                        resolve (None)
        
        dns_client.lookup ((
                ip_peer.in_addr_arpa (addr[0]), 'PTR'
                ), resolve_PTR)
Esempio n. 11
0
def test_lookup(info):
    def resolved(request):
        loginfo.log('%r' % (request.__dict__, ), info)

    # lookup A, MX, NS and PTR resource records
    dns_client.lookup(('www.google.be', 'A'), resolved)
    dns_client.lookup(('google.be', 'MX'), resolved)
    dns_client.lookup(('google.be', 'NS'), resolved)
    dns_client.lookup(('215.247.47.195.in-addr.arpa', 'PTR'), resolved)
    # lookup the same question twice
    dns_client.lookup(('www.google.be', 'A'), resolved)
    # try an error
    dns_client.lookup(('www.google', 'A'), resolved)
    # and failing server/IP addresses
    dns_client.lookup(('www.google.com', 'A'), resolved, (
        '192.168.1.3',
        'not-a-valid-IP-address',
        '192.168.1.1',
    ))
Esempio n. 12
0
                )
        sys.exit (1)
        
servers = None
if len (sys.argv) > 2:
        question = tuple (sys.argv[1:3])
        if len (sys.argv) > 3:
                servers = sys.argv[3:]
else:
        question = (sys.argv[1], 'A')
def resolved (request):
        model = list (request.dns_question)
        if request.dns_resources == None:
                model.append ('')
        elif len (request.dns_resources) > 1:
                model.append (netstring.encode (
                        request.dns_resources
                        ))
        elif request.dns_resources:
                model.append (request.dns_resources[0])
        else:
                model.append ('')
        model.append (request.dns_peer[0])
        loginfo.log (netstring.encode (model))
        
if question[1] == 'PTR':
        question = (ip_peer.in_addr_arpa (question[0]), question[1])
dns_client.lookup (question, resolved, servers)
async_loop.dispatch ()
assert None == finalization.collect ()
sys.exit (0)
Esempio n. 13
0
def test_lookup (info):
        def resolved (request):
            loginfo.log ('%r' % (request.__dict__, ), info)
        
        # lookup A, MX, NS and PTR resource records
        dns_client.lookup (('www.google.be', 'A'), resolved)
        dns_client.lookup (('google.be', 'MX'), resolved)
        dns_client.lookup (('google.be', 'NS'), resolved)
        dns_client.lookup ((
            '215.247.47.195.in-addr.arpa', 'PTR'
            ), resolved)
        # lookup the same question twice
        dns_client.lookup (('www.google.be', 'A'), resolved)
        # try an error
        dns_client.lookup (('www.google', 'A'), resolved)
        # and failing server/IP addresses
        dns_client.lookup (('www.google.com', 'A'), resolved, (
                '192.168.1.3', 'not-a-valid-IP-address', '192.168.1.1', 
                ))