- DNS.ParseResolvConf()
- dns_req = DNS.DnsRequest(name=host, qtype='TXT')
- res = dns_req.req()
- for answer in res.answers:
- if 'data' in answer and (isinstance(answer['data'], list) or isinstance(answer['data'], tuple)):
- for entry in answer['data']:
- parts = entry.split('=')
- if len(parts) > 1 and parts[0].lower().strip() == 'rizon_vhost':
- if parts[1].strip() == '*':
- return True
- nicks = [n.lower().strip() for n in parts[1].split(',')]
- if nick.lower() in nicks:
- return True
+ try:
+ DNS.ParseResolvConf()
+ dns_req = DNS.DnsRequest(name=host, qtype='TXT', timeout=10)
+ res = dns_req.req()
+ for answer in res.answers:
+ if 'data' in answer and (isinstance(answer['data'], list) or isinstance(answer['data'], tuple)):
+ for entry in answer['data']:
+ parts = entry.split('=')
+ if len(parts) > 1 and parts[0].lower().strip() == 'rizon_vhost':
+ if parts[1].strip() == '*':
+ return (True, "")
+ nicks = [n.lower().strip() for n in parts[1].split(',')]
+ if nick.lower() in nicks:
+ return (True, "")
+ return (False, "")
+ except DNS.TimeoutError, e:
+ return (False, "timeout")
+ except Exception, e:
+ return (False, str(e))