Merge "Add exception `SatoriInvalidDomain`"

This commit is contained in:
Jenkins 2014-04-01 16:02:01 +00:00 committed by Gerrit Code Review
commit 70cc26801f
3 changed files with 31 additions and 7 deletions

View File

@ -38,11 +38,15 @@ def resolve_hostname(host):
LOG.exception(error)
raise errors.SatoriInvalidNetloc(error)
# Domain names are in netloc, IP addresses fall into path
# Domain names and IP are in netloc when parsed with a protocol
# they will be in path if parsed without a protocol
hostname = parsed.netloc or parsed.path
# socket.gaierror is not trapped here
address = socket.gethostbyname(hostname)
try:
address = socket.gethostbyname(hostname)
except socket.gaierror:
error = "`%s` is an invalid domain." % hostname
raise errors.SatoriInvalidDomain(error)
return address
@ -53,8 +57,12 @@ def get_registered_domain(hostname):
def domain_info(domain):
"""Get as much information as possible for a given domain name."""
domain = get_registered_domain(domain)
result = pythonwhois.get_whois(domain)
registered_domain = get_registered_domain(domain)
if utils.is_valid_ip_address(domain) or registered_domain == '':
error = "`%s` is an invalid domain." % domain
raise errors.SatoriInvalidDomain(error)
result = pythonwhois.get_whois(registered_domain)
registrar = []
if 'registrar' in result and len(result['registrar']) > 0:
registrar = result['registrar'][0]
@ -72,7 +80,7 @@ def domain_info(domain):
days_until_expires = (utils.parse_time_string(expires) -
datetime.datetime.now()).days
return {
'name': domain,
'name': registered_domain,
'whois': result['raw'],
'registrar': registrar,
'nameservers': nameservers,

View File

@ -26,6 +26,11 @@ class SatoriInvalidNetloc(SatoriException):
"""Netloc that cannot be parsed by `urlparse`."""
class SatoriInvalidDomain(SatoriException):
"""Invalid Domain provided."""
class SatoriShellException(SatoriException):
"""Invalid shell parameters."""

View File

@ -12,7 +12,6 @@
#
"""Satori DNS Discovery."""
import datetime
import socket
import unittest
@ -265,5 +264,17 @@ class TestDNS(utils.TestCase):
data = dns.domain_info(self.domain)
self.assertIsNone(data['expiration_date'])
def test_domain_info_raises_invalid_domain_error(self):
ip_whois = ["""
Home net HOME-NET-192-168 (NET-192-0-0-0-1)
Home Inc. HOME-NET-192-168-0 (NET-192-168-0-0-1)
"""]
self.mock_get_whois_raw.return_value = ip_whois
self.assertRaises(
errors.SatoriInvalidDomain,
dns.domain_info,
"192.168.0.1"
)
if __name__ == "__main__":
unittest.main()