2021-04-30 17:30:24 +00:00
|
|
|
from pathlib import Path
|
|
|
|
|
import shutil
|
2021-05-27 04:04:04 +00:00
|
|
|
|
|
|
|
|
from hippolyzer.lib.proxy.viewer_settings import iter_viewer_config_dirs, has_settings_file
|
2021-04-30 17:30:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
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!")
|
2021-05-27 04:04:04 +00:00
|
|
|
if not has_settings_file(p):
|
2021-04-30 17:30:24 +00:00
|
|
|
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")
|
|
|
|
|
|
2021-05-27 04:04:04 +00:00
|
|
|
shutil.copy(mitmproxy_ca_path, p / "user_settings" / "CA.pem")
|
2021-04-30 17:30:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def setup_ca_everywhere(mitmproxy_master):
|
|
|
|
|
valid_paths = set()
|
2021-05-27 04:04:04 +00:00
|
|
|
paths = iter_viewer_config_dirs()
|
2021-04-30 17:30:24 +00:00
|
|
|
for path in paths:
|
|
|
|
|
try:
|
|
|
|
|
setup_ca(path, mitmproxy_master)
|
|
|
|
|
valid_paths.add(path)
|
|
|
|
|
except InvalidConfigDir:
|
|
|
|
|
pass
|
|
|
|
|
return valid_paths
|