mirror of
https://github.com/Kozea/Radicale.git
synced 2025-06-26 16:45:52 +00:00
Generate documentation
This commit is contained in:
parent
ab7fea83b4
commit
deba268c4b
4 changed files with 18 additions and 18 deletions
|
@ -449,7 +449,7 @@ service. (Run
|
||||||
<code>useradd --system --user-group --home-dir / --shell /sbin/nologin radicale</code>
|
<code>useradd --system --user-group --home-dir / --shell /sbin/nologin radicale</code>
|
||||||
as root.) The storage folder must be writable by
|
as root.) The storage folder must be writable by
|
||||||
<strong>radicale</strong>. (Run
|
<strong>radicale</strong>. (Run
|
||||||
<code>mkdir -p /var/lib/radicale/collections && chown -R radicale:radicale /var/lib/radicale/collections</code>
|
<code>mkdir -p /var/lib/radicale/collections && chown -R radicale:radicale /var/lib/radicale/collections</code>
|
||||||
as root.)</p>
|
as root.)</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p><strong>Security:</strong> The storage should not be readable by
|
<p><strong>Security:</strong> The storage should not be readable by
|
||||||
|
@ -773,7 +773,7 @@ of the user running <code>radicale</code> daemon.</p>
|
||||||
<span id="cb31-21"><a aria-hidden="true" href="#cb31-21" tabindex="-1"></a><span class="op">END</span></span></code></pre></div>
|
<span id="cb31-21"><a aria-hidden="true" href="#cb31-21" tabindex="-1"></a><span class="op">END</span></span></code></pre></div>
|
||||||
<p>The configuration option <code>hook</code> in the
|
<p>The configuration option <code>hook</code> in the
|
||||||
<code>storage</code> section must be set to the following command:</p>
|
<code>storage</code> section must be set to the following command:</p>
|
||||||
<div class="sourceCode" id="cb32"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb32-1"><a aria-hidden="true" href="#cb32-1" tabindex="-1"></a><span class="fu">git</span> add <span class="at">-A</span> <span class="kw">&&</span> <span class="kw">(</span><span class="fu">git</span> diff <span class="at">--cached</span> <span class="at">--quiet</span> <span class="kw">||</span> <span class="fu">git</span> commit <span class="at">-m</span> <span class="st">"Changes by </span><span class="dt">\"</span><span class="st">%(user)s</span><span class="dt">\"</span><span class="st">"</span><span class="kw">)</span></span></code></pre></div>
|
<div class="sourceCode" id="cb32"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb32-1"><a aria-hidden="true" href="#cb32-1" tabindex="-1"></a><span class="fu">git</span> add <span class="at">-A</span> <span class="kw">&&</span> <span class="kw">(</span><span class="fu">git</span> diff <span class="at">--cached</span> <span class="at">--quiet</span> <span class="kw">||</span> <span class="fu">git</span> commit <span class="at">-m</span> <span class="st">"Changes by </span><span class="dt">\"</span><span class="st">%(user)s</span><span class="dt">\"</span><span class="st">"</span><span class="kw">)</span></span></code></pre></div>
|
||||||
<p>The command gets executed after every change to the storage and
|
<p>The command gets executed after every change to the storage and
|
||||||
commits the changes into the <strong>git</strong> repository.</p>
|
commits the changes into the <strong>git</strong> repository.</p>
|
||||||
<p>Log of <code>git</code> can be investigated using</p>
|
<p>Log of <code>git</code> can be investigated using</p>
|
||||||
|
@ -1850,7 +1850,7 @@ content:</p>
|
||||||
<span id="cb48-9"><a aria-hidden="true" href="#cb48-9" tabindex="-1"></a> <span class="kw">def</span> <span class="fu">__init__</span>(<span class="va">self</span>, configuration):</span>
|
<span id="cb48-9"><a aria-hidden="true" href="#cb48-9" tabindex="-1"></a> <span class="kw">def</span> <span class="fu">__init__</span>(<span class="va">self</span>, configuration):</span>
|
||||||
<span id="cb48-10"><a aria-hidden="true" href="#cb48-10" tabindex="-1"></a> <span class="bu">super</span>().<span class="fu">__init__</span>(configuration.copy(PLUGIN_CONFIG_SCHEMA))</span>
|
<span id="cb48-10"><a aria-hidden="true" href="#cb48-10" tabindex="-1"></a> <span class="bu">super</span>().<span class="fu">__init__</span>(configuration.copy(PLUGIN_CONFIG_SCHEMA))</span>
|
||||||
<span id="cb48-11"><a aria-hidden="true" href="#cb48-11" tabindex="-1"></a></span>
|
<span id="cb48-11"><a aria-hidden="true" href="#cb48-11" tabindex="-1"></a></span>
|
||||||
<span id="cb48-12"><a aria-hidden="true" href="#cb48-12" tabindex="-1"></a> <span class="kw">def</span> login(<span class="va">self</span>, login, password):</span>
|
<span id="cb48-12"><a aria-hidden="true" href="#cb48-12" tabindex="-1"></a> <span class="kw">def</span> _login(<span class="va">self</span>, login, password):</span>
|
||||||
<span id="cb48-13"><a aria-hidden="true" href="#cb48-13" tabindex="-1"></a> <span class="co"># Get password from configuration option</span></span>
|
<span id="cb48-13"><a aria-hidden="true" href="#cb48-13" tabindex="-1"></a> <span class="co"># Get password from configuration option</span></span>
|
||||||
<span id="cb48-14"><a aria-hidden="true" href="#cb48-14" tabindex="-1"></a> static_password <span class="op">=</span> <span class="va">self</span>.configuration.get(<span class="st">"auth"</span>, <span class="st">"password"</span>)</span>
|
<span id="cb48-14"><a aria-hidden="true" href="#cb48-14" tabindex="-1"></a> static_password <span class="op">=</span> <span class="va">self</span>.configuration.get(<span class="st">"auth"</span>, <span class="st">"password"</span>)</span>
|
||||||
<span id="cb48-15"><a aria-hidden="true" href="#cb48-15" tabindex="-1"></a> <span class="co"># Check authentication</span></span>
|
<span id="cb48-15"><a aria-hidden="true" href="#cb48-15" tabindex="-1"></a> <span class="co"># Check authentication</span></span>
|
||||||
|
@ -1963,7 +1963,7 @@ by Ákos Szőts and Rueckert</li>
|
||||||
<li><a href="http://code.activestate.com/pypm/radicale/">PyPM</a></li>
|
<li><a href="http://code.activestate.com/pypm/radicale/">PyPM</a></li>
|
||||||
<li><a href="http://schoepfer.info/slackware.xhtml#packages-network">Slackware</a>
|
<li><a href="http://schoepfer.info/slackware.xhtml#packages-network">Slackware</a>
|
||||||
by Johannes Schöpfer</li>
|
by Johannes Schöpfer</li>
|
||||||
<li><a href="http://packages.trisquel.info/search?searchon=names&keywords=radicale">Trisquel</a></li>
|
<li><a href="http://packages.trisquel.info/search?searchon=names&keywords=radicale">Trisquel</a></li>
|
||||||
<li><a href="http://packages.ubuntu.com/radicale">Ubuntu</a> by the MOTU
|
<li><a href="http://packages.ubuntu.com/radicale">Ubuntu</a> by the MOTU
|
||||||
and Jonas Smedegaard</li>
|
and Jonas Smedegaard</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
12
v1.html
12
v1.html
|
@ -647,10 +647,10 @@ automatically.</p>
|
||||||
<h6>CalDAV-Sync <a class="headerlink" href="#caldav-sync">¶</a></h6>
|
<h6>CalDAV-Sync <a class="headerlink" href="#caldav-sync">¶</a></h6>
|
||||||
<p>CalDAV-Sync is implemented as sync adapter to integrate seamlessly
|
<p>CalDAV-Sync is implemented as sync adapter to integrate seamlessly
|
||||||
with any calendar app and widget. Therefore you have to access it via
|
with any calendar app and widget. Therefore you have to access it via
|
||||||
<code>Accounts & Sync</code> settings after installing it from the
|
<code>Accounts & Sync</code> settings after installing it from the
|
||||||
Market.</p>
|
Market.</p>
|
||||||
<p>So, to add new calendars to your phone open
|
<p>So, to add new calendars to your phone open
|
||||||
<code>Accounts & Sync</code> settings and tap on
|
<code>Accounts & Sync</code> settings and tap on
|
||||||
<code>Add account</code>, selecting CalDAV as type. In the next view,
|
<code>Add account</code>, selecting CalDAV as type. In the next view,
|
||||||
you have to switch to Manual Mode. Enter the full CalDAV URL of your
|
you have to switch to Manual Mode. Enter the full CalDAV URL of your
|
||||||
Radicale account (e.g. <code>http://example.com:5232/Username/</code>)
|
Radicale account (e.g. <code>http://example.com:5232/Username/</code>)
|
||||||
|
@ -727,7 +727,7 @@ can then configure each of them (display colour, notifications,
|
||||||
etc.).</p>
|
etc.).</p>
|
||||||
</section>
|
</section>
|
||||||
<section class="level6" id="infcloud-caldavzap--carddavmate">
|
<section class="level6" id="infcloud-caldavzap--carddavmate">
|
||||||
<h6>InfCloud, CalDavZAP & CardDavMATE <a class="headerlink" href="#infcloud-caldavzap--carddavmate">¶</a></h6>
|
<h6>InfCloud, CalDavZAP & CardDavMATE <a class="headerlink" href="#infcloud-caldavzap--carddavmate">¶</a></h6>
|
||||||
<p>Because settings are the same for <code>InfCloud</code>,
|
<p>Because settings are the same for <code>InfCloud</code>,
|
||||||
<code>CalDavZAP</code> and <code>CardDavMATE</code><br>
|
<code>CalDavZAP</code> and <code>CardDavMATE</code><br>
|
||||||
only <em>InfCloud</em> is used in description below.</p>
|
only <em>InfCloud</em> is used in description below.</p>
|
||||||
|
@ -817,7 +817,7 @@ After installing and accepting it you should restart your browser.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</section>
|
</section>
|
||||||
<section class="level6" id="iphone--ipad">
|
<section class="level6" id="iphone--ipad">
|
||||||
<h6>iPhone & iPad <a class="headerlink" href="#iphone--ipad">¶</a></h6>
|
<h6>iPhone & iPad <a class="headerlink" href="#iphone--ipad">¶</a></h6>
|
||||||
<p><strong>Calendars</strong></p>
|
<p><strong>Calendars</strong></p>
|
||||||
<p>For iOS devices, the setup is fairly straightforward but there are a
|
<p>For iOS devices, the setup is fairly straightforward but there are a
|
||||||
few settings that are critical for proper operation.</p>
|
few settings that are critical for proper operation.</p>
|
||||||
|
@ -1123,7 +1123,7 @@ file, with the main parameters:</p>
|
||||||
<span id="cb7-85"><a aria-hidden="true" href="#cb7-85" tabindex="-1"></a><span class="co">#ldap_attribute = uid</span></span>
|
<span id="cb7-85"><a aria-hidden="true" href="#cb7-85" tabindex="-1"></a><span class="co">#ldap_attribute = uid</span></span>
|
||||||
<span id="cb7-86"><a aria-hidden="true" href="#cb7-86" tabindex="-1"></a></span>
|
<span id="cb7-86"><a aria-hidden="true" href="#cb7-86" tabindex="-1"></a></span>
|
||||||
<span id="cb7-87"><a aria-hidden="true" href="#cb7-87" tabindex="-1"></a><span class="co"># LDAP filter string</span></span>
|
<span id="cb7-87"><a aria-hidden="true" href="#cb7-87" tabindex="-1"></a><span class="co"># LDAP filter string</span></span>
|
||||||
<span id="cb7-88"><a aria-hidden="true" href="#cb7-88" tabindex="-1"></a><span class="co"># placed as X in a query of the form (&(...)X)</span></span>
|
<span id="cb7-88"><a aria-hidden="true" href="#cb7-88" tabindex="-1"></a><span class="co"># placed as X in a query of the form (&(...)X)</span></span>
|
||||||
<span id="cb7-89"><a aria-hidden="true" href="#cb7-89" tabindex="-1"></a><span class="co"># example: (objectCategory=Person)(objectClass=User)(memberOf=cn=calenderusers,ou=users,dc=example,dc=org)</span></span>
|
<span id="cb7-89"><a aria-hidden="true" href="#cb7-89" tabindex="-1"></a><span class="co"># example: (objectCategory=Person)(objectClass=User)(memberOf=cn=calenderusers,ou=users,dc=example,dc=org)</span></span>
|
||||||
<span id="cb7-90"><a aria-hidden="true" href="#cb7-90" tabindex="-1"></a><span class="co"># leave empty if no additional filter is needed</span></span>
|
<span id="cb7-90"><a aria-hidden="true" href="#cb7-90" tabindex="-1"></a><span class="co"># leave empty if no additional filter is needed</span></span>
|
||||||
<span id="cb7-91"><a aria-hidden="true" href="#cb7-91" tabindex="-1"></a><span class="co">#ldap_filter =</span></span>
|
<span id="cb7-91"><a aria-hidden="true" href="#cb7-91" tabindex="-1"></a><span class="co">#ldap_filter =</span></span>
|
||||||
|
@ -1926,7 +1926,7 @@ Sergey Bronnikov, Stuart Henderson and Ian Darwin</li>
|
||||||
<li><a href="http://code.activestate.com/pypm/radicale/">PyPM</a></li>
|
<li><a href="http://code.activestate.com/pypm/radicale/">PyPM</a></li>
|
||||||
<li><a href="http://schoepfer.info/slackware.xhtml#packages-network">Slackware</a>
|
<li><a href="http://schoepfer.info/slackware.xhtml#packages-network">Slackware</a>
|
||||||
by Johannes Schöpfer</li>
|
by Johannes Schöpfer</li>
|
||||||
<li><a href="http://packages.trisquel.info/search?searchon=names&keywords=radicale">Trisquel</a></li>
|
<li><a href="http://packages.trisquel.info/search?searchon=names&keywords=radicale">Trisquel</a></li>
|
||||||
<li><a href="http://packages.ubuntu.com/radicale">Ubuntu</a> by the MOTU
|
<li><a href="http://packages.ubuntu.com/radicale">Ubuntu</a> by the MOTU
|
||||||
and Jonas Smedegaard</li>
|
and Jonas Smedegaard</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
10
v2.html
10
v2.html
|
@ -560,7 +560,7 @@ books with Git.</a></li>
|
||||||
to make it fit your needs.</p>
|
to make it fit your needs.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#configuration-1">What can I configure?</a></li>
|
<li><a href="#configuration-1">What can I configure?</a></li>
|
||||||
<li><a href="#authentication-and-rights">Authentication &
|
<li><a href="#authentication-and-rights">Authentication &
|
||||||
Rights.</a></li>
|
Rights.</a></li>
|
||||||
<li><a href="#storage-2">Storage.</a></li>
|
<li><a href="#storage-2">Storage.</a></li>
|
||||||
<li><a href="#logging-1">Logging.</a></li>
|
<li><a href="#logging-1">Logging.</a></li>
|
||||||
|
@ -760,7 +760,7 @@ service. (Run
|
||||||
<code>useradd --system --home-dir / --shell /sbin/nologin radicale</code>
|
<code>useradd --system --home-dir / --shell /sbin/nologin radicale</code>
|
||||||
as root.) The storage folder must be writable by
|
as root.) The storage folder must be writable by
|
||||||
<strong>radicale</strong>. (Run
|
<strong>radicale</strong>. (Run
|
||||||
<code>mkdir -p /var/lib/radicale/collections && chown -R radicale:radicale /var/lib/radicale/collections</code>
|
<code>mkdir -p /var/lib/radicale/collections && chown -R radicale:radicale /var/lib/radicale/collections</code>
|
||||||
as root.)</p>
|
as root.)</p>
|
||||||
<p><strong>Security:</strong> The storage should not be readable by
|
<p><strong>Security:</strong> The storage should not be readable by
|
||||||
others. (Run <code>chmod -R o= /var/lib/radicale/collections</code> as
|
others. (Run <code>chmod -R o= /var/lib/radicale/collections</code> as
|
||||||
|
@ -980,7 +980,7 @@ content:</p>
|
||||||
.Radicale.tmp-*</code></pre>
|
.Radicale.tmp-*</code></pre>
|
||||||
<p>The configuration option <code>hook</code> in the
|
<p>The configuration option <code>hook</code> in the
|
||||||
<code>storage</code> section must be set to the following command:</p>
|
<code>storage</code> section must be set to the following command:</p>
|
||||||
<div class="sourceCode" id="cb26"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb26-1"><a aria-hidden="true" href="#cb26-1" tabindex="-1"></a><span class="fu">git</span> add <span class="at">-A</span> <span class="kw">&&</span> <span class="kw">(</span><span class="fu">git</span> diff <span class="at">--cached</span> <span class="at">--quiet</span> <span class="kw">||</span> <span class="fu">git</span> commit <span class="at">-m</span> <span class="st">"Changes by "</span>%<span class="er">(</span><span class="ex">user</span><span class="kw">)</span><span class="ex">s</span><span class="kw">)</span></span></code></pre></div>
|
<div class="sourceCode" id="cb26"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb26-1"><a aria-hidden="true" href="#cb26-1" tabindex="-1"></a><span class="fu">git</span> add <span class="at">-A</span> <span class="kw">&&</span> <span class="kw">(</span><span class="fu">git</span> diff <span class="at">--cached</span> <span class="at">--quiet</span> <span class="kw">||</span> <span class="fu">git</span> commit <span class="at">-m</span> <span class="st">"Changes by "</span>%<span class="er">(</span><span class="ex">user</span><span class="kw">)</span><span class="ex">s</span><span class="kw">)</span></span></code></pre></div>
|
||||||
<p>The command gets executed after every change to the storage and
|
<p>The command gets executed after every change to the storage and
|
||||||
commits the changes into the <strong>git</strong> repository.</p>
|
commits the changes into the <strong>git</strong> repository.</p>
|
||||||
</section>
|
</section>
|
||||||
|
@ -1869,7 +1869,7 @@ creating or using <a href="#plugins">plugins</a>.</p>
|
||||||
on the login of the authenticated user and the URL of the resource.
|
on the login of the authenticated user and the URL of the resource.
|
||||||
Default configurations are built in for common cases, you'll find more
|
Default configurations are built in for common cases, you'll find more
|
||||||
about this on the <a href="#authentication-and-rights">Authentication
|
about this on the <a href="#authentication-and-rights">Authentication
|
||||||
& Rights</a> page.</p>
|
& Rights</a> page.</p>
|
||||||
<p>Other rights managers can be added by creating <a href="#plugins">plugins</a>.</p>
|
<p>Other rights managers can be added by creating <a href="#plugins">plugins</a>.</p>
|
||||||
</section>
|
</section>
|
||||||
<section class="level4" id="versioning-1">
|
<section class="level4" id="versioning-1">
|
||||||
|
@ -1995,7 +1995,7 @@ by Ákos Szőts and Rueckert</li>
|
||||||
<li><a href="http://code.activestate.com/pypm/radicale/">PyPM</a></li>
|
<li><a href="http://code.activestate.com/pypm/radicale/">PyPM</a></li>
|
||||||
<li><a href="http://schoepfer.info/slackware.xhtml#packages-network">Slackware</a>
|
<li><a href="http://schoepfer.info/slackware.xhtml#packages-network">Slackware</a>
|
||||||
by Johannes Schöpfer</li>
|
by Johannes Schöpfer</li>
|
||||||
<li><a href="http://packages.trisquel.info/search?searchon=names&keywords=radicale">Trisquel</a></li>
|
<li><a href="http://packages.trisquel.info/search?searchon=names&keywords=radicale">Trisquel</a></li>
|
||||||
<li><a href="http://packages.ubuntu.com/radicale">Ubuntu</a> by the MOTU
|
<li><a href="http://packages.ubuntu.com/radicale">Ubuntu</a> by the MOTU
|
||||||
and Jonas Smedegaard</li>
|
and Jonas Smedegaard</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
6
v3.html
6
v3.html
|
@ -449,7 +449,7 @@ service. (Run
|
||||||
<code>useradd --system --user-group --home-dir / --shell /sbin/nologin radicale</code>
|
<code>useradd --system --user-group --home-dir / --shell /sbin/nologin radicale</code>
|
||||||
as root.) The storage folder must be writable by
|
as root.) The storage folder must be writable by
|
||||||
<strong>radicale</strong>. (Run
|
<strong>radicale</strong>. (Run
|
||||||
<code>mkdir -p /var/lib/radicale/collections && chown -R radicale:radicale /var/lib/radicale/collections</code>
|
<code>mkdir -p /var/lib/radicale/collections && chown -R radicale:radicale /var/lib/radicale/collections</code>
|
||||||
as root.)</p>
|
as root.)</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p><strong>Security:</strong> The storage should not be readable by
|
<p><strong>Security:</strong> The storage should not be readable by
|
||||||
|
@ -773,7 +773,7 @@ of the user running <code>radicale</code> daemon.</p>
|
||||||
<span id="cb31-21"><a aria-hidden="true" href="#cb31-21" tabindex="-1"></a><span class="op">END</span></span></code></pre></div>
|
<span id="cb31-21"><a aria-hidden="true" href="#cb31-21" tabindex="-1"></a><span class="op">END</span></span></code></pre></div>
|
||||||
<p>The configuration option <code>hook</code> in the
|
<p>The configuration option <code>hook</code> in the
|
||||||
<code>storage</code> section must be set to the following command:</p>
|
<code>storage</code> section must be set to the following command:</p>
|
||||||
<div class="sourceCode" id="cb32"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb32-1"><a aria-hidden="true" href="#cb32-1" tabindex="-1"></a><span class="fu">git</span> add <span class="at">-A</span> <span class="kw">&&</span> <span class="kw">(</span><span class="fu">git</span> diff <span class="at">--cached</span> <span class="at">--quiet</span> <span class="kw">||</span> <span class="fu">git</span> commit <span class="at">-m</span> <span class="st">"Changes by </span><span class="dt">\"</span><span class="st">%(user)s</span><span class="dt">\"</span><span class="st">"</span><span class="kw">)</span></span></code></pre></div>
|
<div class="sourceCode" id="cb32"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb32-1"><a aria-hidden="true" href="#cb32-1" tabindex="-1"></a><span class="fu">git</span> add <span class="at">-A</span> <span class="kw">&&</span> <span class="kw">(</span><span class="fu">git</span> diff <span class="at">--cached</span> <span class="at">--quiet</span> <span class="kw">||</span> <span class="fu">git</span> commit <span class="at">-m</span> <span class="st">"Changes by </span><span class="dt">\"</span><span class="st">%(user)s</span><span class="dt">\"</span><span class="st">"</span><span class="kw">)</span></span></code></pre></div>
|
||||||
<p>The command gets executed after every change to the storage and
|
<p>The command gets executed after every change to the storage and
|
||||||
commits the changes into the <strong>git</strong> repository.</p>
|
commits the changes into the <strong>git</strong> repository.</p>
|
||||||
<p>Log of <code>git</code> can be investigated using</p>
|
<p>Log of <code>git</code> can be investigated using</p>
|
||||||
|
@ -1957,7 +1957,7 @@ by Ákos Szőts and Rueckert</li>
|
||||||
<li><a href="http://code.activestate.com/pypm/radicale/">PyPM</a></li>
|
<li><a href="http://code.activestate.com/pypm/radicale/">PyPM</a></li>
|
||||||
<li><a href="http://schoepfer.info/slackware.xhtml#packages-network">Slackware</a>
|
<li><a href="http://schoepfer.info/slackware.xhtml#packages-network">Slackware</a>
|
||||||
by Johannes Schöpfer</li>
|
by Johannes Schöpfer</li>
|
||||||
<li><a href="http://packages.trisquel.info/search?searchon=names&keywords=radicale">Trisquel</a></li>
|
<li><a href="http://packages.trisquel.info/search?searchon=names&keywords=radicale">Trisquel</a></li>
|
||||||
<li><a href="http://packages.ubuntu.com/radicale">Ubuntu</a> by the MOTU
|
<li><a href="http://packages.ubuntu.com/radicale">Ubuntu</a> by the MOTU
|
||||||
and Jonas Smedegaard</li>
|
and Jonas Smedegaard</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue