#!/bin/sh 

# changetrack - surveille une URL donne. Si elle a chang depuis la
#   dernire visite, envoie la nouvelle page  l'adresse spcifie par
#   courrier lectronique.

sitearchive="/tmp/changetrack"          #  changer au besoin
sendmail="/usr/sbin/sendmail"           # il faudra peut-tre adapter!
fromaddr="webscraper@intuitive.com"     # remplacez  votre guise

if [ $# -ne 2 ] ; then
  echo "Syntaxe: $(basename $0) URL <adresse de courrier lectronique>" >&2
  exit 1
fi 

if [ ! -d $sitearchive ] ; then
  if ! mkdir $sitearchive ; then
    echo "$(basename $0): chec: je n'ai pas pu crer $sitearchive." >&2
    exit 1
  fi
  chmod 777 $sitearchive           #  changer pour prserver vos secrets
fi

if [ "$(echo $1 | cut -c1-5)" != "http:" ] ; then
  echo "Veuillez utiliser des URL compltes (dbutant par http://)" >&2
  exit 1
fi

fname="$(echo $1 | sed 's/http:\/\///g' | tr '/?&' '...')"
baseurl="$(echo $1 | cut -d/ -f1-3)/"

# Extrait une copie de la page Web dans un fichier d'archives. Vous
# remarquerez qu'on compare les documents en examinant uniquement les 
# contenus (on utilise -dump, pas -source), de manire  viter
# toute analyse de HTML...

lynx -dump "$1" | uniq > $sitearchive/${fname}.new

if [ -f $sitearchive/$fname ] ; then
  # Nous avons dj vu ce site; on compare donc les deux avec diff
  if diff $sitearchive/$fname $sitearchive/${fname}.new > /dev/null ; then
    echo "Le site $1 a chang depuis notre dernire visite."
  else
    rm -f $sitearchive/${fname}.new     # rien de nouveau...
    exit 0                              # aucun changement, on se casse.
  fi
else
  echo "Note: c'est la premire fois qu'on voit ce site."
fi

# Si vous en tes arriv l, c'est que le site a chang et que nous devons
# envoyer le contenu du fichier .new  l'utilisateur. On remplace 
# ensuite le fichier original par le fichier .new pour le prochain
# appel du script.

( echo "Content-type: text/html"
  echo "From: $fromaddr (Le surveillant de site web)"
  echo "Subject: Le site Web $1 a change"
  echo "To: $2"
  echo ""

  lynx -source $1 | \
    sed -e "s|[sS][rR][cC]=\"|src=\"$baseurl|g" \
        -e "s|[hH][rR][eE][fF]=\"|href=\"$baseurl|g" \
        -e "s|$baseurl\/http:|http:|g"
) | $sendmail -t

# On met  jour la dernire photographie du site Web

mv $sitearchive/${fname}.new $sitearchive/$fname
chmod 777 $sitearchive/$fname

# C'est termin.
exit 0
