diff --git a/docker-compose.yml b/docker-compose.yml index 0409153..11b676e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -125,6 +125,7 @@ services: - ENABLE_AUTH - ENABLE_GUESTS - ENABLE_LOBBY + - ENABLE_AV_MODERATION - ENABLE_XMPP_WEBSOCKET - GLOBAL_MODULES - GLOBAL_CONFIG diff --git a/env.example b/env.example index f507fde..e924d6c 100644 --- a/env.example +++ b/env.example @@ -52,6 +52,9 @@ TZ=UTC # Control whether the lobby feature should be enabled or not #ENABLE_LOBBY=1 +# Control whether the A/V moderation should be enabled or not +#ENABLE_AV_MODERATION=1 + # Show a prejoin page before entering a conference #ENABLE_PREJOIN_PAGE=0 diff --git a/examples/traefik-v2/docker-compose.yml b/examples/traefik-v2/docker-compose.yml index f4bc173..7326a42 100644 --- a/examples/traefik-v2/docker-compose.yml +++ b/examples/traefik-v2/docker-compose.yml @@ -128,6 +128,7 @@ services: - ENABLE_AUTH - ENABLE_GUESTS - ENABLE_LOBBY + - ENABLE_AV_MODERATION - ENABLE_XMPP_WEBSOCKET - GLOBAL_MODULES - GLOBAL_CONFIG diff --git a/prosody/rootfs/defaults/conf.d/jitsi-meet.cfg.lua b/prosody/rootfs/defaults/conf.d/jitsi-meet.cfg.lua index 5786328..730092d 100644 --- a/prosody/rootfs/defaults/conf.d/jitsi-meet.cfg.lua +++ b/prosody/rootfs/defaults/conf.d/jitsi-meet.cfg.lua @@ -1,3 +1,18 @@ +{{ $ENABLE_AUTH := .Env.ENABLE_AUTH | default "0" | toBool }} +{{ $ENABLE_GUEST_DOMAIN := and $ENABLE_AUTH (.Env.ENABLE_GUESTS | default "0" | toBool)}} +{{ $AUTH_TYPE := .Env.AUTH_TYPE | default "internal" }} +{{ $JWT_ASAP_KEYSERVER := .Env.JWT_ASAP_KEYSERVER | default "" }} +{{ $JWT_ALLOW_EMPTY := .Env.JWT_ALLOW_EMPTY | default "0" | toBool }} +{{ $JWT_AUTH_TYPE := .Env.JWT_AUTH_TYPE | default "token" }} +{{ $JWT_TOKEN_AUTH_MODULE := .Env.JWT_TOKEN_AUTH_MODULE | default "token_verification" }} +{{ $ENABLE_LOBBY := .Env.ENABLE_LOBBY | default "0" | toBool }} +{{ $ENABLE_AV_MODERATION := .Env.ENABLE_AV_MODERATION | default "0" | toBool }} +{{ $ENABLE_XMPP_WEBSOCKET := .Env.ENABLE_XMPP_WEBSOCKET | default "1" | toBool }} +{{ $PUBLIC_URL := .Env.PUBLIC_URL | default "https://localhost:8443" -}} +{{ $TURN_PORT := .Env.TURN_PORT | default "443" }} +{{ $TURNS_PORT := .Env.TURNS_PORT | default "443" }} +{{ $XMPP_MUC_DOMAIN_PREFIX := (split "." .Env.XMPP_MUC_DOMAIN)._0 }} + admins = { "{{ .Env.JICOFO_AUTH_USER }}@{{ .Env.XMPP_AUTH_DOMAIN }}", "{{ .Env.JVB_AUTH_USER }}@{{ .Env.XMPP_AUTH_DOMAIN }}" @@ -9,24 +24,12 @@ unlimited_jids = { } plugin_paths = { "/prosody-plugins/", "/prosody-plugins-custom" } --- domain mapper options, must at least have domain base set to use the mapper + muc_mapper_domain_base = "{{ .Env.XMPP_DOMAIN }}"; +muc_mapper_domain_prefix = "{{ $XMPP_MUC_DOMAIN_PREFIX }}"; + http_default_host = "{{ .Env.XMPP_DOMAIN }}" -{{ $ENABLE_AUTH := .Env.ENABLE_AUTH | default "0" | toBool }} -{{ $ENABLE_GUEST_DOMAIN := and $ENABLE_AUTH (.Env.ENABLE_GUESTS | default "0" | toBool)}} -{{ $AUTH_TYPE := .Env.AUTH_TYPE | default "internal" }} -{{ $JWT_ASAP_KEYSERVER := .Env.JWT_ASAP_KEYSERVER | default "" }} -{{ $JWT_ALLOW_EMPTY := .Env.JWT_ALLOW_EMPTY | default "0" | toBool }} -{{ $JWT_AUTH_TYPE := .Env.JWT_AUTH_TYPE | default "token" }} -{{ $JWT_TOKEN_AUTH_MODULE := .Env.JWT_TOKEN_AUTH_MODULE | default "token_verification" }} -{{ $ENABLE_LOBBY := .Env.ENABLE_LOBBY | default "0" | toBool }} - -{{ $ENABLE_XMPP_WEBSOCKET := .Env.ENABLE_XMPP_WEBSOCKET | default "1" | toBool }} -{{ $PUBLIC_URL := .Env.PUBLIC_URL | default "https://localhost:8443" -}} -{{ $TURN_PORT := .Env.TURN_PORT | default "443" }} -{{ $TURNS_PORT := .Env.TURNS_PORT | default "443" }} - {{ if .Env.TURN_CREDENTIALS }} external_service_secret = "{{.Env.TURN_CREDENTIALS}}"; {{ end }} @@ -119,6 +122,9 @@ VirtualHost "{{ .Env.XMPP_DOMAIN }}" {{ if $ENABLE_LOBBY }} "muc_lobby_rooms"; {{ end }} + {{ if $ENABLE_AV_MODERATION }} + "av_moderation"; + {{ end }} {{ if .Env.XMPP_MODULES }} "{{ join "\";\n\"" (splitList "," .Env.XMPP_MODULES) }}"; {{ end }} @@ -138,6 +144,10 @@ VirtualHost "{{ .Env.XMPP_DOMAIN }}" speakerstats_component = "speakerstats.{{ .Env.XMPP_DOMAIN }}" conference_duration_component = "conferenceduration.{{ .Env.XMPP_DOMAIN }}" + {{ if $ENABLE_AV_MODERATION }} + av_moderation_component = "avmoderation.{{ .Env.XMPP_DOMAIN }}" + {{ end }} + c2s_require_encryption = false {{ if $ENABLE_GUEST_DOMAIN }} @@ -209,6 +219,11 @@ Component "speakerstats.{{ .Env.XMPP_DOMAIN }}" "speakerstats_component" Component "conferenceduration.{{ .Env.XMPP_DOMAIN }}" "conference_duration_component" muc_component = "{{ .Env.XMPP_MUC_DOMAIN }}" +{{ if $ENABLE_AV_MODERATION }} +Component "avmoderation.{{ .Env.XMPP_DOMAIN }}" "av_moderation_component" + muc_component = "{{ .Env.XMPP_MUC_DOMAIN }}" +{{ end }} + {{ if $ENABLE_LOBBY }} Component "lobby.{{ .Env.XMPP_DOMAIN }}" "muc" storage = "memory"