site_deliver

#!/bin/bash

#Script utilisé pour livrer mon site.
#Il faudra changer les valeurs pour pouvoir l'utiliser.
#Pour les noms d'utilisateur FTP, ils peuvent être
#de la forme utilisateur ou utilisateur:motdepasse
#La 2ème est fortement déconseillée car le mot
#de passe est enregistré en clair dans le script.
#L'option noarch permet de ne pas uploader l'archive.


#Constantes à modifier
DEV_DIR=/home/tian/Developpement/Mon_Site/Site
SCRIPTS_SUBDIR=scripts
IMAGES_SUBDIR=images
THEMES_SUBDIR=themes
FORUM_SUBDIR=forums

SITE_DELIVERY_SUBDIR=SAIT
SITE_TGZ_FILE=SAIT.tar.gz
FORUM_DELIVERY_SUBDIR=forum
FORUM_TGZ_FILE=forums.tar.gz
NEWER_SUBDIR=newer
TOUCH_REFERENCE=touch.ref

LOGIN_FILE=private.php

FTP_FTP_USER=*****
FTP_WWW_USER=*****
FTP_FTP_URL=ftp://$FTP_FTP_USER@*****
FTP_WWW_URL=ftp://$FTP_WWW_USER@*****
FTP_WWW_ROOT=/www

PAGES_EXT='*.php *.inc *.js'

TMP_FTP_COMMANDS=/tmp/ftp_commands.$$

function clean()
{
  echo "Nettoyage"
  cd $DEV_DIR
  rm -rf $NEWER_SUBDIR
  rm -rf $SITE_DELIVERY_SUBDIR
  rm -rf $FORUM_DELIVERY_SUBDIR
  rm -f $SITE_TGZ_FILE
  rm -f $FORUM_TGZ_FILE
  rm -f $TMP_FTP_COMMANDS
  exit
}

if [ "$1" = "clean" ]
then
  clean
fi

trap clean 0

cd $DEV_DIR

#Pré-Nettoyage
rm -f $TGZ_FILE
find . | grep "~$" | xargs rm 2>/dev/null

#Copie des fichiers modifiés
mkdir $NEWER_SUBDIR 2>/dev/null
mkdir $NEWER_SUBDIR/$SCRIPTS_SUBDIR 2>/dev/null
mkdir $NEWER_SUBDIR/$IMAGES_SUBDIR 2>/dev/null
mkdir $NEWER_SUBDIR/$THEMES_SUBDIR 2>/dev/null
mkdir $NEWER_SUBDIR/$FORUM_SUBDIR 2>/dev/null
if [ ! -e $TOUCH_REFERENCE ]
then
  touch $TOUCH_REFERENCE
fi

for file in `find . -type f | grep -v TODO`
do
  if [ $file -nt $TOUCH_REFERENCE ]
  then
    cp $file $NEWER_SUBDIR/$file
  fi
done

cd $NEWER_SUBDIR >/dev/null

nbr_files=`find . -type f | wc -l`
if [ "$nbr_files" -eq 0 ]
then
  echo "Site à jour, aucune opération nécessaire"
  exit
fi

#Pendant les tests, l'option -V de ftp
#peut etre enlevée pour voir les messages d'erreur.

#Upload du site

>$TMP_FTP_COMMANDS

if [ `ls $PAGES_EXT 2>/dev/null | wc -l` != 0 ]
then
  cat >> $TMP_FTP_COMMANDS <<EOF
cd $FTP_WWW_ROOT
ascii
!echo "*********************"
!echo "* Copie des pages *"
!echo "*********************"
mput *
a
EOF
fi

if [ `ls $SCRIPTS_SUBDIR | wc -l` != 0 ]
then
  cat >> $TMP_FTP_COMMANDS <<EOF
!echo "*********************"
!echo "* Copie des scripts *"
!echo "*********************"
cd $FTP_WWW_ROOT/$SCRIPTS_SUBDIR
lcd $DEV_DIR/$NEWER_SUBDIR/$SCRIPTS_SUBDIR
mput *
a
EOF
fi

if [ `ls $THEMES_SUBDIR | wc -l` != 0 ]
then
  cat >> $TMP_FTP_COMMANDS <<EOF
!echo "*********************"
!echo "* Copie des themes *"
!echo "*********************"
cd $FTP_WWW_ROOT/$THEMES_SUBDIR
lcd $DEV_DIR/$NEWER_SUBDIR/$THEMES_SUBDIR
mput *
a
EOF
fi

if [ `ls $FORUM_SUBDIR | wc -l` != 0 ]
then
  cat >> $TMP_FTP_COMMANDS <<EOF
!echo "*********************"
!echo "* Copie des forums *"
!echo "*********************"
cd $FTP_WWW_ROOT/$FORUM_SUBDIR
lcd $DEV_DIR/$NEWER_SUBDIR/$FORUM_SUBDIR
mput *
a
EOF
fi

if [ `ls $IMAGES_SUBDIR | wc -l` != 0 ]
then
  cat >> $TMP_FTP_COMMANDS <<EOF
!echo "*********************"
!echo "* Copie des images *"
!echo "*********************"
binary
cd $FTP_WWW_ROOT/$IMAGES_SUBDIR
lcd $DEV_DIR/$NEWER_SUBDIR/$IMAGES_SUBDIR
mput *
a
EOF
fi

cat >> $TMP_FTP_COMMANDS <<EOF
!echo done
!sleep 2
EOF

ftp -V $FTP_WWW_URL < $TMP_FTP_COMMANDS | grep -v Unimplemented

cd $DEV_DIR

if [ "$1" != "noarch" ]
then
  #Gestion de l'archive

  #Archive du site
  mkdir $SITE_DELIVERY_SUBDIR 2>/dev/null
  cp $PAGES_EXT LICENSE $SITE_DELIVERY_SUBDIR
  mkdir $SITE_DELIVERY_SUBDIR/$THEMES_SUBDIR
  cp $THEMES_SUBDIR/*.css $SITE_DELIVERY_SUBDIR/$THEMES_SUBDIR
  tar zcf $SITE_TGZ_FILE $SITE_DELIVERY_SUBDIR

  #Archive du forum
  mkdir $FORUM_DELIVERY_SUBDIR 2>/dev/null
  cd $FORUM_SUBDIR
  cp $PAGES_EXT LICENSE $DEV_DIR/$FORUM_DELIVERY_SUBDIR
  cd -
  cd $DEV_DIR/$FORUM_DELIVERY_SUBDIR
  sed "s/^\(.*\)=.*/\1= \"****\"/" $LOGIN_FILE > $LOGIN_FILE.tmp
  mv $LOGIN_FILE.tmp $LOGIN_FILE
  cd -
  tar zcf $FORUM_TGZ_FILE $FORUM_DELIVERY_SUBDIR

  #Upload des archives

  echo "**********************"
  echo "* Copie des archives *"
  echo "**********************"
  cat > $TMP_FTP_COMMANDS <<EOF
binary
put $SITE_TGZ_FILE
put $FORUM_TGZ_FILE
bye
EOF

  ftp -V $FTP_FTP_URL < $TMP_FTP_COMMANDS | grep -v Unimplemented
fi

touch $TOUCH_REFERENCE

echo "Mise à jour du site terminée"