diff --git a/flask_soc_site/src/host_lookup.py b/flask_soc_site/src/host_lookup.py index ccc19dd..03ee1cf 100644 --- a/flask_soc_site/src/host_lookup.py +++ b/flask_soc_site/src/host_lookup.py @@ -7,6 +7,7 @@ from checkdmarc.spf import check_spf import validators from ipwhois import IPWhois from whois import whois +import requests # from constants import DOMAIN, EMAIL, IPV4, IPV6, URL from . import abuseipdb_api, virustotal_api @@ -76,6 +77,7 @@ def sanitize(user_input): return sanitized +# FIX: This has already been done by the function 'extract'. Consolidate. def determine(host): host_type = "" if validators.url(host): @@ -93,17 +95,33 @@ def determine(host): return host_type +def online(host): + if host.startswith("http://", "https://"): + try: + requests.get(host) + return True + except requests.exceptions.ConnectionError: + return False + else: + host = "https://" + host + try: + requests.get(host) + return True + except requests.exceptions.ConnectionError: + return False + + def extract(user_input): hosts = [] errors = [] for item in user_input: - if validators.url(item): + if validators.url(item) and online(item): hosts.append(item) - elif validators.domain(item): + elif validators.domain(item) and online(item): hosts.append(item) - elif validators.ip_address.ipv4(item): + elif validators.ip_address.ipv4(item) and online(item): hosts.append(item) - elif validators.ip_address.ipv6(item): + elif validators.ip_address.ipv6(item) and online(item): hosts.append(item) elif validators.email(item): hosts.append(item)