#!/bin/bash

# FIXME relecture + commentaires

id=$1
url=$2
email=$3
schedule=$4
now=$5
user=$6
password=$7

timeout=5

for CONFIG_FILE in \
      /etc/alternc/local.sh \
      /usr/lib/alternc/functions.sh 
  do
    if [ ! -r "$CONFIG_FILE" ]; then
        echo "Can't access $CONFIG_FILE."
        exit 1
    fi
    . "$CONFIG_FILE"
done

from="noreply@$FQDN"

if [ "x$url" == "x" ] ; then
  echo Missing arguments
  exit 0
fi

urldecode() {
  arg="$1"
  i="0"
(
  while [ "$i" -lt ${#arg} ]; do
    c0=${arg:$i:1}
    if [ "x$c0" = "x%" ]; then
      c1=${arg:$((i+1)):1}
      c2=${arg:$((i+2)):1}
      printf "\x$c1$c2"
      i=$((i+3))
    else
      echo -n "$c0"
      i=$((i+1))
    fi
  done
) | sed -e 's/"/\\"/g' -e 's/\!/\\\!/g'
}

params=""
if [ ! "x$user" == "x" -a ! "x$password" == "x" ]; then
  params="--http-user=\"$(urldecode $user)\" --http-password=\"$(urldecode $password)\""
fi

wget -O - $params "$(urldecode $url)" --timeout=$timeout | mailx -s "AlternC Cron $id - Report $date" -r "$from" "$email"

# On calcule l'heure de la prochaine execution idéale
((interval=$schedule * 60))
((next=$(( $(( $now / $interval)) + 1 )) * $interval ))

# On check pour pas avoir d'injection SQL
if [[ ! "$id" =~ ^[0-9]+$ || ! "$next" =~ ^[0-9]+$ ]] ; then
  echo "Id +$id+ or time +$next+ is incorrect."
  return 2
fi

$MYSQL_DO "update cron set next_execution = FROM_UNIXTIME($next) where id = $id;"

