Merge branch 'release/3.2.0' into prosody_room_list

This commit is contained in:
John Livingston 2021-07-14 19:11:09 +02:00
commit 446ebc0de9
No known key found for this signature in database
GPG Key ID: B17B5640CE66CDBC
7 changed files with 71 additions and 1 deletions

View File

@ -2,7 +2,9 @@
## v3.2.0
...
### Features
* Builtin Prosody: new settings to enable local C2S. For example, can be used with Matterbridge (thanks https://github.com/tytan652)
## v3.1.0

View File

@ -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.

View File

@ -114,7 +114,14 @@ function register ({ registerHook, registerSettingsScript, peertubeHelpers }: Re
case 'prosody-peertube-uri':
case 'chat-type-help-builtin-prosody':
case 'prosody-list-rooms':
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'] === true
)
case 'chat-server':
case 'chat-room':
case 'chat-bosh-uri':

View File

@ -61,6 +61,21 @@ This is the port that the Prosody server will use. By default it is set to 52800
These settings are common with other chat modes.
Here is the documentation: [common settings](./common.md).
### Prosody advanced settings
#### Enable client to server connections
This setting enable XMPP clients to connect to the builtin Prosody server.
For now, this option **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.
## Moderation
You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms».

View File

@ -77,6 +77,7 @@ async function getProsodyConfig (options: RegisterServerOptions): Promise<Prosod
if (!/^\d+$/.test(port)) {
throw new Error('Invalid port')
}
const enableC2s = (await options.settingsManager.getSetting('prosody-c2s') as boolean) || false
const prosodyDomain = await getProsodyDomain(options)
const paths = await getProsodyFilePaths(options)
@ -99,6 +100,14 @@ async function getProsodyConfig (options: RegisterServerOptions): Promise<Prosod
config.usePeertubeBosh(prosodyDomain, port)
config.useMucHttpDefault(roomApiUrl)
if (enableC2s) {
const c2sPort = (await options.settingsManager.getSetting('prosody-c2s-port') as string) || '52822'
if (!/^\d+$/.test(c2sPort)) {
throw new Error('Invalid c2s port')
}
config.useC2S(c2sPort)
}
// TODO: add a settings so that admin can choose? (on/off and duration)
config.useMam('1w') // Remove archived messages after 1 week
// TODO: add a settings to choose?

View File

@ -203,6 +203,10 @@ class ProsodyConfigContent {
}
}
useC2S (c2sPort: string): void {
this.global.set('c2s_ports', [c2sPort])
}
useMucHttpDefault (url: string): void {
this.muc.add('modules_enabled', 'muc_http_defaults')
this.muc.add('muc_create_api_url', url)

View File

@ -276,6 +276,38 @@ Example: height:400px;`,
private: false
})
// ********** Built-in Prosody advanced settings
registerSetting({
name: 'prosody-advanced',
type: 'html',
private: true,
descriptionHTML: '<h3>Prosody advanced settings</h3>'
})
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.<br>
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.<br>
XMPP clients shall use this port to connect.<br>
Change it if this port is already in use on your server.<br>
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) {