#!/bin/bash # postinst script for jitsi-meet-prosody # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) . /etc/jitsi/videobridge/config . /etc/jitsi/jicofo/config # loading debconf . /usr/share/debconf/confmodule # detect dpkg-reconfigure, just delete old links db_get jitsi-meet/jvb-hostname JVB_HOSTNAME_OLD=$RET if [ -n "$RET" ] && [ ! "$JVB_HOSTNAME_OLD" = "$JVB_HOSTNAME" ] ; then rm -f /etc/prosody/conf.d/$JVB_HOSTNAME_OLD.cfg.lua rm -f /etc/prosody/certs/$JVB_HOSTNAME_OLD.key rm -f /etc/prosody/certs/$JVB_HOSTNAME_OLD.crt fi # stores the hostname so we will reuse it later, like in purge db_set jitsi-meet-prosody/jvb-hostname $JVB_HOSTNAME # and we're done with debconf db_stop PROSODY_CONFIG_PRESENT="true" PROSODY_CREATE_JICOFO_USER="false" PROSODY_HOST_CONFIG="/etc/prosody/conf.avail/$JVB_HOSTNAME.cfg.lua" PROSODY_CONFIG_OLD="/etc/prosody/prosody.cfg.lua" # if there is no prosody config extract our template # check for config in conf.avail or check whether it wasn't already configured in main config if [ ! -f $PROSODY_HOST_CONFIG ] && ! grep -q "VirtualHost \"$JVB_HOSTNAME\"" $PROSODY_CONFIG_OLD; then PROSODY_CONFIG_PRESENT="false" mkdir -p /etc/prosody/conf.avail/ cp /usr/share/doc/jitsi-meet-prosody/prosody.cfg.lua-jvb.example $PROSODY_HOST_CONFIG sed -i "s/jitmeet.example.com/$JVB_HOSTNAME/g" $PROSODY_HOST_CONFIG sed -i "s/jitmeetSecret/$JVB_SECRET/g" $PROSODY_HOST_CONFIG sed -i "s/focusSecret/$JICOFO_SECRET/g" $PROSODY_HOST_CONFIG sed -i "s/focusUser/$JICOFO_AUTH_USER/g" $PROSODY_HOST_CONFIG if [ ! -f /etc/prosody/conf.d/$JVB_HOSTNAME.cfg.lua ]; then ln -s $PROSODY_HOST_CONFIG /etc/prosody/conf.d/$JVB_HOSTNAME.cfg.lua fi PROSODY_CREATE_JICOFO_USER="true" # on some distributions main prosody config doesn't include configs # from conf.d folder enable it as this where we put our config by default if ! grep -q "Include \"conf\.d\/\*\.cfg.lua\"" $PROSODY_CONFIG_OLD; then echo -e "\nInclude \"conf.d/*.cfg.lua\"" >> $PROSODY_CONFIG_OLD fi fi # UPGRADE to server side focus check if focus is configured if [ -f $PROSODY_HOST_CONFIG ] && ! grep -q "VirtualHost \"auth.$JVB_HOSTNAME\"" $PROSODY_HOST_CONFIG; then echo -e "\nVirtualHost \"auth.$JVB_HOSTNAME\"" >> $PROSODY_HOST_CONFIG echo -e " authentication = \"internal_plain\"\n" >> $PROSODY_HOST_CONFIG sed -i "s/Component \"conference.$JVB_HOSTNAME\" \"muc\"/Component \"conference.$JVB_HOSTNAME\" \"muc\"\nadmins = { \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\" }\n/g" $PROSODY_HOST_CONFIG echo -e "Component \"focus.$JVB_HOSTNAME\"" >> $PROSODY_HOST_CONFIG echo -e " component_secret=\"$JICOFO_SECRET\"\n" >> $PROSODY_HOST_CONFIG PROSODY_CREATE_JICOFO_USER="true" # UPGRADE to server side focus on old config(/etc/prosody/prosody.cfg.lua) elif [ ! -f $PROSODY_HOST_CONFIG ] && ! grep -q "VirtualHost \"auth.$JVB_HOSTNAME\"" $PROSODY_CONFIG_OLD; then echo -e "\nVirtualHost \"auth.$JVB_HOSTNAME\"" >> $PROSODY_CONFIG_OLD echo -e " authentication = \"internal_plain\"\n" >> $PROSODY_CONFIG_OLD if ! grep -q "admins = { }" $PROSODY_CONFIG_OLD; then echo -e "admins = { \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\" }\n" >> $PROSODY_CONFIG_OLD else sed -i "s/admins = { }/admins = { \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\" }\n/g" $PROSODY_CONFIG_OLD fi echo -e "Component \"focus.$JVB_HOSTNAME\"" >> $PROSODY_CONFIG_OLD echo -e " component_secret=\"$JICOFO_SECRET\"\n" >> $PROSODY_CONFIG_OLD PROSODY_CREATE_JICOFO_USER="true" fi if [ "$PROSODY_CREATE_JICOFO_USER" = "true" ]; then # create 'focus@auth.domain' prosody user prosodyctl register $JICOFO_AUTH_USER $JICOFO_AUTH_DOMAIN $JICOFO_AUTH_PASSWORD # trigger a restart PROSODY_CONFIG_PRESENT="false" fi if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then HOST="$( (hostname -s; echo localhost) | head -n 1)" DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)" openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj \ "/O=$DOMAIN/OU=$HOST/CN=$JVB_HOSTNAME/emailAddress=webmaster@$HOST.$DOMAIN" \ -keyout /var/lib/prosody/$JVB_HOSTNAME.key \ -out /var/lib/prosody/$JVB_HOSTNAME.crt fi ln -sf /var/lib/prosody/$JVB_HOSTNAME.key /etc/prosody/certs/$JVB_HOSTNAME.key ln -sf /var/lib/prosody/$JVB_HOSTNAME.crt /etc/prosody/certs/$JVB_HOSTNAME.crt if [ "$PROSODY_CONFIG_PRESENT" = "false" ]; then invoke-rc.d prosody restart invoke-rc.d jitsi-videobridge restart invoke-rc.d jicofo restart fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0