Absolute DNS lookups
This commit is contained in:
parent
d27dd89a1f
commit
d707eef267
32
check.py
32
check.py
|
@ -11,7 +11,33 @@ from email.mime.text import MIMEText
|
|||
from email.utils import formatdate, make_msgid
|
||||
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter
|
||||
from urllib3.exceptions import InsecureRequestWarning # type: ignore
|
||||
from urllib3.util.url import parse_url # type: ignore
|
||||
|
||||
|
||||
class AbsoluteDNSAdapter(HTTPAdapter):
|
||||
"""A custom adapter for requests to ensure hostnames are treated as absolute."""
|
||||
|
||||
def add_dot_to_hostname(self, url: str) -> str:
|
||||
"""Append a dot to the hostname to treat it as an absolute domain name."""
|
||||
parsed_url = parse_url(url)
|
||||
|
||||
# Append a dot to the hostname if it's not already there.
|
||||
hostname = parsed_url.host
|
||||
if not hostname.endswith("."):
|
||||
hostname += "."
|
||||
|
||||
# Reconstruct the URL with the modified hostname.
|
||||
new_url: str = parsed_url._replace(host=hostname).url
|
||||
return new_url
|
||||
|
||||
def send(self, request, **kwargs): # type: ignore
|
||||
"""Override the send method to modify the request URL before sending."""
|
||||
# Modify the request URL to ensure the hostname is treated as absolute.
|
||||
request.url = self.add_dot_to_hostname(request.url)
|
||||
return super().send(request, **kwargs)
|
||||
|
||||
|
||||
config_file_path = os.path.expanduser(
|
||||
os.path.join(
|
||||
|
@ -35,6 +61,12 @@ headers = {"User-Agent": AGENT, "Accept": "text/html"}
|
|||
s = requests.Session()
|
||||
s.headers.update(headers)
|
||||
|
||||
# Create a session and mount the custom adapter for both HTTP and HTTPS requests.
|
||||
adapter = AbsoluteDNSAdapter()
|
||||
s.mount("http://", adapter)
|
||||
s.mount("https://", adapter)
|
||||
|
||||
|
||||
MAIL_FROM = "edward@4angle.com"
|
||||
MAIL_TO_NAME = "Edward Betts"
|
||||
MAIL_TO_ADDRESS = "edward@4angle.com"
|
||||
|
|
Loading…
Reference in a new issue