Nella gestione di calendari condivisi sembra che l'anello debole della catena sia la disponibilità di client sufficientemente evoluti. In questa installazione utilizzeremo il client Icedove con il plugin Lightning.
NOTA: Icedove è il nome che il progetto Debian utilizza al posto di Thunderbird, come Iceweasel è utilizzato al posto di Firefox. Una spiegazione di tale rebranding può essere trovata qui: Mozilla Corporation software rebranded by the Debian project.
Il plugin Lightning aggiunge le funzionalità di calendario al programma di posta Icedove. Supporta diversi tipi di calendari: iCalendar (ICS), CalDAV e Sun Java System Calendar Server (WCAP). Tralasciando la soluzione non libera WCAP, il formato CalDAV pare fornire le caratteristiche migliori, soprattutto per quanto riguarda la condivisione di calendari tra più utenti.
Debian fornisce il pacchetto davical, che contiene l'omonimo programma. In Debian Lenny il pacchetto non esiste, per fortuna è sufficiente scaricare i due pacchetti Squeeze davical e libawl-php e installarli manualmente con dpkg -i. Il programma si appoggia su un database PostgreSQL, quindi si deve installare anche il DB server.
La procedura di installazione è descritta nella pagina Installation. Qui di seguito un riassunto delle operazioni.
Il setup del database prevede di fare accesso al DB senza bisogno di password, quindi è necessario impostare quanto segue in /etc/postgresql/8.3/main/pg_hba.conf:
local davical davical_app trust local davical davical_dba trust
La procedura da lanciare è la seguente:
su postgres -c /usr/share/davical/dba/create-database.sh
Al termine viene stampata la password di admin (generata automaticamente) necessaria per accedere all'interfaccia web.
Per rendere accessibili le pagine web di amministrazione è sufficiente un link simbolico:
ln -s /usr/share/davical/htdocs /var/www/davical
Nelle impostazioni di Apache (/etc/apache2/sites-available/default) si aggiunge:
# DAViCal settings.
Alias /images/ /usr/share/davical/htdocs/images/
<Directory /usr/share/davical/htdocs/>
AllowOverride None
Order allow,deny
Allow from all
</Directory>
php_value include_path /usr/share/awl/inc
php_value magic_quotes_gpc 0
php_value register_globals 0
#php_value error_reporting "E_ALL & ~E_NOTICE"
php_value default_charset "utf-8"
La configurazione minima del server DAViCal è in /etc/davical/config.php:
$c->admin_email = 'davical@rigacci.org'; $c->system_name = "Server DAViCal Rigacci.Org"; $c->pg_connect[] = 'dbname=davical port=5432 user=davical_app';
Al termine della configurazione conviene impostare l'accesso al database in modalità md5 (protetta dal password), invece che trust. In /etc/postgresql/8.3/main/pg_hba.conf si imposta:
local davical davical_app md5 local davical davical_dba md5
Dal prompt SQL si imposta la password agli utenti:
ALTER USER davical_app PASSWORD 'PwdSecret'; ALTER USER davical_dba PASSWORD 'PwdSecret';
In /etc/davical/config.php si indica la passowrd di accesso
$c->pg_connect[] = 'dbname=davical port=5432 user=davical_app password=PwdSecret';
e si protegge opportunamente il file:
chgrp www-data /etc/davical/config.php chmod 640 /etc/davical/config.php
NOTA: Non è chiaro chi e quando fa accesso con l'utente davical_dba, non l'interfaccia web. Sono gli script di installazione create-database.sh e di upgrade update-davical-database. Quindi attenzione: prima di installare un updata forse conviene rimettere l'accesso in modalità trust.
Gli oggetti gestiti da un server DAViCal vengono definiti genericamente Principals, possono essere di tipo Users, Resources e Groups (una possibile traduzione: Protagonisti: Utenti, Risorse e Gruppi).
Il tutto viene gestito dall'interfaccia web di DAViCal, tuttavia l'interfaccia web non consente di vedere il contenuto dei calendari.
Per creare un utente: User Functions, Create Principal. Del tutto simile la procedura per creare una risorsa.
Per creare un calendario (normalmente associato ad un utente oppure ad una risorsa): List Users, click sull'utente, Principal Collections, Create Collection. Il calendario sarà identificato da un URL del tipo:
<http://host:port>/davical/caldav.php/<principal>/<collection>/
dove principal è il nome dell'utente o della risorsa e collection è il nome del calendario.
lightning-1.0b2-tb-linux.xpi. In Debian Squeeze c'è Icedove 3.0.10, bisogna installare la versione 3.1 da experimental, per fortuna basta scaricare il singolo .deb e installarlo con dpkg -ilightning-1.0b2-tb-linux.xpi.Al termine di questa procedura compaiono due nuove icone in alto a destra, nella barra dei tab: Calendario e Attività.
Dopo aver creato un calendario sul server DAViCal tramite l'interfaccia web, lo si aggiunge a Icedove con la seguente procedura:
http://<host>/davical/caldav.php/<principal>/<collection>/.$HOME/.icedove/.Per gestire la parteciapzione di persone ad eventi, lo standard CalDAV prevede l'esposizione dell'informazione Free/Busy (se una persona è libera in un determinato momento) e l'invio delle notifiche (richiesta di partecipazione, risposta di conferma).
Lightning 1.0 supporta solo parzialmente il meccanismo: l'informazione free/busy viene gestita correttamente, mentre l'invio delle notifiche viene effettuato tramite SMTP da Thunderbird invece che essere delegato al server CalDAV.
Seguendo queste indicazioni, anzitutto si modifica la configurazione del server DAViCal, in modo che non annunci la capacità di gestione notifiche, in /etc/davical/config.php si aggiunge:
$c->override_dav_header = '1, 2, access-control, calendar-access, calendar-schedule, extended-mkcol, calendar-proxy, bind';
cioè viene nascosta al client la caratteristiche calendar-auto-schedule (vedere l'impostazione predefinita in /usr/share/davical/htdocs/caldav.php).
Per creare un evento ed invitare i partecipanti:
Lightning/Thunderbird invia una mail di notifica a ciascundo degli invitati, se l'invitato riponde affermativamente (deve avere il plugin Lightning installato) la mail di conferma viene recapitata nella nostra mailbox. Thunderbird/Lightning riconosce tale riposta ed evidenzia che il messaggio contiene modifiche ad un evento, con il pulsante apposito accettiamo le modifiche.
A questo punto possiamo aprire nuovamente l'evento, cliccando sull'elenco dei partecipanti vedremo chi ha accettato l'invito evidenziato da un bollino verde.