diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-29 18:55:42 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-29 18:55:42 +0200 |
| commit | a2215bb071c4e1ce11c616d26df8fd4e7a8fdf57 (patch) | |
| tree | de2969394d8673194d219b22c4af0dd7faef2d10 /packages/meshbay-node/src/meshbay_node/transport | |
| parent | c37fe3047367f401765351e5aca73f8f0ed6810c (diff) | |
| parent | 1f8a52484412b48205e5ff6aac506428e2fb77ed (diff) | |
| download | meshbay-a2215bb071c4e1ce11c616d26df8fd4e7a8fdf57.tar.gz | |
Merge remote-tracking branch 'origin/main'
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport')
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py | 20 |
1 files changed, 20 insertions, 0 deletions
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 1bd7203..a934418 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py +++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py @@ -504,6 +504,8 @@ class WebRTCPeerSession: self._do_group_attach(msg) elif mtype == MNP.GROUP_DETACH: self._do_group_detach(msg) + elif mtype == MNP.NODE_SETTINGS_SET: + self._spawn(self._do_node_settings_set(msg)) elif mtype == MNP.NODE_RELOAD: self._spawn(self._do_node_reload(msg)) elif mtype == MNP.KEYPAIR_BUNDLE_STORE: @@ -2187,6 +2189,24 @@ class WebRTCPeerSession: log.error("node_status failed: %s", e, exc_info=True) self._send({"type": "error", "detail": "Internal error"}) + async def _do_node_settings_set(self, msg: dict) -> None: + if not self._is_node_admin(): + self._send({"type": "error", "detail": "Not the node operator"}) + return + settings = msg.get("settings", {}) + if not settings: + self._send({"type": "error", "detail": "No settings provided"}) + return + try: + result = await self._run_op(ops.set_node_settings, settings) + self._send({"type": MNP.NODE_SETTINGS_SET_ACK, "v": MNP_VERSION, + **result}) + except ops.OpError as e: + self._send({"type": "error", "detail": e.message}) + except Exception as e: + log.error("node_settings_set failed: %s", e, exc_info=True) + self._send({"type": "error", "detail": "Internal error"}) + async def _do_roster_read(self, msg: dict) -> None: if not self._is_node_admin(): self._send({"type": "error", "detail": "Not the node operator"}) |