diff --git a/ROADMAP.md b/ROADMAP.md index 8820d081..68241fbb 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -36,3 +36,4 @@ This roadmap is given as an indication. It will be updated as we go along accord [ ] | Builtin Prosody | Add a settings to enable the server to be accessed with XMPP clients. [ ] | ConverseJS | For anonymous user, automatically log in with a random nickname (and allow to change afterward) [ ] | Common | There should be a settings to add terms & conditions in the Peertube's about page (for example if the webchat is hosted anywhere else). +[ ] | Builtin Prosody | Add on option to limit webchat to registered users. diff --git a/client/admin-plugin-client-plugin.ts b/client/admin-plugin-client-plugin.ts index c86b7eeb..d9f34a70 100644 --- a/client/admin-plugin-client-plugin.ts +++ b/client/admin-plugin-client-plugin.ts @@ -42,7 +42,11 @@ function register ({ registerHook, registerSettingsScript, peertubeHelpers }: Re case 'prosody-port': case 'prosody-peertube-uri': case 'chat-type-help-builtin-prosody': + case 'prosody-advanced': + case 'prosody-c2s': return options.formValues['chat-type'] !== ('builtin-prosody' as ChatType) + case 'prosody-c2s-port': + return options.formValues['chat-type'] !== ('builtin-prosody' as ChatType) || options.formValues['prosody-c2s'] === false case 'chat-server': case 'chat-room': case 'chat-bosh-uri': diff --git a/documentation/prosody.md b/documentation/prosody.md index 10dc4656..18277ed0 100644 --- a/documentation/prosody.md +++ b/documentation/prosody.md @@ -68,3 +68,19 @@ If the video is local (not from a remote Peertube), the video owner will be admi You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right. + + +### Prosody advanced settings + +#### Enable client to server connections + +This setting enable XMPP clients to connect to the builtin Prosody server. +This option alone **only allows connections from localhost clients**. + +As example, this option can allow an instance of Matterbridge (once it could use anonymous login) *on the same machine* to bridge your chat with another services like a Matrix room. + +##### Prosody client to server port + +The port that will be used by the c2s module of the builtin Prosody server. +XMPP clients shall use this port to connect. +Change it if this port is already in use on your server. \ No newline at end of file diff --git a/server/lib/prosody/config.ts b/server/lib/prosody/config.ts index cf37a8a0..96d60bdf 100644 --- a/server/lib/prosody/config.ts +++ b/server/lib/prosody/config.ts @@ -77,6 +77,11 @@ async function getProsodyConfig (options: RegisterServerOptions): PromiseProsody advanced settings' + }) + + registerSetting({ + name: 'prosody-c2s', + label: 'Enable client to server connections', + type: 'input-checkbox', + default: false, + private: true, + descriptionHTML: +`Enable XMPP clients to connect to the builtin Prosody server.
+This option alone only allows connections from localhost clients.` + }) + + registerSetting({ + name: 'prosody-c2s-port', + label: 'Prosody client to server port', + type: 'input', + default: '52822', + private: true, + descriptionHTML: +`The port that will be used by the c2s module of the builtin Prosody server.
+XMPP clients shall use this port to connect.
+Change it if this port is already in use on your server.
+Keep it close this port on your firewall for now, it will not be accessed from the outer world.` + }) + // ********** settings changes management settingsManager.onSettingsChange(async (settings: any) => { if ('chat-type' in settings) {