Outils pour utilisateurs

Outils du site


linux:notifications_sur_mise_a_jour_d_un_agenda_owncloud_caldav

Créer un système de notifications sur mise à jour d'un agenda ownCloud (CalDav)

Utile si un ami ou un collègue de travail vous a donné ou a donné à plusieurs personnes les droits en lecture sur un agenda (cas d'un secrétariat par exemple)

J'ai testé ça sur une Linux Mint 11 Lisa. Dans ce didacticiel on supposera que l'installation d'ownCloud est parfaitement fonctionnelle et accessible à l'adresse https://monserveur/owncloud/, le compte de l'utilisateur owncloud sera “moi” et son mot de passe “toto”. On suppose également que sendmail ou postffix est également bien installé localement.

Bien sur ça marche avec d'autres agendas que celui d'ownCloud ! Je pense notamment à

Moins sur pour

Bref, il y a de quoi s'“amuser”.

Installation des prérequis

fusedav

Pour monter une adresse CalDav sur le système de fichier local dans l'espace utilisateur (sans passer par fstab)

sudo aptitude install fusedav

ecryptfs

Pour chiffrer certains fichiers

sudo aptitude install ecryptfs-utils
ecryptfs-setup-private 

Saisissez le mot de passe d'ouverture de votre session et appuyez sur entrée pour générer un “mot de passe de montage”.

Fermez votre session utilisateur et reconnectez-vous pour que le montage s'effectue.

Accéder à l'agenda CalDav par le système de fichiers

mkdir ~/Private/agenda-owncloud-moi/
fusedav -u moi -p toto https://monserveur/owncloud/apps/calendar/caldav.php/calendars/moi/default ~/agenda-owncloud-moi/

Pour l'automatiser à chaque démarrage, on créé un script que l'on stockera dans un dossier chiffré :

echo #/bin/sh >> ~/Private/montage-agenda.sh
echo fusedav -u moi -p toto https://monserveur/owncloud/apps/calendar/caldav.php/calendars/moi/default/ ~/Private/agenda-owncloud-moi/ & >> ~/Private/montage-agenda.sh

Accéder à l'agenda par le système de fichiers

Créer un script permettant de détecter les différences entre 2 intervalles et envoyer une notification par mail en cas de différence

touch ~/Private/notification-maj-agenda.sh
nano ~/Private/notification-maj-agenda.sh

Ajouter

if [[ -d ~/Private/agenda-owncloud-moi-cache ]]
then
 if [[ 'diff -Naur ~/Private/agenda-owncloud-moi ~/Private/agenda-owncloud-moi-cache' != '' ]] then
   diff -Naur ~/Private/agenda-owncloud-moi ~/Private/agenda-owncloud-moi-cache | mail -s "l'agenda a été mis à jour..." adresse.mail@pour.etre.notifie
   cp -R ~/Private/agenda-owncloud-moi/* ~/Private/agenda-owncloud-moi-cache/
 fi
else
 mkdir ~/Private/agenda-owncloud-moi-cache
 cp -R ~/Private/agenda-owncloud-moi/* ~/Private/agenda-owncloud-moi-cache/
fi

Pour que le résultat soit plus clair dans la notification par mail, on peut remplacer la ligne

diff -Naur ~/Private/agenda-owncloud-moi ~/Private/agenda-owncloud-moi-cache | mail -s "l'agenda a été mis à jour..." adresse.mail@pour.etre.notifie

par

diff -Naur ~/Private/agenda-owncloud-moi ~/Private/agenda-owncloud-moi-cache | grep -E 'SUMMARY|DTSTART|DTEND|LOCATION|DESCRIPTION' | mail -s "l'agenda a été mis à jour..." adresse.mail@pour.etre.notifie

Faire CTRL+O pour enregistrer et CTRL+X pour quitter

Ajouter au fichier cron une entrée pour que le script soit exécuté régulièrement.

crontab -e

Ligne à ajouter au fichier cron pour contrôler les mises à jour de l'agenda toutes les 5mn par exemple

*/5 *  * * *    ~/Private/notification-maj-agenda.sh 1>/dev/null 2>&1

Alternativement côté client on pourrait utiliser inotify (nettement plus puissant) et côté serveur il y a aussi les triggers MYSQL bien sur (mais encore faut il avoir accès au serveur…)

J'essaie de compléter ce didacticiel dès que j'ai 5mn.

linux/notifications_sur_mise_a_jour_d_un_agenda_owncloud_caldav.txt · Dernière modification: 2012/03/11 18:53 par FrenchHope