From e5e80b693e32d05ba45215f344af1d67472e0a94 Mon Sep 17 00:00:00 2001 From: alessandro90 Date: Mon, 29 Jul 2019 20:57:28 +0200 Subject: [PATCH] Fix #6 Add cacert.pem also for async downloads --- src/threads.py | 9 +++++++-- src/utilities.py | 11 ++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/threads.py b/src/threads.py index 93ecc2d..ee64264 100644 --- a/src/threads.py +++ b/src/threads.py @@ -9,7 +9,8 @@ from zipfile import ZipFile import aiohttp from PyQt5.QtCore import QThread, pyqtSignal from constants import Constants, Database, ChecksumWhat -from utilities import checksum_ok, get_pool_manager +from utilities import checksum_ok, get_pool_manager, get_cacert_file +import ssl # Needed for pyinstaller compilation. import encodings.idna @@ -156,7 +157,11 @@ class _AsyncDownloader: async def _download_resource(self, session, link): """Return the content of 'link' as bytes.""" - resp = await session.get(link) + ssl_context = ssl.create_default_context( + purpose=ssl.Purpose.SERVER_AUTH, + cafile=get_cacert_file() + ) + resp = await session.get(link, ssl=ssl_context) return await resp.read() diff --git a/src/utilities.py b/src/utilities.py index b6e9a53..375ec88 100644 --- a/src/utilities.py +++ b/src/utilities.py @@ -54,13 +54,18 @@ def is_mac_os(): return sys.platform == 'darwin' -def get_pool_manager(): - """Return a urllib3.PoolManager object.""" +def get_cacert_file(): + """Return the path to the cacert.pem file.""" if hasattr(sys, "_MEIPASS"): ca_certs = os.path.join(sys._MEIPASS, 'cacert.pem') else: ca_certs = 'cacert.pem' - return urllib3.PoolManager(ca_certs=ca_certs) + return ca_certs + + +def get_pool_manager(): + """Return a urllib3.PoolManager object.""" + return urllib3.PoolManager(ca_certs=get_cacert_file()) def checksum_ok(data, what):