#!/bin/sh 
# place this file at: /etc/hotplug.d/iface/99-login-fon

# Configurations
FON_USERNAME=email%40domain.com
FON_PASSWORD=123456
FON_DELAY_UP=3

COOKIE_JAR_PATH=/tmp/nos-fon-cookie-jar.$INTERFACE
. /lib/functions.sh

clean () {
  [ -f $COOKIE_JAR_PATH ] && rm -f $COOKIE_JAR_PATH
}

logger -t FonLogin "Starting on $INTERFACE:$DEVICE -> $ACTION"

attempt () {
    local INDICATOR="action=\"/nos"
    local POST_URL=""
    local DOMAIN_URL="https://captiveportal.nos.pt"
    local TARGET="http://sapo.pt"

    logger -t FonLogin "Trying to fetch a website"
    DATA="$(curl --insecure --interface $DEVICE --location --cookie-jar $COOKIE_JAR_PATH $TARGET)"

    logger -t FonLogin "Trying to get post url"
    POST_URL="$(echo "$DATA" | grep $INDICATOR | cut -d \" -f 6 | sed -r 's/\&/\&/g')"

    if [ -n "$POST_URL" ]; then
        logger -t FonLogin "Post URL found, trying to login"
        curl \
            --insecure \
            --interface $DEVICE \
            --location \
            --cookie-jar $COOKIE_JAR_PATH \
            --header 'cache-control: no-cache' \
            --header 'content-type: application/x-www-form-urlencoded' \
            --data "userFake=${FON_USERNAME}&UserName=NOS%2F${FON_USERNAME}&Password=${FON_PASSWORD}&rememberMe=true&_rememberMe=on" \
            "$DOMAIN_URL$POST_URL"
    fi

    clean
}

case "$ACTION" in
    ifup)
        logger -t FonLogin "Waiting $FON_DELAY_UP seconds before attempt"
        sleep $FON_DELAY_UP;
        logger -t FonLogin "Attempting to login at FON"
        attempt
    ;;
    update)
        logger -t FonLogin "Attempting to update login at FON"
        attempt
    ;;
esac