Haut de page

iCal / WebDAV / PHP iCalendar


Cette page décrit une configuration permettant de publier et de consulter des calendriers au format iCalendar v2.0 de l'IETF (.ics). Les logiciels Apple iCal (70% des utilisateurs de PHP iCalendar), Mozilla Calendar (Windows, Linux, bientôt MacOS) (15%), Ximian Evolution (10%) et KOrganizer (5%) sont compatibles avec ce format. Avec Outport, il est possible d'exporter des calendriers d'Outlook 2000 au format iCalendar. Outlook 2000+ sur PC et Outlook ainsi qu'Entourage sur Mac supportent le format iCalendar.

Cette configuration a été conçue sur MacOS 10.2.4. Elle fonctionne aussi en 10.2.6 [Juin 2003].
Configuration CalDAV avec MacOS X Server 10.5 [mars 2008]


Scénario de l’exemple - iCal / WedDAV

Le scénario présente un utilisateur A gérant avec iCal deux calendriers Conseil-1 et Travail. Cet utilisateur publie le calendrier Conseil-1 afin que d'autres personnes s'y abonnent. Un utilisateur B s'y inscrit avec iCal, un troisième utilisateur s'y inscrit avec Mozilla Calendar sous Windows XP. Pour finir, un utilisateur synchronise son téléphone portable avec un calendrier.

L'exemple est assez général car il permet facilement de créer d'autres calendriers partagés et ne limite pas l'inscription d'un calendrier à un seul utilisateur. Il n'y a pas besoin de mot de passe pour consulter et s'inscrire aux calendriers.

Pour publier un calendrier l'utilisateur A se connecte à un serveur WebDAV sous le nom de dav1. Ce même utilisateur pourrait publier plusieurs calendriers. D'autres utilisateurs B, C, ... pourraient aussi publier des calendriers sous les noms dav2, dav3,...

