#!/bin/sh

# Config files
FEATURES_CONF="/etc/features.conf"
BRANDING_CONF="/etc/branding.conf"
OE_RELEASE="/etc/oe-release"

# Executables
CTPS=/sbin/customthirdpartyserial

KEY_SERIAL="Serial"
KEY_BTM="Hipplay_Brand_Type_Model"
KEY_PORTAL_SERVER="PortalServer"
KEY_SUBDOMAIN="Subdomain"

get_tps () {
    local TPS

    # If we have a custom third party serial generator, use it by default
    if [ -x "${CTPS}" ]; then
        TPS=`${CTPS}`
    fi

    # If we have already saved the serial number in features.conf, use it
    if [ -z "$TPS" ] && [ -f "${FEATURES_CONF}" ]; then
        TPS=`grep Hipplay_device_id "${FEATURES_CONF}" | awk -F= '{ print $2 }'`
    fi

    if [ -z "$TPS" ]; then
        # Get the MAC address of the first interface
        TPS=`/sbin/ifconfig | sed -n 's/.* HWaddr \(.*\)/\1/p' | head -n 1`
    fi

    echo "$TPS"
}

get_config () {
    admin-helper get-config "$1" "$2"
}

set_config () {
    CONFIG_FILE=$1
    CONFIG_KEY=$2
    CONFIG_VALUE=$3
    CONFIG_SEP=" "

    case "$CONFIG_FILE" in
        "$FEATURES_CONF") CONFIG_SEP="=" ;;
        "$BRANDING_CONF") CONFIG_SEP="=" ;;
    esac

    admin-helper set-config "$CONFIG_FILE" "$CONFIG_KEY" "$CONFIG_VALUE" "$CONFIG_SEP"
}

start () {
    HIPPLAY_BRAND_TYPE_MODEL=`get_config "${FEATURES_CONF}" "${KEY_BTM}"`
    PRODUCTKEY=`get_config "${OE_RELEASE}" "${KEY_SERIAL}"`

    # if we don't have a product key, map one
    if [ "$PRODUCTKEY" == "" ]; then
        # TODO: admin-helper cpe-productkey
        THIRDPARTYSERIAL=`get_tps`
        CS=`get_config "${BRANDING_CONF}" "${KEY_PORTAL_SERVER}"`
        PKMAPPER=`curl --insecure --get "https://$CS/pkmapper" \
            --data-urlencode "s=$THIRDPARTYSERIAL" \
            --data-urlencode "p=HipPlayMediaConnectDev" \
            --data-urlencode "n=$HIPPLAY_BRAND_TYPE_MODEL" \
            2>/dev/null`
        PRODUCTKEY=`echo ${PKMAPPER} | sed -n 's/.*<productkey>\(.*\)<\/productkey>.*/\1/p'`

        if [ -z "$PRODUCTKEY" ]; then
            echo "Failed to get a product key from third party serial: $THIRDPARTYSERIAL" >&2
            exit 1
        fi
        echo "Product Key: $PRODUCTKEY" >&2

        set_config "${OE_RELEASE}" "${KEY_SERIAL}" "${PRODUCTKEY}"
        if [ "$?" != "0" ]; then
            echo "Failed to save the product key in /etc/oe-release" >&2
            exit 1
        fi
    fi

    # if we don't have a subdomain, register for one
    SUBDOMAIN=`get_config "${OE_RELEASE}" "${KEY_SUBDOMAIN}"`
    if [ "x" = "x$SUBDOMAIN" ]; then
        admin-helper cpe-register
        RETVAL=$?

        if [ "$RETVAL" != "0" ]; then
            echo "Failed to register for a subdomain" >&2
            exit ${RETVAL}
        fi
    fi

    # TODO: Get VPN keys here if we decide to get them at startup
}

stop() {
    :
}

RETVAL=0

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    *)
        echo $"Usage: $0 {start|stop}"
        RETVAL=1
esac
exit ${RETVAL}

# vim:set et:
