#!/bin/sh

if [ ! -e "/opt/userdata/devicestack/portal.conf" ]; then
  echo "/opt/userdata/devicestack/portal.conf does not exist" | logger -t dyndns-gira
  exit 1
fi

echo "parsing portal config"  | logger -t dyndns-gira
while read LINE; do
 varName=$(echo "$LINE" | cut -d "=" -f1)
 varValue=$(echo "$LINE" | cut -d "=" -f2-)
 if [ "${varName}" = "" ] || [ "${varValue}" = "" ]; then
   echo "varName is: ${varName}, varValue is: ${varValue}" | logger -t dyndns-gira
   exit 1
 fi
 export $varName=$varValue
done < "/opt/userdata/devicestack/portal.conf"
echo "parsing portal config done" | logger -t dyndns-gira

cancel()
{
  if [ "${pidSleep}}" != "" ]; then
    kill ${pidSleep} &
  fi
  exit 0
}

trap cancel SIGINT
trap cancel SIGTERM

hscode()
{
  HSCODE1=$(curl -H 'User-Agent:' --connect-timeout 60 -s "https://geraeteportal.gira.de/hscode.php?dummy=$(date "+%s")")
  if [ "${HSCODE1}" = "" ]; then
    echo "HSCODE1 is empty" | logger -t dyndns-gira
  fi
  HASCODE_SINGLE="${USER}${PASSWORD}${HSCODE1}"
  HSCODE2_RAW=$(echo -n ${HASCODE_SINGLE}${HASCODE_SINGLE})
  HSCODE2=$(echo -n ${HSCODE2_RAW} | md5sum | cut -d ' ' -f1)
}

RESULT=""
while [ "${RESULT}" = "" ]; do
 hscode
 RESULT=$(curl -H 'User-Agent:' --connect-timeout 60 -s "https://geraeteportal.gira.de/hsstop.php?hsid=${USER}&hscode1=${HSCODE1}&hscode2=${HSCODE2}")
 echo "result hsstop: ${RESULT}" | logger -t dyndns-gira

 if [ "${RESULT}" = "OK" ]; then
  echo "Password check okay" | logger -t dyndns-gira
 else
  echo "password check failed" | logger -t dyndns-gira
  echo "Result|${RESULT}|" | logger -t dyndns-gira
 fi
 sleep 1
done

while true; do
 hscode
 RESULT=$(curl -H 'User-Agent:' -s "https://geraeteportal.gira.de/hslive.php?hsid=${USER}&hscode1=${HSCODE1}&hscode2=${HSCODE2}")
 echo "result hslive: ${RESULT}" | logger -t dyndns-gira
 if [ "$(echo ${RESULT} | grep OK)" = "" ]; then
   echo "error occured" | logger -t dyndns-gira
   exit 1
 fi
 sleep $((${INTERVAL}*60)) &
 pidSleep=$(echo $!)
 wait
done
