From 5dd59b000f6ca2205adb3ba359e60eb823c97f10 Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Thu, 24 Sep 2026 11:01:19 +0200 Subject: refactor(node): section headers follow the code they introduce Three headers stayed in webrtc_server when their sections moved; they now sit above the same methods in blobs.py and admission.py. Two that were only a title over what is now a whole module are dropped. Co-Authored-By: Claude Opus 5.5 --- .../src/meshbay_node/transport/webrtc/admission.py | 9 +++++++++ .../src/meshbay_node/transport/webrtc/blobs.py | 7 +++++++ .../src/meshbay_node/transport/webrtc_server.py | 21 --------------------- 3 files changed, 16 insertions(+), 21 deletions(-) (limited to 'packages/meshbay-node/src') diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc/admission.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc/admission.py index 6a714cb..b02e59a 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/webrtc/admission.py +++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc/admission.py @@ -115,6 +115,8 @@ class AdmissionMixin: self._issue_admin_challenge( OP_INVITE_CANCEL, invite_id, {"group_id": group_id, "invite_id": invite_id}) + # ── Pairing and join (H3, M3) ──────────────────────────────────────────── + def _join_refuse(self, reason: str, audit_detail: str = "") -> None: self._join_attempts += 1 # Node-wide window, shared across connections: reconnecting must not reset @@ -348,6 +350,13 @@ class AdmissionMixin: await self._join_ok(user_id, pk_x_raw, session_group or invite["group_id"], role=invite["role"], recognised=False) + # ── Device linking ─────────────────────────────────────────────────────── + # + # A person may hold several devices on one node. The authority admitting a + # new one is a key the node already pinned — never the hub, which has stored + # no user keys since 2026-08-14 and therefore cannot countersign anything. + # See docs/MESHBAY_DESIGN.md §3.3. + async def _do_device_request(self, msg: dict) -> None: """ A new device files itself as pending, bound to a code it displays. diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc/blobs.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc/blobs.py index 5e67a42..e624fb9 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/webrtc/blobs.py +++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc/blobs.py @@ -120,6 +120,13 @@ class BlobsMixin: "detail": "keypair_bundle_stored", }) + # ── Per-account blobs (playlists, docs/playlists.md §8.2) ──────────────── + # + # The node stores bytes it cannot read and hands them back. `self._user_id` + # comes from the authenticated session and never from the message: a + # `user_id` in the body would let any member of this group read or + # overwrite any other member's blob, which is finding C5 one size down. + def _user_blob_refuse(self, detail: str, kind: str = "") -> None: """ Refuse, and say so in the audit log. diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py index d67426d..1393b6e 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py +++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py @@ -526,23 +526,6 @@ class WebRTCPeerSession( detail=detail, )) - # ── Per-account blobs (playlists, docs/playlists.md §8.2) ──────────────── - # - # The node stores bytes it cannot read and hands them back. `self._user_id` - # comes from the authenticated session and never from the message: a - # `user_id` in the body would let any member of this group read or - # overwrite any other member's blob, which is finding C5 one size down. - - # ── Pairing and join (H3, M3) ──────────────────────────────────────────── - - - # ── Device linking ─────────────────────────────────────────────────────── - # - # A person may hold several devices on one node. The authority admitting a - # new one is a key the node already pinned — never the hub, which has stored - # no user keys since 2026-08-14 and therefore cannot countersign anything. - # See docs/MESHBAY_DESIGN.md §3.3. - def _do_member_revoke(self, msg: dict) -> None: """ Stop serving the group key to someone, at the operator's request. @@ -775,8 +758,6 @@ class WebRTCPeerSession( "v": MNP_VERSION, "app": app, "directories": result["directories"]}) - # ── Chat ───────────────────────────────────────────────────────────── - def _do_search_listed(self, msg: dict) -> None: """ Whether this group's files appear in members' cross-group Search. @@ -1526,8 +1507,6 @@ class WebRTCPeerSession( return self._ctx["groups"].get(self._group_id) or {} return self._ctx - # ── Upload ceiling and transfer slots ──────────────────────────────────── - def _register_peer(self) -> None: """Add this connection to its group's peer set. -- cgit v1.2.3