tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

configuration_loader.py (3876B)


      1 # mypy: allow-untyped-defs
      2 
      3 import json
      4 import os
      5 
      6 from tools.wpt import wpt
      7 
      8 DEFAULT_CONFIGURATION_FILE_PATH = os.path.join(wpt.localpaths.repo_root, "./tools/wave/config.default.json")
      9 
     10 
     11 def load(configuration_file_path):
     12    configuration = {}
     13    if configuration_file_path:
     14        configuration = load_configuration_file(configuration_file_path)
     15    default_configuration = load_configuration_file(
     16        DEFAULT_CONFIGURATION_FILE_PATH)
     17 
     18    configuration["wpt_port"] = configuration.get(
     19        "ports", default_configuration["ports"]).get(
     20        "http", default_configuration["ports"]["http"])[0]
     21    configuration["wpt_ssl_port"] = configuration.get(
     22        "ports", default_configuration["ports"]).get(
     23        "https", default_configuration["ports"]["https"])[0]
     24 
     25    web_root = configuration.get(
     26        "wave", default_configuration["wave"]).get(
     27        "web_root", default_configuration["wave"]["web_root"])
     28    if not web_root.startswith("/"):
     29        web_root = "/" + web_root
     30    if not web_root.endswith("/"):
     31        web_root += "/"
     32    configuration["web_root"] = web_root
     33 
     34    configuration["results_directory_path"] = configuration.get(
     35        "wave", default_configuration["wave"]).get(
     36        "results", default_configuration["wave"]["results"])
     37 
     38    configuration["timeouts"] = {}
     39    configuration["timeouts"]["automatic"] = configuration.get(
     40        "wave", default_configuration["wave"]).get(
     41        "timeouts", default_configuration["wave"]["timeouts"]).get(
     42        "automatic", default_configuration["wave"]["timeouts"]["automatic"])
     43    configuration["timeouts"]["manual"] = configuration.get(
     44        "wave", default_configuration["wave"]).get(
     45        "timeouts", default_configuration["wave"]["timeouts"]).get(
     46        "manual", default_configuration["wave"]["timeouts"]["manual"])
     47 
     48    configuration["hostname"] = configuration.get(
     49        "browser_host", default_configuration["browser_host"])
     50 
     51    configuration["import_results_enabled"] = configuration.get(
     52        "wave", default_configuration["wave"]).get(
     53        "enable_import_results",
     54        default_configuration["wave"]["enable_import_results"])
     55 
     56    configuration["read_sessions_enabled"] = configuration.get(
     57        "wave", default_configuration["wave"]).get(
     58        "enable_read_sessions",
     59        default_configuration["wave"]["enable_read_sessions"])
     60 
     61    configuration["persisting_interval"] = configuration.get(
     62        "wave", default_configuration["wave"]).get(
     63        "persisting_interval", default_configuration["wave"]["persisting_interval"])
     64 
     65    configuration["event_cache_duration"] = configuration.get(
     66        "wave", default_configuration["wave"]).get(
     67        "event_cache_duration", default_configuration["wave"]["event_cache_duration"])
     68 
     69    configuration["tests_directory_path"] = os.getcwd()
     70 
     71    configuration["manifest_file_path"] = os.path.join(
     72        os.getcwd(), "MANIFEST.json")
     73 
     74    configuration["api_titles"] = configuration.get(
     75        "wave", default_configuration["wave"]).get(
     76        "api_titles", default_configuration["wave"]["api_titles"])
     77 
     78    configuration["enable_test_type_selection"] = configuration.get(
     79        "wave", default_configuration["wave"]).get(
     80        "enable_test_type_selection", default_configuration["wave"]["enable_test_type_selection"])
     81 
     82    configuration["enable_test_file_selection"] = configuration.get(
     83        "wave", default_configuration["wave"]).get(
     84        "enable_test_file_selection", default_configuration["wave"]["enable_test_file_selection"])
     85 
     86    return configuration
     87 
     88 
     89 def load_configuration_file(path):
     90    if not os.path.isfile(path):
     91        return {}
     92 
     93    configuration = None
     94    with open(path) as configuration_file:
     95        configuration_file_content = configuration_file.read()
     96        configuration = json.loads(configuration_file_content)
     97    return configuration