Exporter les contacts CardDav de votre Diskstation

Stephane Turquay
16 mai 2015
Pas de commentaire

Depuis la version DiskStation Manager 5.1, Synology nous offre un package CardDav nous permettant de stocker tous nos contacts sur notre NAS. Très pratique pour synchroniser nos différents appareils connectés sans utiliser les services Gmail, iCloud ou autres. Génial, mais où sont réellement vos contacts ? Et en cas de perte de données ? Voyons en détail les possibilités qui s’offrent à nous.

Si vous avez ouvert le package CardDav Server, vous aurez constaté qu’il n’y a que les réglages du port et du HTTPS. La mise à jour 5.2 disponible depuis mi-mai n’apporte rien de nouveau à ce niveau là.

Stocker ses données sur son propre serveur peut s’avérer rassurant sauf quand on ne trouve aucune trace dans les dossiers de celui-ci. Et nous le savons tous, avoir une solution de backup est obligatoire en cas de perte de données, vol, incendie ou autres.

Pour sauvegarder vos contacts gérés par CardDav Server, vous avez deux solutions :

  1. Utiliser le package natif Sauvegarde et Réplication
  2. Exporter vous même les données de la base de données

Base de données ? Mais je n’ai rien dans phpMyAdmin !

C’est exact ! Le système intègre une base de données PostGreSQL native pour le bon fonctionnement de celui-ci. Cette base de données est accessible en SSH mais aussi avec un script PHP.

Pour cet article, je vous propose un script PHP mais sachez que cela est également possible en SSH.

Prérequis

Export des contacts avec un script PHP

Pour cette méthode, le travail va être très simple pour vous car vous n’aurez plus qu’à télécharger le script que j’ai développé : Synology CardDav Server Contacts Exporter. Cependant, il me semble intéressant de vous expliquer le fonctionnement.

Où se trouvent les contacts ?

Avant tout chose, nous devons localiser où se trouvent les contacts gérés par le package CardDav Server. Suite à une réponse sur le forum Synology, j’ai découvert que les données sont stockées dans la base de données, de type PostGreSQL, du NAS.

En effet, votre DiskStation Manager intègre un système de gestion de base de données PostGreSQL pour le bon fonctionnement du système : logs des journaux récents, historique du moniteur de ressources et certains packages tels que Download Station, Note Station et bien entendu CardDav Server.

Sachant cela, nous allons voir comment exporter les éléments dont nous avons besoins.

Comment exporter les données ?

Comme annoncé précédemment, nos contacts se trouvent cachés dans les tréfonds du Synology, dans une base de données nommée caldav. Pour des raisons de sécurité, nous ne pouvons pas se connecter à la base de données cependant nous avons la possibilité de faire un dump de celle-ci mais plus précisément de la table addressbook_object.

Pour cela, nous allons utiliser la commande pg_dump dans la fonction PHP exec – PHP :

Note : Vous pouvez tester cette ligne de code là en plaçant le fichier .php dans le dossier de Web Station (par défaut : web/).

Comment exploiter les données ?

Désormais, nous avons un fichier incluant toutes les données de nos contacts mais celui-ci est brut et n’est pas vraiment exploitable. Nous devons donc le parser afin créer des fichiers pour chacun des contacts que nous pourrons sauvegarder et utiliser comme nous le souhaitons.

Pour isoler les parties du fichier qui nous intéressent, nous allons utiliser des expressions régulières :

La variable $caldav contient notre contenu brut tandis que $vcard_name et $vcard_data sont nos variables, en fait des array,  qui stockeront temporairement les données que nous avons besoin pour créer.

Suite à cela, nous devons créer des fichiers .vcf avec $vcard_name qui fournira le nom du fichier et $vcard_data les données associées :

Pour chaque occurence trouvée, nous créons un fichier .vcf dans le même dossier où se trouve notre fichier.php.

A votre tour de jouer en utilisant le script Synology CardDav Server Contacts Exporter

Télécharger le script PHP sur Github

  1. Pour télécharger le script, vous avez deux possibilités :
  2. Déplacer le dossier ou simplement le fichier index.php dans le dossier de votre choix du dossier partagé de votre Web Station.
  3. Configurer les variables $dump_file et $export_path. Cette étape est facultative, cela fonctionne avec les paramètres de base.
  4. Accéder à index.php via votre navigateur web afin d’exécuter le script

Félicitations ! Vous trouverez tous les contacts dans le dossier export ou celui que vous avez choisi dans les paramètres.

N’hésitez pas à faire vos retours ou demandes de support dans les commentaires.