diff --git a/tools/adb-beacon/receiver.py b/tools/adb-beacon/receiver.py index 4429fed..ec8e78c 100644 --- a/tools/adb-beacon/receiver.py +++ b/tools/adb-beacon/receiver.py @@ -49,9 +49,20 @@ class Handler(BaseHTTPRequestHandler): self.wfile.write(body) def do_GET(self): - if self.path.rstrip("/") != "/beacon": - return self._send(404, b'{"error":"not found"}') - self._send(200, json.dumps(load()).encode()) + p = self.path.rstrip("/") + if p == "/beacon": + return self._send(200, json.dumps(load()).encode()) + # Dev convenience: serve a staged APK so a device (which can only reach + # this host on 443) can pull it via its own curl — more resilient than + # adb's sustained transport over a flaky wifi. Path from APK_PATH. + if p == "/apk": + apk = os.environ.get("APK_PATH", "/tmp/echolot-app.apk") + try: + with open(apk, "rb") as f: + return self._send(200, f.read(), "application/vnd.android.package-archive") + except FileNotFoundError: + return self._send(404, b'{"error":"no apk staged"}') + return self._send(404, b'{"error":"not found"}') def do_POST(self): if self.path.rstrip("/") != "/beacon":