Bladeren bron

prosody: add support for A/V Moderation

Set ENABLE_AV_MODERATION to 1 in order to enable it.

NOTE: This feature is still under development and should be considered
beta quality.
Azim Khakulov 3 jaren geleden
bovenliggende
commit
c95f0d6
4 gewijzigde bestanden met toevoegingen van 35 en 15 verwijderingen
  1. 1 0
      docker-compose.yml
  2. 3 0
      env.example
  3. 1 0
      examples/traefik-v2/docker-compose.yml
  4. 30 15
      prosody/rootfs/defaults/conf.d/jitsi-meet.cfg.lua

+ 1 - 0
docker-compose.yml

@@ -125,6 +125,7 @@ services:
             - ENABLE_AUTH
             - ENABLE_GUESTS
             - ENABLE_LOBBY
+            - ENABLE_AV_MODERATION
             - ENABLE_XMPP_WEBSOCKET
             - GLOBAL_MODULES
             - GLOBAL_CONFIG

+ 3 - 0
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
 

+ 1 - 0
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

+ 30 - 15
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,23 +24,11 @@ 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 }}";
-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 }}
+muc_mapper_domain_base = "{{ .Env.XMPP_DOMAIN }}";
+muc_mapper_domain_prefix = "{{ $XMPP_MUC_DOMAIN_PREFIX }}";
 
-{{ $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" }}
+http_default_host = "{{ .Env.XMPP_DOMAIN }}"
 
 {{ if .Env.TURN_CREDENTIALS }}
 external_service_secret = "{{.Env.TURN_CREDENTIALS}}";
@@ -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"