#!/usr/bin/with-contenv bash

# make our folders
mkdir -p \
    /config/{nginx/site-confs,keys} \
    /run \
    /var/lib/nginx/tmp/client_body \
    /var/tmp/nginx

# generate keys (maybe)
if [[ $ENABLE_LETSENCRYPT -eq 1 ]]; then
    if [[ ! -f /etc/letsencrypt/live/$LETSENCRYPT_DOMAIN/fullchain.pem ]]; then
        certbot certonly \
            --noninteractive \
            --standalone \
            --preferred-challenges http \
            -d $LETSENCRYPT_DOMAIN \
            --agree-tos \
            --email $LETSENCRYPT_EMAIL
        cp /defaults/letsencrypt-renew /etc/cron.monthly/
    fi
else
    # use self-signed certs
    if [[ -f /config/keys/cert.key && -f /config/keys/cert.crt ]]; then
        echo "using keys found in /config/keys"
    else
        echo "generating self-signed keys in /config/keys, you can replace these with your own keys if required"
        SUBJECT="/C=US/ST=TX/L=Austin/O=jitsi.org/OU=Jitsi Server/CN=*"
        openssl req -new -x509 -days 3650 -nodes -out /config/keys/cert.crt -keyout /config/keys/cert.key -subj "$SUBJECT"
    fi
fi

# copy config files
if [[ ! -f /config/nginx/nginx.conf ]]; then
    cp /defaults/nginx.conf /config/nginx/nginx.conf
fi

if [[ ! -f /config/nginx/ssl.conf ]]; then
    tpl /defaults/ssl.conf > /config/nginx/ssl.conf
fi

if [ ! -f "/config/nginx/dhparams.pem" ]; then
    openssl dhparam -out /config/nginx/dhparams.pem 2048
fi

if [[ ! -f /config/nginx/site-confs/default ]]; then
    tpl /defaults/default > /config/nginx/site-confs/default
fi

if [[ ! -f /config/config.js ]]; then
    cp /defaults/config.js /config/config.js
    sed -i \
        -e "s#jitsi-meet.example.com#$XMPP_DOMAIN#g" \
        -e "s#bosh:.*#bosh: '/http-bind',#" \
        -e "s#muc:.*#muc: '${XMPP_MUC_DOMAIN}',#" \
        -e "s#// focusUserJid:.*#focusUserJid: '${JICOFO_AUTH_USER}@${XMPP_AUTH_DOMAIN}',#" \
        /config/config.js

    if [[ $ENABLE_AUTH -eq 1 ]]; then
        if [[ $ENABLE_GUESTS -eq 1 ]]; then
            sed -i \
                -e "s#// anonymousdomain:.*#anonymousdomain: '${XMPP_GUEST_DOMAIN}',#" \
                /config/config.js
        fi

        sed -i \
            -e "s#// authdomain:.*#authdomain: '${XMPP_DOMAIN}',#" \
            /config/config.js
    fi
fi

if [[ ! -f /config/interface_config.js ]]; then
    cp /defaults/interface_config.js /config/interface_config.js
fi

