diff --git a/opnsense/main.py b/opnsense/main.py index 1a35b60..8387031 100644 --- a/opnsense/main.py +++ b/opnsense/main.py @@ -1,6 +1,6 @@ import requests, schedule, time from bs4 import BeautifulSoup -from whatDomain import * +from whatDomain import ermWhatAAAATheIpFromDomainYaCrazy, ermWhatATheIpFromDomainYaCrazy @@ -9,25 +9,9 @@ IPv4FILE = "./OPNS_MirrorListV4" IPv6FILE = "./OPNS_MirrorListV6" -# Define EU and American countries as well as Security for security updates -target_countries = set([ - # Europe - "Austria", "Belgium", "Bulgaria", "Croatia", "Czech Republic", "Denmark", - "Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Iceland", - "Ireland", "Italy", "Latvia", "Lithuania", "Netherlands", "Norway", "Poland", - "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden", "Switzerland", - "United Kingdom", "Moldova", - # America - "Argentina", "Brazil", "Canada", "Chile", "Colombia", "Costa Rica", "Ecuador", - "Mexico", "Peru", "United States", "Uruguay", "Venezuela", - # Others - "Security", "Extras" -]) - - def sanitizeURL(inpurl: str): - # if not "/" in inpurl[:-1]: - # inpurl += "/" + if not "/" in inpurl[:-1]: + inpurl += "/" if "https://" in inpurl: outurl = inpurl[8:] elif "http://" in inpurl: @@ -159,6 +143,25 @@ def LeJob(): # time.sleep(30) #Wait one minute # # LeJob() + +def DNSerrHandling(inpErrorCode: int): + + match inpErrorCode: + case -1: + return "No answer from dns server." + case -2: + # return "All nameservers failed to answer the query." + print("All nameservers failed to answer the query.\n Fix your DNS servers.") + exit(-1) + case -3: + return "The DNS query name does not exist." + case -4: + return "The DNS querry got timed out." + case _: + return "Not implemented" + + + gigalist = [] payload = requests.get(OPNSNSMIRRORURL) @@ -179,11 +182,12 @@ for data in soup.find_all('div', class_='download_section'): IPv4Dict = ermWhatATheIpFromDomainYaCrazy(saniturl) IPv6Dict = ermWhatAAAATheIpFromDomainYaCrazy(saniturl) - if IPv4Dict == -1: - print(f"ERROR RESOLVING {saniturl} IPv4 address") + + if type(IPv4Dict) == int: + print(f"{DNSerrHandling(IPv4Dict)}") continue - elif IPv6Dict == -1: - print(f"ERROR RESOLVING {saniturl} IPv6 address") + elif type(IPv6Dict) == int: + print(f"ERROR RESOLVING {saniturl} IPv6 address with error code {IPv6Dict}") continue for key, ip in IPv4Dict.items(): diff --git a/opnsense/whatDomain.py b/opnsense/whatDomain.py index 4661278..1b22887 100644 --- a/opnsense/whatDomain.py +++ b/opnsense/whatDomain.py @@ -22,8 +22,12 @@ def ermWhatATheIpFromDomainYaCrazy(inpDomainNameOrSomething: Annotated[str, "Dom result = dns.resolver.resolve(inpDomainNameOrSomething, 'A') except dns.resolver.NoAnswer: return -1 - except dns.resolver.NoNameservers or dns.resolver.LifetimeTimeout: - return -1 + except dns.resolver.NoNameservers: + return -2 + except dns.resolver.NXDOMAIN: + return -3 + except dns.resolver.LifetimeTimeout: + return -4 for i, something in enumerate(result): outDict[i] = something.to_text() # i += 1 @@ -49,8 +53,12 @@ def ermWhatAAAATheIpFromDomainYaCrazy(inpDomainNameOrSomething: Annotated[str, " result = dns.resolver.resolve(inpDomainNameOrSomething, 'AAAA') except dns.resolver.NoAnswer: return -1 - except dns.resolver.NoNameservers or dns.resolver.LifetimeTimeout: - return -1 + except dns.resolver.NoNameservers: + return -2 + except dns.resolver.NXDOMAIN: + return -3 + except dns.resolver.LifetimeTimeout: + return -4 for i, something in enumerate(result): outDict[i] = something.to_text() # i += 1 @@ -80,7 +88,11 @@ def ermWhatPTRTheIpFromDomainYaCrazy(inpIpAddressOrSomething: Annotated[str, "IP except dns.resolver.NoAnswer: return -1 except dns.resolver.NoNameservers: - return -1 + return -2 + except dns.resolver.NXDOMAIN: + return -3 + except dns.resolver.LifetimeTimeout: + return -4 for i, something in enumerate(result): outDict[i] = something.to_text() # i += 1