10-config 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. #!/usr/bin/with-contenv bash
  2. if [[ ! -f /etc/saslauthd.conf ]] && [[ "$AUTH_TYPE" == "ldap" ]]; then
  3. tpl /defaults/saslauthd.conf > /etc/saslauthd.conf
  4. mkdir -pm777 /var/run/saslauthd
  5. adduser prosody sasl
  6. echo >> /etc/ldap/ldap.conf "TLS_REQCERT allow"
  7. fi
  8. PROSODY_CFG="/config/prosody.cfg.lua"
  9. if [[ ! -d /config/data ]]; then
  10. mkdir -pm 750 /config/data
  11. fi
  12. if [[ "$(stat -c %U /config)" != "prosody" ]]; then
  13. chown -R prosody /config
  14. fi
  15. if [[ "$(stat -c %U /prosody-plugins)" != "prosody" ]]; then
  16. chown -R prosody /prosody-plugins
  17. fi
  18. if [[ "$(stat -c %U /prosody-plugins-custom)" != "prosody" ]]; then
  19. chown -R prosody /prosody-plugins-custom
  20. fi
  21. if [[ "$(stat -c %U /prosody-plugins-contrib)" != "prosody" ]]; then
  22. chown -R prosody /prosody-plugins-contrib
  23. fi
  24. mkdir /config/certs
  25. cp -r /defaults/* /config
  26. [ -z "$PROSODY_MODE" ] && export PROSODY_MODE="client"
  27. if [[ "$PROSODY_MODE" == "visitors" ]]; then
  28. echo "Prosody visitor mode, using alternate config"
  29. PROSODY_SITE_CFG="visitors.cfg.lua"
  30. rm /config/conf.d/jitsi-meet.cfg.lua
  31. rm /config/conf.d/brewery.cfg.lua
  32. elif [[ "$PROSODY_MODE" == "brewery" ]]; then
  33. echo "Prosody brewery mode, using alternate config"
  34. PROSODY_SITE_CFG="brewery.cfg.lua"
  35. rm /config/conf.d/jitsi-meet.cfg.lua
  36. rm /config/conf.d/visitors.cfg.lua
  37. # force jicofo into auth domain for brewer prosody
  38. [ -z "$JVB_XMPP_AUTH_DOMAIN" ] && JVB_XMPP_AUTH_DOMAIN="auth.meet.jitsi"
  39. # ensure proper certs are generated
  40. export XMPP_AUTH_DOMAIN="$JVB_XMPP_AUTH_DOMAIN"
  41. # brewery mode requires C2S encryption
  42. export PROSODY_C2S_REQUIRE_ENCRYPTION="true"
  43. mkdir -p /config/rules.d
  44. tpl /defaults/rules.d/jvb_muc_presence_filter.pfw > /config/rules.d/jvb_muc_presence_filter.pfw
  45. else
  46. echo "Prosody normal mode, using default config"
  47. PROSODY_SITE_CFG="jitsi-meet.cfg.lua"
  48. rm /config/conf.d/visitors.cfg.lua
  49. rm /config/conf.d/brewery.cfg.lua
  50. fi
  51. tpl /defaults/prosody.cfg.lua > $PROSODY_CFG
  52. tpl /defaults/conf.d/$PROSODY_SITE_CFG > /config/conf.d/$PROSODY_SITE_CFG
  53. if [[ -z $JICOFO_AUTH_PASSWORD ]]; then
  54. echo 'FATAL ERROR: Jicofo auth password must be set'
  55. exit 1
  56. fi
  57. # Defaults
  58. [ -z "${JIBRI_RECORDER_USER}" ] && export JIBRI_RECORDER_USER=recorder
  59. [ -z "${JIBRI_XMPP_USER}" ] && export JIBRI_XMPP_USER=jibri
  60. [ -z "${JIGASI_XMPP_USER}" ] && export JIGASI_XMPP_USER=jigasi
  61. [ -z "${JVB_AUTH_USER}" ] && export JVB_AUTH_USER=jvb
  62. [ -z "${XMPP_DOMAIN}" ] && export XMPP_DOMAIN=meet.jitsi
  63. [ -z "${XMPP_AUTH_DOMAIN}" ] && export XMPP_AUTH_DOMAIN=auth.meet.jitsi
  64. # maintain backward compatibility with older variable
  65. [ -z "${XMPP_HIDDEN_DOMAIN}" ] && export XMPP_HIDDEN_DOMAIN="$XMPP_RECORDER_DOMAIN"
  66. [ -z "${XMPP_HIDDEN_DOMAIN}" ] && export XMPP_HIDDEN_DOMAIN=hidden.meet.jitsi
  67. prosodyctl --config $PROSODY_CFG register focus $XMPP_AUTH_DOMAIN $JICOFO_AUTH_PASSWORD
  68. # if we are in client mode, we need to subscribe the focus user to the focus component proxy
  69. if [[ "$PROSODY_MODE" == "client" ]]; then
  70. prosodyctl --config $PROSODY_CFG mod_roster_command subscribe focus.$XMPP_DOMAIN focus@$XMPP_AUTH_DOMAIN
  71. fi
  72. if [[ -z $JVB_AUTH_PASSWORD ]]; then
  73. echo 'FATAL ERROR: JVB auth password must be set'
  74. exit 1
  75. fi
  76. OLD_JVB_AUTH_PASSWORD=passw0rd
  77. if [[ "$JVB_AUTH_PASSWORD" == "$OLD_JVB_AUTH_PASSWORD" ]]; then
  78. echo 'FATAL ERROR: JVB auth password must be changed, check the README'
  79. exit 1
  80. fi
  81. # we see the next register command to hang from time to time, suspect it's a race with mod_roster_command
  82. # Once this is released: https://issues.prosody.im/1908 we can remove this sleep and make sure prosody is running
  83. # and then use 'prosodyctl shell user create' to add user live and 'prosodyctl shell roster' to modify their roster live.
  84. sleep 1
  85. prosodyctl --config $PROSODY_CFG register $JVB_AUTH_USER $XMPP_AUTH_DOMAIN $JVB_AUTH_PASSWORD
  86. if [[ ! -z $JIBRI_XMPP_PASSWORD ]]; then
  87. OLD_JIBRI_XMPP_PASSWORD=passw0rd
  88. if [[ "$JIBRI_XMPP_PASSWORD" == "$OLD_JIBRI_XMPP_PASSWORD" ]]; then
  89. echo 'FATAL ERROR: Jibri auth password must be changed, check the README'
  90. exit 1
  91. fi
  92. prosodyctl --config $PROSODY_CFG register $JIBRI_XMPP_USER $XMPP_AUTH_DOMAIN $JIBRI_XMPP_PASSWORD
  93. fi
  94. if [[ "$PROSODY_MODE" == "client" ]]; then
  95. if [[ ! -z $JIBRI_RECORDER_PASSWORD ]]; then
  96. OLD_JIBRI_RECORDER_PASSWORD=passw0rd
  97. if [[ "$JIBRI_RECORDER_PASSWORD" == "$OLD_JIBRI_RECORDER_PASSWORD" ]]; then
  98. echo 'FATAL ERROR: Jibri recorder password must be changed, check the README'
  99. exit 1
  100. fi
  101. prosodyctl --config $PROSODY_CFG register $JIBRI_RECORDER_USER $XMPP_HIDDEN_DOMAIN $JIBRI_RECORDER_PASSWORD
  102. fi
  103. if [[ "$(echo "$ENABLE_TRANSCRIPTIONS" | tr '[:upper:]' '[:lower:]')" == "true" ]] || [[ "$ENABLE_TRANSCRIPTIONS" == "1" ]]; then
  104. if [[ ! -z $JIGASI_TRANSCRIBER_PASSWORD ]]; then
  105. [ -z "$JIGASI_TRANSCRIBER_USER" ] && JIGASI_TRANSCRIBER_USER="transcriber"
  106. prosodyctl --config $PROSODY_CFG register $JIGASI_TRANSCRIBER_USER $XMPP_HIDDEN_DOMAIN $JIGASI_TRANSCRIBER_PASSWORD
  107. fi
  108. fi
  109. fi
  110. if [[ ! -z $JIGASI_XMPP_PASSWORD ]]; then
  111. OLD_JIGASI_XMPP_PASSWORD=passw0rd
  112. if [[ "$JIGASI_XMPP_PASSWORD" == "$OLD_JIGASI_XMPP_PASSWORD" ]]; then
  113. echo 'FATAL ERROR: Jigasi auth password must be changed, check the README'
  114. exit 1
  115. fi
  116. prosodyctl --config $PROSODY_CFG register $JIGASI_XMPP_USER $XMPP_AUTH_DOMAIN $JIGASI_XMPP_PASSWORD
  117. fi
  118. if [[ "$PROSODY_MODE" == "visitors" ]]; then
  119. [ -z "$VISITORS_XMPP_DOMAIN" ] && VISITORS_XMPP_DOMAIN="meet.jitsi"
  120. [ -z "$PROSODY_VISITOR_INDEX" ] && PROSODY_VISITOR_INDEX=0
  121. FULL_VISITORS_XMPP_DOMAIN="v$PROSODY_VISITOR_INDEX.$VISITORS_XMPP_DOMAIN"
  122. if [[ ! -f /config/certs/$FULL_VISITORS_XMPP_DOMAIN.crt ]]; then
  123. # echo for using all default values
  124. echo | prosodyctl --config $PROSODY_CFG cert generate $FULL_VISITORS_XMPP_DOMAIN
  125. fi
  126. elif [[ "$PROSODY_MODE" == "brewery" ]]; then
  127. echo "No need to generate certs for main XMPP domain in brewery mode"
  128. else
  129. if [[ ! -f /config/certs/$XMPP_DOMAIN.crt ]]; then
  130. # echo for using all default values
  131. echo | prosodyctl --config $PROSODY_CFG cert generate $XMPP_DOMAIN
  132. fi
  133. fi
  134. if [[ ! -f /config/certs/$XMPP_AUTH_DOMAIN.crt ]]; then
  135. # echo for using all default values
  136. echo | prosodyctl --config $PROSODY_CFG cert generate $XMPP_AUTH_DOMAIN
  137. fi
  138. # certs will be created in /config/data
  139. mv /config/data/*.{crt,key} /config/certs/ || true
  140. rm -f /config/data/*.cnf