op adb: forward all openpilot service ports (#36518)
* op adb: forward all openpilot service ports * cleanuppull/36514/head
parent
47d0a95fd6
commit
2e636458a6
1 changed files with 38 additions and 3 deletions
@ -1,7 +1,42 @@ |
|||||||
#!/usr/bin/env bash |
#!/usr/bin/env bash |
||||||
set -e |
set -euo pipefail |
||||||
|
|
||||||
# this is a little nicer than "adb shell" since |
# Forward all openpilot service ports |
||||||
# "adb shell" doesn't do full terminal emulation |
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 |
adb forward tcp:2222 tcp:22 |
||||||
|
|
||||||
|
# SSH! |
||||||
ssh comma@localhost -p 2222 "$@" |
ssh comma@localhost -p 2222 "$@" |
||||||
|
|||||||
Loading…
Reference in new issue