
TWONKY_PATH=/usr/local/twonkymedia-5/
TWONKY_SAVE=/CacheVolume/twonkymedia-5/

# Save Twonky binaries on upgrade
twonky_save ()
{
    logger -s -t "${logtag}" "twonky_save()"
    
    if [ -f ${TWONKY_PATH}twonkymediaserver ]; then
        if [ ! -f ${upgradePath}${TWONKY_PATH}twonkymediaserver ]; then
            logger -s -t "${logtag}" "Copying twonky binaries to upgrade path.."
            mkdir -p ${upgradePath}${TWONKY_PATH}
            cp -rpv ${TWONKY_PATH}* ${upgradePath}${TWONKY_PATH}
        fi
        if [ ! -f ${TWONKY_SAVE}twonkymediaserver ]; then
            mkdir -p ${TWONKY_SAVE}
            (cd ${TWONKY_PATH} && find . -type f -exec md5sum {} \;) >/tmp/twonkymedia.md5sums
            cp -rpv ${TWONKY_PATH}* ${TWONKY_SAVE}
            ##*/
            mv -v /tmp/twonkymedia.md5sums ${TWONKY_SAVE}
            sync
            echo 3 > /proc/sys/vm/drop_caches
            cd ${TWONKY_SAVE}
            md5sum -c twonkymedia.md5sums
            if [ $? -ne 0 ]; then
                logger -s -t "${logtag}" "Twonky save to CacheVolume failed."
            else
                logger -s -t "${logtag}" "Twonky save to CacheVolume was successful."
            fi
            cd -
        fi
    fi
}

# Recover Twonky binaries on re-upgrade to Twonky
twonky_recover ()
{
    logger -s -t "${logtag}" "Recovering Twonky binaries..."

    if [ -f ${TWONKY_SAVE}/twonkymediaserver -a ! -f ${TWONKY_PATH}/twonkymediaserver ]; then
        mkdir -p ${TWONKY_PATH}
        cp -rpfv ${TWONKY_SAVE}/* ${TWONKY_PATH}
        #*/
        sync
        echo 3 > /proc/sys/vm/drop_caches
        (cd ${TWONKY_PATH} && md5sum -c twonkymedia.md5sums)
        if [ $? -ne 0 ]; then
            logger -s -t "${logtag}" "Twonky recovery from cache volume failed."
        fi
    fi
}

# Restore Twonky binaries to CacheVolume after factory-restore
twonky_restore ()
{
    logger -s -t "${logtag}" "Restoring saved Twonky binaries..."

    if [ -f ${TWONKY_PATH}/twonkymediaserver -a ! -f ${TWONKY_SAVE}/twonkymediaserver  ]; then
        mkdir -p ${TWONKY_SAVE}
        cp -rpfv ${TWONKY_PATH}/* ${TWONKY_SAVE}
        #*/
        sync
        echo 3 > /proc/sys/vm/drop_caches
        (cd ${TWONKY_SAVE} && md5sum -c twonkymedia.md5sums)
        if [ $? -ne 0 ]; then
            logger -s -t "${logtag}" "Twonky restore to saved cache failed."
        else
            logger -s -t "${logtag}" "Twonky restore to saved cache succeeded."
        fi
    fi
}

# Check for pre-existing Twonky binaries on the unit
twonky_allow ()
{
    logger -s -t "${logtag}" "Searching for previously installed Twonky binaries..."
    
    if [ ! -f ${upgradePath}${TWONKY_PATH}/twonkymediaserver ] && [ ! -f ${TWONKY_SAVE}/twonkymediaserver  ]; then
        logger -s -t "${logtag}" "not found."
        return 1
    else
        logger -s -t "${logtag}" "found."
    fi
    
    return 0
}
