Commit 689a1da0 authored by Julien Cristau's avatar Julien Cristau

mirror-health: don't (ab)use the proxy interface

monkey-patch urllib3.util.connection.create_connection to override
address resolution, which is ugly but makes this work with https.
parent 9728596b
......@@ -7,6 +7,8 @@ import calendar
import logging
import subprocess
from email.utils import parsedate
import urllib3.util.connection
logging.basicConfig(level=logging.INFO)
if 'MIRROR_CHECK_HOSTS' in os.environ:
......@@ -21,12 +23,16 @@ HEALTH_CHECK_URL = os.environ['MIRROR_CHECK_HEALTH_URL']
INTERVAL = int(os.environ.get('MIRROR_CHECK_INTERVAL', '60'))
def retrieve_from_host(host, url):
proxies = {
'http': 'http://{}:80'.format(host),
'https': 'http://{}:443'.format(host),
}
orig_create_connection = urllib3.util.connection.create_connection
def patched_create_connection(address, *args, **kwargs):
_host, port = address
return orig_create_connection((host, port), *args, **kwargs)
headers = {'User-Agent': 'mirror-health'}
return requests.get(url, headers=headers, timeout=5, proxies=proxies, allow_redirects=False)
urllib3.util.connection.create_connection = patched_create_connection
try:
return requests.get(url, headers=headers, timeout=5, allow_redirects=False)
finally:
urllib3.util.connection.create_connection = orig_create_connection
def last_modified(response):
lm = 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment