diff --git a/lnbits/core/extensions/loader.py b/lnbits/core/extensions/loader.py index 7ee3b1e8c..b45b9196e 100644 --- a/lnbits/core/extensions/loader.py +++ b/lnbits/core/extensions/loader.py @@ -332,9 +332,10 @@ def _add_wasm_extension_frame_route( response.headers["Cache-Control"] = "no-store" response.headers["Cross-Origin-Opener-Policy"] = "same-origin" response.headers["Cross-Origin-Resource-Policy"] = "same-origin" + # for access will use the bridge API, but we don't want to allow any other access response.headers["Permissions-Policy"] = ( "camera=(), microphone=(), geolocation=(), payment=(), " - "clipboard-read=(), clipboard-write=(), usb=()" + "clipboard-read=(), usb=()" ) response.headers["Referrer-Policy"] = "no-referrer" response.headers["X-Content-Type-Options"] = "nosniff" diff --git a/lnbits/templates/components/lnbits-manage-extension-list.vue b/lnbits/templates/components/lnbits-manage-extension-list.vue index 3d4459813..53298545d 100644 --- a/lnbits/templates/components/lnbits-manage-extension-list.vue +++ b/lnbits/templates/components/lnbits-manage-extension-list.vue @@ -37,10 +37,7 @@ > - + diff --git a/lnbits/templates/wasm_extension.html b/lnbits/templates/wasm_extension.html index 3a9932727..cb16f26f2 100644 --- a/lnbits/templates/wasm_extension.html +++ b/lnbits/templates/wasm_extension.html @@ -1,164 +1,158 @@ -{% extends "base.html" %} +{% extends "base.html" %} {% block styles %} + +{% endblock %} {% block page_container %} + + + + + +{% endblock %} {% block scripts %} + + + if (message.action === 'api') { + sendResponse(event.source, message.id, { + ok: true, + data: await callApi(message) + }) + return + } + + if (message.action === 'ui.notify') { + notify(message) + sendResponse(event.source, message.id, { + ok: true, + data: {ok: true} + }) + return + } + + throw new Error('Unknown extension bridge action.') + } catch (error) { + sendResponse(event.source, message.id, { + ok: false, + error: error instanceof Error ? error.message : String(error) + }) + } + }) + })() + {% endblock %}