def search_service(self, pkg): """For HTTP, a service if not found by conventional method, the 'host' header can be used to determine destiny URL. The Service from 'host' header is searched the same way as a DNS cache answered. """ service = super().search_service(pkg) if service: return service if hasattr(pkg.http, 'host'): # When header host is IP addr, create service 'Unknown (IP)'. # If not, service will have name of the IP # The name must have info of the IP for the equals btw services if is_ipaddress(pkg.http.host): return Service.from_ip_only(pkg.http.host) else: name = get_significant_name_from_url(pkg.http.host) service = self.environment.service_analyzer.find_service_from_absolute_url( pkg.http.host ) or self.environment.service_analyzer.find_service_from_url( pkg.http.host) or Service.from_name(name) service.hosts.add(pkg.http.host) return service else: return None