{"id":249,"date":"2014-02-21T21:42:29","date_gmt":"2014-02-21T19:42:29","guid":{"rendered":"https:\/\/wtf.roflcopter.fr\/blog\/?p=249"},"modified":"2014-05-04T23:10:04","modified_gmt":"2014-05-04T21:10:04","slug":"a-sous-lbus-google-partie-4","status":"publish","type":"post","link":"https:\/\/wtf.roflcopter.fr\/blog\/2014\/02\/21\/a-sous-lbus-google-partie-4\/","title":{"rendered":"A+ sous l\u2019bus Google \u2013 Partie 4"},"content":{"rendered":"<p>Ah quel plaisir d&rsquo;avoir ses contacts et calendrier(s) synchronis\u00e9s sur son t\u00e9l\u00e9phone et son webmail !<br \/>\nUn nouveau num\u00e9ro de t\u00e9l\u00e9phone \u00e0 noter ? Une simple \u00e9dition du contact dans votre webmail et son num\u00e9ro appara\u00eetra dans votre t\u00e9l\u00e9phone.<br \/>\nL&rsquo;int\u00e9gration de ce genre de services dans la vie de tous les jours la rend plus facile.<\/p>\n<p>Cela dit, Google n&rsquo;a pas le monopole du plaisir, des solutions existent et nous allons les mettre en place :)<\/p>\n<h2>Le choix du serveur<\/h2>\n<p>Tout d&rsquo;abord choisissons un protocole libre et ouvert&#8230;<br \/>\nBon, dans ce domaine, il n&rsquo;y a pas trop le choix : on va utiliser les extensions <a href=\"http:\/\/fr.wikipedia.org\/wiki\/CalDAV\">CalDAV<\/a>\u00a0et <a href=\"http:\/\/en.wikipedia.org\/wiki\/CardDAV\">CardDAV<\/a>\u00a0de WebDAV.<br \/>\nIl faut donc dans un premier temps trouver un serveur parlant couramment ces deux protocoles. A l&rsquo;heure o\u00f9 j&rsquo;\u00e9cris ces lignes, seulement quelques serveurs impl\u00e9mentes ces protocoles de fa\u00e7on s\u00e9rieuse <span style=\"text-decoration: underline;\">et facile \u00e0 mettre en place<\/span>, voici ma courte s\u00e9lection :<\/p>\n<ul>\n<li><a href=\"https:\/\/baikal-server.com\/\">Ba\u00efkal<\/a><\/li>\n<li><a href=\"http:\/\/www.davical.org\/\">DaViCal<\/a><\/li>\n<li><a href=\"http:\/\/owncloud.org\/\"><span style=\"line-height: 1.5;\">OwnCloud<\/span><\/a><\/li>\n<li><a href=\"http:\/\/radicale.org\/\">Radical<\/a><\/li>\n<\/ul>\n<p>J&rsquo;ai rapidement \u00e9limin\u00e9 OwnCloud, il faudrait l&rsquo;utiliser quotidiennement pour que cela vaille le coup, et ce n&rsquo;est pas le cas pour moi.<br \/>\nJ&rsquo;ai ensuite test\u00e9 les autres candidats en gardant \u00e0 l&rsquo;esprit qu&rsquo;il faudra mettre les mains dans le cambouis ! Eh oui, si on reprend mon \u00ab\u00a0cahier des charges\u00a0\u00bb de la <a title=\"A+ sous l\u2019bus Google \u2013 Partie 1\" href=\"https:\/\/wtf.roflcopter.fr\/blog\/2013\/08\/20\/a-sous-lbus-google-partie-1\/\">partie 1<\/a>, je souhaite une authentification unique au niveau des diff\u00e9rents services ! Le serveur doit donc pouvoir s&rsquo;y plier d&rsquo;une fa\u00e7on ou d&rsquo;une autre.<\/p>\n<p>Ba\u00efkal est rapidement sorti du lot, \u00e0 vrai dire j&rsquo;ai \u00e9t\u00e9 conquis par son c\u00f4t\u00e9 minimaliste (faire une chose et une seule, mais la faire correctement), et le fait d&rsquo;avoir pu, simplement gr\u00e2ce \u00e0 deux patchs, r\u00e9aliser la partie authentification.<br \/>\nPis Ba\u00efkal \u00e7a sonne russe, et le lac portant ce nom est <a href=\"http:\/\/www.youtube.com\/watch?v=en0p1Y35p3w\">magnifique<\/a> :)<\/p>\n<p>Je vais expliquer dans la suite comment proc\u00e9der. Cela dit, rien ne vous emp\u00eache d&rsquo;utiliser un autre serveur Cal\/CardDAV.<\/p>\n<h2>O\u00f9 l&rsquo;on parle de Baikal<\/h2>\n<p>A l&rsquo;\u00e9poque o\u00f9 j&rsquo;ai commenc\u00e9 \u00e0 titiller la chose, Ba\u00efkal (en version 2.4) avait besoin de deux patchs pour s&rsquo;int\u00e9grer dans ma solution :<\/p>\n<ul>\n<li>Un <a href=\"https:\/\/github.com\/jeromeschneider\/Baikal\/commit\/789203a3e32da2b70723fa21a96eb7c99e24c783\">patch<\/a> pour le support des adresses mail comme nom d&rsquo;utilisateur, or le probl\u00e8me est r\u00e9gl\u00e9 depuis la sortie de la version 2.5.<\/li>\n<li>Un <a href=\"https:\/\/github.com\/jeromeschneider\/Baikal\/issues\/52\">patch <\/a>pour ajouter le support de l&rsquo;authentification IMAP. Il fallait configurer en dur dans le fichier php le serveur IMAP sur lequel baser l&rsquo;authentification. C&rsquo;\u00e9tait sale mais \u00e7a fonctionnait bien.<\/li>\n<\/ul>\n<p>Avant d&rsquo;\u00e9crire cet article, je me suis promen\u00e9 sur le <a href=\"https:\/\/github.com\/jeromeschneider\/Baikal\">Git de Ba\u00efkal<\/a> et quelle ne fut pas ma surprise de voir ce <a href=\"https:\/\/github.com\/jeromeschneider\/Baikal\/pull\/204\">pull request<\/a>\u00a0: enfin, un support d&rsquo;authentification externe LDAP\/MAIL propre et int\u00e9gr\u00e9 \u00e0 l&rsquo;interface \\o\/<br \/>\nVoyez plut\u00f4t :<\/p>\n<p><a href=\"https:\/\/wtf.roflcopter.fr\/blog\/wp-content\/uploads\/2014\/02\/Ba\u00efkal-0.2.7-Web-Admin.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-252 alignnone\" src=\"https:\/\/wtf.roflcopter.fr\/blog\/wp-content\/uploads\/2014\/02\/Ba\u00efkal-0.2.7-Web-Admin.png\" alt=\"Ah si regardez \u00e7a si c'est pas propre :)\" width=\"502\" height=\"439\" srcset=\"https:\/\/wtf.roflcopter.fr\/blog\/wp-content\/uploads\/2014\/02\/Ba\u00efkal-0.2.7-Web-Admin.png 502w, https:\/\/wtf.roflcopter.fr\/blog\/wp-content\/uploads\/2014\/02\/Ba\u00efkal-0.2.7-Web-Admin-300x262.png 300w\" sizes=\"auto, (max-width: 502px) 100vw, 502px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/wtf.roflcopter.fr\/blog\/wp-content\/uploads\/2014\/02\/success_kid.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/wtf.roflcopter.fr\/blog\/wp-content\/uploads\/2014\/02\/success_kid-150x150.png\" alt=\"success_kid\" width=\"150\" height=\"150\" \/><\/a><\/p>\n<p><span style=\"line-height: 1.5;\">Pour vous faciliter la vie, et en attendant que le pull-request soit accept\u00e9 et d\u00e9ploy\u00e9 dans une hypoth\u00e9tique nouvelle version, je vous ai pr\u00e9par\u00e9 un <\/span><a style=\"line-height: 1.5;\" href=\"https:\/\/wtf.roflcopter.fr\/git\/pogo\/baikal\">git avec une version de Ba\u00efkal 2.7 d\u00e9j\u00e0 patch\u00e9e<\/a><span style=\"line-height: 1.5;\">.<\/span><\/p>\n<p>Pour le d\u00e9ployer chez vous :<\/p>\n<pre class=\"lang:sh decode:true\">git clone\u00a0https:\/\/wtf.roflcopter.fr\/git\/pogo\/baikal.git<\/pre>\n<p>Il suffit ensuite d&rsquo;installer et configurer Baikal en suivant le <a href=\"https:\/\/github.com\/jeromeschneider\/Baikal\/blob\/master\/INSTALL.md\">guide officiel<\/a>.<\/p>\n<p>Pour le type d&rsquo;authentification, choisissez \u00ab\u00a0Mail\u00a0\u00bb en StartTLS et entrez l&rsquo;IP ou le nom de votre serveur mail. Vous pouvez, si vous le d\u00e9sirer, utiliser le LDAP d&rsquo;iRedMail au lieu de l&rsquo;authentification IMAP, \u00e0 vous de voir :)<\/p>\n<p>Vous n&rsquo;aurez normalement pas besoin de cr\u00e9er d&rsquo;utilisateur dans Ba\u00efkal, lors d&rsquo;une premi\u00e8re connexion authentifi\u00e9e, il sera cr\u00e9\u00e9 automatiquement.<\/p>\n<p>Pour le d\u00e9bug de l&rsquo;authentification il y a m\u00eame <a href=\"https:\/\/github.com\/jeromeschneider\/Baikal\/blob\/master\/TROUBLESHOOTING.md\">une doc<\/a> avec la liste des commandes \u00e0 entrer et l&rsquo;interpr\u00e9tation des erreurs.<\/p>\n<p>Ba\u00efkal n&rsquo;offre que la partie serveur Card\/CalDAV, il faut donc maintenant s&rsquo;occuper de la partie client.<\/p>\n<h2>MyRouncube<\/h2>\n<p>J&rsquo;expliquait dans la premi\u00e8re partie que je voulais une interface o\u00f9 les mails, contacts et calendriers sont int\u00e9gr\u00e9s. Ayant fait le choix d&rsquo;utiliser Roundcube je suis parti en qu\u00eate de plugins.<br \/>\nVoil\u00e0 le r\u00e9sultat :\u00a0<em>le quasi n\u00e9ant<\/em><a href=\"https:\/\/wtf.roflcopter.fr\/blog\/wp-content\/uploads\/2014\/02\/corbeau3ce8.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/wtf.roflcopter.fr\/blog\/wp-content\/uploads\/2014\/02\/corbeau3ce8.gif\" alt=\"corbeau3ce8\" width=\"120\" height=\"23\" \/><\/a><br \/>\n<span style=\"line-height: 1.5;\">Un <\/span><a style=\"line-height: 1.5;\" href=\"https:\/\/github.com\/graviox\/Roundcube-CardDAV\">plugin carddav<\/a><span style=\"line-height: 1.5;\"> plus maintenu depuis 2 ans (fonctionnel cependant), mais rien\u00a0de s\u00e9rieux pour le calendrier.<\/span><\/p>\n<p>Pourtant un nom revient souvent dans mes recherches : MyRoundcube.<\/p>\n<p>MyRoundcube propose une bonne liste de plugins offrant au webmail une dimension un peu plus \u00ab\u00a0pro\u00a0\u00bb. Certains sont payant, d&rsquo;autres gratuits. Le hic : les plugins qui nous int\u00e9ressent ici sont payant.<br \/>\nIls existent dans une version \u00ab\u00a0light\u00a0\u00bb, mais les fonctionnalit\u00e9s int\u00e9ressantes (support CalDAV pour le calendrier, int\u00e9gration automatique des contacts, &#8230;) font partie des versions payantes.<\/p>\n<p>Installer le plugin\u00a0<a href=\"http:\/\/myroundcube.com\/myroundcube-plugins\" target=\"_new\">calendar_plus<\/a>\u00a0co\u00fbte 8 cr\u00e9dits (soit 8\u20ac), les mises \u00e0 jour majeures sont payantes : entre 4\u20ac et 1\u20ac (depuis 9 mois, il n&rsquo;y en a eu qu&rsquo;une, les autres mises \u00e0 jour ont \u00e9t\u00e9 consid\u00e9r\u00e9es comme des \u00ab\u00a0bug fix\u00a0\u00bb, donc gratuites).<br \/>\nLe plugin <a href=\"http:\/\/myroundcube.com\/myroundcube-plugins\/carddav-plugin\">carddav_plus \u00a0<\/a>co\u00fbte 6 cr\u00e9dits (soit 6\u20ac) avec des mises \u00e0 jour entre 3\u20ac et 1\u20ac.<br \/>\nLa liste des tarifs est disponible <a href=\"http:\/\/myroundcube.com\/myroundcube-plugins\/plugin-manager\/myrc-packages-pricelist\">ici<\/a>.<\/p>\n<p>J&rsquo;avoue avoir pas mal h\u00e9sit\u00e9, mais en voyant le nombre de t\u00e9l\u00e9chargement, un support <a href=\"http:\/\/myroundcube.com\/myroundcube-plugins\/reporting-issues\">plut\u00f4t r\u00e9actif<\/a>\u00a0et un <a href=\"https:\/\/dev.myroundcube.com\/?_action=plugin.plugin_server_changelog&amp;_plugin=calendar_plus\">maintient constant<\/a> des plugins, je me suis d\u00e9cid\u00e9 de leur laisser une chance.<\/p>\n<p>Personnellement j&rsquo;ai pr\u00e9f\u00e9r\u00e9 prendre le <a href=\"http:\/\/myroundcube.com\/myroundcube-plugins\/carddav-plugin\">pluging carddav<\/a> chez eux, mais pour limiter les frais, vous pouvez tr\u00e8s bien ne prendre que le calendrier et utiliser plugin carddav cit\u00e9 plus haut.<\/p>\n<p>Pour l&rsquo;installation et le t\u00e9l\u00e9chargement des plugins, il faut forc\u00e9ment passer par leur \u00ab\u00a0plugin_manager\u00a0\u00bb qui va prendre la main sur la gestion des plugins au sein de Roundcube. Pour les explications et la documentation d&rsquo;installation c&rsquo;est par <a href=\"http:\/\/myroundcube.com\/myroundcube-plugins\/plugin-manager\">ici que \u00e7a se passe<\/a>.<\/p>\n<p>Pour les diff\u00e9rentes URL (CalDAV et CardDAV) \u00e0 renseigner lors de la configuration de ces plugins, je vous conseille de faire un tour sur <a href=\"http:\/\/blog.idleman.fr\/installez-votre-synchronisateurs-de-contacts-chez-vous-avec-baikal\/\">l&rsquo;article tr\u00e8s complet d&rsquo;Idleman<\/a>.<br \/>\nIl vous servira aussi pour configurer la synchronisation de votre t\u00e9l\u00e9phone.<\/p>\n<h2>Synchronisons !<\/h2>\n<p>Votre webmail est maintenant complet, quoi de mieux que de retrouver tout \u00e7a sur votre t\u00e9l\u00e9phone ?<\/p>\n<p>Pour synchroniser ses mails, vous pouvez utiliser le client mail fourni de base avec d&rsquo;Android, ou K-9.<br \/>\n<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.fsck.k9\">K-9<\/a> est plus complet, et est hautement configurable (parfois limite trop).<\/p>\n<p>Pour la synchronisation (dans les deux sens) des contacts et des calendriers, deux choix s&rsquo;offrent \u00e0 vous :<\/p>\n<ul>\n<li><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=at.bitfire.davdroid\">Davdroid <\/a>: une seule application pour tout synchroniser, mais payante (2.99 \u20ac)<\/li>\n<li>Le couple <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=org.dmfs.caldav.lib\">Caldav-Sync<\/a>\u00a0(2.59 \u20ac) &amp;\u00a0<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=org.dmfs.carddav.sync\">CardDAV-Sync free<\/a>.<br \/>\n<em>Attention \u00e0 ne pas confondre avec <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=org.gege.caldavsyncadapter\">Caldav Sync Free Beta<\/a> qui n&rsquo;est pas du m\u00eame auteur et qui &#8211; pour le moment &#8211; ne propose que la synchronisation dans un seul sens.<br \/>\n<\/em><span style=\"line-height: 1.5;\">Pour supporter et encourager le <\/span><a style=\"line-height: 1.5;\" href=\"https:\/\/play.google.com\/store\/apps\/developer?id=Marten+Gajda\">d\u00e9veloppeur<\/a><span style=\"line-height: 1.5;\">, je vous invite grandement \u00e0 installer la <\/span><a style=\"line-height: 1.5;\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=org.dmfs.carddav.Sync\">version payante<\/a><span style=\"line-height: 1.5;\"> de CardDAV-Sync une fois la version gratuite prise en main.<\/span><\/li>\n<\/ul>\n<p>Avec ces applications, vos contacts et calendriers seront int\u00e9gr\u00e9s dans votre Android tout comme avec votre compte Google.<\/p>\n<h2>Quelques r\u00e9flexions&#8230;<\/h2>\n<p>J&rsquo;ai vraiment \u00e9t\u00e9 surpris du peu d&rsquo;impl\u00e9mentation s\u00e9rieuses (et maintenus) de CalDAV\/CardDAV, je vous invite \u00e0 faire un tour sur la <a href=\"http:\/\/en.wikipedia.org\/wiki\/Comparison_of_CalDAV_and_CardDAV_implementations\">page Wiki d\u00e9di\u00e9e<\/a>, vous verrez que ce n&rsquo;est pas folichon&#8230;\u00a0Est-ce un manque d&rsquo;int\u00e9r\u00eat de la part de la communaut\u00e9 ?<\/p>\n<p>Peut-\u00eatre est-ce d\u00fb \u00e0 la complexit\u00e9 du protocole, vu les nombreux RFC gravitant autour, \u00e7a peut en rebuter plus d&rsquo;un&#8230;<br \/>\nHeureusement une librairie PHP existe : <a href=\"https:\/\/code.google.com\/p\/sabredav\/\">SabreDav<\/a>.<br \/>\nOwncloud et Ba\u00efkal (entres autres) se reposent dessus. J&rsquo;esp\u00e8re que dans le futur on verra plus de projets bas\u00e9s dessus :)<\/p>\n<p>&nbsp;<\/p>\n<p>Au prochain \u00e9pisode : on migrera vos donn\u00e9es Google vers votre installation et se penchera sur le c\u00f4t\u00e9 \u00ab\u00a0backup\u00a0\u00bb de la chose.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ah quel plaisir d&rsquo;avoir ses contacts et calendrier(s) synchronis\u00e9s sur son t\u00e9l\u00e9phone et son webmail ! Un nouveau num\u00e9ro de t\u00e9l\u00e9phone \u00e0 noter ? Une simple \u00e9dition du contact dans votre webmail et son num\u00e9ro appara\u00eetra dans votre t\u00e9l\u00e9phone. L&rsquo;int\u00e9gration de ce genre de services dans la vie de tous les jours la rend plus &hellip; <a href=\"https:\/\/wtf.roflcopter.fr\/blog\/2014\/02\/21\/a-sous-lbus-google-partie-4\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">A+ sous l\u2019bus Google \u2013 Partie 4<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"","activitypub_status":"","footnotes":""},"categories":[15],"tags":[14,18,28,27,16,19,17],"class_list":["post-249","post","type-post","status-publish","format-standard","hentry","category-geekerie","tag-android","tag-auto-hebergement","tag-caldav","tag-carddav","tag-google","tag-iredmail","tag-mail"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/comments?post=249"}],"version-history":[{"count":14,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/249\/revisions"}],"predecessor-version":[{"id":292,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/249\/revisions\/292"}],"wp:attachment":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/media?parent=249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/categories?post=249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/tags?post=249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}