Files
Hippolyzer/hippolyzer/lib/proxy/settings.py

39 lines
1.6 KiB
Python
Raw Normal View History

import os
from typing import *
from hippolyzer.lib.base.settings import Settings, SettingDescriptor
_T = TypeVar("_T")
class EnvSettingDescriptor(SettingDescriptor):
"""A setting that prefers to pull its value from the environment"""
__slots__ = ("_env_name", "_env_callable")
def __init__(self, default: Union[Callable[[], _T], _T], env_name: str, spec: Callable[[str], _T]):
super().__init__(default)
self._env_name = env_name
self._env_callable = spec
def __get__(self, obj, owner=None) -> _T:
val = os.getenv(self._env_name)
if val is not None:
return self._env_callable(val)
return super().__get__(obj, owner)
class ProxySettings(Settings):
SOCKS_PROXY_PORT: int = EnvSettingDescriptor(9061, "HIPPO_UDP_PORT", int)
HTTP_PROXY_PORT: int = EnvSettingDescriptor(9062, "HIPPO_HTTP_PORT", int)
2022-10-14 06:11:51 +00:00
LEAP_PORT: int = EnvSettingDescriptor(9063, "HIPPO_LEAP_PORT", int)
PROXY_BIND_ADDR: str = EnvSettingDescriptor("127.0.0.1", "HIPPO_BIND_HOST", str)
REMOTELY_ACCESSIBLE: bool = SettingDescriptor(False)
USE_VIEWER_OBJECT_CACHE: bool = SettingDescriptor(False)
# Whether having the proxy do automatic internal requests objects is allowed at all
ALLOW_AUTO_REQUEST_OBJECTS: bool = SettingDescriptor(True)
# Whether the viewer should request any directly referenced objects it didn't know about.
AUTOMATICALLY_REQUEST_MISSING_OBJECTS: bool = SettingDescriptor(False)
ADDON_SCRIPTS: List[str] = SettingDescriptor(list)
FILTERS: Dict[str, str] = SettingDescriptor(dict)
SSL_INSECURE: bool = SettingDescriptor(False)