Files
Hippolyzer/hippolyzer/lib/proxy/ca_utils.py
2021-04-30 17:30:24 +00:00

50 lines
1.5 KiB
Python

from pathlib import Path
import shutil
import sys
class InvalidConfigDir(Exception):
pass
def setup_ca(config_path, mitmproxy_master):
p = Path(config_path)
if not p.exists():
raise InvalidConfigDir("Config path does not exist!")
settings_path = p / "user_settings"
if not (settings_path / "settings.xml").exists():
raise InvalidConfigDir("Path is not a second life config dir!")
mitmproxy_conf_dir = Path(mitmproxy_master.options.confdir)
mitmproxy_ca_path = (mitmproxy_conf_dir.expanduser() / "mitmproxy-ca-cert.pem")
shutil.copy(mitmproxy_ca_path, settings_path / "CA.pem")
def setup_ca_everywhere(mitmproxy_master):
valid_paths = set()
paths = _viewer_config_dir_iter()
for path in paths:
try:
setup_ca(path, mitmproxy_master)
valid_paths.add(path)
except InvalidConfigDir:
pass
except PermissionError:
pass
return valid_paths
def _viewer_config_dir_iter():
if sys.platform.startswith("linux"):
paths = (x for x in Path.home().iterdir() if x.name.startswith("."))
elif sys.platform == "darwin":
paths = (Path.home() / "Library" / "Application Support").iterdir()
elif sys.platform in ("win32", "msys", "cygwin"):
paths = (Path.home() / "AppData" / "Local").iterdir()
else:
raise Exception("Unknown OS, can't locate viewer config dirs!")
return (path for path in paths if path.is_dir())