Files
StarPilot/openpilot/starpilot/galaxy/tests/test_reverse_proxy.py
T
firestar5683 1fa29f6c33 Reverse Proxy
2026-10-28 18:07:26 -05:00

53 lines
2.8 KiB
Python

"""Explicit reverse-proxy admission without trusting forwarded client identity."""
import unittest
from tempfile import TemporaryDirectory
from openpilot.starpilot.galaxy.http_server import ReverseProxy, allowed_authority
from openpilot.starpilot.galaxy.reverse_proxy import ReverseProxySettings
class ReverseProxyTest(unittest.TestCase):
def test_opt_in_and_invalid_configuration(self):
for peer, origin in (('', 'https://galaxy.example'), ('proxy.example', 'https://galaxy.example'),
('192.168.1.2', ''), ('192.168.1.2', 'http://galaxy.example'),
('192.168.1.2', 'https://galaxy.example/'),
('192.168.1.2', 'https://user@galaxy.example'),
('192.168.1.2', 'https://galaxy.example?query=1')):
with self.subTest(peer=peer, origin=origin), self.assertRaises(ValueError):
ReverseProxy.validated(peer, origin)
def test_persistence_disable_stale_revision_and_authority(self):
with TemporaryDirectory() as root:
owner = ReverseProxySettings(root)
self.assertIsNone(owner.current)
payload = {**owner.snapshot(), 'enabled': True, 'address': '192.168.1.2',
'origin': 'https://galaxy.example', 'confirmed': True}
with self.assertRaises(PermissionError):
owner.save(payload, lambda: False)
saved = owner.save(payload, lambda: True)
self.assertEqual(ReverseProxySettings(root).current.origin, payload['origin'])
with self.assertRaises(ValueError):
owner.save(payload, lambda: True)
calls = iter((True, False))
with self.assertRaises(PermissionError):
owner.save({**saved, 'enabled': False, 'confirmed': True}, lambda: next(calls))
self.assertIsNotNone(owner.current)
owner.save({**saved, 'enabled': False, 'confirmed': True}, lambda: True)
self.assertIsNone(ReverseProxySettings(root).current)
def test_exact_peer_host_and_origin(self):
proxy = ReverseProxy('192.168.1.2', 'https://galaxy.example:8443')
self.assertTrue(proxy.allows('192.168.1.2', 'galaxy.example:8443', None))
self.assertTrue(proxy.allows('192.168.1.2', 'galaxy.example:8443', proxy.origin, mutation=True))
for peer, host, origin in (
('192.168.1.3', 'galaxy.example:8443', proxy.origin),
(proxy.peer, 'evil.example', proxy.origin),
(proxy.peer, 'galaxy.example:8443', 'https://evil.example'),
(proxy.peer, 'galaxy.example:8443', 'http://galaxy.example:8443'),
):
self.assertFalse(proxy.allows(peer, host, origin))
self.assertFalse(proxy.allows(proxy.peer, 'galaxy.example:8443', None, mutation=True))
self.assertTrue(allowed_authority('192.168.1.10:8082', '192.168.1.10', 8082))
self.assertFalse(allowed_authority('evil.example:8082', '192.168.1.10', 8082))