Files
StarPilot/openpilot/starpilot/system/android_auto/source_verifier.py
T
firestar5683 99a8b1c07e Bluetooth and Android Auto
Manage named devices, car-first projection reconnect, and saved head-unit layouts. Keep runtime-safe Bluetooth operations available without changing controller ownership or restarting the radio unnecessarily.
2026-10-03 22:34:37 +00:00

27 lines
887 B
Python

"""Fail-closed daemon check of a Galaxy-minted pairing source over loopback."""
from __future__ import annotations
import http.client
import re
SOURCE_ID = re.compile(r'[0-9a-f]{64}\Z')
class GalaxySourceVerifier:
def __init__(self, host: str = '127.0.0.1', port: int = 8082, timeout: float = 1.0):
self.host, self.port, self.timeout = host, port, timeout
def valid(self, source: str) -> bool:
if not isinstance(source, str) or not SOURCE_ID.fullmatch(source):
return False
connection = http.client.HTTPConnection(self.host, self.port, timeout=self.timeout)
try:
connection.request('GET', '/api/android-auto/source/' + source)
response = connection.getresponse()
response.read(512)
return response.status == 200
except (OSError, TimeoutError, http.client.HTTPException):
return False
finally:
connection.close()