prosody: brewery mode for jvb/jicofo discovery muc
* prosody: brewery mode for jvb/jicofo discovery muc * do not include c2s limits in brewery mode
This commit is contained in:
committed by
GitHub
parent
52eef2eb23
commit
46b98b5a7a
36
prosody/rootfs/defaults/conf.d/brewery.cfg.lua
Normal file
36
prosody/rootfs/defaults/conf.d/brewery.cfg.lua
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{{ $REGION_NAME := .Env.PROSODY_REGION_NAME | default "default" -}}
|
||||||
|
{{ $RELEASE_NUMBER := .Env.RELEASE_NUMBER | default "" -}}
|
||||||
|
{{ $SHARD_NAME := .Env.SHARD | default "default" -}}
|
||||||
|
{{ $JVB_XMPP_AUTH_DOMAIN := .Env.JVB_XMPP_AUTH_DOMAIN | default "auth.jvb.meet.jitsi" -}}
|
||||||
|
{{ $JVB_XMPP_INTERNAL_MUC_DOMAIN := .Env.JVB_XMPP_INTERNAL_MUC_DOMAIN | default "muc.jvb.meet.jitsi" -}}
|
||||||
|
{{ $JVB_AUTH_USER := .Env.JVB_AUTH_USER | default "jvb" -}}
|
||||||
|
|
||||||
|
admins = {
|
||||||
|
"focus@{{ $JVB_XMPP_AUTH_DOMAIN }}",
|
||||||
|
"{{ $JVB_AUTH_USER }}@{{ $JVB_XMPP_AUTH_DOMAIN }}"
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin_paths = { "/prosody-plugins/", "/prosody-plugins-custom" }
|
||||||
|
|
||||||
|
VirtualHost "{{ $JVB_XMPP_AUTH_DOMAIN }}"
|
||||||
|
modules_enabled = {
|
||||||
|
"ping";
|
||||||
|
}
|
||||||
|
authentication = "internal_hashed"
|
||||||
|
ssl = {
|
||||||
|
key = "/config/certs/{{ $JVB_XMPP_AUTH_DOMAIN }}.key";
|
||||||
|
certificate = "/config/certs/{{ $JVB_XMPP_AUTH_DOMAIN }}.crt";
|
||||||
|
}
|
||||||
|
|
||||||
|
Component "{{ $JVB_XMPP_INTERNAL_MUC_DOMAIN }}" "muc"
|
||||||
|
modules_enabled = {
|
||||||
|
"ping",
|
||||||
|
"muc_hide_all";
|
||||||
|
"muc_filter_access";
|
||||||
|
}
|
||||||
|
storage = "memory"
|
||||||
|
muc_room_cache_size = 10000
|
||||||
|
muc_filter_whitelist="{{ $JVB_XMPP_AUTH_DOMAIN }}"
|
||||||
|
muc_room_locking = false
|
||||||
|
muc_room_default_public_jids = true
|
||||||
|
|
||||||
@@ -99,7 +99,10 @@ modules_enabled = {
|
|||||||
--"watchregistrations"; -- Alert admins of registrations
|
--"watchregistrations"; -- Alert admins of registrations
|
||||||
--"motd"; -- Send a message to users when they log in
|
--"motd"; -- Send a message to users when they log in
|
||||||
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
|
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
|
||||||
|
{{ if eq .Env.PROSODY_MODE "brewery" -}}
|
||||||
|
"firewall"; -- Enable firewalling
|
||||||
|
"secure_interfaces";
|
||||||
|
{{ end -}}
|
||||||
{{ if $ENABLE_S2S -}}
|
{{ if $ENABLE_S2S -}}
|
||||||
"s2s_bidi";
|
"s2s_bidi";
|
||||||
"certs_s2soutinjection";
|
"certs_s2soutinjection";
|
||||||
@@ -114,6 +117,13 @@ modules_enabled = {
|
|||||||
component_ports = { }
|
component_ports = { }
|
||||||
https_ports = { }
|
https_ports = { }
|
||||||
|
|
||||||
|
|
||||||
|
{{ if eq .Env.PROSODY_MODE "brewery" -}}
|
||||||
|
firewall_scripts = {
|
||||||
|
"/config/rules.d/jvb_muc_presence_filter.pfw";
|
||||||
|
};
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
-- These modules are auto-loaded, but should you want
|
-- These modules are auto-loaded, but should you want
|
||||||
-- to disable them then uncomment them here:
|
-- to disable them then uncomment them here:
|
||||||
modules_disabled = {
|
modules_disabled = {
|
||||||
@@ -129,6 +139,7 @@ modules_disabled = {
|
|||||||
-- For more information see http://prosody.im/doc/creating_accounts
|
-- For more information see http://prosody.im/doc/creating_accounts
|
||||||
allow_registration = false;
|
allow_registration = false;
|
||||||
|
|
||||||
|
{{ if ne .Env.PROSODY_MODE "brewery" -}}
|
||||||
-- Enable rate limits for incoming client and server connections
|
-- Enable rate limits for incoming client and server connections
|
||||||
limits = {
|
limits = {
|
||||||
{{ if ne $PROSODY_C2S_LIMIT "" }}
|
{{ if ne $PROSODY_C2S_LIMIT "" }}
|
||||||
@@ -142,6 +153,7 @@ limits = {
|
|||||||
};
|
};
|
||||||
{{ end }}
|
{{ end }}
|
||||||
}
|
}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
--Prosody garbage collector settings
|
--Prosody garbage collector settings
|
||||||
--For more information see https://prosody.im/doc/advanced_gc
|
--For more information see https://prosody.im/doc/advanced_gc
|
||||||
|
|||||||
13
prosody/rootfs/defaults/rules.d/jvb_muc_presence_filter.pfw
Normal file
13
prosody/rootfs/defaults/rules.d/jvb_muc_presence_filter.pfw
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{{ $JVB_XMPP_AUTH_DOMAIN := .Env.JVB_XMPP_AUTH_DOMAIN | default "auth.jvb.meet.jitsi" -}}
|
||||||
|
{{ $JVB_XMPP_INTERNAL_MUC_DOMAIN := .Env.JVB_XMPP_INTERNAL_MUC_DOMAIN | default "muc.jvb.meet.jitsi" -}}
|
||||||
|
{{ $JVB_AUTH_USER := .Env.JVB_AUTH_USER | default "jvb" -}}
|
||||||
|
{{ $JVB_BREWERY_MUC := .Env.JVB_BREWERY_MUC | default "jvbbrewery" -}}
|
||||||
|
# Drop all presence from a jvb in a MUC to a jvb
|
||||||
|
FROM: {{ $JVB_BREWERY_MUC }}@{{ $JVB_XMPP_INTERNAL_MUC_DOMAIN }}
|
||||||
|
TO: {{ $JVB_AUTH_USER }}@{{ $JVB_XMPP_AUTH_DOMAIN }}
|
||||||
|
KIND: presence
|
||||||
|
# Seems safer to allow all "unavailable" to pass
|
||||||
|
TYPE: available
|
||||||
|
# Allow self-presence (code=110)
|
||||||
|
NOT INSPECT: {http://jabber.org/protocol/muc#user}x/status@code=110
|
||||||
|
DROP.
|
||||||
@@ -29,17 +29,35 @@ fi
|
|||||||
mkdir /config/certs
|
mkdir /config/certs
|
||||||
cp -r /defaults/* /config
|
cp -r /defaults/* /config
|
||||||
|
|
||||||
|
[ -z "$PROSODY_MODE" ] && PROSODY_MODE="client"
|
||||||
|
|
||||||
if [[ "$PROSODY_MODE" == "visitors" ]]; then
|
if [[ "$PROSODY_MODE" == "visitors" ]]; then
|
||||||
echo "Prosody visitor mode, using alternate config"
|
echo "Prosody visitor mode, using alternate config"
|
||||||
PROSODY_SITE_CFG="visitors.cfg.lua"
|
PROSODY_SITE_CFG="visitors.cfg.lua"
|
||||||
rm /config/conf.d/jitsi-meet.cfg.lua
|
rm /config/conf.d/jitsi-meet.cfg.lua
|
||||||
|
rm /config/conf.d/brewery.cfg.lua
|
||||||
# force jicofo into auth domain for visitor-mode prosody
|
# force jicofo into auth domain for visitor-mode prosody
|
||||||
[ -z "$XMPP_AUTH_DOMAIN" ] && XMPP_AUTH_DOMAIN="auth.meet.jitsi"
|
[ -z "$XMPP_AUTH_DOMAIN" ] && XMPP_AUTH_DOMAIN="auth.meet.jitsi"
|
||||||
export PROSODY_ADMINS="focus@$XMPP_AUTH_DOMAIN"
|
export PROSODY_ADMINS="focus@$XMPP_AUTH_DOMAIN"
|
||||||
|
elif [[ "$PROSODY_MODE" == "brewery" ]]; then
|
||||||
|
echo "Prosody brewery mode, using alternate config"
|
||||||
|
PROSODY_SITE_CFG="brewery.cfg.lua"
|
||||||
|
rm /config/conf.d/jitsi-meet.cfg.lua
|
||||||
|
rm /config/conf.d/visitors.cfg.lua
|
||||||
|
# force jicofo into auth domain for brewer prosody
|
||||||
|
[ -z "$JVB_XMPP_AUTH_DOMAIN" ] && JVB_XMPP_AUTH_DOMAIN="auth.meet.jitsi"
|
||||||
|
# ensure proper certs are generated
|
||||||
|
export XMPP_AUTH_DOMAIN="$JVB_XMPP_AUTH_DOMAIN"
|
||||||
|
# brewery mode requires C2S encryption
|
||||||
|
export C2S_REQUIRE_ENCRYPTION="true"
|
||||||
|
|
||||||
|
mkdir -p /config/rules.d
|
||||||
|
tpl /defaults/rules.d/jvb_muc_presence_filter.pfw > /config/rules.d/jvb_muc_presence_filter.pfw
|
||||||
else
|
else
|
||||||
echo "Prosody normal mode, using default config"
|
echo "Prosody normal mode, using default config"
|
||||||
PROSODY_SITE_CFG="jitsi-meet.cfg.lua"
|
PROSODY_SITE_CFG="jitsi-meet.cfg.lua"
|
||||||
rm /config/conf.d/visitors.cfg.lua
|
rm /config/conf.d/visitors.cfg.lua
|
||||||
|
rm /config/conf.d/brewery.cfg.lua
|
||||||
fi
|
fi
|
||||||
tpl /defaults/prosody.cfg.lua > $PROSODY_CFG
|
tpl /defaults/prosody.cfg.lua > $PROSODY_CFG
|
||||||
tpl /defaults/conf.d/$PROSODY_SITE_CFG > /config/conf.d/$PROSODY_SITE_CFG
|
tpl /defaults/conf.d/$PROSODY_SITE_CFG > /config/conf.d/$PROSODY_SITE_CFG
|
||||||
@@ -60,7 +78,8 @@ fi
|
|||||||
|
|
||||||
prosodyctl --config $PROSODY_CFG register focus $XMPP_AUTH_DOMAIN $JICOFO_AUTH_PASSWORD
|
prosodyctl --config $PROSODY_CFG register focus $XMPP_AUTH_DOMAIN $JICOFO_AUTH_PASSWORD
|
||||||
|
|
||||||
if [[ "$PROSODY_MODE" != "visitors" ]]; then
|
# if we are in client mode, we need to subscribe the focus user to the focus component proxy
|
||||||
|
if [[ "$PROSODY_MODE" == "client" ]]; then
|
||||||
prosodyctl --config $PROSODY_CFG mod_roster_command subscribe focus.$XMPP_DOMAIN focus@$XMPP_AUTH_DOMAIN
|
prosodyctl --config $PROSODY_CFG mod_roster_command subscribe focus.$XMPP_DOMAIN focus@$XMPP_AUTH_DOMAIN
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -112,6 +131,8 @@ if [[ "$PROSODY_MODE" == "visitors" ]]; then
|
|||||||
# echo for using all default values
|
# echo for using all default values
|
||||||
echo | prosodyctl --config $PROSODY_CFG cert generate $FULL_VISITORS_XMPP_DOMAIN
|
echo | prosodyctl --config $PROSODY_CFG cert generate $FULL_VISITORS_XMPP_DOMAIN
|
||||||
fi
|
fi
|
||||||
|
elif [[ "$PROSODY_MODE" == "brewery" ]]; then
|
||||||
|
echo "No need to generate certs for main XMPP domain in brewery mode"
|
||||||
else
|
else
|
||||||
if [[ ! -f /config/certs/$XMPP_DOMAIN.crt ]]; then
|
if [[ ! -f /config/certs/$XMPP_DOMAIN.crt ]]; then
|
||||||
# echo for using all default values
|
# echo for using all default values
|
||||||
|
|||||||
Reference in New Issue
Block a user