Chat Federation (and a lot more) WIP:
Note: websocket s2s is not working yet, still WIP. New Features * Chat Federation: * You can now connect to a remote chat with your local account. * This remote connection is done using a custom implementation of [XEP-0468: WebSocket S2S](https://xmpp.org/extensions/xep-0468.html), using some specific discovering method (so that it will work without any DNS configuration). Minor changes and fixes * Possibility to debug Prosody in development environments. * Using process.spawn instead of process.exec to launch Prosody (safer, and more optimal). * Prosody AppImage: fix path mapping: we only map necessary /etc/ subdir, so that the AppImage can access to /etc/resolv.conf, /etc/hosts, ... * Prosody AppImage: hidden debug mode to disable lua-unbound, that seems broken in some docker dev environments.
This commit is contained in:
@ -72,6 +72,18 @@ abstract class ProsodyConfigBlock {
|
||||
this.entries.set(name, entry)
|
||||
}
|
||||
|
||||
remove (name: string, value: ConfigEntryValue): void {
|
||||
if (!this.entries.has(name)) {
|
||||
return
|
||||
}
|
||||
let entry = this.entries.get(name) as ConfigEntryValue
|
||||
if (!Array.isArray(entry)) {
|
||||
entry = [entry]
|
||||
}
|
||||
entry = entry.filter(v => v !== value)
|
||||
this.entries.set(name, entry)
|
||||
}
|
||||
|
||||
write (): string {
|
||||
let content = ''
|
||||
// Map keeps order :)
|
||||
@ -258,17 +270,35 @@ class ProsodyConfigContent {
|
||||
this.global.set('c2s_ports', [c2sPort])
|
||||
}
|
||||
|
||||
useS2S (s2sPort: string, s2sInterfaces: string[], mucOnly: boolean): void {
|
||||
this.global.set('s2s_ports', [s2sPort])
|
||||
this.global.set('s2s_interfaces', s2sInterfaces)
|
||||
this.global.set('s2s_secure_auth', false)
|
||||
this.global.add('modules_enabled', 'tls') // required for s2s and co
|
||||
this.muc.add('modules_enabled', 's2s')
|
||||
this.muc.add('modules_enabled', 'dialback') // This allows s2s connections without certicicates!
|
||||
if (!mucOnly && this.authenticated) {
|
||||
this.authenticated.add('modules_enabled', 's2s')
|
||||
this.authenticated.add('modules_enabled', 'dialback') // This allows s2s connections without certicicates!
|
||||
useS2S (
|
||||
s2sPort: string | null,
|
||||
s2sInterfaces: string[] | null,
|
||||
publicServerUrl: string,
|
||||
serverInfosDir: string
|
||||
): void {
|
||||
if (s2sPort !== null) {
|
||||
this.global.set('s2s_ports', [s2sPort])
|
||||
} else {
|
||||
this.global.set('s2s_ports', [])
|
||||
}
|
||||
if (s2sInterfaces !== null) {
|
||||
this.global.set('s2s_interfaces', s2sInterfaces)
|
||||
} else {
|
||||
this.global.set('s2s_interfaces', [])
|
||||
}
|
||||
this.global.set('s2s_secure_auth', false)
|
||||
this.global.remove('modules_disabled', 's2s')
|
||||
this.global.add('modules_enabled', 's2s')
|
||||
this.global.add('modules_enabled', 'tls') // required for s2s and co
|
||||
|
||||
this.global.add('modules_enabled', 's2s_peertubelivechat')
|
||||
this.global.set('peertubelivechat_server_infos_path', serverInfosDir)
|
||||
this.global.set('peertubelivechat_instance_url', publicServerUrl)
|
||||
|
||||
this.global.add('modules_enabled', 'websocket_s2s_peertubelivechat')
|
||||
|
||||
this.muc.add('modules_enabled', 'dialback') // This allows s2s connections without certicicates!
|
||||
this.authenticated?.add('modules_enabled', 'dialback') // This allows s2s connections without certicicates!
|
||||
}
|
||||
|
||||
useExternalComponents (componentsPort: string, components: ExternalComponent[]): void {
|
||||
|
Reference in New Issue
Block a user