Add localhost c2s connections

This commit is contained in:
tytan652
2021-07-13 17:40:29 +02:00
parent 499ecffe62
commit 3b51bf2946
5 changed files with 64 additions and 3 deletions

View File

@ -77,6 +77,11 @@ 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 c2sPort = (await options.settingsManager.getSetting('prosody-c2s-port') as string) || '52822'
if (!/^\d+$/.test(c2sPort)) {
throw new Error('Invalid c2s port')
}
const prosodyDomain = await getProsodyDomain(options)
const paths = await getProsodyFilePaths(options)
@ -96,7 +101,7 @@ async function getProsodyConfig (options: RegisterServerOptions): Promise<Prosod
const config = new ProsodyConfigContent(paths, prosodyDomain)
config.useHttpAuthentication(authApiUrl)
config.usePeertubeBosh(prosodyDomain, port)
config.usePeertubeBosh(prosodyDomain, port, enableC2s, c2sPort)
config.useMucHttpDefault(roomApiUrl)
// TODO: add a settings so that admin can choose? (on/off and duration)

View File

@ -168,10 +168,14 @@ class ProsodyConfigContent {
this.authenticated.set('http_auth_url', url)
}
usePeertubeBosh (prosodyDomain: string, port: string): void {
usePeertubeBosh (prosodyDomain: string, port: string, enableC2s: boolean, c2sPort: string): void {
this.global.set('c2s_require_encryption', false)
this.global.set('interfaces', ['127.0.0.1', '::1'])
this.global.set('c2s_ports', [])
if (enableC2s) {
this.global.set('c2s_ports', [c2sPort])
} else {
this.global.set('c2s_ports', [])
}
this.global.set('c2s_interfaces', ['127.0.0.1', '::1'])
this.global.set('s2s_ports', [])
this.global.set('s2s_interfaces', ['127.0.0.1', '::1'])

View File

@ -269,6 +269,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) {