33 lines
1.0 KiB
Python
Executable File
33 lines
1.0 KiB
Python
Executable File
import os
|
|
import ssl
|
|
from typing import Any, Dict, Optional, Union
|
|
|
|
from core.constants import MACOS, PLATFORM
|
|
|
|
if PLATFORM == MACOS:
|
|
import certifi
|
|
|
|
|
|
def requests_verify_arg(config) -> Union[bool, str]:
|
|
"""Argument for requests' verify= when calling the user's server."""
|
|
path = (config.data.get("ssl_ca_bundle") or "").strip()
|
|
if not path:
|
|
return True
|
|
if not os.path.isfile(path):
|
|
raise FileNotFoundError(f"SSL CA bundle file not found: {path}")
|
|
return path
|
|
|
|
|
|
def websocket_sslopt_for_config(config) -> Optional[Dict[str, Any]]:
|
|
"""sslopt for websocket_client run_forever; None uses the library/OS default."""
|
|
path = (config.data.get("ssl_ca_bundle") or "").strip()
|
|
if path:
|
|
if not os.path.isfile(path):
|
|
raise FileNotFoundError(f"SSL CA bundle file not found: {path}")
|
|
ctx = ssl.create_default_context(cafile=path)
|
|
return {"context": ctx}
|
|
if PLATFORM == MACOS:
|
|
ctx = ssl.create_default_context(cafile=certifi.where())
|
|
return {"context": ctx}
|
|
return None
|