def __init_with_url(self): """ Initialize with an URL (when targeting HTTP). This method updates: URL, Hostname, IP, Port :raises TargetException: Exception raised if DNS lookup fails """ self.service.url = WebUtils.add_prefix_http(self.service.url) self.service.url = WebUtils.remove_ending_slash(self.service.url) url = urlparse(self.service.url) if NetUtils.is_valid_ip(url.hostname): self.service.host.ip = url.hostname self.service.host.hostname = url.hostname # updated in smart_check else: self.service.host.ip = NetUtils.dns_lookup(url.hostname) if not self.service.host.ip: raise TargetException('Unable to resolve {}'.format( url.hostname)) self.service.host.hostname = url.hostname if not self.service.port: self.service.port = WebUtils.get_port_from_url(self.service.url) if not NetUtils.is_valid_port(self.service.port): raise TargetException('Invalid port number {}'.format( self.service.port))
def __init_with_ip_port(self, ip, port, ssl): if not NetUtils.is_valid_ip(ip): raise TargetException('Invalid IP address') if not NetUtils.is_valid_port(port): raise TargetException('Invalid port number {}'.format(port)) self.ip = ip self.port = port self.url = 'http{s}://{ip}:{port}'.format(s='s' if self.ssl else '', ip=self.ip, port=self.port)
def __init_with_url(self, url): p = urlparse(url) if NetUtils.is_valid_ip(p.hostname): self.ip = p.hostname else: self.ip = NetUtils.dns_lookup(p.hostname) if not self.ip: raise TargetException('Unable to resolve {}'.format(p.hostname)) self.port = NetUtils.get_port_from_url(url) if not NetUtils.is_valid_port(self.port): raise TargetException('Invalid port number {}'.format(self.port)) if url.lower().startswith('https://'): self.ssl = True
def __init_with_ip(self): """ Initialize with an IP address or a hostname. This method updates: Hostname, IP :raises TargetException: Exception raised if DNS lookup fails """ if NetUtils.is_valid_ip(self.service.host.ip): self.service.host.hostname = str(self.service.host.ip) # updated in smart_check else: # host.ip actually stores a hostname at this point, a DNS lookup is needed self.service.host.hostname = self.service.host.ip self.service.host.ip = NetUtils.dns_lookup( self.service.host.hostname) if self.service.host.ip: logger.info('DNS lookup on {hostname} -> IP: {ip}'.format( hostname=self.service.host.hostname, ip=self.service.host.ip)) else: raise TargetException('Unable to resolve {}'.format( self.service.host.hostname)) # Forge URL for http services if self.service.name == 'http': if self.get_specific_option_value('https'): proto = 'https' else: proto = 'http' self.service.url = '{proto}://{ip}:{port}'.format( proto=proto, ip=self.service.host.ip, port=self.service.port)