openclaw/extensions/nextcloud-talk/src
Jacob Tomlinson f92c92515b
fix(extensions): route fetch calls through fetchWithSsrFGuard (#53929)
* fix(extensions): route fetch calls through fetchWithSsrFGuard

Replace raw fetch() with fetchWithSsrFGuard in BlueBubbles, Mattermost,
Nextcloud Talk, and Thread Ownership extensions so outbound requests go
through the shared DNS-pinning and network-policy layer.

BlueBubbles: thread allowPrivateNetwork from account config through all
fetch call sites (send, chat, reactions, history, probe, attachments,
multipart). Add _setFetchGuardForTesting hook for test overrides.

Mattermost: add guardedFetchImpl wrapper in createMattermostClient that
buffers the response body before releasing the dispatcher. Handle
null-body status codes (204/304).

Nextcloud Talk: wrap both sendMessage and sendReaction with
fetchWithSsrFGuard and try/finally release.

Thread Ownership: add fetchWithSsrFGuard and ssrfPolicyFromAllowPrivateNetwork
to the plugin SDK surface; use allowPrivateNetwork:true for the
Docker-internal forwarder.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(extensions): improve null-body handling and test harness cleanup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(bluebubbles): default to strict SSRF policy when allowPrivateNetwork is unset

Callers that omit allowPrivateNetwork previously got undefined policy,
which caused blueBubblesFetchWithTimeout to fall through to raw fetch
and bypass the SSRF guard entirely.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(bluebubbles): thread allowPrivateNetwork through action and monitor call sites

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(mattermost,nextcloud-talk): add allowPrivateNetwork config for self-hosted/LAN deployments

* fix: regenerate config docs baseline for new allowPrivateNetwork fields

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 02:04:54 -07:00
..
accounts.ts refactor: share nested account config merges 2026-03-22 19:53:51 +00:00
channel.ts refactor: share computed channel status adapters 2026-03-22 23:37:12 +00:00
config-schema.ts fix(extensions): route fetch calls through fetchWithSsrFGuard (#53929) 2026-03-26 02:04:54 -07:00
core.test.ts test: collapse nextcloud-talk send and helper suites 2026-03-25 05:39:11 +00:00
format.ts
inbound.authz.test.ts refactor: shrink plugin sdk public surface 2026-03-18 23:31:08 +00:00
inbound.behavior.test.ts style(format): fix extension test drift 2026-03-22 18:53:22 -07:00
inbound.ts refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
monitor.replay.test.ts test: collapse nextcloud-talk helper suites 2026-03-25 05:33:57 +00:00
monitor.test-fixtures.ts Secrets: add inline allowlist review set (#38314) 2026-03-06 19:35:26 -05:00
monitor.test-harness.ts refactor(nextcloud-talk): extract webhook pipeline and shared test harness 2026-02-26 00:23:36 +01:00
monitor.ts Plugins: remove shared extension boundary debt 2026-03-18 22:58:40 -05:00
normalize.ts refactor: share nextcloud target normalization 2026-03-13 16:51:59 +00:00
policy.ts Plugins: internalize nextcloud talk SDK imports 2026-03-17 15:58:00 -07:00
replay-guard.ts Plugins: internalize nextcloud talk SDK imports 2026-03-17 15:58:00 -07:00
room-info.ts fix(extensions): route fetch calls through fetchWithSsrFGuard (#53929) 2026-03-26 02:04:54 -07:00
runtime.ts Plugins: internalize nextcloud talk SDK imports 2026-03-17 15:58:00 -07:00
secret-input.ts refactor: unify plugin sdk primitives 2026-03-18 23:58:56 +00:00
send.ts fix(extensions): route fetch calls through fetchWithSsrFGuard (#53929) 2026-03-26 02:04:54 -07:00
session-route.ts Nextcloud Talk: move outbound session routing behind plugin boundary 2026-03-18 04:09:48 +00:00
setup-core.ts refactor: consolidate plugin sdk surface 2026-03-20 19:24:10 +00:00
setup-surface.ts refactor: share channel setup status helpers 2026-03-23 01:56:01 +00:00
setup.test.ts fix(extensions): route fetch calls through fetchWithSsrFGuard (#53929) 2026-03-26 02:04:54 -07:00
signature.ts
types.ts fix(extensions): route fetch calls through fetchWithSsrFGuard (#53929) 2026-03-26 02:04:54 -07:00