Fixed plugin installation ssl verification issue (#101)

* Added cert location debugging

* Install certifi

* Try adding manual cacert in install request

* Properly use ssl

* More efficiently load ssl certificate
This commit is contained in:
WerWolv
2022-07-03 08:29:46 +02:00
committed by GitHub
parent 1e6b3edbf2
commit baa02c129f
4 changed files with 13 additions and 3 deletions

View File

@@ -13,6 +13,8 @@ from subprocess import Popen
import json
import helpers
class PluginInstallContext:
def __init__(self, artifact, name, version, hash) -> None:
self.artifact = artifact
@@ -72,7 +74,7 @@ class PluginBrowser:
self.log.info(f"Installing {name} (Version: {version})")
async with ClientSession() as client:
self.log.debug(f"Fetching {artifact}")
res = await client.get(artifact)
res = await client.get(artifact, ssl=helpers.get_ssl_context())
if res.status == 200:
self.log.debug("Got 200. Reading...")
data = await res.read()

7
backend/helpers.py Normal file
View File

@@ -0,0 +1,7 @@
import ssl
import certifi
ssl_ctx = ssl.create_default_context(cafile=certifi.where())
def get_ssl_context():
return ssl_ctx

View File

@@ -4,7 +4,7 @@ from json.decoder import JSONDecodeError
from aiohttp import ClientSession, web
from injector import inject_to_tab
import helpers
class Utilities:
def __init__(self, context) -> None:
@@ -48,7 +48,7 @@ class Utilities:
async def http_request(self, method="", url="", **kwargs):
async with ClientSession() as web:
async with web.request(method, url, **kwargs) as res:
async with web.request(method, url, ssl=helpers.get_ssl_context(), **kwargs) as res:
return {
"status": res.status,
"headers": dict(res.headers),