Aymeric / APLU(.FR) - Mot-clé - OwnCloudSite d'Aymeric (ou d'aplufr) pour parler de Linux, de technique.. enfin de tout et surtout de n'importe quoi !2023-09-19T19:41:16+02:00Aymericurn:md5:9a770342f58fde945e9ce016459f8f12DotclearImporter un vCard sur un serveur CardDAVurn:md5:e421d3d0a655cfbb41990cff480731312015-12-16T20:00:00+01:002015-12-16T20:00:00+01:00APLUInternetCardDAVcontactsDégooglisonsOwnCloudshellunixvcard <p>Cet article peut s’inclure dans la partie Dégooglisons Internet, même si l’outil qui va être décrit ici n’a pas été utilisé pour ce cas précis.</p><p>En effet, suite à plusieurs problèmes récemment rencontrés avec OwnCloud sur l’application Contacts, j’ai décidé de migrer mes contacts d’OwnCloud vers un autre serveur de type CardDAV.</p><p>Je ne vais pas décrire l’installation de l’autre serveur CardDAV, simplement le nouveau serveur n’avait pas de fonction <em>Import</em> pour les fiches vCards. Après quelques heures de recherche sur Internet, j’ai décidé de faire moi-même un script pour importer mes contacts sur le nouveau serveur.</p><h2>Récupérer le vCard</h2><p>Dans un premier temps, il faut exporter les contacts dans un fichier au format vCard (un .vcf), OwnCloud permet de le faire directement depuis l’application Contacts.</p><p>Si vous utilisez Google, je vous invite à faire un passage sur le site <a title="Google Takeout" href="https://www.google.com/takeout">Google Takeout</a> qui permet de récupérer ses contacts dans le format vCard.</p><p>Il n’est pas impossible que je fasse le script <em>cardexport.sh</em> un jour prochain… mais pour l’instant, il faudra vous satisfaire des fonctions proposées par votre serveur actuel.</p><h2>Importer les nouveaux contacts</h2><p>Ensuite, afin d’importer les contacts sur le nouveau serveur, on va utiliser le script <em>cardimport.sh</em> présent sur <a href="https://github.com/mulx/vcardimport">mon compte GitHub</a> (oui, je sais, il faut migrer sous GitLab parce que GitHub <em>saymal,</em> mais là n’est pas l’objet).</p><p>Dans ce script, il faut modifier les premières lignes pour les adapter au serveur de destination.</p><pre># your user name, if you have a ':' in it, change your login or find another script as it will not work with this script
user='username'
# your password, theoretically any characters are allowed, even ':' or '@'
pass='YourSuperPassword'
# name of the collection
cardsCollection='contacts'
# url of your server, for example with davical
serverURL='https://cal.example.org/caldav.php/'
# sometimes you may have to edit the following part
serverFullURL=${serverURL}/${user}/${cardsCollection}/
</pre><p>Il est laissé le soin au lecteur de deviner ce qu’il faut modifier et se référer à la documentation de son serveur CardDAV pour connaître les URL.</p><p>Une fois fait, il suffit de lancer le script avec la commande suivante et d’attendre :</p><pre>bash cardimport.sh Contacts.vcf</pre><p>En remplaçant, bien évidemment, le fichier Contacts.vcf par le nom de votre fichier qui contient les vCards.</p><p>À noter que ce script ne fonctionne que pour les machines de type Unix ayant <em>curl</em>, <em>sed</em>, <em>grep</em> et <em>bash</em> d’installés (ce qui devrait couvrir toutes les distributions Linux, et fonctionne probablement aussi avec <em>cygwin</em>).</p>Synchronisation des contacts entre OwnCloud et DAVdroidurn:md5:82c7f17a5d1456ee0af29d562b17823e2015-10-06T12:00:00+02:002015-12-16T12:20:06+01:00APLUandroidAndroidbugCardDAVDAVdroidDégooglisonsOwnCloud <p>Comme <a class="ref-post" href="https://www.aplu.fr/v2/post/2015/01/01/11111011111">dit il y a plusieurs mois</a>, je n’utilise plus du tout d’applications de Google Apps sur mon téléphone Android, cela signifie qu'aucun compte Google n’est configuré sur mon téléphone. Cependant, je souhaite garder mes contacts synchronisés avec d’autres appareils. Pour ce faire, je stocke mes contacts dans l’application Contacts d'OwnCloud et j’utilise DAVdroid pour les synchroniser sur le téléphone.</p><p>Ça marchait bien, très bien, jusqu’à ce que je fasse (enfin !) la mise à jour d'OwnCloud (la 8.1.x).</p><p>En effet, quelques jours après avoir fait la mise à jour, je me suis aperçu qu’un message d’erreur de DAVdroid apparaissait, j’ai laissé passer en supposant que j’avais juste coupé la 3G au mauvais moment pendant la synchro et que DAVdroid n’avait pas apprécié. Puis j’ai décidé de modifier un contact sur le téléphone…</p><h2>Et là, c’est le drame…</h2><p>Une fois les modifs du contact effectuées sans souci, un autre message d’erreur apparait sur DAVdroid et ma modification n’est pas prise en compte sur l’application Contacts d'OwnCloud !</p><p>Comme je n’arrive pas à comprendre ce qu’il se passe, je décide de supprimer mon compte sur le téléphone pour le re-configurer (ce qui efface les contacts associés au compte et les re-synchronise).</p><h2>Et là, nouveau drame !</h2><p>Sur les plus de six-cents contacts que j’ai sur OwnCloud côté serveur, seulement une centaine sont récupérés !</p><p>Je me dis que je ne dois pas être le seul dans ce cas, et je trouve <a hreflang="en" href="https://forums.bitfire.at/topic/689/owncloud-losing-contacts-after-sync-with-davdroid-0-8-1/47">ce sujet (en anglais)</a> qui explique grosso modo que les versions de DAVdroid avant la 0.8 avaient un bug, qui a été corrigé dans la 0.8.x, et que le bug opposé a été introduit dans OwnCloud avec la 8.1.x…</p><p>Le message du développeur de DAVdroid est très clair : “Funny that it worked with older DAVdroid versions just because DAVdroid had the opposite bug”.</p><h2>Mais comment qu’on fait alors ?</h2><p>Deux solutions :</p><ul><li>Attendre qu'OwnCloud corrige le problème (probablement dans la 8.1.4) ;</li><li>Modifier ses contacts pour éviter de tomber dans le bug.</li></ul><p>À noter que le bug a été en réalité introduit par SabreDAV qui est réutilisé par la partie CardDAV de OwnCloud Contacts.</p><p>Voici donc la méthode pour contourner le problème :</p><ol><li>Exporter tous ses contacts d'OwnCloud (il y a un bouton Exporter dans l’application Contacts).</li><li>Enregistrer ce fichier, puis supprimer les @ dans les lignes qui commencent par UID (avec un éditeur de texte ça le fait).<br />Pour ceux qui n’ont pas peur des commandes, il est possible de le faire en une passe avec :<pre>sed -e 's/^UID:\(.*\)@\(.*\)$/UID:\1\2/g' -i Contacts.vcf</pre>On peut ensuite vérifier avec la commande suivante. Si des lignes ressortent, relancer la commande précédente :<pre>grep '^UID:.*@.*' Contacts.vcf</pre></li><li>Supprimer tous les contacts depuis l’application Contacts (il suffit de cliquer sur la corbeille).</li><li>Importer le nouveau fichier Contacts.vcf dans Contacts (un gros bouton est apparu au milieu de l’écran).</li></ol><p>Et voilà, vous pouvez relancer la synchronisation sur DAVdroid, et tous les contacts réapparaissent !</p>