<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about carddav)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/carddav.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2022 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-SA"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/l_by-sa_4.0_88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Sun, 01 May 2022 12:45:40 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Radicale thoughts</title><link>https://bgstack15.ddns.net/blog/posts/2022/04/27/radicale-thoughts/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;In a wild and random activity that might help me leave Google someday, I decided to reinvestigate radicale. I had never set it up before; just read a lot about it. Now it was time to stand it up on a pre-production server.&lt;/p&gt;
&lt;h2&gt;Compiling radicale3 for CentOS 7&lt;/h2&gt;
&lt;p&gt;Radicale3 can be compiled for centos 7 just fine! You need to compile some of the python3 dependencies for it, which you can adapt with minimal changes from the fedora rpm sources.&lt;/p&gt;
&lt;p&gt;Use https://src.fedoraproject.org/rpms/radicale for git clone sources.
radicale needs custom python36 packages for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;python36-passlib&lt;/li&gt;
&lt;li&gt;python36-vobject &amp;gt;= 0.9.6&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And radicale.spec run 's/policycoreutils-python-utils/policycoreutils-python/g'&lt;/p&gt;
&lt;p&gt;python36-passlib needs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;python3-nose&lt;/li&gt;
&lt;li&gt;needs python36-bcrypt installed; it's already available but not in the dep list?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;python3-nose needs, and then built just fine with no changes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;python3-coverage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;python3-coverage built just fine, no changes.&lt;/p&gt;
&lt;p&gt;python36-vobject needs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to be adjusted to use python36-dateutil package name&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;radicale application needs python36-dateutil&amp;gt;=2.7.3, which therefore needs to be built.&lt;/p&gt;
&lt;p&gt;python-dateutil needs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to be adjusted to use python36 buildreq names, and customized to disable building docs. Fairly simple spec modifications.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Radicale can then be installed from the rpms that you built:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ sudo yum install ~/rpmbuild/RPMS/noarch/radicale3-*.rpm ~/rpmbuild/RPMS/noarch/python36-radicale3-3.1.7-30.el7.noarch.rpm
Installed:
  python36-radicale3.noarch &lt;span class="m"&gt;0&lt;/span&gt;:3.1.7-30.el7   radicale3.noarch &lt;span class="m"&gt;0&lt;/span&gt;:3.1.7-30.el7   radicale3-httpd.noarch &lt;span class="m"&gt;0&lt;/span&gt;:3.1.7-30.el7  
  radicale3-selinux.noarch &lt;span class="m"&gt;0&lt;/span&gt;:3.1.7-30.el7
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Running radicale&lt;/h3&gt;
&lt;p&gt;I have not tested any authentication on my radicale server yet. I went out and exported my entire google contacts into the .vcf format (labeled "vCard for iOS Contacts"). I used the web interface of radicale to sign in with a blank or any password (no auth yet, remember?). I then tried to upload my 80KB .vcf file. It fails, and the server logs indicate that FN cannot be blank. FN is first name, and I had to manually poke around my .vcf file to find where I had a blank first name.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ awk &lt;span class="s1"&gt;'BEGIN{c=0} /FN:/{a=a+1} /END:VCARD/{b=b+1;if(b&amp;gt;(a+c)){c=c+1;print NR}} END{print a,b}'&lt;/span&gt; &amp;lt; contacts.vcf 
&lt;span class="m"&gt;2506&lt;/span&gt;
&lt;span class="m"&gt;2557&lt;/span&gt;
&lt;span class="m"&gt;390&lt;/span&gt; &lt;span class="m"&gt;392&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So these were the line numbers where END:VCARD occurred without a preceding FN: field. So I had two contacts (which I discovered after I had found and finally fixed the first one). I would actually consider this a bug in radicale, but after investigating the github issues for the app repo, it's related to that Radicale conforms to spec and the spec says a Vcard must have a FN field. So at least now I've fixed those two contacts!&lt;/p&gt;
&lt;p&gt;I then set up &lt;a href="https://github.com/Unrud/RadicaleInfCloud"&gt;RadicaleInfCloud&lt;/a&gt; which provides a web interface to the calendars and contact book. It looks really slick, but I haven't tested all my use cases yet.&lt;/p&gt;
&lt;h3&gt;Next steps&lt;/h3&gt;
&lt;p&gt;Investigate these use cases&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Can I import an invitation, say from my email, e.g., click the .ics invitation to an event, and add it to my calendar?&lt;/li&gt;
&lt;li&gt;Can I export an invitation, probably in .ics format, to send to others so they can add my event to their calendar?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If I go to production with this solution:
1. build copr repo with these customized packages!
2. install radicale with (ldap) authentication
3. install radicale_infcloud with auth&lt;/p&gt;</description><category>caldav</category><category>carddav</category><category>radicale</category><category>research</category><guid>https://bgstack15.ddns.net/blog/posts/2022/04/27/radicale-thoughts/</guid><pubDate>Wed, 27 Apr 2022 14:32:00 GMT</pubDate></item></channel></rss>