op adb: forward all openpilot service ports (#36518)
* op adb: forward all openpilot service ports * cleanup
This commit is contained in:
@@ -1,7 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -euo pipefail
|
||||
|
||||
# this is a little nicer than "adb shell" since
|
||||
# "adb shell" doesn't do full terminal emulation
|
||||
# Forward all openpilot service ports
|
||||
mapfile -t SERVICE_PORTS < <(python3 - <<'PY'
|
||||
from cereal.services import SERVICE_LIST
|
||||
|
||||
FNV_PRIME = 0x100000001b3
|
||||
FNV_OFFSET_BASIS = 0xcbf29ce484222325
|
||||
START_PORT = 8023
|
||||
MAX_PORT = 65535
|
||||
PORT_RANGE = MAX_PORT - START_PORT
|
||||
MASK = 0xffffffffffffffff
|
||||
|
||||
def fnv1a(endpoint: str) -> int:
|
||||
h = FNV_OFFSET_BASIS
|
||||
for b in endpoint.encode():
|
||||
h ^= b
|
||||
h = (h * FNV_PRIME) & MASK
|
||||
return h
|
||||
|
||||
ports = set()
|
||||
for name in SERVICE_LIST.keys():
|
||||
port = START_PORT + fnv1a(name) % PORT_RANGE
|
||||
ports.add((name, port))
|
||||
|
||||
for name, port in sorted(ports):
|
||||
print(f"{name} {port}")
|
||||
PY
|
||||
)
|
||||
|
||||
for entry in "${SERVICE_PORTS[@]}"; do
|
||||
name="${entry% *}"
|
||||
port="${entry##* }"
|
||||
adb forward "tcp:${port}" "tcp:${port}" > /dev/null
|
||||
done
|
||||
|
||||
# Forward SSH port first for interactive shell access.
|
||||
adb forward tcp:2222 tcp:22
|
||||
|
||||
# SSH!
|
||||
ssh comma@localhost -p 2222 "$@"
|
||||
|
||||
Reference in New Issue
Block a user