#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ OnionShare | https://onionshare.org/ Copyright (C) 2014-2021 Micah Lee, et al. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ """ This script downloads a pre-built tor binary to bundle with OnionShare. In order to avoid a Mac gnupg dependency, I manually verify the signature and hard-code the sha256 hash. """ import shutil import os import subprocess import inspect def main(): if shutil.which("go") is None: print("Install go: https://golang.org/doc/install") return subprocess.run( [ "go", "install", "git.torproject.org/pluggable-transports/meek.git/meek-client@v0.37.0", ] ) root_path = os.path.dirname( os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) ) dist_path = os.path.join(root_path, "src", "onionshare", "resources", "tor") bin_path = os.path.expanduser("~/go/bin/meek-client") shutil.copyfile( os.path.join(bin_path), os.path.join(dist_path, "meek-client"), ) os.chmod(os.path.join(dist_path, "meek-client"), 0o755) print(f"Installed meek-client in {dist_path}") if __name__ == "__main__": main()