fix a bug where computers would fail SSL certification when running download_tool.py
This commit is contained in:
parent
065fc7b715
commit
c1ce90d1ce
|
@ -91,20 +91,7 @@ TOOLS: Dict[str, Callable[[str], str]] = {
|
||||||
"wibo": wibo_url,
|
"wibo": wibo_url,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def download(url, response, output) -> None:
|
||||||
def main() -> None:
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument("tool", help="Tool name")
|
|
||||||
parser.add_argument("output", type=Path, help="output file path")
|
|
||||||
parser.add_argument("--tag", help="GitHub tag", required=True)
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
url = TOOLS[args.tool](args.tag)
|
|
||||||
output = Path(args.output)
|
|
||||||
|
|
||||||
print(f"Downloading {url} to {output}")
|
|
||||||
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
|
|
||||||
with urllib.request.urlopen(req) as response:
|
|
||||||
if url.endswith(".zip"):
|
if url.endswith(".zip"):
|
||||||
data = io.BytesIO(response.read())
|
data = io.BytesIO(response.read())
|
||||||
with zipfile.ZipFile(data) as f:
|
with zipfile.ZipFile(data) as f:
|
||||||
|
@ -120,6 +107,35 @@ def main() -> None:
|
||||||
st = os.stat(output)
|
st = os.stat(output)
|
||||||
os.chmod(output, st.st_mode | stat.S_IEXEC)
|
os.chmod(output, st.st_mode | stat.S_IEXEC)
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("tool", help="Tool name")
|
||||||
|
parser.add_argument("output", type=Path, help="output file path")
|
||||||
|
parser.add_argument("--tag", help="GitHub tag", required=True)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
url = TOOLS[args.tool](args.tag)
|
||||||
|
output = Path(args.output)
|
||||||
|
|
||||||
|
print(f"Downloading {url} to {output}")
|
||||||
|
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
|
||||||
|
try:
|
||||||
|
with urllib.request.urlopen(req) as response:
|
||||||
|
download(url, response, output)
|
||||||
|
except urllib.error.URLError:
|
||||||
|
try:
|
||||||
|
import certifi
|
||||||
|
import ssl
|
||||||
|
except:
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
curr_py = sys.executable
|
||||||
|
subprocess.check_call([curr_py, '-m', 'pip', 'install', 'certifi', 'ssl'], stdout=subprocess.DEVNULL)
|
||||||
|
|
||||||
|
with urllib.request.urlopen(req, context=ssl.create_default_context(cafile=certifi.where())) as response:
|
||||||
|
download(url, response, output)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in New Issue