#!/bin/bash
# postinst script for jitsi-meet-tokens
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <postinst> `abort-remove'
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package


case "$1" in
    configure)

        # loading debconf
        . /usr/share/debconf/confmodule

        db_get jitsi-meet-prosody/jvb-hostname
        JVB_HOSTNAME="$RET"

        db_get jitsi-meet-tokens/appid
        if [ "$RET" = "false" ] ; then
            echo "Application ID is mandatory"
            exit 1
        fi
        APP_ID=$RET

        db_get jitsi-meet-tokens/appsecret
        if [ "$RET" = "false" ] ; then
            echo "Application secret is mandatory"
        fi
        APP_SECRET=$RET

        PROSODY_HOST_CONFIG="/etc/prosody/conf.avail/$JVB_HOSTNAME.cfg.lua"

        # Store config filename for purge
        db_set jitsi-meet-prosody/prosody_config "$PROSODY_HOST_CONFIG"

        db_stop

        if [ -f "$PROSODY_HOST_CONFIG" ] ; then
            if grep -q "plugin_paths" "$PROSODY_HOST_CONFIG"; then
                # enable tokens in prosody host config
                sed -i 's/--plugin_paths/plugin_paths/g' $PROSODY_HOST_CONFIG
                sed -i 's/authentication = "anonymous"/authentication = "token"/g' $PROSODY_HOST_CONFIG
                sed -i 's/ --allow_unencrypted_plain_auth/ allow_unencrypted_plain_auth/g' $PROSODY_HOST_CONFIG
                sed -i "s/ --app_id=\"example_app_id\"/ app_id=\"$APP_ID\"/g" $PROSODY_HOST_CONFIG
                sed -i "s/ --app_secret=\"example_app_secret\"/ app_secret=\"$APP_SECRET\"/g" $PROSODY_HOST_CONFIG
                sed -i 's/ --modules_enabled = { "token_verification" }/ modules_enabled = { "token_verification" }/g' $PROSODY_HOST_CONFIG

                # Install luajwt
                if ! luarocks install luajwtjitsi; then
                   echo "Failed to install luajwtjitsi - try installing it manually"
                fi

                if [ -x "/etc/init.d/prosody" ]; then
                    invoke-rc.d prosody restart
                fi

                echo "This package requires BOSH Prosody module to be patched !"
                echo "Use the following command, after this package has been installed and"
                echo "after every prosody-trunk upgrade:"
                echo "sudo patch -N /usr/lib/prosody/modules/mod_bosh.lua /usr/share/jitsi-meet/prosody-plugins/mod_bosh.lua.patch"
            else
                echo "Failed apply auto-config to $PROSODY_HOST_CONFIG which most likely comes from not supported version of jitsi-meet"
            fi
        else
            echo "Prosody config not found at $PROSODY_HOST_CONFIG - unable to auto-configure token authentication"
        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