L'ensemble des calendriers est consultable par tous les utilisateurs via leur navigateur Web (scripts PHP iCalendar). Des restrictions d'accès (sur l'ensemble) peuvent être mises au niveau du serveur Web.

Note :

  1. Les noms dav1, dav2, dav3,... n'ont rien à voir avec des comptes utilisateur (unix) sur le serveur WebDAV.
  2. La configuration du serveur Web est fait de manière à ne pas changer le fichier /etc/httpd/httpd.conf de base. Cela permet d'effectuer des mises à jours de système sans avoir à reconfigurer le serveur. Les paramétrages du serveur sont pour cela situés dans le répertoire /etc/httpd/users/ dont l'ensemble des fichiers sont automatiquement inclus à la fin de /etc/httpd/httpd.conf.
    -rw-r--r-- 1 root wheel 236 Apr 16 14:37 ical.conf -rw-r--r-- 1 root wheel 268 Apr 14 22:40 php.conf -rw-r--r-- 1 root wheel 882 Apr 14 23:26 webdav.conf
  3. Tous les fichiers sur le serveur Web appartiennent à l'utilisateur www et au groupe www.

iCal 1.0.2

Il n'y a rien à configurer pour utiliser iCal. Voici un exemple de calendrier.

Publication

iCal-Calendriers Dans cet exemple, sont affichés deux calendriers : Conseil-1 et Travail. Tous les fichiers de calendriers sont dans le répertoire ~/Librairy/Calendars/.

Pour le publier, il suffit de le sélectionner dans la liste des Calendriers et de choisir Publier du menu Calendrier.

Cliquer sur la case Publier sur un serveur web et indiquer l'adresse, le nom et le mot de passe pour le serveur WebDAV. Voir configuration de WebDAV pour la localisation, le nom et le mot de passe.

Note: Tous les changements du calendrier Conseil-1 sont automatiquement publiés.

iCal-Publier

iCal Publié Confirmé

Le calendrier est publié, on peut constater qu'il est bien dans l'arborescence des fichiers sur serveur web.

Inscription iCal

Sur une autre machine ou un autre compte, il est possible de s'inscrire au calendrier à l'adresse <webcal://serveur_web/ical/calendars/Conseil-1.ics>.

iCal Inscription Après inscription, le calendrier Conseil-1 apparaît (ici en rouge) avec ses autre calendriers.

iCal Inscrit

Avec les options choisies, il sera rafraîchit tous les jours.

Inscription Mozilla

La même chose en utilisant Mozilla Calendar sous Windows XP (Merci Lionel).


Consultation sur téléphone mobile

Grâce à l'application iSync d'Apple, il est possible de synchroniser son calendrier iCal avec un téléphone Bluetooth. Ici un Siemens SX1... et avec son iPod (Merci Emmanuel).

WebDAV 1.0.3

Installation

WebDAV est déjà installé dans MacOS 10.2. Beaucoup d'articles indiquent comment le ré-installer mais la plupart arrivent souvent à des incompatibilités. Pour le configurer voir le contenu du fichier webdav.conf.

Configuration des comptes

Dans cet exemple, nous utilisons un système d'authentification dit Basic, c'est à dire que le nom et le mot de passe circule en clair sur le réseau. Cela reste donc adapté à un réseau interne d'entreprise ou depuis d'extérieur via un VPN. Les comptes et mots de passes cryptés seront stockés dans un fichier /etc/httpd/webdav.access. Le nom et la localisation de ce fichier n'ont aucune importance pour peu qu'il ne soit pas accessible via le serveur Web.

-rw-r----- 1 root www 44 Apr 12 21:59 webdav.access

Ici je n'ai donné les droits de lecture qu'au groupe www (le serveur Web).

Pour créer ce fichier, il faut utiliser la commande htpasswd. Pour le premier compte il fait utiliser l'option -c, ne plus l'utiliser pour les comptes suivants.

htpasswd -c -m /etc/httpd/webdav.access dav1 htpasswd -m /etc/httpd/webdav.access dav2

Vous pouvez vérifier et corriger les droits d'accès au fichier webdav.access.

Configuration des répertoires

Les répertoires WebDAV doivent être dans une arborescence du serveur Web. Soit l'arborescence principale /Library/WebServer/Documents/, soit dans un compte utilisateur ~login/Sites/. Dans cet exemple, je les ai créés dans l'arborescence principale et je les ai donnés au propriétaire www. De manière général, il faut que les répertoires soient accessibles en lecture/écriture au serveur web (nom et groupe www).

Ici je vais créer le répertoire dav à la racine du site puis le répertoire rep_dav1 ainsi qu'un sous dossier calendar, je vais les rendre propriétaire de www. Cet ensemble de sous dossiers n'a rien d'obligatoire, cela permet simplement de poruvoir créer proprement plusieurs utilisateurs et de les autoriser à utiliser le serveur Web depuis le Finder.

cd /Library/WebServer/Documents/ mkdir dav mkdir dav/rep_dav1 mkdir dav/rep_dav1/calendar chown -R www dav chgrp -R www dav

Le fichier webdav.conf

Normalement pour activer le module mod_dav du serveur http, il faudrait LoadModule et AddModule mais AddModule ne semble pas nécessaire dans la configuration d'Apple car il donne même un warning dans /var/log/httpd/error_log : [warn] module mod_dav.c is already added, skipping. Il est donc mis en commentaire.
D'autres lignes sont en commentaire car elles sont issues des différents articles sur le sujet et me permettent de faire des essais.

# # Configuration WebDAV/1.0.3 # LoadModule dav_module libexec/httpd/libdav.so #AddModule mod_dav.c <IfModule mod_dav.c> DAVLockDB /private/var/run/davlocks/DAVLock #DAVMinTimeout 600 BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully BrowserMatch "^WebDAVFS" redirect-carefully BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully BrowserMatch "Microsoft-WebDAV-MiniRedir/5.1.2600" redirect-carefully BrowserMatch "^WebDrive" redirect-carefully <Directory "/Library/WebServer/Documents/dav/rep_dav1"> DAV On AllowOverride AuthConfig AuthName "Serveur WebDAV" AuthType Basic AuthUserFile /etc/httpd/webdav.access Require user dav1 Order allow,deny Allow from all </Directory> </IfModule> #<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> #Require valid-user #</Limit> #<LimitExcept GET head OPTIONS> # Require user webdav #</LimitExcept>

WebDAV depuis le Finder

Il est possible de se connecter à un répertoire WebDAV depuis le Finder, pour cela il faut utiliser Se connecter à un serveur du menu fichier et indiquer le nom, le mot de passe et le chemin http du répertoire d'un utilisateur webdav.

Sous MacOS X 10.2.4, on ne peut pas l'ajouter dans les favoris, cela doit être du à la méthode http qui fait référence aux navigateurs et pas au Finder. Il faudrait voir avec la méthode webdav:// ???

Si on se connecte à un répertoire avec authentification Basic, on obtient :

Authentification Basic

Cliquer sur Continuer.

Authentification WebDAV

Taper le nom d'utilisateur et le mot de passe et cliquer sur OK.

On peut ensuite manipuler ce répertoire comme n'importe quel disque.

Disque WebDAV

Inside Webdav

Voici les différentes actions utilisées lors de l'utilisation de WebDAV. Cela peut permettre de limiter l'accès (Limit ou LimitExcept).

Depuis OS X 10.9

Depuis Windows 7 / Lecteur Réseau

Depuis Windows 7 / WinSCP > 5.7.1


PHP iCalendar 0.9.1

Installation

PHP iCalendar est un ensemble de scripts PHP, il faut donc activer PHP dans votre configuration du serveur Web Apache car ce n'est pas fait par défaut.

Récupérer PHP iCalendar sur le site source forge, le décompresser dans l'arborescence du serveur Web. Soit l'arborescence principale /Library/WebServer/Documents/, soit dans un compte utilisateur ~login/Sites/. Dans cet exemple, je l'ai décompressé dans l'arborescence principale et j'ai laissé les droits root.admin aux fichiers décompressés. De manière général, il faut que les répertoires soient accessiblent en lecture/écriture au serveur web (nom et groupe www). Je n'ai pas changé le nom du répertoire afin de pouvoir facilement en ajouter une autre version par la suite. J'ai simplement créé un alias ical dans la configuration du serveur http. Voir fichier ical.conf ci-dessous :

# # Configuration iCal/PHPiCalendar 0.9.1 # <IfModule mod_alias.c> Alias /ical "/Library/WebServer/Documents/phpicalendar-0.9.1" </IfModule> # Supression du listing des agendas <Location "/ical"> Options -Indexes </Location>

Configuration

Dans le fichier config.inc.php de PHP iCalendar, j'ai simplement adapté la configuration à mes besoins en mettant $default_view à 'week', $language à 'French' , $week_start_day à 'Monday' et $day_start à '0900'. Dans la traduction française (fichier languages/french.inc.php), j'ai mis $timeFormat_small = 'H:i'; J'ai aussi modifié les scripts PHP afin que le nom des calendriers apparaissent correctement.

Je n'ai pas utilisé les $list_webcals[] car soit il essayait de faire un open("http://..."), soit le nom n'était pas bon. La solution a été de créer un lien symbolique depuis le répertoire /Library/WebServer/Documents/phpicalendar-0.9.1/calendars/ vers le calendrier à publier.

ln -s /Library/WebServer/Documents/dav/rep_dav1/calendar/Conseil-1.ics /Library/WebServer/Documents/phpicalendar-0.9.1/calendars/.

Utilisation

Voici ce que l'on obtient lorsqu'on se connecte à l'URL <http://serveur_web/ical> et que l'on choisit le Calendrier Conseil-1 dans la rubrique Voir.

Pour s'abonner directement au calendrier, il suffit de cliquer sur Souscrire, cela lancera automatiquement iCal et s'abonnera à <webcal://serveur_web/ical/calendars/Conseil-1.ics>.

PHPiCalendar

Voir aussi

Plein de calendrier pour s'y abonner
http://www.apple.com/fr/ical
http://www.gregwestin.com/webdav_for_ical.php
http://developer.apple.com/internet/macosx/icalendarfiles.html
http://www.macosxhints.com/article.php?story=20021114063433862
http://comparitech.net/webdav
http://www.macdevcenter.com/pub/a/mac/2002/09/20/ical_webdav.html
http://www.ultramac.net/macosx/instal/php/
http://www.bc.edu/offices/ats/rits/instruction/elearning/support/documentprep/webdav/#X
http://www.simonganiere.ch/mac/articles.php?id_articles=29
http://www.ietf.org/rfc/rfc2445.txt
http://www.mozilla.org/projects/calendar
http://outport.sourceforge.net
http://www.ximian.com/products/evolution
http://docs.info.apple.com/article.html?artnum=107564
Article comparatif vCalendar/iCalendar http://www.phpbuilder.com/columns/chow20021007/php3

Avril 2003, juin 2003, avril 2015



FutureShare

 | 

Glossaire

 |