#!/bin/bash

set -eo pipefail

XIVOCC_CONF="/etc/xivocc-recording.conf"
ASTERISK_CONF="/etc/asterisk/extensions_extra.d/xivocc-recording.conf"

fix_paths() {
    chown asterisk:www-data /etc/asterisk/extensions_extra.d/xivocc-recording.conf
    chown -R asterisk:asterisk /var/spool/xivocc-recording/
    chown -R asterisk:asterisk /var/log/xivocc-recording/
}

update_configs() {
    local recording_server="$1"
    local ipbx_name="$2"

    if [[ ! -f "$XIVOCC_CONF" ]]; then
        echo "ERROR: $XIVOCC_CONF not found" >&2
        exit 1
    fi

    if [[ ! -f "$ASTERISK_CONF" ]]; then
        echo "ERROR: $ASTERISK_CONF not found" >&2
        exit 1
    fi

    sed -i "s/^RECORDING_SERVER=.*/RECORDING_SERVER=${recording_server}/" "$XIVOCC_CONF"
    sed -i "s/ipbx_name=[^)]*/ipbx_name=${ipbx_name}/" "$ASTERISK_CONF"
}

main() {
    local recording_server_host="$1"
    local ipbx_name="$2"
    local ipbx_name_sanitized

    if [[ -z "$recording_server_host" ]]; then
        recording_server_host=$(whiptail --inputbox "Enter the Recording server FQDN or IP address:" 8 50 3>&1 1>&2 2>&3)
    fi
    if [[ -z "$ipbx_name" ]]; then
        ipbx_name=$(whiptail --inputbox "Enter XiVO PBX name (without any dash \"-\" character):" 8 50 3>&1 1>&2 2>&3)
    fi

    #Removing space and dash in name
    ipbx_name_sanitized=$(echo "${ipbx_name}"|tr -d '[:space:]-')
    update_configs "$recording_server_host" "$ipbx_name_sanitized"

    fix_paths

    if ! command -v asterisk >/dev/null 2>&1; then
        echo "ERROR: asterisk command not found" >&2
        exit 1
    fi


    asterisk -rx "dialplan reload"
}

main "$@"
