#!/bin/bash
PrOgRaM="${0##*/}"
function Error_Avortant(){ echo -e "\nERROR a ${PrOgRaM}: ${1}.\nAvortant ...\n" ;  exit $2 ; }
# Dades d'usuari i locals.
Directori_Web_Local="${HOME}/WebPersonal/LesWebs/"
UsUaRi_MaQuInA="alseda@tom.mat.uab.cat"
function HELP(){ echo -e "\nUs:\n\n${PrOgRaM} [opcions de websinc i d'rsync] [usuari@maquina]\n
on les opcions de websinc son:\n
  -h | --help
  --nosincro   | --nomespermisos
  --nopermisos | --nomessincro

NOTA: Totes les opcions desconegudes es passen directament a rsync.\n" ;  exit 1 ; }
PeRmIsOs=true
SiNcRo=true
CaNvIuSuMaQiNa=false
OpCiOnSdRsYnC=""
RegexpOfEmailAddress="^(([-a-zA-Z0-9\!#\$%\&\'*+/=?^_\`{\|}~])+\.)*[-a-zA-Z0-9\!#\$%\&\'*+/=?^_\`{\|}~]+@\w((-|\w)*\w)*\.(\w((-|\w)*\w)*\.)*\w{2,4}$"
#
while [ $# -gt 0 ] ; do
  case "$1" in
    "") Error_Avortant "paràmetre buit" 4 ;;
    -h | --help) HELP ;;
    --nosincro | --nomespermisos) SiNcRo=false ;;
    --nopermisos | --nomessincro) PeRmIsOs=false ;;
    -*)  OpCiOnSdRsYnC="${OpCiOnSdRsYnC}${1} " ;;
     *)  $CaNvIuSuMaQiNa && HELP
         CaNvIuSuMaQiNa=true ; UsUaRi_MaQuInA="${1%%/}" 
         [[ ${UsUaRi_MaQuInA} =~ ${RegexpOfEmailAddress} ]] || Error_Avortant "adreça '${UsUaRi_MaQuInA}' il·legal" 5
  esac
  shift
done
#
( $PeRmIsOs || $SiNcRo ) || Error_Avortant "no hi ha res a fer" 2
#
Directori_web_Local_Sortida="${Directori_Web_Local}${UsUaRi_MaQuInA}/www"
[ -d "${Directori_web_Local_Sortida}" ] || Error_Avortant "el Directori\n   '${Directori_web_Local_Sortida}'\nno existeix" 3
#
if $PeRmIsOs ; then
# canvia permisos a la web local per assegurar que la web al servidor
# tingui els permisos correctes. El grup solament s'actualitza a la creacio dels fitxers.
# neteja
    chown -R "${USER}:${USER}" "${Directori_web_Local_Sortida}"
    chmod 0750 "${Directori_web_Local_Sortida}"
    cd ${Directori_web_Local_Sortida}
    find * -name "*~" -exec rm -rf '{}' \;
    find * -type d -exec chmod 755 '{}' \; -o -exec chmod 644 '{}' \;
fi
#
# La sincronitzacio. Cal fer-ho aixi perque funcioni el --delete. Llavors el sobreescriu
# $Servidor:/home/$Usuari/$Nom_Directori_Web. Per aixo s'ha eliminat l'actualitzacio
# del grup al fer rsync. Es important que, localment, l'owner i els permisos siguin correctes.
# tambe ho es el grup perque els fitxers al ser creats al servidor ho siguin correctament.
# rsync $@ -rlptoDvz --exclude='/.directory' --delete ${Directori_web_Local_Sortida}/  ${UsUaRi_MaQuInA}:~/www #### For KDE
$SiNcRo && rsync $OpCiOnSdRsYnC -rlptoDvz --delete ${Directori_web_Local_Sortida}/  ${UsUaRi_MaQuInA}:~/www
#
exit $?
#
