0.2.0 — a notebook in your pocket, ready to be hosted #3

Merged
bvandeusen merged 22 commits from dev into main 2026-08-23 16:38:00 -04:00
Showing only changes of commit c851b901df - Show all commits
+7 -2
View File
@@ -4,8 +4,8 @@ The whole security property is "a caller cannot forge their own address", and it
on counting in from the RIGHT of the header rather than the left. These are the cases
that tell the two apart — pure functions, no request context, no database.
"""
from thoughtsync.config import Config
from thoughtsync.proxy import forwarded_for, trusted_entry
from thoughtsync.settings import live
PEER = "10.0.0.1" # the socket address: our own proxy, or the caller when unproxied
@@ -13,7 +13,12 @@ PEER = "10.0.0.1" # the socket address: our own proxy, or the caller when unpro
def test_default_is_one_hop():
# One reverse proxy terminating TLS — this deployment, and the only shape that is
# safe to assume. A wrong default here is a silent security bug, not a preference.
assert Config.trusted_proxy_hops() == 1
#
# Read through live() rather than the registry: live() is what proxy.py actually
# calls, and it is seeded from the defaults at import time so the value is right
# before the first database read. A boot that never reached the DB must still
# count one hop, not zero.
assert live("trusted_proxy_hops") == 1
def test_no_proxy_ignores_the_header_entirely():