Changeset 3448 for branches/gajim_0.8.2

Show
Ignore:
Timestamp:
09/06/05 13:30:12 (3 years ago)
Author:
nk
Message:

overwtie transports.py [srv stuff]

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/gajim_0.8.2/src/common/xmpp/transports.py

    r3254 r3448  
    3333from protocol import * 
    3434 
     35# determine which DNS resolution library is available 
     36HAVE_DNSPYTHON = False 
     37HAVE_PYDNS = False 
    3538try: 
    36     import dns.resolver 
    37 except: 
    38     pass 
     39    import dns.resolver # http://dnspython.org/ 
     40    HAVE_DNSPYTHON = True 
     41except ImportError: 
     42    try: 
     43        import DNS # http://pydns.sf.net/ 
     44        HAVE_PYDNS = True 
     45    except ImportError: 
     46        print "Could not load one of the supported DNS libraries (dnspython or pydns). SRV records will not be queried and you may need to set custom hostname/port for some servers to be accessible." 
    3947 
    4048DATA_RECEIVED='DATA RECEIVED' 
     
    6169 
    6270        # SRV resolver 
    63         if 'dns' in globals(): # if dnspython is available support SRV 
     71        if HAVE_DNSPYTHON or HAVE_PYDNS: 
    6472            host, port = server 
    6573            possible_queries = ['_xmpp-client._tcp.' + host] 
     
    6775            for query in possible_queries: 
    6876                try: 
    69                     answers = [x for x in dns.resolver.query(query, 'SRV')] 
    70                     if answers: 
    71                         host = str (answers[0].target) 
    72                         port = int (answers[0].port) 
    73                         break 
     77                    if HAVE_DNSPYTHON: 
     78                        answers = [x for x in dns.resolver.query(query, 'SRV')] 
     79                        if answers: 
     80                            host = str (answers[0].target) 
     81                            port = int (answers[0].port) 
     82                            break 
     83                    elif HAVE_PYDNS: 
     84                        # ensure we haven't cached an old configuration 
     85                        DNS.ParseResolvConf() 
     86                        response = DNS.Request().req(query, qtype='SRV') 
     87                        answers = response.answers 
     88                        if len(answers) > 0: 
     89                            # ignore the priority and weight for now 
     90                            _, _, port, host = answers[0]['data'] 
     91                            del _ 
     92                            port = int(port) 
     93                            break 
    7494                except: 
    75                     pass 
    76  
     95                    print 'An error occurred while looking up %s' % query 
    7796            server = (host, port) 
    7897        # end of SRV resolver