diff options
author | Micah Lee <micah@micahflee.com> | 2022-10-02 14:58:15 -0700 |
---|---|---|
committer | Micah Lee <micah@micahflee.com> | 2022-10-02 14:58:15 -0700 |
commit | db089d7816d6a6c890929a2885a679b5b58bf0fe (patch) | |
tree | 2be2d704350caa64174f8776ccaeea7910ccfab1 /desktop/scripts | |
parent | ac1eeae48e9722f11d80209257a5019221725c62 (diff) | |
download | onionshare-db089d7816d6a6c890929a2885a679b5b58bf0fe.tar.gz onionshare-db089d7816d6a6c890929a2885a679b5b58bf0fe.zip |
Replace request to censorship API to get built-in bridges with a request to tor's source code
Diffstat (limited to 'desktop/scripts')
-rw-r--r-- | desktop/scripts/get-tor.py | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/desktop/scripts/get-tor.py b/desktop/scripts/get-tor.py index 0f67fde8..3e6dc053 100644 --- a/desktop/scripts/get-tor.py +++ b/desktop/scripts/get-tor.py @@ -286,46 +286,46 @@ def update_tor_bridges(): torrc_template_dir = os.path.join( root_path, os.pardir, "cli/onionshare_cli/resources" ) - endpoint = "https://bridges.torproject.org/moat/circumvention/builtin" - r = requests.post( - endpoint, - headers={"Content-Type": "application/vnd.api+json"}, - ) + + r = requests.get("https://gitweb.torproject.org/builders/tor-browser-build.git/plain/projects/tor-browser/Bundle-Data/PTConfigs/bridge_prefs.js") if r.status_code != 200: print( f"There was a problem fetching the latest built-in bridges: status_code={r.status_code}" ) return False - - result = r.json() - print(f"Built-in bridges: {result}") - - if "errors" in result: - print( - f"There was a problem fetching the latest built-in bridges: errors={result['errors']}" + + # Parse the bridges from this javascript file + bridges = {} + for line in r.content.decode().split("\n"): + if line.startswith('pref("extensions.torlauncher.default_bridge.'): + i = line.index('", "') + 4 + bridge = line[i:].rstrip('");') + + bridge_type = bridge.split()[0] + if bridge_type not in bridges: + bridges[bridge_type] = [] + + bridges[bridge_type].append(bridge) + + for bridge_type in bridges: + if bridge_type == "meek_lite": + torrc_template_extension = "meek_lite_azure" + else: + torrc_template_extension = bridge_type + + torrc_template = os.path.join( + root_path, + torrc_template_dir, + f"torrc_template-{torrc_template_extension}", ) - return False - for bridge_type in ["meek-azure", "obfs4", "snowflake"]: - if bridge_type in result and result[bridge_type]: - if bridge_type == "meek-azure": - torrc_template_extension = "meek_lite_azure" - else: - torrc_template_extension = bridge_type - torrc_template = os.path.join( - root_path, - torrc_template_dir, - f"torrc_template-{torrc_template_extension}", - ) - - with open(torrc_template, "w") as f: - f.write(f"# Enable built-in {bridge_type} bridge\n") - bridges = result[bridge_type] - # Sorts the bridges numerically by IP, since they come back in - # random order from the API each time, and create noisy git diff. - bridges.sort(key=lambda s: s.split()[1]) - for item in bridges: - f.write(f"Bridge {item}\n") + with open(torrc_template, "w") as f: + f.write(f"# Enable built-in {bridge_type} bridge\n") + # Sorts the bridges numerically by IP, since they come back in + # random order from the API each time, and create noisy git diff. + bridges[bridge_type].sort(key=lambda s: s.split()[1]) + for item in bridges[bridge_type]: + f.write(f"Bridge {item}\n") @click.command() |