README.md
Rendering markdown...
#!/usr/bin/env python3
"""Download the vulnerable (0.37.3) and patched (0.37.4) PocketBase binaries
for the current OS/arch into ./bin_<version>/. Cross-platform, stdlib only."""
import os, sys, platform, zipfile, urllib.request
VERSIONS = ["0.37.3", "0.37.4"]
HERE = os.path.dirname(os.path.abspath(__file__))
def asset_os():
s = sys.platform
if s.startswith("win"): return "windows"
if s == "darwin": return "darwin"
return "linux"
def asset_arch():
m = platform.machine().lower()
if m in ("x86_64", "amd64"): return "amd64"
if m in ("arm64", "aarch64"): return "arm64"
return "amd64"
def main():
o, a = asset_os(), asset_arch()
for v in VERSIONS:
name = f"pocketbase_{v}_{o}_{a}.zip"
url = f"https://github.com/pocketbase/pocketbase/releases/download/v{v}/{name}"
zip_path = os.path.join(HERE, f"pb_{v}.zip")
out_dir = os.path.join(HERE, f"bin_{v}")
print(f"[*] {v}: downloading {url}")
urllib.request.urlretrieve(url, zip_path)
with zipfile.ZipFile(zip_path) as z:
z.extractall(out_dir)
exe = os.path.join(out_dir, "pocketbase.exe" if o == "windows" else "pocketbase")
if o != "windows":
os.chmod(exe, 0o755)
os.remove(zip_path)
print(f"[+] {v}: ready at {exe}")
if __name__ == "__main__":
main()