Publié le 03/29/2018, rédigé par Gaulthier LALLEMAND

DAViCal

Configuration de DAViCal.

Sommaire : Monter son propre service de calendrier

Etape précédente : Configuration d'Apache

Si DAViCal a été installé par les dépôts, son fichier de configuration existe à cet endroit :

sudo nano -c /etc/davical/config.php

Si ce n'est pas le cas, je crée ce fichier. Puis je l'adapte afin d'y faire figurer les lignes suivantes :

<?php
    //----------------------Généralités-------------------------
    // Le nom de domaine associé au serveur hébergeant DAViCal :
    $c->domain_name = "davical.mondomaine.fr";

    // Le nom de mon instance DAViCal :
    $c->system_name = 'Serveur DAViCal de ma Société';

    // Définit l'abbréviation utilisée dans les logs pour DAViCal :
    $c->sysabbr = 'DAViCal';

    // Les identifiants de connexion à la base de données :
    $c->pg_connect[] = 'dbname=davical port=5432 user=davical_app';

    /**Adresse email de l'administrateur (attention: cet email est visible
    *par tous sur la page d'authentification de DAViCal) :
    **/
    $c->admin_email = 'admin_davical@mondomaine.fr';

    // Le nombre de jours à partir duquel les événements passés ne sont plus
    // visibles dans le client (ie pas téléchargés) :
    $c->hide_older_than = 180;

    //----------------Valeurs par défaut--------------------
    // La langue à utiliser par défaut (ici l'anglais) :
    $c->default_locale = "en";

    // Pour chaque nouvel utilisateur, je décide de créer deux carnets d'adresses
    // et deux calendriers :
    $c->default_collections = array(
        array('type'=>'addressbook', 'name'=>'personal_addressbook', 'displayname'=>'%fn personal addressbook', 'privileges'=>array('read-free-busy', 'schedule-deliver')),
        array('type'=>'addressbook', 'name'=>'work_addressbook', 'displayname'=>'%fn work addressbook', 'privileges'=>array('read-free-busy', 'schedule-deliver')),
        array('type'=>'calendar', 'name'=>'personal_calendar', 'displayname'=>'%fn personal calendar', 'privileges'=>array('read-free-busy', 'schedule-deliver')),
        array('type'=>'calendar', 'name'=>'work_calendar', 'displayname'=>'%fn work calendar', 'privileges'=>null)
    );

    // Les droits accordés par défaut par un nouvel utilisateur à tous les autres :
    $c->default_privileges = array('read-free-busy', 'schedule-deliver');

    //-------------------Sécurité--------------------
    // Restreint l'accès à la page setup.php aux administrateurs :
    $c->restrict_setup_to_admin = true;

    /**
    * Permet de fournir un lien pour chaque Collection, afin de
    * télécharger le fichier ".ics" correspondant :
    **/
    $c->get_includes_subcollections = true;

    /**
    * Une série de valeurs qui fixent certaines propriétés d'un
    * utilisateur lors de sa création :
    **/
    $c->template_usr = array( 'active' => true,
            'locale' => 'en_EN',
            'date_format_type' => 'E',
            'email_ok' => date('Y-m-d')
            );

Note 1 : il existe un modèle de fichier de configuration fourni avec DAViCal à cet endroit : /usr/share/davical/config/example-config.php. Il contient des commentaires sur chaque option. Mais en pratique, il est plus simple de créer un fichier avec le contenu présenté ci-dessus.

Note 2: la balise php de fermeture ?> est volontairement absente du fichier de configuration.

Quelques détails supplémentaires sur cette configuration

$c->domain_name

C'est l'adresse à laquelle sera disponible la page de connection pour les utilisateurs. Ce domaine fera aussi partie de l'URL appelée par le logiciel client pour récupérer les informations (calendriers et carnets d'adresses) sur le serveur.

C'est l'URL vers laquelle pointe le champ A créé précédement dans le DNS.

$c->system_name

Contient le nom de mon instance DAViCal. Cette chaîne de caractères (ici Serveur DAViCal de ma Société) sera visible entre autres sur la page d'authentification ainsi que comme titre de la page d'accueil davical.mondomaine.fr/index.php.

$c->pg_connect[]

Contient les identifiants de connection à la base de données PostgreSQL. Il existe d'autres champs, tel que le mot de passe.

$c->hide_older_than

Le nombre de jours à partir duquel les événements passés ne sont plus visibles dans le client (ie pas téléchargés). Ils restent cependant sur le serveur. Ceci est optionnel, et sert à économiser des ressources en cas de ralentissement manifeste du serveur.

$c->default_locale

Dans le cas présent, je choisis l'anglais comme langue par défaut. Je peux cependant mettre une autre langue au choix parmi la liste disponible en base. Cette liste est disponible ainsi :

# Je me connecte en tant que "postgres":
sudo su postgres
# Puis je consulte la base de données:
psql davical -c "SELECT * FROM supported_locales"
# J'obtiens alors une liste des langues disponibles. Les valeurs qui m'intéressent
# sont dans la colonne "locale".
# Exemple pour le français: "fr_FR".
$c->default_collections

Pour les calendriers et carnets d'adresses, la variable default_collections est définie comme une liste d'array. Chaque array définit un calendrier ou un carnet d'adresses. L'utilisateur peut modifier ces objets et en créer d'autres sur l'interface.

Pour les droits associés à une Collection, le code correspondant est :

'privileges'=>DROITS

Où la chaîne DROITS doît être remplacée par l'une des valeurs suivantes.

Une chaîne de type array('droit1', 'droit2', ...) :

'privileges'=>array('read-free-busy', 'schedule-deliver')

La valeur null. Cela indique que les droits sur cette Collection seront les droits par défaut, définis dans la variable $c->default_privileges :

'privileges'=>null

Une chaîne vide de type array(). Cela indique que la Collection sera dépourvue de droits :

'privileges'=>array()
$c->default_privileges

Pour les droits par défaut, il est possible de mettre n'importe quel droit disponible. Ces droits s'appliquent pour les nouveaux calendriers et carnets d'adresses, ce qui signifie qu'une modification de la variable default_privileges dans le fichier de configuration n'aura aucun effet sur les calendriers et carnets d'adresses existants.

Dans le cas présent, les droits appliqués permettent aux autres utilisateurs présents sur le serveur d'envoyer au propriétaire du calendrier des invitations, ainsi que d'avoir accès à son free/busy. Bien sûr, ces droits sont modifiables dans l'interface par l'utilisateur.

$c->restrict_setup_to_admin

Cette ligne est obligatoire dans le cadre d'une politique de sécurité renforcée.

En effet, sans cette ligne, n'importe quel utilisateur (même non administrateur), peut accéder à l'URL davical.mondomaine.fr/setup.php, laquelle contient beaucoup d'informations sensibles à propos de la configuration du serveur.

$c->get_includes_subcollections

Permet de créer un lien de téléchargement afin d'exporter le fichier ".ics" d'un calendrier.

$c->template_usr

Cette variable permet de fixer certaines valeurs lors de la création d'un utilisateur :

Note : les formats de dates sont les suivants :

Etape suivante: Vérification de l'installation