aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--application/FeedBuilder.php38
-rw-r--r--application/HttpUtils.php26
-rw-r--r--application/LinkDB.php3
-rw-r--r--doc/3rd-party-libraries.html9
-rw-r--r--doc/3rd-party-libraries.md1
-rw-r--r--doc/Backup,-restore,-import-and-export.html34
-rw-r--r--doc/Backup,-restore,-import-and-export.md31
-rw-r--r--doc/Browsing-and-searching.html8
-rw-r--r--doc/Coding-guidelines.html8
-rw-r--r--doc/Community-&-Related-software.html11
-rw-r--r--doc/Community-&-Related-software.md3
-rw-r--r--doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html58
-rw-r--r--doc/Create-and-serve-multiple-Shaarlis-(farm).html52
-rw-r--r--doc/Datastore-hacks.html8
-rw-r--r--doc/Development.html8
-rw-r--r--doc/Directory-structure.html60
-rw-r--r--doc/Docker.html104
-rw-r--r--doc/Download-CSS-styles-from-an-OPML-list.html12
-rw-r--r--doc/Download-and-Installation.html (renamed from doc/Download.html)88
-rw-r--r--doc/Download-and-Installation.md97
-rw-r--r--doc/Download.md31
-rw-r--r--doc/Example-patch---add-new-via-field-for-links.html8
-rw-r--r--doc/FAQ.html8
-rw-r--r--doc/Firefox-share.html8
-rw-r--r--doc/GnuPG-signature.html58
-rw-r--r--doc/Home.html8
-rw-r--r--doc/Plugin-System.html8
-rw-r--r--doc/Plugins.html8
-rw-r--r--doc/RSS-feeds.html8
-rw-r--r--doc/Release-Shaarli.html69
-rw-r--r--doc/Release-Shaarli.md24
-rw-r--r--doc/Security.html8
-rw-r--r--doc/Server-configuration.html41
-rw-r--r--doc/Server-configuration.md12
-rw-r--r--doc/Server-requirements.html46
-rw-r--r--doc/Server-requirements.md19
-rw-r--r--doc/Server-security.html28
-rw-r--r--doc/Server-security.md14
-rw-r--r--doc/Shaarli-configuration.html277
-rw-r--r--doc/Shaarli-configuration.md298
-rw-r--r--doc/Shaarli-installation.html72
-rw-r--r--doc/Shaarli-installation.md6
-rw-r--r--doc/Sharing-button.html8
-rw-r--r--doc/Static-analysis.html8
-rw-r--r--doc/TODO.html74
-rw-r--r--doc/TODO.md4
-rw-r--r--doc/Theming.html25
-rw-r--r--doc/Theming.md1
-rw-r--r--doc/Troubleshooting.html11
-rw-r--r--doc/Troubleshooting.md3
-rw-r--r--doc/Unit-tests.html110
-rw-r--r--doc/Upgrade-and-migration.html242
-rw-r--r--doc/Upgrade-and-migration.md161
-rw-r--r--doc/Upgrade-from-original-sebsauvage-Shaarli.html74
-rw-r--r--doc/Upgrade-from-original-sebsauvage-Shaarli.md4
-rw-r--r--doc/Usage.html8
-rw-r--r--doc/_Footer.html12
-rw-r--r--doc/_Footer.md2
-rw-r--r--doc/_Sidebar.html16
-rw-r--r--doc/_Sidebar.md8
-rw-r--r--doc/sidebar.html8
-rw-r--r--index.php27
-rw-r--r--shaarli_version.php2
-rw-r--r--tests/FeedBuilderTest.php14
-rw-r--r--tests/HttpUtils/GetIpAdressFromProxyTest.php58
-rw-r--r--tests/utils/ReferenceLinkDB.php6
-rw-r--r--tpl/feed.atom.html3
-rw-r--r--tpl/feed.rss.html3
-rw-r--r--tpl/linklist.html11
69 files changed, 1605 insertions, 1016 deletions
diff --git a/application/FeedBuilder.php b/application/FeedBuilder.php
index ddefe6ce..58c6bb17 100644
--- a/application/FeedBuilder.php
+++ b/application/FeedBuilder.php
@@ -154,17 +154,23 @@ class FeedBuilder
154 } 154 }
155 $link['description'] = format_description($link['description']) . PHP_EOL .'<br>&#8212; '. $permalink; 155 $link['description'] = format_description($link['description']) . PHP_EOL .'<br>&#8212; '. $permalink;
156 156
157 $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']); 157 $pubDate = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']);
158 $link['pub_iso_date'] = $this->getIsoDate($pubDate);
158 159
159 if ($this->feedType == self::$FEED_RSS) { 160 // atom:entry elements MUST contain exactly one atom:updated element.
160 $link['iso_date'] = $date->format(DateTime::RSS); 161 if (!empty($link['updated'])) {
162 $upDate = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['updated']);
163 $link['up_iso_date'] = $this->getIsoDate($upDate, DateTime::ATOM);
161 } else { 164 } else {
162 $link['iso_date'] = $date->format(DateTime::ATOM); 165 $link['up_iso_date'] = $this->getIsoDate($pubDate, DateTime::ATOM);;
163 } 166 }
164 167
165 // Save the more recent item. 168 // Save the more recent item.
166 if (empty($this->latestDate) || $this->latestDate < $date) { 169 if (empty($this->latestDate) || $this->latestDate < $pubDate) {
167 $this->latestDate = $date; 170 $this->latestDate = $pubDate;
171 }
172 if (!empty($upDate) && $this->latestDate < $upDate) {
173 $this->latestDate = $upDate;
168 } 174 }
169 175
170 $taglist = array_filter(explode(' ', $link['tags']), 'strlen'); 176 $taglist = array_filter(explode(' ', $link['tags']), 'strlen');
@@ -250,6 +256,26 @@ class FeedBuilder
250 } 256 }
251 257
252 /** 258 /**
259 * Get ISO date from DateTime according to feed type.
260 *
261 * @param DateTime $date Date to format.
262 * @param string|bool $format Force format.
263 *
264 * @return string Formatted date.
265 */
266 protected function getIsoDate(DateTime $date, $format = false)
267 {
268 if ($format !== false) {
269 return $date->format($format);
270 }
271 if ($this->feedType == self::$FEED_RSS) {
272 return $date->format(DateTime::RSS);
273
274 }
275 return $date->format(DateTime::ATOM);
276 }
277
278 /**
253 * Returns the number of link to display according to 'nb' user input parameter. 279 * Returns the number of link to display according to 'nb' user input parameter.
254 * 280 *
255 * If 'nb' not set or invalid, default value: $DEFAULT_NB_LINKS. 281 * If 'nb' not set or invalid, default value: $DEFAULT_NB_LINKS.
diff --git a/application/HttpUtils.php b/application/HttpUtils.php
index 27a39d3d..e705cfd6 100644
--- a/application/HttpUtils.php
+++ b/application/HttpUtils.php
@@ -355,3 +355,29 @@ function page_url($server)
355 } 355 }
356 return index_url($server); 356 return index_url($server);
357} 357}
358
359/**
360 * Retrieve the initial IP forwarded by the reverse proxy.
361 *
362 * Inspired from: https://github.com/zendframework/zend-http/blob/master/src/PhpEnvironment/RemoteAddress.php
363 *
364 * @param array $server $_SERVER array which contains HTTP headers.
365 * @param array $trustedIps List of trusted IP from the configuration.
366 *
367 * @return string|bool The forwarded IP, or false if none could be extracted.
368 */
369function getIpAddressFromProxy($server, $trustedIps)
370{
371 $forwardedIpHeader = 'HTTP_X_FORWARDED_FOR';
372 if (empty($server[$forwardedIpHeader])) {
373 return false;
374 }
375
376 $ips = preg_split('/\s*,\s*/', $server[$forwardedIpHeader]);
377 $ips = array_diff($ips, $trustedIps);
378 if (empty($ips)) {
379 return false;
380 }
381
382 return array_pop($ips);
383}
diff --git a/application/LinkDB.php b/application/LinkDB.php
index d80434bf..de9e73b0 100644
--- a/application/LinkDB.php
+++ b/application/LinkDB.php
@@ -12,8 +12,9 @@
12 * 12 *
13 * Available keys: 13 * Available keys:
14 * - description: description of the entry 14 * - description: description of the entry
15 * - linkdate: date of the creation of this entry, in the form YYYYMMDD_HHMMSS 15 * - linkdate: creation date of this entry, format: YYYYMMDD_HHMMSS
16 * (e.g.'20110914_192317') 16 * (e.g.'20110914_192317')
17 * - updated: last modification date of this entry, format: YYYYMMDD_HHMMSS
17 * - private: Is this link private? 0=no, other value=yes 18 * - private: Is this link private? 0=no, other value=yes
18 * - tags: tags attached to this entry (separated by spaces) 19 * - tags: tags attached to this entry (separated by spaces)
19 * - title Title of the link 20 * - title Title of the link
diff --git a/doc/3rd-party-libraries.html b/doc/3rd-party-libraries.html
index f6ff4763..946ca037 100644
--- a/doc/3rd-party-libraries.html
+++ b/doc/3rd-party-libraries.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
@@ -81,6 +79,7 @@
81</ul> 79</ul>
82<h2 id="php">PHP</h2> 80<h2 id="php">PHP</h2>
83<ul> 81<ul>
82<li><a href="https://github.com/shaarli/netscape-bookmark-parser">shaarli/netscape-bookmark-parser</a> - Netscape bookmark parser<a href=".html"></a></li>
84<li><a href="https://github.com/rainphp/raintpl">RainTPL</a> - HTML templating for PHP<a href=".html"></a></li> 83<li><a href="https://github.com/rainphp/raintpl">RainTPL</a> - HTML templating for PHP<a href=".html"></a></li>
85</ul> 84</ul>
86</body> 85</body>
diff --git a/doc/3rd-party-libraries.md b/doc/3rd-party-libraries.md
index 3101c90a..e6370549 100644
--- a/doc/3rd-party-libraries.md
+++ b/doc/3rd-party-libraries.md
@@ -10,4 +10,5 @@
10- [qr.js](http://neocotic.com/qr.js/) ([GitHub](https://github.com/neocotic/qr.js)) - QR code generation[](.html) 10- [qr.js](http://neocotic.com/qr.js/) ([GitHub](https://github.com/neocotic/qr.js)) - QR code generation[](.html)
11 11
12## PHP 12## PHP
13- [shaarli/netscape-bookmark-parser](https://github.com/shaarli/netscape-bookmark-parser) - Netscape bookmark parser[](.html)
13- [RainTPL](https://github.com/rainphp/raintpl) - HTML templating for PHP[](.html) 14- [RainTPL](https://github.com/rainphp/raintpl) - HTML templating for PHP[](.html)
diff --git a/doc/Backup,-restore,-import-and-export.html b/doc/Backup,-restore,-import-and-export.html
index 4d72728e..a4a48ad7 100644
--- a/doc/Backup,-restore,-import-and-export.html
+++ b/doc/Backup,-restore,-import-and-export.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,15 +96,21 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
104<h1 id="backup-restore-import-and-export">Backup, restore, import and export</h1> 102<h1 id="backup-restore-import-and-export">Backup, restore, import and export</h1>
103<ul>
104<li><a href="#backup-and-restore-the-datastore-file">Backup and restore the datastore file</a><a href=".html"></a></li>
105<li><a href="#export-links-as">Export links as...</a><a href=".html"></a></li>
106<li><a href="#import-links-from">Import links from...</a><a href=".html"></a></li>
107<li><a href="#import-shaarli-links-to-firefox">Import Shaarli links to Firefox</a><a href=".html"></a></li>
108</ul>
109<hr />
105<h2 id="backup-and-restore-the-datastore-file">Backup and restore the datastore file</h2> 110<h2 id="backup-and-restore-the-datastore-file">Backup and restore the datastore file</h2>
106<p>Backup the file <code>data/datastore.php</code> (by FTP or SSH). Restore by putting the file back in place.</p> 111<p>Backup the file <code>data/datastore.php</code> (by FTP or SSH). Restore by putting the file back in place.</p>
107<p>Example command:</p> 112<p>Example command:</p>
108<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="kw">rsync</span> -avzP my.server.com:/var/www/shaarli/data/datastore.php datastore-<span class="ot">$(</span><span class="kw">date</span> +%Y-%m-%d_%H%M<span class="ot">)</span>.php</code></pre></div> 113<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">rsync</span> -avzP my.server.com:/var/www/shaarli/data/datastore.php datastore-<span class="va">$(</span><span class="fu">date</span> +%Y-%m-%d_%H%M<span class="va">)</span>.php</code></pre></div>
109<h2 id="export-links-as...">Export links as...</h2> 114<h2 id="export-links-as...">Export links as...</h2>
110<p>To export links as an HTML file, under <em>Tools &gt; Export</em>, choose:</p> 115<p>To export links as an HTML file, under <em>Tools &gt; Export</em>, choose:</p>
111<ul> 116<ul>
@@ -118,7 +123,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
118<li>This can be done using the <a href="https://github.com/nodiscc/shaarchiver">shaarchiver</a> tool.<a href=".html"></a></li> 123<li>This can be done using the <a href="https://github.com/nodiscc/shaarchiver">shaarchiver</a> tool.<a href=".html"></a></li>
119</ul> 124</ul>
120<p>Example command:</p> 125<p>Example command:</p>
121<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="kw">./export-bookmarks.py</span> --url=https://my.server.com/shaarli --username=myusername --password=mysupersecretpassword --download-dir=./ --type=all</code></pre></div> 126<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="ex">./export-bookmarks.py</span> --url=https://my.server.com/shaarli --username=myusername --password=mysupersecretpassword --download-dir=./ --type=all</code></pre></div>
122<h2 id="import-links-from...">Import links from...</h2> 127<h2 id="import-links-from...">Import links from...</h2>
123<h3 id="diigo">Diigo</h3> 128<h3 id="diigo">Diigo</h3>
124<p>If you export your bookmark from Diigo, make sure you use the Delicious export, not the Netscape export. (Their Netscape export is broken, and they don't seem to be interested in fixing it.)</p> 129<p>If you export your bookmark from Diigo, make sure you use the Delicious export, not the Netscape export. (Their Netscape export is broken, and they don't seem to be interested in fixing it.)</p>
@@ -126,5 +131,20 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
126<p>See <a href="https://github.com/sebsauvage/Shaarli/issues/146">this issue</a> for import tweaks.<a href=".html"></a></p> 131<p>See <a href="https://github.com/sebsauvage/Shaarli/issues/146">this issue</a> for import tweaks.<a href=".html"></a></p>
127<h3 id="semanticscuttle">SemanticScuttle</h3> 132<h3 id="semanticscuttle">SemanticScuttle</h3>
128<p>To correctly import the tags from a <a href="http://semanticscuttle.sourceforge.net/">SemanticScuttle</a> HTML export, edit the HTML file before importing and replace all occurences of <code>tags=</code> (lowercase) to <code>TAGS=</code> (uppercase).<a href=".html"></a></p> 133<p>To correctly import the tags from a <a href="http://semanticscuttle.sourceforge.net/">SemanticScuttle</a> HTML export, edit the HTML file before importing and replace all occurences of <code>tags=</code> (lowercase) to <code>TAGS=</code> (uppercase).<a href=".html"></a></p>
134<h3 id="scuttle">Scuttle</h3>
135<p>Shaarli cannot import data directly from <a href="https://github.com/scronide/scuttle">Scuttle</a>. However, you can use this third party tool: <a href="https://github.com/q2apro/scuttle-to-shaarli" class="uri">https://github.com/q2apro/scuttle-to-shaarli</a> to export the Scuttle database to the Netscape HTML format compatible with the Shaarli importer.<a href=".html"></a></p>
136<h2 id="import-shaarli-links-to-firefox">Import Shaarli links to Firefox</h2>
137<ul>
138<li>Export your Shaarli links as described above.</li>
139<li>For compatibility reasons, check <code>Prepend note permalinks with this Shaarli instance's URL (useful to import bookmarks in a web browser)</code></li>
140<li>In Firefox, open the bookmark manager (not the sidebar! <code>Bookmarks menu &gt; Show all bookmarks</code> or <code>Ctrl+Shift+B</code>)</li>
141<li>Select <code>Import and Backup &gt; Import bookmarks in HTML format</code></li>
142</ul>
143<p>Your bookmarks will be imported in Firefox, ready to use, with tags and descriptions retained. &quot;Self&quot; (notes) shaares will still point to the Shaarli instance you exported them from, but the note text can be viewed directly in the bookmark properties inside your browser. Depending on the number of bookmarks, the import can take some time.</p>
144<p>You may be interested in these Firefox addons to manage links imported from Shaarli</p>
145<ul>
146<li><a href="https://addons.mozilla.org/en-US/firefox/addon/bookmark-deduplicator/">Bookmark Deduplicator</a> - provides an easy way to deduplicate your bookmarks<a href=".html"></a></li>
147<li><a href="https://addons.mozilla.org/en-US/firefox/addon/tagsieve/">TagSieve</a> - browse your bookmarks by their tags<a href=".html"></a></li>
148</ul>
129</body> 149</body>
130</html> 150</html>
diff --git a/doc/Backup,-restore,-import-and-export.md b/doc/Backup,-restore,-import-and-export.md
index cf6b9f48..9f5598ef 100644
--- a/doc/Backup,-restore,-import-and-export.md
+++ b/doc/Backup,-restore,-import-and-export.md
@@ -1,4 +1,12 @@
1#Backup, restore, import and export 1#Backup, restore, import and export
2 * [Backup and restore the datastore file](#backup-and-restore-the-datastore-file)[](.html)
3 * [Export links as...](#export-links-as)[](.html)
4 * [Import links from...](#import-links-from)[](.html)
5 * [Import Shaarli links to Firefox](#import-shaarli-links-to-firefox)[](.html)
6
7
8----------------------
9
2## Backup and restore the datastore file 10## Backup and restore the datastore file
3 11
4Backup the file `data/datastore.php` (by FTP or SSH). Restore by putting the file back in place. 12Backup the file `data/datastore.php` (by FTP or SSH). Restore by putting the file back in place.
@@ -9,6 +17,7 @@ rsync -avzP my.server.com:/var/www/shaarli/data/datastore.php datastore-$(date +
9``` 17```
10 18
11## Export links as... 19## Export links as...
20
12To export links as an HTML file, under _Tools > Export_, choose: 21To export links as an HTML file, under _Tools > Export_, choose:
13- _Export all_ to export both public and private links 22- _Export all_ to export both public and private links
14- _Export public_ to export public links only 23- _Export public_ to export public links only
@@ -23,13 +32,35 @@ Example command:
23``` 32```
24 33
25## Import links from... 34## Import links from...
35
36
26### Diigo 37### Diigo
27 38
28If you export your bookmark from Diigo, make sure you use the Delicious export, not the Netscape export. (Their Netscape export is broken, and they don't seem to be interested in fixing it.) 39If you export your bookmark from Diigo, make sure you use the Delicious export, not the Netscape export. (Their Netscape export is broken, and they don't seem to be interested in fixing it.)
29 40
41
30### Mister Wong 42### Mister Wong
43
31See [this issue](https://github.com/sebsauvage/Shaarli/issues/146) for import tweaks.[](.html) 44See [this issue](https://github.com/sebsauvage/Shaarli/issues/146) for import tweaks.[](.html)
32 45
33### SemanticScuttle 46### SemanticScuttle
34 47
35To correctly import the tags from a [SemanticScuttle](http://semanticscuttle.sourceforge.net/) HTML export, edit the HTML file before importing and replace all occurences of `tags=` (lowercase) to `TAGS=` (uppercase).[](.html) 48To correctly import the tags from a [SemanticScuttle](http://semanticscuttle.sourceforge.net/) HTML export, edit the HTML file before importing and replace all occurences of `tags=` (lowercase) to `TAGS=` (uppercase).[](.html)
49
50### Scuttle
51
52Shaarli cannot import data directly from [Scuttle](https://github.com/scronide/scuttle). However, you can use this third party tool: https://github.com/q2apro/scuttle-to-shaarli to export the Scuttle database to the Netscape HTML format compatible with the Shaarli importer.[](.html)
53
54## Import Shaarli links to Firefox
55
56 * Export your Shaarli links as described above.
57 * For compatibility reasons, check `Prepend note permalinks with this Shaarli instance's URL (useful to import bookmarks in a web browser)`
58 * In Firefox, open the bookmark manager (not the sidebar! `Bookmarks menu > Show all bookmarks` or `Ctrl+Shift+B`)
59 * Select `Import and Backup > Import bookmarks in HTML format`
60
61Your bookmarks will be imported in Firefox, ready to use, with tags and descriptions retained. "Self" (notes) shaares will still point to the Shaarli instance you exported them from, but the note text can be viewed directly in the bookmark properties inside your browser. Depending on the number of bookmarks, the import can take some time.
62
63You may be interested in these Firefox addons to manage links imported from Shaarli
64
65 * [Bookmark Deduplicator](https://addons.mozilla.org/en-US/firefox/addon/bookmark-deduplicator/) - provides an easy way to deduplicate your bookmarks[](.html)
66 * [TagSieve](https://addons.mozilla.org/en-US/firefox/addon/tagsieve/) - browse your bookmarks by their tags[](.html)
diff --git a/doc/Browsing-and-searching.html b/doc/Browsing-and-searching.html
index 39806128..23001bcb 100644
--- a/doc/Browsing-and-searching.html
+++ b/doc/Browsing-and-searching.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/Coding-guidelines.html b/doc/Coding-guidelines.html
index add69631..1a2a9351 100644
--- a/doc/Coding-guidelines.html
+++ b/doc/Coding-guidelines.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/Community-&-Related-software.html b/doc/Community-&-Related-software.html
index 77b9793f..accbacdc 100644
--- a/doc/Community-&-Related-software.html
+++ b/doc/Community-&-Related-software.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
@@ -84,8 +82,9 @@
84<li><a href="https://github.com/kalvn/shaarli-plugin-autosave">autosave</a> by <a href="https://github.com/kalvn">@kalvn</a>: Automatically saves data when editing a link to avoid any loss in case of crash or unexpected shutdown.<a href=".html"></a></li> 82<li><a href="https://github.com/kalvn/shaarli-plugin-autosave">autosave</a> by <a href="https://github.com/kalvn">@kalvn</a>: Automatically saves data when editing a link to avoid any loss in case of crash or unexpected shutdown.<a href=".html"></a></li>
85<li><a href="https://github.com/ArthurHoaro/code-coloration">Code Coloration</a> by <a href="https://github.com/ArthurHoaro">@ArthurHoaro</a>: client side code syntax highlighter.<a href=".html"></a></li> 83<li><a href="https://github.com/ArthurHoaro/code-coloration">Code Coloration</a> by <a href="https://github.com/ArthurHoaro">@ArthurHoaro</a>: client side code syntax highlighter.<a href=".html"></a></li>
86<li><a href="https://github.com/alexisju/social">social</a> by <a href="https://github.com/alexisju">@alexisju</a>: share links to social networks.<a href=".html"></a></li> 84<li><a href="https://github.com/alexisju/social">social</a> by <a href="https://github.com/alexisju">@alexisju</a>: share links to social networks.<a href=".html"></a></li>
87<li><a href="https://github.com/NerosTie/emojione">emojione</a> by <a href="https://github.com/NerosTie/emojione">@NerosTie</a>: Add colorful emojis to your Shaarli.<a href=".html"></a></li> 85<li><a href="https://github.com/NerosTie/emojione">emojione</a> by <a href="https://github.com/NerosTie">@NerosTie</a>: Add colorful emojis to your Shaarli.<a href=".html"></a></li>
88<li><a href="https://github.com/ArthurHoaro/launch-plugin">launch</a> - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.<a href=".html"></a></li> 86<li><a href="https://github.com/ArthurHoaro/launch-plugin">launch</a> - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.<a href=".html"></a></li>
87<li><a href="https://github.com/kalvn/shaarli-plugin-disqus">Disqus</a> by <a href="https://github.com/kalvn">@kalvn</a>: Adds Disqus comment system to your Shaarli.<a href=".html"></a></li>
89</ul> 88</ul>
90<h3 id="themes">Themes</h3> 89<h3 id="themes">Themes</h3>
91<p>See <a href="Theming.html">Theming</a> for the list of community-contributed themes, and an installation guide.</p> 90<p>See <a href="Theming.html">Theming</a> for the list of community-contributed themes, and an installation guide.</p>
diff --git a/doc/Community-&-Related-software.md b/doc/Community-&-Related-software.md
index 03a3dea9..3945d005 100644
--- a/doc/Community-&-Related-software.md
+++ b/doc/Community-&-Related-software.md
@@ -21,8 +21,9 @@ _TODO: contact repos owners to see if they'd like to standardize their work with
21 * [autosave](https://github.com/kalvn/shaarli-plugin-autosave) by [@kalvn](https://github.com/kalvn): Automatically saves data when editing a link to avoid any loss in case of crash or unexpected shutdown.[](.html) 21 * [autosave](https://github.com/kalvn/shaarli-plugin-autosave) by [@kalvn](https://github.com/kalvn): Automatically saves data when editing a link to avoid any loss in case of crash or unexpected shutdown.[](.html)
22 * [Code Coloration](https://github.com/ArthurHoaro/code-coloration) by [@ArthurHoaro](https://github.com/ArthurHoaro): client side code syntax highlighter.[](.html) 22 * [Code Coloration](https://github.com/ArthurHoaro/code-coloration) by [@ArthurHoaro](https://github.com/ArthurHoaro): client side code syntax highlighter.[](.html)
23 * [social](https://github.com/alexisju/social) by [@alexisju](https://github.com/alexisju): share links to social networks.[](.html) 23 * [social](https://github.com/alexisju/social) by [@alexisju](https://github.com/alexisju): share links to social networks.[](.html)
24 * [emojione](https://github.com/NerosTie/emojione) by [@NerosTie](https://github.com/NerosTie/emojione): Add colorful emojis to your Shaarli.[](.html) 24 * [emojione](https://github.com/NerosTie/emojione) by [@NerosTie](https://github.com/NerosTie): Add colorful emojis to your Shaarli.[](.html)
25 * [launch](https://github.com/ArthurHoaro/launch-plugin) - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.[](.html) 25 * [launch](https://github.com/ArthurHoaro/launch-plugin) - Launch Plugin is a plugin designed to enhance and customize Launch Theme for Shaarli.[](.html)
26 * [Disqus](https://github.com/kalvn/shaarli-plugin-disqus) by [@kalvn](https://github.com/kalvn): Adds Disqus comment system to your Shaarli.[](.html)
26 27
27 28
28### Themes 29### Themes
diff --git a/doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html b/doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html
index edb1555f..9efb1ad6 100644
--- a/doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html
+++ b/doc/Copy-an-existing-installation-over-SSH-and-serve-it-locally.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -111,55 +109,55 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
111<span class="co">#Usage: ./local-shaarli.sh</span> 109<span class="co">#Usage: ./local-shaarli.sh</span>
112<span class="co">#Author: nodiscc (nodiscc@gmail.com)</span> 110<span class="co">#Author: nodiscc (nodiscc@gmail.com)</span>
113<span class="co">#License: MIT (http://opensource.org/licenses/MIT)</span> 111<span class="co">#License: MIT (http://opensource.org/licenses/MIT)</span>
114<span class="kw">set</span> <span class="kw">-o</span> errexit 112<span class="kw">set</span> <span class="ex">-o</span> errexit
115<span class="kw">set</span> <span class="kw">-o</span> nounset 113<span class="kw">set</span> <span class="ex">-o</span> nounset
116 114
117<span class="co">##### CONFIG #################</span> 115<span class="co">##### CONFIG #################</span>
118<span class="co">#The port used by php&#39;s local server</span> 116<span class="co">#The port used by php&#39;s local server</span>
119<span class="ot">php_local_port=</span>7431 117<span class="va">php_local_port=</span>7431
120 118
121<span class="co">#Name of the SSH server and path where Shaarli is installed</span> 119<span class="co">#Name of the SSH server and path where Shaarli is installed</span>
122<span class="co">#TODO: pass these as command-line arguments</span> 120<span class="co">#TODO: pass these as command-line arguments</span>
123<span class="ot">remotehost=</span><span class="st">&quot;my.ssh.server&quot;</span> 121<span class="va">remotehost=</span><span class="st">&quot;my.ssh.server&quot;</span>
124<span class="ot">remote_shaarli_dir=</span><span class="st">&quot;/var/www/shaarli&quot;</span> 122<span class="va">remote_shaarli_dir=</span><span class="st">&quot;/var/www/shaarli&quot;</span>
125 123
126 124
127<span class="co">###### FUNCTIONS #############</span> 125<span class="co">###### FUNCTIONS #############</span>
128<span class="fu">_main()</span> <span class="kw">{</span> 126<span class="fu">_main()</span> <span class="kw">{</span>
129 <span class="kw">_CBSyncShaarli</span> 127 <span class="ex">_CBSyncShaarli</span>
130 <span class="kw">_CBServeShaarli</span> 128 <span class="ex">_CBServeShaarli</span>
131<span class="kw">}</span> 129<span class="kw">}</span>
132 130
133<span class="fu">_CBSyncShaarli()</span> <span class="kw">{</span> 131<span class="fu">_CBSyncShaarli()</span> <span class="kw">{</span>
134 <span class="ot">remote_temp_dir=$(</span><span class="kw">ssh</span> <span class="ot">$remotehost</span> mktemp -d<span class="ot">)</span> 132 <span class="va">remote_temp_dir=$(</span><span class="fu">ssh</span> <span class="va">$remotehost</span> mktemp -d<span class="va">)</span>
135 <span class="ot">remote_ssh_user=$(</span><span class="kw">ssh</span> <span class="ot">$remotehost</span> whoami<span class="ot">)</span> 133 <span class="va">remote_ssh_user=$(</span><span class="fu">ssh</span> <span class="va">$remotehost</span> whoami<span class="va">)</span>
136 <span class="kw">ssh</span> -t <span class="st">&quot;</span><span class="ot">$remotehost</span><span class="st">&quot;</span> sudo cp -r <span class="st">&quot;</span><span class="ot">$remote_shaarli_dir</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="ot">$remote_temp_dir</span><span class="st">&quot;</span> 134 <span class="fu">ssh</span> -t <span class="st">&quot;</span><span class="va">$remotehost</span><span class="st">&quot;</span> sudo cp -r <span class="st">&quot;</span><span class="va">$remote_shaarli_dir</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="va">$remote_temp_dir</span><span class="st">&quot;</span>
137 <span class="kw">ssh</span> -t <span class="st">&quot;</span><span class="ot">$remotehost</span><span class="st">&quot;</span> sudo chown -R <span class="st">&quot;</span><span class="ot">$remote_ssh_user</span><span class="st">&quot;</span>:<span class="st">&quot;</span><span class="ot">$remote_ssh_user</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="ot">$remote_temp_dir</span><span class="st">&quot;</span> 135 <span class="fu">ssh</span> -t <span class="st">&quot;</span><span class="va">$remotehost</span><span class="st">&quot;</span> sudo chown -R <span class="st">&quot;</span><span class="va">$remote_ssh_user</span><span class="st">&quot;</span>:<span class="st">&quot;</span><span class="va">$remote_ssh_user</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="va">$remote_temp_dir</span><span class="st">&quot;</span>
138 <span class="kw">scp</span> -rq <span class="st">&quot;</span><span class="ot">$remotehost</span><span class="st">&quot;</span>:<span class="st">&quot;</span><span class="ot">$remote_temp_dir</span><span class="st">&quot;</span> local-shaarli 136 <span class="fu">scp</span> -rq <span class="st">&quot;</span><span class="va">$remotehost</span><span class="st">&quot;</span>:<span class="st">&quot;</span><span class="va">$remote_temp_dir</span><span class="st">&quot;</span> local-shaarli
139 <span class="kw">ssh</span> <span class="st">&quot;</span><span class="ot">$remotehost</span><span class="st">&quot;</span> rm -r <span class="st">&quot;</span><span class="ot">$remote_temp_dir</span><span class="st">&quot;</span> 137 <span class="fu">ssh</span> <span class="st">&quot;</span><span class="va">$remotehost</span><span class="st">&quot;</span> rm -r <span class="st">&quot;</span><span class="va">$remote_temp_dir</span><span class="st">&quot;</span>
140<span class="kw">}</span> 138<span class="kw">}</span>
141 139
142<span class="fu">_CBServeShaarli()</span> <span class="kw">{</span> 140<span class="fu">_CBServeShaarli()</span> <span class="kw">{</span>
143 <span class="co">#TODO: allow serving a previously downloaded Shaarli</span> 141 <span class="co">#TODO: allow serving a previously downloaded Shaarli</span>
144 <span class="co">#TODO: ask before overwriting local copy, if it exists</span> 142 <span class="co">#TODO: ask before overwriting local copy, if it exists</span>
145 <span class="kw">cd</span> local-shaarli/ 143 <span class="bu">cd</span> local-shaarli/
146 <span class="kw">php</span> -S localhost:<span class="ot">${php_local_port}</span> 144 <span class="ex">php</span> -S localhost:<span class="va">${php_local_port}</span>
147 <span class="kw">echo</span> <span class="st">&quot;Please go to http://localhost:</span><span class="ot">${php_local_port}</span><span class="st">&quot;</span> 145 <span class="bu">echo</span> <span class="st">&quot;Please go to http://localhost:</span><span class="va">${php_local_port}</span><span class="st">&quot;</span>
148<span class="kw">}</span> 146<span class="kw">}</span>
149 147
150 148
151<span class="co">##### MAIN #################</span> 149<span class="co">##### MAIN #################</span>
152 150
153<span class="kw">_main</span></code></pre></div> 151<span class="ex">_main</span></code></pre></div>
154<p>This outputs:</p> 152<p>This outputs:</p>
155<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">./local-shaarli.sh</span> 153<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">./local-shaarli.sh</span>
156<span class="kw">PHP</span> 5.6.0RC4 Development Server started at Mon Sep 1 21:56:19 2014 154<span class="ex">PHP</span> 5.6.0RC4 Development Server started at Mon Sep 1 21:56:19 2014
157<span class="kw">Listening</span> on http://localhost:7431 155<span class="ex">Listening</span> on http://localhost:7431
158<span class="kw">Document</span> root is /home/user/local-shaarli/shaarli 156<span class="ex">Document</span> root is /home/user/local-shaarli/shaarli
159<span class="kw">Press</span> Ctrl-C to quit. 157<span class="ex">Press</span> Ctrl-C to quit.
160 158
161[<span class="kw">Mon</span> Sep 1 21:56:27 2014] ::1:57868 [200]: /[](.html) 159[<span class="ex">Mon</span> Sep 1 21:56:27 2014] ::1:57868 [200]: /[](.html)
162[<span class="kw">Mon</span> Sep 1 21:56:27 2014] ::1:57869 [200]: /index.html[](.html) 160[<span class="ex">Mon</span> Sep 1 21:56:27 2014] ::1:57869 [200]: /index.html[](.html)
163[<span class="kw">Mon</span> Sep 1 21:56:37 2014] ::1:57881 [200]: /...[](.html)</code></pre></div> 161[<span class="ex">Mon</span> Sep 1 21:56:37 2014] ::1:57881 [200]: /...[](.html)</code></pre></div>
164</body> 162</body>
165</html> 163</html>
diff --git a/doc/Create-and-serve-multiple-Shaarlis-(farm).html b/doc/Create-and-serve-multiple-Shaarlis-(farm).html
index 933144e4..672e4bf3 100644
--- a/doc/Create-and-serve-multiple-Shaarlis-(farm).html
+++ b/doc/Create-and-serve-multiple-Shaarlis-(farm).html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,33 +96,32 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
104<h1 id="create-and-serve-multiple-shaarlis-farm">Create and serve multiple Shaarlis (farm)</h1> 102<h1 id="create-and-serve-multiple-shaarlis-farm">Create and serve multiple Shaarlis (farm)</h1>
105<p>Example bash script (creates multiple shaarli instances and generates an HTML index of them)</p> 103<p>Example bash script (creates multiple shaarli instances and generates an HTML index of them)</p>
106<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co">#!/bin/bash</span> 104<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co">#!/bin/bash</span>
107<span class="kw">set</span> <span class="kw">-o</span> errexit 105<span class="kw">set</span> <span class="ex">-o</span> errexit
108<span class="kw">set</span> <span class="kw">-o</span> nounset 106<span class="kw">set</span> <span class="ex">-o</span> nounset
109 107
110<span class="co">#config</span> 108<span class="co">#config</span>
111<span class="ot">shaarli_base_dir=</span><span class="st">&#39;/var/www/shaarli&#39;</span> 109<span class="va">shaarli_base_dir=</span><span class="st">&#39;/var/www/shaarli&#39;</span>
112<span class="ot">accounts=</span><span class="st">&#39;bob john whatever username&#39;</span> 110<span class="va">accounts=</span><span class="st">&#39;bob john whatever username&#39;</span>
113<span class="ot">shaarli_repo_url=</span><span class="st">&#39;https://github.com/shaarli/Shaarli&#39;</span> 111<span class="va">shaarli_repo_url=</span><span class="st">&#39;https://github.com/shaarli/Shaarli&#39;</span>
114<span class="ot">ref=</span><span class="st">&quot;master&quot;</span> 112<span class="va">ref=</span><span class="st">&quot;master&quot;</span>
115 113
116<span class="co">#clone multiple shaarli instances</span> 114<span class="co">#clone multiple shaarli instances</span>
117<span class="kw">if [</span> <span class="ot">!</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="ot">$shaarli_base_dir</span><span class="st">&quot;</span><span class="kw"> ]</span>; <span class="kw">then</span> <span class="kw">mkdir</span> <span class="st">&quot;</span><span class="ot">$shaarli_base_dir</span><span class="st">&quot;</span><span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(.html)</span> 115<span class="kw">if</span><span class="bu"> [</span> <span class="ot">!</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">&quot;</span><span class="bu"> ]</span>; <span class="kw">then</span> <span class="fu">mkdir</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">&quot;</span><span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
118 116
119<span class="kw">for</span> <span class="kw">account</span> in <span class="ot">$accounts</span><span class="kw">;</span> <span class="kw">do</span> 117<span class="kw">for</span> <span class="ex">account</span> in <span class="va">$accounts</span><span class="kw">;</span> <span class="kw">do</span>
120 <span class="kw">if [</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="ot">$shaarli_base_dir</span><span class="st">/</span><span class="ot">$account</span><span class="st">&quot;</span><span class="kw"> ]</span>;[]<span class="kw">(.html)</span> 118 <span class="kw">if</span><span class="bu"> [</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/</span><span class="va">$account</span><span class="st">&quot;</span><span class="bu"> ]</span>;[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
121 <span class="kw">then</span> <span class="kw">echo</span> <span class="st">&quot;[info] account </span><span class="ot">$account</span><span class="st"> already exists, skipping&quot;</span><span class="kw">;</span>[]<span class="kw">(.html)</span> 119 <span class="kw">then</span> <span class="bu">echo</span> <span class="st">&quot;[info] account </span><span class="va">$account</span><span class="st"> already exists, skipping&quot;</span><span class="kw">;</span>[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
122 <span class="kw">else</span> <span class="kw">echo</span> <span class="st">&quot;[info] creating new account </span><span class="ot">$account</span><span class="st"> ...&quot;</span><span class="kw">;</span> <span class="kw">git</span> clone --quiet <span class="st">&quot;</span><span class="ot">$shaarli_repo_url</span><span class="st">&quot;</span> -b <span class="st">&quot;</span><span class="ot">$ref</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="ot">$shaarli_base_dir</span><span class="st">/</span><span class="ot">$account</span><span class="st">&quot;</span><span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(.html)</span> 120 <span class="kw">else</span> <span class="bu">echo</span> <span class="st">&quot;[info] creating new account </span><span class="va">$account</span><span class="st"> ...&quot;</span><span class="kw">;</span> <span class="fu">git</span> clone --quiet <span class="st">&quot;</span><span class="va">$shaarli_repo_url</span><span class="st">&quot;</span> -b <span class="st">&quot;</span><span class="va">$ref</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/</span><span class="va">$account</span><span class="st">&quot;</span><span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
123<span class="kw">done</span> 121<span class="kw">done</span>
124 122
125<span class="co">#generate html index of shaarlis</span> 123<span class="co">#generate html index of shaarlis</span>
126<span class="ot">htmlhead=</span><span class="st">&#39;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</span> 124<span class="va">htmlhead=</span><span class="st">&#39;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</span>
127<span class="st">&lt;!-- Minimal html template thanks to http://www.sitepoint.com/a-minimal-html-document/ --&gt;</span> 125<span class="st">&lt;!-- Minimal html template thanks to http://www.sitepoint.com/a-minimal-html-document/ --&gt;</span>
128<span class="st">&lt;html lang=&quot;en&quot;&gt;</span> 126<span class="st">&lt;html lang=&quot;en&quot;&gt;</span>
129<span class="st"> &lt;head&gt;</span> 127<span class="st"> &lt;head&gt;</span>
@@ -136,9 +134,9 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
136<span class="st"> &lt;h1&gt;My Shaarli farm&lt;/h1&gt;</span> 134<span class="st"> &lt;h1&gt;My Shaarli farm&lt;/h1&gt;</span>
137<span class="st"> &lt;ul style=&quot;list-style-type: none;&quot;&gt;&#39;</span> 135<span class="st"> &lt;ul style=&quot;list-style-type: none;&quot;&gt;&#39;</span>
138 136
139<span class="ot">accountlinks=</span><span class="st">&#39;&#39;</span> 137<span class="va">accountlinks=</span><span class="st">&#39;&#39;</span>
140 138
141<span class="ot">htmlfooter=</span><span class="st">&#39;</span> 139<span class="va">htmlfooter=</span><span class="st">&#39;</span>
142<span class="st"> &lt;/ul&gt;</span> 140<span class="st"> &lt;/ul&gt;</span>
143<span class="st"> &lt;/div&gt;</span> 141<span class="st"> &lt;/div&gt;</span>
144<span class="st"> &lt;/body&gt;</span> 142<span class="st"> &lt;/body&gt;</span>
@@ -146,14 +144,14 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
146 144
147 145
148 146
149<span class="kw">for</span> <span class="kw">account</span> in <span class="ot">$accounts</span><span class="kw">;</span> <span class="kw">do</span> <span class="ot">accountlinks=</span><span class="st">&quot;</span><span class="ot">$accountlinks</span><span class="st">\n&lt;li&gt;&lt;a href=</span><span class="dt">\&quot;</span><span class="ot">$account</span><span class="dt">\&quot;</span><span class="st">&gt;</span><span class="ot">$account</span><span class="st">&lt;/a&gt;&lt;/li&gt;&quot;</span>; <span class="kw">done</span> 147<span class="kw">for</span> <span class="ex">account</span> in <span class="va">$accounts</span><span class="kw">;</span> <span class="kw">do</span> <span class="va">accountlinks=</span><span class="st">&quot;</span><span class="va">$accountlinks</span><span class="st">\n&lt;li&gt;&lt;a href=</span><span class="dt">\&quot;</span><span class="va">$account</span><span class="dt">\&quot;</span><span class="st">&gt;</span><span class="va">$account</span><span class="st">&lt;/a&gt;&lt;/li&gt;&quot;</span>; <span class="kw">done</span>
150<span class="kw">if [</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="ot">$shaarli_base_dir</span><span class="st">/index.html&quot;</span><span class="kw"> ]</span>; <span class="kw">then</span> <span class="kw">echo</span> <span class="st">&quot;[removing old index.html]&quot;</span><span class="kw">;</span> <span class="kw">rm</span> <span class="st">&quot;</span><span class="ot">$shaarli_base_dir</span><span class="st">/index.html&quot;</span> ]<span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(.html)</span> 148<span class="kw">if</span><span class="bu"> [</span> <span class="ot">-d</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/index.html&quot;</span><span class="bu"> ]</span>; <span class="kw">then</span> <span class="bu">echo</span> <span class="st">&quot;[removing old index.html]&quot;</span><span class="kw">;</span> <span class="fu">rm</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/index.html&quot;</span> ]<span class="kw">;</span> <span class="kw">fi</span>[]<span class="kw">(</span><span class="ex">.html</span><span class="kw">)</span>
151<span class="kw">echo</span> <span class="st">&quot;[info] generating new index of shaarlis&quot;</span>[](.html) 149<span class="bu">echo</span> <span class="st">&quot;[info] generating new index of shaarlis&quot;</span>[](.html)
152<span class="kw">echo</span> -e <span class="st">&quot;</span><span class="ot">$htmlhead</span><span class="st"> </span><span class="ot">$accountlinks</span><span class="st"> </span><span class="ot">$htmlfooter</span><span class="st">&quot;</span> <span class="kw">&gt;</span> <span class="st">&quot;</span><span class="ot">$shaarli_base_dir</span><span class="st">/index.html&quot;</span> 150<span class="bu">echo</span> -e <span class="st">&quot;</span><span class="va">$htmlhead</span><span class="st"> </span><span class="va">$accountlinks</span><span class="st"> </span><span class="va">$htmlfooter</span><span class="st">&quot;</span> <span class="op">&gt;</span> <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">/index.html&quot;</span>
153<span class="kw">echo</span> <span class="st">&#39;[info] done.&#39;</span>[](.html) 151<span class="bu">echo</span> <span class="st">&#39;[info] done.&#39;</span>[](.html)
154<span class="kw">echo</span> <span class="st">&quot;[info] list of accounts: </span><span class="ot">$accounts</span><span class="st">&quot;</span>[](.html) 152<span class="bu">echo</span> <span class="st">&quot;[info] list of accounts: </span><span class="va">$accounts</span><span class="st">&quot;</span>[](.html)
155<span class="kw">echo</span> <span class="st">&quot;[info] contents of </span><span class="ot">$shaarli_base_dir</span><span class="st">:&quot;</span>[](.html) 153<span class="bu">echo</span> <span class="st">&quot;[info] contents of </span><span class="va">$shaarli_base_dir</span><span class="st">:&quot;</span>[](.html)
156<span class="kw">tree</span> -a -L 1 <span class="st">&quot;</span><span class="ot">$shaarli_base_dir</span><span class="st">&quot;</span></code></pre></div> 154<span class="ex">tree</span> -a -L 1 <span class="st">&quot;</span><span class="va">$shaarli_base_dir</span><span class="st">&quot;</span></code></pre></div>
157<p>This script just serves as an example. More precise or complex (applying custom configuration, etc) automation is possible using configuration management software like <a href="https://www.ansible.com/">Ansible</a><a href=".html"></a></p> 155<p>This script just serves as an example. More precise or complex (applying custom configuration, etc) automation is possible using configuration management software like <a href="https://www.ansible.com/">Ansible</a><a href=".html"></a></p>
158</body> 156</body>
159</html> 157</html>
diff --git a/doc/Datastore-hacks.html b/doc/Datastore-hacks.html
index 88639402..15da09d4 100644
--- a/doc/Datastore-hacks.html
+++ b/doc/Datastore-hacks.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
diff --git a/doc/Development.html b/doc/Development.html
index 2eacff94..c5776413 100644
--- a/doc/Development.html
+++ b/doc/Development.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/Directory-structure.html b/doc/Directory-structure.html
index 003d4d94..404ff7c8 100644
--- a/doc/Directory-structure.html
+++ b/doc/Directory-structure.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,39 +96,38 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
104<h1 id="directory-structure">Directory structure</h1> 102<h1 id="directory-structure">Directory structure</h1>
105<p>Here is the directory structure of Shaarli and the purpose of the different files:</p> 103<p>Here is the directory structure of Shaarli and the purpose of the different files:</p>
106<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"> <span class="kw">index.php</span> <span class="co"># Main program</span> 104<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"> <span class="ex">index.php</span> <span class="co"># Main program</span>
107 <span class="kw">application/</span> <span class="co"># Shaarli classes</span> 105 <span class="ex">application/</span> <span class="co"># Shaarli classes</span>
108 ├── <span class="kw">LinkDB.php</span> 106 ├── <span class="ex">LinkDB.php</span>
109 └── <span class="kw">Utils.php</span> 107 └── <span class="ex">Utils.php</span>
110 <span class="kw">tests/</span> <span class="co"># Shaarli unitary &amp; functional tests</span> 108 <span class="ex">tests/</span> <span class="co"># Shaarli unitary &amp; functional tests</span>
111 ├── <span class="kw">LinkDBTest.php</span> 109 ├── <span class="ex">LinkDBTest.php</span>
112 ├── <span class="kw">utils</span> <span class="co"># utilities to ease testing</span> 110 ├── <span class="ex">utils</span> <span class="co"># utilities to ease testing</span>
113 │ └── <span class="kw">ReferenceLinkDB.php</span> 111 │ └── <span class="ex">ReferenceLinkDB.php</span>
114 └── <span class="kw">UtilsTest.php</span> 112 └── <span class="ex">UtilsTest.php</span>
115 <span class="kw">COPYING</span> <span class="co"># Shaarli license</span> 113 <span class="ex">COPYING</span> <span class="co"># Shaarli license</span>
116 <span class="kw">inc/</span> <span class="co"># static assets and 3rd party libraries</span> 114 <span class="ex">inc/</span> <span class="co"># static assets and 3rd party libraries</span>
117 ├── <span class="kw">awesomplete.*</span> <span class="co"># tags autocompletion library</span> 115 ├── <span class="ex">awesomplete.*</span> <span class="co"># tags autocompletion library</span>
118 ├── <span class="kw">blazy.*</span> <span class="co"># picture wall lazy image loading library</span> 116 ├── <span class="ex">blazy.*</span> <span class="co"># picture wall lazy image loading library</span>
119 ├── <span class="kw">shaarli.css</span>, reset.css <span class="co"># Shaarli stylesheet.</span> 117 ├── <span class="ex">shaarli.css</span>, reset.css <span class="co"># Shaarli stylesheet.</span>
120 ├── <span class="kw">qr.*</span> <span class="co"># qr code generation library</span> 118 ├── <span class="ex">qr.*</span> <span class="co"># qr code generation library</span>
121 └──<span class="kw">rain.tpl.class.php</span> <span class="co"># RainTPL templating library</span> 119 └──<span class="ex">rain.tpl.class.php</span> <span class="co"># RainTPL templating library</span>
122 <span class="kw">tpl/</span> <span class="co"># RainTPL templates for Shaarli. They are used to build the pages.</span> 120 <span class="ex">tpl/</span> <span class="co"># RainTPL templates for Shaarli. They are used to build the pages.</span>
123 <span class="kw">images/</span> <span class="co"># Images and icons used in Shaarli</span> 121 <span class="ex">images/</span> <span class="co"># Images and icons used in Shaarli</span>
124 <span class="kw">data/</span> <span class="co"># data storage: bookmark database, configuration, logs, banlist…</span> 122 <span class="ex">data/</span> <span class="co"># data storage: bookmark database, configuration, logs, banlist…</span>
125 ├── <span class="kw">config.php</span> <span class="co"># Shaarli configuration (login, password, timezone, title…)</span> 123 ├── <span class="ex">config.php</span> <span class="co"># Shaarli configuration (login, password, timezone, title…)</span>
126 ├── <span class="kw">datastore.php</span> <span class="co"># Your link database (compressed).</span> 124 ├── <span class="ex">datastore.php</span> <span class="co"># Your link database (compressed).</span>
127 ├── <span class="kw">ipban.php</span> <span class="co"># IP address ban system data</span> 125 ├── <span class="ex">ipban.php</span> <span class="co"># IP address ban system data</span>
128 ├── <span class="kw">lastupdatecheck.txt</span> <span class="co"># Update check timestamp file</span> 126 ├── <span class="ex">lastupdatecheck.txt</span> <span class="co"># Update check timestamp file</span>
129 └──<span class="kw">log.txt</span> <span class="co"># login/IPban log.</span> 127 └──<span class="ex">log.txt</span> <span class="co"># login/IPban log.</span>
130 <span class="kw">cache/</span> <span class="co"># thumbnails cache</span> 128 <span class="ex">cache/</span> <span class="co"># thumbnails cache</span>
131 <span class="co"># This directory is automatically created. You can erase it anytime you want.</span> 129 <span class="co"># This directory is automatically created. You can erase it anytime you want.</span>
132 <span class="kw">tmp/</span> <span class="co"># Temporary directory for compiled RainTPL templates.</span> 130 <span class="ex">tmp/</span> <span class="co"># Temporary directory for compiled RainTPL templates.</span>
133 <span class="co"># This directory is automatically created. You can erase it anytime you want.</span></code></pre></div> 131 <span class="co"># This directory is automatically created. You can erase it anytime you want.</span></code></pre></div>
134</body> 132</body>
135</html> 133</html>
diff --git a/doc/Docker.html b/doc/Docker.html
index a443d100..e89c90fb 100644
--- a/doc/Docker.html
+++ b/doc/Docker.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -112,18 +110,18 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
112<p>Install <a href="https://www.docker.com/">Docker</a>, by following the instructions relevant<a href=".html"></a><br /> 110<p>Install <a href="https://www.docker.com/">Docker</a>, by following the instructions relevant<a href=".html"></a><br />
113to your OS / distribution, and start the service.</p> 111to your OS / distribution, and start the service.</p>
114<h4 id="search-an-image-on-dockerhub">Search an image on <a href="https://hub.docker.com/">DockerHub</a><a href=".html"></a></h4> 112<h4 id="search-an-image-on-dockerhub">Search an image on <a href="https://hub.docker.com/">DockerHub</a><a href=".html"></a></h4>
115<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">docker</span> search debian 113<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> search debian
116 114
117<span class="kw">NAME</span> DESCRIPTION STARS OFFICIAL AUTOMATED 115<span class="ex">NAME</span> DESCRIPTION STARS OFFICIAL AUTOMATED
118<span class="kw">ubuntu</span> Ubuntu is a Debian-based Linux operating s... 2065 [OK][](.html) 116<span class="ex">ubuntu</span> Ubuntu is a Debian-based Linux operating s... 2065 [OK][](.html)
119<span class="kw">debian</span> Debian is a Linux distribution that<span class="st">&#39;s comp... 603 [OK][](.html)</span> 117<span class="ex">debian</span> Debian is a Linux distribution that<span class="st">&#39;s comp... 603 [OK][](.html)</span>
120<span class="st">google/debian 47 [OK][](.html)</span></code></pre></div> 118<span class="st">google/debian 47 [OK][](.html)</span></code></pre></div>
121<h4 id="show-available-tags-for-a-repository">Show available tags for a repository</h4> 119<h4 id="show-available-tags-for-a-repository">Show available tags for a repository</h4>
122<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">curl</span> https://index.docker.io/v1/repositories/debian/tags <span class="kw">|</span> <span class="kw">python</span> -m json.tool 120<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">curl</span> https://index.docker.io/v1/repositories/debian/tags <span class="kw">|</span> <span class="ex">python</span> -m json.tool
123 121
124<span class="kw">%</span> Total % Received % Xferd Average Speed Time Time Time Current 122<span class="ex">%</span> Total % Received % Xferd Average Speed Time Time Time Current
125<span class="kw">Dload</span> Upload Total Spent Left Speed 123<span class="ex">Dload</span> Upload Total Spent Left Speed
126<span class="kw">100</span> 1283 0 1283 0 0 433 0 --:--:-- 0:00:02 --:--:-- 433</code></pre></div> 124<span class="ex">100</span> 1283 0 1283 0 0 433 0 --:--:-- 0:00:02 --:--:-- 433</code></pre></div>
127<p>Sample output:</p> 125<p>Sample output:</p>
128<div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="ot">[[]</span><span class="er">(.html)</span> 126<div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="ot">[[]</span><span class="er">(.html)</span>
129 <span class="fu">{</span> 127 <span class="fu">{</span>
@@ -148,14 +146,14 @@ to your OS / distribution, and start the service.</p>
148 <span class="fu">}</span> 146 <span class="fu">}</span>
149<span class="ot">]</span></code></pre></div> 147<span class="ot">]</span></code></pre></div>
150<h4 id="pull-an-image-from-dockerhub">Pull an image from DockerHub</h4> 148<h4 id="pull-an-image-from-dockerhub">Pull an image from DockerHub</h4>
151<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">docker</span> pull repository[:tag][](.html) 149<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> pull repository[:tag][](.html)
152 150
153$ <span class="kw">docker</span> pull debian:wheezy 151$ <span class="ex">docker</span> pull debian:wheezy
154<span class="kw">wheezy</span>: Pulling from debian 152<span class="ex">wheezy</span>: Pulling from debian
155<span class="kw">4c8cbfd2973e</span>: Pull complete 153<span class="ex">4c8cbfd2973e</span>: Pull complete
156<span class="kw">60c52dbe9d91</span>: Pull complete 154<span class="ex">60c52dbe9d91</span>: Pull complete
157<span class="kw">Digest</span>: sha256:c584131da2ac1948aa3e66468a4424b6aea2f33acba7cec0b631bdb56254c4fe 155<span class="ex">Digest</span>: sha256:c584131da2ac1948aa3e66468a4424b6aea2f33acba7cec0b631bdb56254c4fe
158<span class="kw">Status</span>: Downloaded newer image for debian:wheezy</code></pre></div> 156<span class="ex">Status</span>: Downloaded newer image for debian:wheezy</code></pre></div>
159<h2 id="get-and-run-a-shaarli-image">Get and run a Shaarli image</h2> 157<h2 id="get-and-run-a-shaarli-image">Get and run a Shaarli image</h2>
160<h3 id="dockerhub-repository">DockerHub repository</h3> 158<h3 id="dockerhub-repository">DockerHub repository</h3>
161<p>The images can be found in the <a href="https://hub.docker.com/r/shaarli/shaarli/"><code>shaarli/shaarli</code></a><a href=".html"></a><br /> 159<p>The images can be found in the <a href="https://hub.docker.com/r/shaarli/shaarli/"><code>shaarli/shaarli</code></a><a href=".html"></a><br />
@@ -173,53 +171,53 @@ repository.</p>
173<li><a href="http://nginx.org/">Nginx</a><a href=".html"></a></li> 171<li><a href="http://nginx.org/">Nginx</a><a href=".html"></a></li>
174</ul> 172</ul>
175<h3 id="download-from-dockerhub">Download from DockerHub</h3> 173<h3 id="download-from-dockerhub">Download from DockerHub</h3>
176<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">docker</span> pull shaarli/shaarli 174<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> pull shaarli/shaarli
177<span class="kw">latest</span>: Pulling from shaarli/shaarli 175<span class="ex">latest</span>: Pulling from shaarli/shaarli
178<span class="kw">32716d9fcddb</span>: Pull complete 176<span class="ex">32716d9fcddb</span>: Pull complete
179<span class="kw">84899d045435</span>: Pull complete 177<span class="ex">84899d045435</span>: Pull complete
180<span class="kw">4b6ad7444763</span>: Pull complete 178<span class="ex">4b6ad7444763</span>: Pull complete
181<span class="kw">e0345ef7a3e0</span>: Pull complete 179<span class="ex">e0345ef7a3e0</span>: Pull complete
182<span class="kw">5c1dd344094f</span>: Pull complete 180<span class="ex">5c1dd344094f</span>: Pull complete
183<span class="kw">6422305a200b</span>: Pull complete 181<span class="ex">6422305a200b</span>: Pull complete
184<span class="kw">7d63f861dbef</span>: Pull complete 182<span class="ex">7d63f861dbef</span>: Pull complete
185<span class="kw">3eb97210645c</span>: Pull complete 183<span class="ex">3eb97210645c</span>: Pull complete
186<span class="kw">869319d746ff</span>: Already exists 184<span class="ex">869319d746ff</span>: Already exists
187<span class="kw">869319d746ff</span>: Pulling fs layer 185<span class="ex">869319d746ff</span>: Pulling fs layer
188<span class="kw">902b87aaaec9</span>: Already exists 186<span class="ex">902b87aaaec9</span>: Already exists
189<span class="kw">Digest</span>: sha256:f836b4627b958b3f83f59c332f22f02fcd495ace3056f2be2c4912bd8704cc98 187<span class="ex">Digest</span>: sha256:f836b4627b958b3f83f59c332f22f02fcd495ace3056f2be2c4912bd8704cc98
190<span class="kw">Status</span>: Downloaded newer image for shaarli/shaarli:latest</code></pre></div> 188<span class="ex">Status</span>: Downloaded newer image for shaarli/shaarli:latest</code></pre></div>
191<h3 id="create-and-start-a-new-container-from-the-image">Create and start a new container from the image</h3> 189<h3 id="create-and-start-a-new-container-from-the-image">Create and start a new container from the image</h3>
192<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># map the host&#39;s :8000 port to the container&#39;s :80 port</span> 190<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># map the host&#39;s :8000 port to the container&#39;s :80 port</span>
193$ <span class="kw">docker</span> create -p 8000:80 shaarli/shaarli 191$ <span class="ex">docker</span> create -p 8000:80 shaarli/shaarli
194<span class="kw">d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101</span> 192<span class="ex">d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101</span>
195 193
196<span class="co"># launch the container in the background</span> 194<span class="co"># launch the container in the background</span>
197$ <span class="kw">docker</span> start d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101 195$ <span class="ex">docker</span> start d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101
198<span class="kw">d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101</span> 196<span class="ex">d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101</span>
199 197
200<span class="co"># list active containers</span> 198<span class="co"># list active containers</span>
201$ <span class="kw">docker</span> ps 199$ <span class="ex">docker</span> ps
202<span class="kw">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES 200<span class="ex">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES
203<span class="kw">d40b7af693d6</span> shaarli/shaarli /usr/bin/supervisor 15 seconds ago Up 4 seconds 0.0.0.0:8000-<span class="kw">&gt;</span>80/tcp backstabbing_galileo</code></pre></div> 201<span class="ex">d40b7af693d6</span> shaarli/shaarli /usr/bin/supervisor 15 seconds ago Up 4 seconds 0.0.0.0:8000-<span class="op">&gt;</span>80/tcp backstabbing_galileo</code></pre></div>
204<h3 id="stop-and-destroy-a-container">Stop and destroy a container</h3> 202<h3 id="stop-and-destroy-a-container">Stop and destroy a container</h3>
205<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">docker</span> stop backstabbing_galileo <span class="co"># those docker guys are really rude to physicists!</span> 203<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">docker</span> stop backstabbing_galileo <span class="co"># those docker guys are really rude to physicists!</span>
206<span class="kw">backstabbing_galileo</span> 204<span class="ex">backstabbing_galileo</span>
207 205
208<span class="co"># check the container is stopped</span> 206<span class="co"># check the container is stopped</span>
209$ <span class="kw">docker</span> ps 207$ <span class="ex">docker</span> ps
210<span class="kw">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES 208<span class="ex">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES
211 209
212<span class="co"># list ALL containers</span> 210<span class="co"># list ALL containers</span>
213$ <span class="kw">docker</span> ps -a 211$ <span class="ex">docker</span> ps -a
214<span class="kw">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES 212<span class="ex">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES
215<span class="kw">d40b7af693d6</span> shaarli/shaarli /usr/bin/supervisor 5 minutes ago Exited (0) <span class="kw">48</span> seconds ago backstabbing_galileo 213<span class="ex">d40b7af693d6</span> shaarli/shaarli /usr/bin/supervisor 5 minutes ago Exited (0) <span class="ex">48</span> seconds ago backstabbing_galileo
216 214
217<span class="co"># destroy the container</span> 215<span class="co"># destroy the container</span>
218$ <span class="kw">docker</span> rm backstabbing_galileo <span class="co"># let&#39;s put an end to these barbarian practices</span> 216$ <span class="ex">docker</span> rm backstabbing_galileo <span class="co"># let&#39;s put an end to these barbarian practices</span>
219<span class="kw">backstabbing_galileo</span> 217<span class="ex">backstabbing_galileo</span>
220 218
221$ <span class="kw">docker</span> ps -a 219$ <span class="ex">docker</span> ps -a
222<span class="kw">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES</code></pre></div> 220<span class="ex">CONTAINER</span> ID IMAGE COMMAND CREATED STATUS PORTS NAMES</code></pre></div>
223<h2 id="resources">Resources</h2> 221<h2 id="resources">Resources</h2>
224<h3 id="docker-1">Docker</h3> 222<h3 id="docker-1">Docker</h3>
225<ul> 223<ul>
diff --git a/doc/Download-CSS-styles-from-an-OPML-list.html b/doc/Download-CSS-styles-from-an-OPML-list.html
index 22771502..a4f68ac6 100644
--- a/doc/Download-CSS-styles-from-an-OPML-list.html
+++ b/doc/Download-CSS-styles-from-an-OPML-list.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -209,8 +207,8 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
209 207
210<span class="co">/**</span> 208<span class="co">/**</span>
211<span class="co"> * Reading directory list, courtesy of http://www.laughing-buddha.net/php/dirlist/</span> 209<span class="co"> * Reading directory list, courtesy of http://www.laughing-buddha.net/php/dirlist/</span>
212<span class="co"> * </span><span class="kw">@param</span><span class="co"> </span><span class="kw">directory</span><span class="co"> the directory we want to list files of</span> 210<span class="co"> * </span><span class="an">@param</span><span class="co"> </span><span class="cv">directory</span><span class="co"> the directory we want to list files of</span>
213<span class="co"> * </span><span class="kw">@return</span><span class="co"> a simple array containing the list of absolute file paths. Notice that current file (&quot;.&quot;) and parent one(&quot;..&quot;)</span> 211<span class="co"> * </span><span class="an">@return</span><span class="co"> a simple array containing the list of absolute file paths. Notice that current file (&quot;.&quot;) and parent one(&quot;..&quot;)</span>
214<span class="co"> * are not listed here</span> 212<span class="co"> * are not listed here</span>
215<span class="co"> */</span> 213<span class="co"> */</span>
216<span class="kw">function</span> getDirectoryList <span class="ot">(</span><span class="kw">$directory</span><span class="ot">)</span> { 214<span class="kw">function</span> getDirectoryList <span class="ot">(</span><span class="kw">$directory</span><span class="ot">)</span> {
diff --git a/doc/Download.html b/doc/Download-and-Installation.html
index 9f9f5117..17c7b69e 100644
--- a/doc/Download.html
+++ b/doc/Download-and-Installation.html
@@ -4,7 +4,7 @@
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <meta name="generator" content="pandoc"> 5 <meta name="generator" content="pandoc">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
7 <title>Shaarli – Download</title> 7 <title>Shaarli – Download and Installation</title>
8 <style type="text/css">code{white-space: pre;}</style> 8 <style type="text/css">code{white-space: pre;}</style>
9 <style type="text/css"> 9 <style type="text/css">
10div.sourceCode { overflow-x: auto; } 10div.sourceCode { overflow-x: auto; }
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,27 +96,70 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
104<h1 id="download">Download</h1> 102<h1 id="download-and-installation">Download and Installation</h1>
105<h2 id="get-shaarli">Get Shaarli!</h2> 103<h1 id="get-shaarli">Get Shaarli!</h1>
106<h3 id="latest-stable-revision">Latest stable revision</h3> 104<p>To install Shaarli, simply place the files in a directory under your webserver's Document Root (or directly at the document root). Make sure your <a href="Server-requirements">server</a> is properly <a href="Server-configuration">configured</a>.<a href=".html"></a></p>
107<p>This revision has been <a href="https://github.com/shaarli/Shaarli/releases">released</a> and tested.<a href=".html"></a></p> 105<p>Several releases are available:</p>
108<h4 id="clone-with-git-recommended">Clone with Git (recommended)</h4> 106<hr />
109<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">git</span> clone https://github.com/shaarli/Shaarli.git -b stable shaarli</code></pre></div> 107<h2 id="latest-release-recommended">Latest release (recommended)</h2>
110<h4 id="download-as-an-archive">Download as an archive</h4> 108<p>Get the latest released version from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page.<a href=".html"></a></p>
111<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">wget</span> https://github.com/shaarli/Shaarli/archive/stable.zip 109<p>The current latest released version is <code>v0.7.0</code>.</p>
112$ <span class="kw">unzip</span> stable.zip 110<h3 id="download-as-an-archive">Download as an archive</h3>
113$ <span class="kw">mv</span> Shaarli-stable shaarli</code></pre></div> 111<p>As a .zip archive:</p>
114<p>Tarballs are also available:</p> 112<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">wget</span> https://github.com/shaarli/Shaarli/archive/v0.7.0.zip
115<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">wget</span> https://github.com/shaarli/Shaarli/archive/stable.tar.gz 113$ <span class="fu">unzip</span> Shaarli-v0.7.0.zip
116$ <span class="kw">tar</span> xvf stable.tar.gz 114$ <span class="fu">mv</span> Shaarli-v0.7.0 /path/to/shaarli/</code></pre></div>
117$ <span class="kw">mv</span> Shaarli-stable shaarli</code></pre></div> 115<table style="width:46%;">
118<h3 id="development-mainline">Development (mainline)</h3> 116<colgroup>
117<col style="width: 8%" />
118<col style="width: 37%" />
119</colgroup>
120<thead>
121<tr class="header">
122<th>!</th>
123<th>In most cases, download Shaarli from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page. Cloning using <code>git</code> or downloading Github branches as zip files requires additional steps (see below).</th>
124</tr>
125</thead>
126<tbody>
127</tbody>
128</table>
129<hr />
130<h2 id="stable-version">Stable version</h2>
131<p>The stable version has been experienced by Shaarli users, and will receive security updates.</p>
132<h3 id="download-as-an-archive-1">Download as an archive</h3>
133<p>As a .zip archive:</p>
134<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">wget</span> https://github.com/shaarli/Shaarli/archive/stable.zip
135$ <span class="fu">unzip</span> stable.zip
136$ <span class="fu">mv</span> Shaarli-stable /path/to/shaarli/</code></pre></div>
137<p>As a .tar.gz archive :</p>
138<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">wget</span> https://github.com/shaarli/Shaarli/archive/stable.tar.gz
139$ <span class="fu">tar</span> xvf stable.tar.gz
140$ <span class="fu">mv</span> Shaarli-stable /path/to/shaarli/</code></pre></div>
141<h3 id="clone-with-git">Clone with Git</h3>
142<p><a href="https://getcomposer.org/">Composer</a> is required to build a functional Shaarli installation when pulling from git.<a href=".html"></a></p>
143<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git -b stable /path/to/shaarli/
144<span class="co"># install/update third-party dependencies</span>
145$ <span class="bu">cd</span> /path/to/shaarli/
146$ <span class="ex">composer</span> update --no-dev</code></pre></div>
147<hr />
148<h2 id="development-version-mainline">Development version (mainline)</h2>
119<p><em>Use at your own risk!</em></p> 149<p><em>Use at your own risk!</em></p>
120<p>To get the latest changes:</p> 150<p>To get the latest changes from the <code>master</code> branch:</p>
121<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">git</span> clone https://github.com/shaarli/Shaarli.git shaarli</code></pre></div> 151<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># clone the repository </span>
152$ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git master /path/to/shaarli/
153<span class="co"># install/update third-party dependencies</span>
154$ <span class="bu">cd</span> /path/to/shaarli
155$ <span class="ex">composer</span> update --no-dev</code></pre></div>
156<hr />
157<h2 id="finish-installation">Finish Installation</h2>
158<p>Once Shaarli is downloaded and files have been placed at the correct location, open it this location your favorite browser.</p>
159<p><img src="http://i.imgur.com/wuMpDSN.png" alt="install screenshot" /><a href=".html"></a></p>
160<p>Setup your Shaarli installation, and it's ready to use!</p>
161<hr />
162<h2 id="updating-shaarli">Updating Shaarli</h2>
163<p>See <a href="Upgrade-and-migration">Upgrade and Migration</a><a href=".html"></a></p>
122</body> 164</body>
123</html> 165</html>
diff --git a/doc/Download-and-Installation.md b/doc/Download-and-Installation.md
new file mode 100644
index 00000000..77af25eb
--- /dev/null
+++ b/doc/Download-and-Installation.md
@@ -0,0 +1,97 @@
1#Download and Installation
2# Get Shaarli!
3
4To install Shaarli, simply place the files in a directory under your webserver's Document Root (or directly at the document root). Make sure your [server](Server-requirements) is properly [configured](Server-configuration).[](.html)
5
6Several releases are available:
7
8--------------------------------------------------------
9
10## Latest release (recommended)
11
12Get the latest released version from the [releases](https://github.com/shaarli/Shaarli/releases) page.[](.html)
13
14The current latest released version is `v0.7.0`.
15
16### Download as an archive
17
18As a .zip archive:
19
20```bash
21$ wget https://github.com/shaarli/Shaarli/archive/v0.7.0.zip
22$ unzip Shaarli-v0.7.0.zip
23$ mv Shaarli-v0.7.0 /path/to/shaarli/
24```
25
26
27| ! |In most cases, download Shaarli from the [releases](https://github.com/shaarli/Shaarli/releases) page. Cloning using `git` or downloading Github branches as zip files requires additional steps (see below).|[](.html)
28|-----|--------------------------|
29
30
31
32--------------------------------------------------------
33
34## Stable version
35
36The stable version has been experienced by Shaarli users, and will receive security updates.
37
38### Download as an archive
39
40As a .zip archive:
41
42```bash
43$ wget https://github.com/shaarli/Shaarli/archive/stable.zip
44$ unzip stable.zip
45$ mv Shaarli-stable /path/to/shaarli/
46```
47
48As a .tar.gz archive :
49
50```bash
51$ wget https://github.com/shaarli/Shaarli/archive/stable.tar.gz
52$ tar xvf stable.tar.gz
53$ mv Shaarli-stable /path/to/shaarli/
54```
55
56### Clone with Git
57
58[Composer](https://getcomposer.org/) is required to build a functional Shaarli installation when pulling from git.[](.html)
59
60```bash
61$ git clone https://github.com/shaarli/Shaarli.git -b stable /path/to/shaarli/
62# install/update third-party dependencies
63$ cd /path/to/shaarli/
64$ composer update --no-dev
65```
66
67--------------------------------------------------------
68
69## Development version (mainline)
70
71_Use at your own risk!_
72
73To get the latest changes from the `master` branch:
74
75```bash
76# clone the repository
77$ git clone https://github.com/shaarli/Shaarli.git master /path/to/shaarli/
78# install/update third-party dependencies
79$ cd /path/to/shaarli
80$ composer update --no-dev
81```
82
83--------------------------------------------------------
84
85## Finish Installation
86
87Once Shaarli is downloaded and files have been placed at the correct location, open it this location your favorite browser.
88
89![install screenshot](http://i.imgur.com/wuMpDSN.png)[](.html)
90
91Setup your Shaarli installation, and it's ready to use!
92
93--------------------------------------------------------
94
95## Updating Shaarli
96
97See [Upgrade and Migration](Upgrade-and-migration)[](.html)
diff --git a/doc/Download.md b/doc/Download.md
deleted file mode 100644
index 7930f541..00000000
--- a/doc/Download.md
+++ /dev/null
@@ -1,31 +0,0 @@
1#Download
2## Get Shaarli!
3### Latest stable revision
4This revision has been [released](https://github.com/shaarli/Shaarli/releases) and tested.[](.html)
5
6#### Clone with Git (recommended)
7```bash
8$ git clone https://github.com/shaarli/Shaarli.git -b stable shaarli
9```
10
11#### Download as an archive
12```bash
13$ wget https://github.com/shaarli/Shaarli/archive/stable.zip
14$ unzip stable.zip
15$ mv Shaarli-stable shaarli
16```
17
18Tarballs are also available:
19```bash
20$ wget https://github.com/shaarli/Shaarli/archive/stable.tar.gz
21$ tar xvf stable.tar.gz
22$ mv Shaarli-stable shaarli
23```
24
25### Development (mainline)
26_Use at your own risk!_
27
28To get the latest changes:
29```bash
30$ git clone https://github.com/shaarli/Shaarli.git shaarli
31```
diff --git a/doc/Example-patch---add-new-via-field-for-links.html b/doc/Example-patch---add-new-via-field-for-links.html
index 7db43107..133224e2 100644
--- a/doc/Example-patch---add-new-via-field-for-links.html
+++ b/doc/Example-patch---add-new-via-field-for-links.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/FAQ.html b/doc/FAQ.html
index 3b6b956d..61f3475f 100644
--- a/doc/FAQ.html
+++ b/doc/FAQ.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/Firefox-share.html b/doc/Firefox-share.html
index add6d4e8..d7dcc282 100644
--- a/doc/Firefox-share.html
+++ b/doc/Firefox-share.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/GnuPG-signature.html b/doc/GnuPG-signature.html
index c431f9ad..50b904d5 100644
--- a/doc/GnuPG-signature.html
+++ b/doc/GnuPG-signature.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -129,26 +127,26 @@ Keys</a></li>
129<li><a href="https://help.github.com/articles/generating-a-gpg-key/">Generating a GPG key</a> (GitHub)<a href=".html"></a></li> 127<li><a href="https://help.github.com/articles/generating-a-gpg-key/">Generating a GPG key</a> (GitHub)<a href=".html"></a></li>
130</ul> 128</ul>
131<h3 id="gpg---provide-identity-information">gpg - provide identity information</h3> 129<h3 id="gpg---provide-identity-information">gpg - provide identity information</h3>
132<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">gpg</span> --gen-key 130<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">gpg</span> --gen-key
133 131
134<span class="kw">gpg</span> (GnuPG) <span class="kw">2.1.6;</span> <span class="kw">Copyright</span> (C) <span class="kw">2015</span> Free Software Foundation, Inc. 132<span class="ex">gpg</span> (GnuPG) <span class="ex">2.1.6</span><span class="kw">;</span> <span class="ex">Copyright</span> (C) <span class="ex">2015</span> Free Software Foundation, Inc.
135<span class="kw">This</span> is free software: you are free to change and redistribute it. 133<span class="ex">This</span> is free software: you are free to change and redistribute it.
136<span class="kw">There</span> is NO WARRANTY, to the extent permitted by law. 134<span class="ex">There</span> is NO WARRANTY, to the extent permitted by law.
137 135
138<span class="kw">Note</span>: Use <span class="st">&quot;gpg2 --full-gen-key&quot;</span> for a full featured key generation dialog. 136<span class="ex">Note</span>: Use <span class="st">&quot;gpg2 --full-gen-key&quot;</span> for a full featured key generation dialog.
139 137
140<span class="kw">GnuPG</span> needs to construct a user ID to identify your key. 138<span class="ex">GnuPG</span> needs to construct a user ID to identify your key.
141 139
142<span class="kw">Real</span> name: Marvin the Paranoid Android 140<span class="ex">Real</span> name: Marvin the Paranoid Android
143<span class="kw">Email</span> address: marvin@h2g2.net 141<span class="ex">Email</span> address: marvin@h2g2.net
144<span class="kw">You</span> selected this USER-ID: 142<span class="ex">You</span> selected this USER-ID:
145 <span class="st">&quot;Marvin the Paranoid Android &lt;marvin@h2g2.net&gt;&quot;</span> 143 <span class="st">&quot;Marvin the Paranoid Android &lt;marvin@h2g2.net&gt;&quot;</span>
146 144
147<span class="kw">Change</span> (N)<span class="kw">ame</span>, (E)<span class="kw">mail</span>, or (O)<span class="kw">kay</span>/<span class="kw">(Q)uit?</span> o 145<span class="ex">Change</span> (N)<span class="ex">ame</span>, (E)<span class="ex">mail</span>, or (O)<span class="ex">kay</span>/<span class="kw">(</span><span class="ex">Q</span><span class="kw">)</span><span class="ex">uit?</span> o
148<span class="kw">We</span> need to generate a lot of random bytes. It is a good idea to perform 146<span class="ex">We</span> need to generate a lot of random bytes. It is a good idea to perform
149<span class="kw">some</span> other action (type on the keyboard, move the mouse, utilize the 147<span class="ex">some</span> other action (type on the keyboard, move the mouse, utilize the
150<span class="kw">disks</span>) <span class="kw">during</span> the prime generation<span class="kw">;</span> <span class="kw">this</span> gives the random number 148<span class="ex">disks</span>) <span class="ex">during</span> the prime generation<span class="kw">;</span> <span class="ex">this</span> gives the random number
151<span class="kw">generator</span> a better chance to gain enough entropy.</code></pre></div> 149<span class="ex">generator</span> a better chance to gain enough entropy.</code></pre></div>
152<h3 id="gpg---entropy-interlude">gpg - entropy interlude</h3> 150<h3 id="gpg---entropy-interlude">gpg - entropy interlude</h3>
153<p>At this point, you will:</p> 151<p>At this point, you will:</p>
154<ul> 152<ul>
@@ -156,19 +154,19 @@ Keys</a></li>
156<li>be asked to use your machine's input devices (mouse, keyboard, etc.) to generate random entropy; this step <em>may take some time</em></li> 154<li>be asked to use your machine's input devices (mouse, keyboard, etc.) to generate random entropy; this step <em>may take some time</em></li>
157</ul> 155</ul>
158<h3 id="gpg---key-creation-confirmation">gpg - key creation confirmation</h3> 156<h3 id="gpg---key-creation-confirmation">gpg - key creation confirmation</h3>
159<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="kw">gpg</span>: key A9D53A3E marked as ultimately trusted 157<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="ex">gpg</span>: key A9D53A3E marked as ultimately trusted
160<span class="kw">public</span> and secret key created and signed. 158<span class="ex">public</span> and secret key created and signed.
161 159
162<span class="kw">gpg</span>: checking the trustdb 160<span class="ex">gpg</span>: checking the trustdb
163<span class="kw">gpg</span>: 3 marginal(s) <span class="kw">needed</span>, 1 complete(s) <span class="kw">needed</span>, PGP trust model 161<span class="ex">gpg</span>: 3 marginal(s) <span class="ex">needed</span>, 1 complete(s) <span class="ex">needed</span>, PGP trust model
164<span class="kw">gpg</span>: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u 162<span class="ex">gpg</span>: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
165<span class="kw">pub</span> rsa2048/A9D53A3E 2015-07-31 163<span class="ex">pub</span> rsa2048/A9D53A3E 2015-07-31
166 <span class="kw">Key</span> fingerprint = AF2A 5381 E54B 2FD2 14C4 A9A3 0E35 ACA4 A9D5 3A3E 164 <span class="ex">Key</span> fingerprint = AF2A 5381 E54B 2FD2 14C4 A9A3 0E35 ACA4 A9D5 3A3E
167<span class="kw">uid</span> [ultimate] Marvin the Paranoid Android <span class="kw">&lt;</span>marvin@h2g2.net<span class="kw">&gt;</span>[](.html) 165<span class="ex">uid</span> [ultimate] Marvin the Paranoid Android <span class="op">&lt;</span>marvin@h2g2.net<span class="op">&gt;</span>[](.html)
168<span class="kw">sub</span> rsa2048/8C0EACF1 2015-07-31</code></pre></div> 166<span class="ex">sub</span> rsa2048/8C0EACF1 2015-07-31</code></pre></div>
169<h3 id="gpg---submit-your-public-key-to-a-pgp-server-optional">gpg - submit your public key to a PGP server (Optional)</h3> 167<h3 id="gpg---submit-your-public-key-to-a-pgp-server-optional">gpg - submit your public key to a PGP server (Optional)</h3>
170<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">gpg</span> --keyserver pgp.mit.edu --send-keys A9D53A3E 168<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">gpg</span> --keyserver pgp.mit.edu --send-keys A9D53A3E
171<span class="kw">gpg</span>: sending key A9D53A3E to hkp server pgp.mit.edu</code></pre></div> 169<span class="ex">gpg</span>: sending key A9D53A3E to hkp server pgp.mit.edu</code></pre></div>
172<h2 id="create-and-push-a-gpg-signed-tag">Create and push a GPG-signed tag</h2> 170<h2 id="create-and-push-a-gpg-signed-tag">Create and push a GPG-signed tag</h2>
173<p>See <a href="Release-Shaarli.html">Release Shaarli</a>.</p> 171<p>See <a href="Release-Shaarli.html">Release Shaarli</a>.</p>
174</body> 172</body>
diff --git a/doc/Home.html b/doc/Home.html
index 442503c5..970f547e 100644
--- a/doc/Home.html
+++ b/doc/Home.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/Plugin-System.html b/doc/Plugin-System.html
index 37b26152..655536c6 100644
--- a/doc/Plugin-System.html
+++ b/doc/Plugin-System.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
diff --git a/doc/Plugins.html b/doc/Plugins.html
index e7df6aed..435a836f 100644
--- a/doc/Plugins.html
+++ b/doc/Plugins.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
diff --git a/doc/RSS-feeds.html b/doc/RSS-feeds.html
index 1b38e4e8..0f332b3d 100644
--- a/doc/RSS-feeds.html
+++ b/doc/RSS-feeds.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/Release-Shaarli.html b/doc/Release-Shaarli.html
index cfaa663b..cdefd3d6 100644
--- a/doc/Release-Shaarli.html
+++ b/doc/Release-Shaarli.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,14 +96,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
104<h1 id="release-shaarli">Release Shaarli</h1> 102<h1 id="release-shaarli">Release Shaarli</h1>
105<p>See <a href="http://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Tagging-Your-Releases">Git - Maintaining a project - Tagging your [](.html)<br /> 103<p>See <a href="http://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Tagging-Your-Releases">Git - Maintaining a project - Tagging your [](.html)<br />
106releases</a>.</p> 104releases</a>.</p>
107<h3 id="prerequisites">Prerequisites</h3> 105<h2 id="prerequisites">Prerequisites</h2>
108<p>This guide assumes that you have:</p> 106<p>This guide assumes that you have:</p>
109<ul> 107<ul>
110<li>a GPG key matching your GitHub authentication credentials 108<li>a GPG key matching your GitHub authentication credentials
@@ -118,53 +116,70 @@ releases</a>.</p>
118<li><code>upstream</code> pointing to the main Shaarli repository</li> 116<li><code>upstream</code> pointing to the main Shaarli repository</li>
119</ul></li> 117</ul></li>
120<li>maintainer permissions on the main Shaarli repository (to push the signed tag)</li> 118<li>maintainer permissions on the main Shaarli repository (to push the signed tag)</li>
121<li><a href="http://pandoc.org/">Pandoc</a> needs to be installed.<a href=".html"></a></li> 119<li><a href="https://getcomposer.org/">Composer</a> and <a href="http://pandoc.org/">Pandoc</a> need to be installed<a href=".html"></a></li>
122</ul> 120</ul>
121<h2 id="increment-the-version-code-create-and-push-a-signed-tag">Increment the version code, create and push a signed tag</h2>
123<h3 id="bump-shaarlis-version">Bump Shaarli's version</h3> 122<h3 id="bump-shaarlis-version">Bump Shaarli's version</h3>
124<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">cd</span> /path/to/shaarli 123<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
125 124
126<span class="co"># create a new branch</span> 125<span class="co"># create a new branch</span>
127$ <span class="kw">git</span> fetch upstream 126$ <span class="fu">git</span> fetch upstream
128$ <span class="kw">git</span> checkout upstream/master -b v0.5.0 127$ <span class="fu">git</span> checkout upstream/master -b v0.5.0
129 128
130<span class="co"># bump the version number</span> 129<span class="co"># bump the version number</span>
131$ <span class="kw">vim</span> index.php shaarli_version.php 130$ <span class="ex">vim</span> index.php shaarli_version.php
132 131
133<span class="co"># rebuild the documentation from the wiki</span> 132<span class="co"># rebuild the documentation from the wiki</span>
134$ <span class="kw">make</span> htmldoc 133$ <span class="fu">make</span> htmldoc
135 134
136<span class="co"># commit the changes</span> 135<span class="co"># commit the changes</span>
137$ <span class="kw">git</span> add index.php shaarli_version.php doc 136$ <span class="fu">git</span> add index.php shaarli_version.php doc
138$ <span class="kw">git</span> commit -s -m <span class="st">&quot;Bump version to v0.5.0&quot;</span> 137$ <span class="fu">git</span> commit -s -m <span class="st">&quot;Bump version to v0.5.0&quot;</span>
139 138
140<span class="co"># push the commit on your GitHub fork</span> 139<span class="co"># push the commit on your GitHub fork</span>
141$ <span class="kw">git</span> push origin v0.5.0</code></pre></div> 140$ <span class="fu">git</span> push origin v0.5.0</code></pre></div>
142<h3 id="create-and-merge-a-pull-request">Create and merge a Pull Request</h3> 141<h3 id="create-and-merge-a-pull-request">Create and merge a Pull Request</h3>
143<p>This one is pretty straightforward ;-)</p> 142<p>This one is pretty straightforward ;-)</p>
144<h3 id="create-and-push-a-signed-tag">Create and push a signed tag</h3> 143<h3 id="create-and-push-a-signed-tag">Create and push a signed tag</h3>
145<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># update your local copy</span> 144<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># update your local copy</span>
146$ <span class="kw">git</span> checkout master 145$ <span class="fu">git</span> checkout master
147$ <span class="kw">git</span> fetch upstream 146$ <span class="fu">git</span> fetch upstream
148$ <span class="kw">git</span> pull upstream master 147$ <span class="fu">git</span> pull upstream master
149 148
150<span class="co"># create a signed tag</span> 149<span class="co"># create a signed tag</span>
151$ <span class="kw">git</span> tag -s -m <span class="st">&quot;Release v0.5.0&quot;</span> v0.5.0 150$ <span class="fu">git</span> tag -s -m <span class="st">&quot;Release v0.5.0&quot;</span> v0.5.0
152 151
153<span class="co"># push it to &quot;upstream&quot;</span> 152<span class="co"># push it to &quot;upstream&quot;</span>
154$ <span class="kw">git</span> push --tags upstream</code></pre></div> 153$ <span class="fu">git</span> push --tags upstream</code></pre></div>
155<h3 id="verify-a-signed-tag">Verify a signed tag</h3> 154<h3 id="verify-a-signed-tag">Verify a signed tag</h3>
156<p><a href="https://github.com/shaarli/Shaarli/releases/tag/v0.5.0"><code>v0.5.0</code></a> is the first GPG-signed tag pushed on the Community Shaarli.<a href=".html"></a></p> 155<p><a href="https://github.com/shaarli/Shaarli/releases/tag/v0.5.0"><code>v0.5.0</code></a> is the first GPG-signed tag pushed on the Community Shaarli.<a href=".html"></a></p>
157<p>Let's have a look at its signature!</p> 156<p>Let's have a look at its signature!</p>
158<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">cd</span> /path/to/shaarli 157<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
159$ <span class="kw">git</span> fetch upstream 158$ <span class="fu">git</span> fetch upstream
160 159
161<span class="co"># get the SHA1 reference of the tag</span> 160<span class="co"># get the SHA1 reference of the tag</span>
162$ <span class="kw">git</span> show-ref tags/v0.5.0 161$ <span class="fu">git</span> show-ref tags/v0.5.0
163<span class="kw">f7762cf803f03f5caf4b8078359a63783d0090c1</span> refs/tags/v0.5.0 162<span class="ex">f7762cf803f03f5caf4b8078359a63783d0090c1</span> refs/tags/v0.5.0
164 163
165<span class="co"># verify the tag signature information</span> 164<span class="co"># verify the tag signature information</span>
166$ <span class="kw">git</span> verify-tag f7762cf803f03f5caf4b8078359a63783d0090c1 165$ <span class="fu">git</span> verify-tag f7762cf803f03f5caf4b8078359a63783d0090c1
167<span class="kw">gpg</span>: Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F 166<span class="ex">gpg</span>: Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F
168<span class="kw">gpg</span>: Good signature from <span class="st">&quot;VirtualTam &lt;virtualtam@flibidi.net&gt;&quot;</span> [ultimate][](.html)</code></pre></div> 167<span class="ex">gpg</span>: Good signature from <span class="st">&quot;VirtualTam &lt;virtualtam@flibidi.net&gt;&quot;</span> [ultimate][](.html)</code></pre></div>
168<h2 id="generate-and-upload-all-in-one-release-archives">Generate and upload all-in-one release archives</h2>
169<p>Users with a shared hosting may have:</p>
170<ul>
171<li>no SSH access</li>
172<li>no possibility to install PHP packages or server extensions</li>
173<li>no possibility to run scripts</li>
174</ul>
175<p>To ease Shaarli installations, it is possible to generate and upload additional release archives,<br />
176that will contain Shaarli code plus all required third-party libraries:</p>
177<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">make</span> release_archive</code></pre></div>
178<p>This will create the following archives:</p>
179<ul>
180<li><code>shaarli-vX.Y.Z-full.tar</code></li>
181<li><code>shaarli-vX.Y.Z-full.zip</code></li>
182</ul>
183<p>The archives need to be manually uploaded on the previously created GitHub release.</p>
169</body> 184</body>
170</html> 185</html>
diff --git a/doc/Release-Shaarli.md b/doc/Release-Shaarli.md
index d5044fe9..5cbcd79a 100644
--- a/doc/Release-Shaarli.md
+++ b/doc/Release-Shaarli.md
@@ -2,7 +2,7 @@
2See [Git - Maintaining a project - Tagging your [](.html) 2See [Git - Maintaining a project - Tagging your [](.html)
3releases](http://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Tagging-Your-Releases). 3releases](http://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Tagging-Your-Releases).
4 4
5### Prerequisites 5## Prerequisites
6This guide assumes that you have: 6This guide assumes that you have:
7- a GPG key matching your GitHub authentication credentials 7- a GPG key matching your GitHub authentication credentials
8 - i.e., the email address identified by the GPG key is the same as the one in your `~/.gitconfig` 8 - i.e., the email address identified by the GPG key is the same as the one in your `~/.gitconfig`
@@ -11,8 +11,9 @@ This guide assumes that you have:
11 - `origin` pointing to your GitHub fork 11 - `origin` pointing to your GitHub fork
12 - `upstream` pointing to the main Shaarli repository 12 - `upstream` pointing to the main Shaarli repository
13- maintainer permissions on the main Shaarli repository (to push the signed tag) 13- maintainer permissions on the main Shaarli repository (to push the signed tag)
14- [Pandoc](http://pandoc.org/) needs to be installed.[](.html) 14- [Composer](https://getcomposer.org/) and [Pandoc](http://pandoc.org/) need to be installed[](.html)
15 15
16## Increment the version code, create and push a signed tag
16### Bump Shaarli's version 17### Bump Shaarli's version
17```bash 18```bash
18$ cd /path/to/shaarli 19$ cd /path/to/shaarli
@@ -70,3 +71,22 @@ $ git verify-tag f7762cf803f03f5caf4b8078359a63783d0090c1
70gpg: Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F 71gpg: Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F
71gpg: Good signature from "VirtualTam <virtualtam@flibidi.net>" [ultimate][](.html) 72gpg: Good signature from "VirtualTam <virtualtam@flibidi.net>" [ultimate][](.html)
72``` 73```
74
75## Generate and upload all-in-one release archives
76Users with a shared hosting may have:
77- no SSH access
78- no possibility to install PHP packages or server extensions
79- no possibility to run scripts
80
81To ease Shaarli installations, it is possible to generate and upload additional release archives,
82that will contain Shaarli code plus all required third-party libraries:
83
84```bash
85$ make release_archive
86```
87
88This will create the following archives:
89- `shaarli-vX.Y.Z-full.tar`
90- `shaarli-vX.Y.Z-full.zip`
91
92The archives need to be manually uploaded on the previously created GitHub release.
diff --git a/doc/Security.html b/doc/Security.html
index b1969a4c..cec20590 100644
--- a/doc/Security.html
+++ b/doc/Security.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
diff --git a/doc/Server-configuration.html b/doc/Server-configuration.html
index 1d2276df..068900b8 100644
--- a/doc/Server-configuration.html
+++ b/doc/Server-configuration.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -133,7 +131,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
133<p>See also <a href="https://github.com/shaarli/Shaarli/issues?utf8=%E2%9C%93&amp;q=label%3Aproxy+">proxy-related</a> issues.<a href=".html"></a></p> 131<p>See also <a href="https://github.com/shaarli/Shaarli/issues?utf8=%E2%9C%93&amp;q=label%3Aproxy+">proxy-related</a> issues.<a href=".html"></a></p>
134<h2 id="apache">Apache</h2> 132<h2 id="apache">Apache</h2>
135<h3 id="minimal">Minimal</h3> 133<h3 id="minimal">Minimal</h3>
136<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="ot"> *:80</span><span class="fu">&gt;</span> 134<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="at"> *:80</span><span class="fu">&gt;</span>
137 ServerName<span class="st"> shaarli.my-domain.org</span> 135 ServerName<span class="st"> shaarli.my-domain.org</span>
138 DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span> 136 DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span>
139<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div> 137<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div>
@@ -144,11 +142,11 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
144<li><a href="http://stackoverflow.com/q/176">Apache/PHP - error log per VirtualHost</a> (StackOverflow)<a href=".html"></a></li> 142<li><a href="http://stackoverflow.com/q/176">Apache/PHP - error log per VirtualHost</a> (StackOverflow)<a href=".html"></a></li>
145<li><a href="https://ma.ttias.be/php-php_value-vs-php_admin_value-and-the-use-of-php_flag-explained/">PHP: php_value vs php_admin_value and the use of php_flag explained</a><a href=".html"></a></li> 143<li><a href="https://ma.ttias.be/php-php_value-vs-php_admin_value-and-the-use-of-php_flag-explained/">PHP: php_value vs php_admin_value and the use of php_flag explained</a><a href=".html"></a></li>
146</ul> 144</ul>
147<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="ot"> *:80</span><span class="fu">&gt;</span> 145<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="at"> *:80</span><span class="fu">&gt;</span>
148 ServerName<span class="st"> shaarli.my-domain.org</span> 146 ServerName<span class="st"> shaarli.my-domain.org</span>
149 DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span> 147 DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span>
150 148
151 <span class="ot">LogLevel</span><span class="ch"> </span><span class="kw">warn</span> 149 <span class="ex">LogLevel</span><span class="ch"> </span><span class="kw">warn</span>
152 ErrorLog<span class="st"> /var/log/apache2/shaarli-error.log</span> 150 ErrorLog<span class="st"> /var/log/apache2/shaarli-error.log</span>
153 CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span> 151 CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span>
154 152
@@ -158,40 +156,40 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
158 php_value error_log /var/log/apache2/shaarli-php-error.log 156 php_value error_log /var/log/apache2/shaarli-php-error.log
159<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div> 157<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div>
160<h3 id="standard---keep-access-and-error-logs">Standard - Keep access and error logs</h3> 158<h3 id="standard---keep-access-and-error-logs">Standard - Keep access and error logs</h3>
161<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="ot"> *:80</span><span class="fu">&gt;</span> 159<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="at"> *:80</span><span class="fu">&gt;</span>
162 ServerName<span class="st"> shaarli.my-domain.org</span> 160 ServerName<span class="st"> shaarli.my-domain.org</span>
163 DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span> 161 DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span>
164 162
165 <span class="ot">LogLevel</span><span class="ch"> </span><span class="kw">warn</span> 163 <span class="ex">LogLevel</span><span class="ch"> </span><span class="kw">warn</span>
166 ErrorLog<span class="st"> /var/log/apache2/shaarli-error.log</span> 164 ErrorLog<span class="st"> /var/log/apache2/shaarli-error.log</span>
167 CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span> 165 CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span>
168<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div> 166<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div>
169<h3 id="paranoid---redirect-http-80-to-https-443">Paranoid - Redirect HTTP (:80) to HTTPS (:443)</h3> 167<h3 id="paranoid---redirect-http-80-to-https-443">Paranoid - Redirect HTTP (:80) to HTTPS (:443)</h3>
170<p>See <a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Apache">Server-side TLS</a> (Mozilla).<a href=".html"></a></p> 168<p>See <a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Apache">Server-side TLS</a> (Mozilla).<a href=".html"></a></p>
171<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="ot"> *:443</span><span class="fu">&gt;</span> 169<div class="sourceCode"><pre class="sourceCode apache"><code class="sourceCode apache"><span class="fu">&lt;VirtualHost</span><span class="at"> *:443</span><span class="fu">&gt;</span>
172 ServerName<span class="st"> shaarli.my-domain.org</span> 170 ServerName<span class="st"> shaarli.my-domain.org</span>
173 DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span> 171 DocumentRoot<span class="st"> /absolute/path/to/shaarli/</span>
174 172
175 <span class="ot">SSLEngine</span><span class="ch"> </span><span class="kw">on</span> 173 <span class="ex">SSLEngine</span><span class="ch"> </span><span class="kw">on</span>
176 SSLCertificateFile<span class="st"> /absolute/path/to/the/website/certificate.pem</span> 174 SSLCertificateFile<span class="st"> /absolute/path/to/the/website/certificate.pem</span>
177 SSLCertificateKeyFile<span class="st"> /absolute/path/to/the/website/key.key</span> 175 SSLCertificateKeyFile<span class="st"> /absolute/path/to/the/website/key.key</span>
178 176
179 <span class="fu">&lt;Directory</span><span class="ot"> /absolute/path/to/shaarli/</span><span class="fu">&gt;</span> 177 <span class="fu">&lt;Directory</span><span class="at"> /absolute/path/to/shaarli/</span><span class="fu">&gt;</span>
180 <span class="ot">AllowOverride</span><span class="ch"> </span><span class="kw">All</span> 178 <span class="ex">AllowOverride</span><span class="ch"> </span><span class="kw">All</span>
181 <span class="ot">Options</span><span class="ch"> </span><span class="kw">Indexes</span><span class="ch"> </span><span class="kw">FollowSymLinks</span><span class="ch"> </span><span class="kw">MultiViews</span> 179 <span class="ex">Options</span><span class="ch"> </span><span class="kw">Indexes</span><span class="ch"> </span><span class="kw">FollowSymLinks</span><span class="ch"> </span><span class="kw">MultiViews</span>
182 <span class="ot">Order</span><span class="ch"> </span><span class="kw">allow,deny</span> 180 <span class="ex">Order</span><span class="ch"> </span><span class="kw">allow,deny</span>
183 allow<span class="st"> from all</span> 181 allow<span class="st"> from all</span>
184 <span class="fu">&lt;/Directory&gt;</span> 182 <span class="fu">&lt;/Directory&gt;</span>
185 183
186 <span class="ot">LogLevel</span><span class="ch"> </span><span class="kw">warn</span> 184 <span class="ex">LogLevel</span><span class="ch"> </span><span class="kw">warn</span>
187 ErrorLog<span class="st"> /var/log/apache2/shaarli-error.log</span> 185 ErrorLog<span class="st"> /var/log/apache2/shaarli-error.log</span>
188 CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span> 186 CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span>
189<span class="fu">&lt;/VirtualHost&gt;</span> 187<span class="fu">&lt;/VirtualHost&gt;</span>
190<span class="fu">&lt;VirtualHost</span><span class="ot"> *:80</span><span class="fu">&gt;</span> 188<span class="fu">&lt;VirtualHost</span><span class="at"> *:80</span><span class="fu">&gt;</span>
191 ServerName<span class="st"> shaarli.my-domain.org</span> 189 ServerName<span class="st"> shaarli.my-domain.org</span>
192 Redirect<span class="st"> 301 / https://shaarli.my-domain.org</span> 190 Redirect<span class="st"> 301 / https://shaarli.my-domain.org</span>
193 191
194 <span class="ot">LogLevel</span><span class="ch"> </span><span class="kw">warn</span> 192 <span class="ex">LogLevel</span><span class="ch"> </span><span class="kw">warn</span>
195 ErrorLog<span class="st"> /var/log/apache2/shaarli-error.log</span> 193 ErrorLog<span class="st"> /var/log/apache2/shaarli-error.log</span>
196 CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span> 194 CustomLog<span class="st"> /var/log/apache2/shaarli-access.log combined</span>
197<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div> 195<span class="fu">&lt;/VirtualHost&gt;</span></code></pre></div>
@@ -410,10 +408,5 @@ http {
410 include php.conf; 408 include php.conf;
411 } 409 }
412}</code></pre> 410}</code></pre>
413<h2 id="restricting-search-engines-and-web-crawler-traffic">Restricting search engines and web crawler traffic</h2>
414<p>Creating a <code>robots.txt</code> witht he following contents at the root of your Shaarli installation will prevent &quot;honest&quot; web crawlers from indexing each and every link and Daily page from a Shaarli instance, thus getting rid of a certain amount of unsollicited network traffic.</p>
415<pre><code>User-agent: *
416Disallow: /</code></pre>
417<p>See: <a href="http://www.robotstxt.org/" class="uri">http://www.robotstxt.org/</a>, <a href="http://www.robotstxt.org/robotstxt.html" class="uri">http://www.robotstxt.org/robotstxt.html</a>, <a href="http://www.robotstxt.org/meta.html" class="uri">http://www.robotstxt.org/meta.html</a></p>
418</body> 411</body>
419</html> 412</html>
diff --git a/doc/Server-configuration.md b/doc/Server-configuration.md
index fd98a608..1ab57a0a 100644
--- a/doc/Server-configuration.md
+++ b/doc/Server-configuration.md
@@ -334,15 +334,3 @@ http {
334 } 334 }
335} 335}
336``` 336```
337
338## Restricting search engines and web crawler traffic
339
340Creating a `robots.txt` witht he following contents at the root of your Shaarli installation will prevent "honest" web crawlers from indexing each and every link and Daily page from a Shaarli instance, thus getting rid of a certain amount of unsollicited network traffic.
341
342```
343User-agent: *
344Disallow: /
345```
346
347See: http://www.robotstxt.org/, http://www.robotstxt.org/robotstxt.html, http://www.robotstxt.org/meta.html
348
diff --git a/doc/Server-requirements.html b/doc/Server-requirements.html
index 8e4deeb8..2c2545bb 100644
--- a/doc/Server-requirements.html
+++ b/doc/Server-requirements.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
@@ -96,18 +94,18 @@
96</tr> 94</tr>
97<tr class="odd"> 95<tr class="odd">
98<td style="text-align: center;">5.5</td> 96<td style="text-align: center;">5.5</td>
99<td style="text-align: center;">Supported</td> 97<td style="text-align: center;">EOL: 2016-07-10</td>
100<td style="text-align: center;">✅</td> 98<td style="text-align: center;">✅</td>
101</tr> 99</tr>
102<tr class="even"> 100<tr class="even">
103<td style="text-align: center;">5.4</td> 101<td style="text-align: center;">5.4</td>
104<td style="text-align: center;">EOL: 2015-09-14</td> 102<td style="text-align: center;">EOL: 2015-09-14</td>
105<td style="text-align: center;">✅</td> 103<td style="text-align: center;">✅ (up to Shaarli 0.8.x)</td>
106</tr> 104</tr>
107<tr class="odd"> 105<tr class="odd">
108<td style="text-align: center;">5.3</td> 106<td style="text-align: center;">5.3</td>
109<td style="text-align: center;">EOL: 2014-08-14</td> 107<td style="text-align: center;">EOL: 2014-08-14</td>
110<td style="text-align: center;">✅</td> 108<td style="text-align: center;">✅ (up to Shaarli 0.8.x)</td>
111</tr> 109</tr>
112</tbody> 110</tbody>
113</table> 111</table>
@@ -115,6 +113,25 @@
115<ul> 113<ul>
116<li><a href="https://github.com/shaarli/Shaarli/blob/master/.travis.yml">Travis configuration</a><a href=".html"></a></li> 114<li><a href="https://github.com/shaarli/Shaarli/blob/master/.travis.yml">Travis configuration</a><a href=".html"></a></li>
117</ul> 115</ul>
116<h3 id="dependency-management">Dependency management</h3>
117<p>Starting with Shaarli <code>v0.8.x</code>, <a href="https://getcomposer.org/">Composer</a> is used to resolve,<a href=".html"></a><br />
118download and install third-party PHP dependencies.</p>
119<table>
120<thead>
121<tr class="header">
122<th>Library</th>
123<th style="text-align: center;">Required?</th>
124<th>Usage</th>
125</tr>
126</thead>
127<tbody>
128<tr class="odd">
129<td><a href="https://packagist.org/packages/shaarli/netscape-bookmark-parser"><code>shaarli/netscape-bookmark-parser</code></a></td>
130<td style="text-align: center;">All</td>
131<td>Import bookmarks from Netscape files<a href=".html"></a></td>
132</tr>
133</tbody>
134</table>
118<h3 id="extensions">Extensions</h3> 135<h3 id="extensions">Extensions</h3>
119<table style="width:19%;"> 136<table style="width:19%;">
120<colgroup> 137<colgroup>
@@ -142,13 +159,18 @@
142</tr> 159</tr>
143<tr class="odd"> 160<tr class="odd">
144<td><a href="http://php.net/manual/en/book.image.php"><code>php-gd</code></a></td> 161<td><a href="http://php.net/manual/en/book.image.php"><code>php-gd</code></a></td>
145<td style="text-align: center;">-</td> 162<td style="text-align: center;">optional</td>
146<td>thumbnail resizing<a href=".html"></a></td> 163<td>thumbnail resizing<a href=".html"></a></td>
147</tr> 164</tr>
148<tr class="even"> 165<tr class="even">
149<td><a href="http://php.net/manual/fr/book.intl.php"><code>php-intl</code></a></td> 166<td><a href="http://php.net/manual/en/book.intl.php"><code>php-intl</code></a></td>
150<td style="text-align: center;">Optional</td> 167<td style="text-align: center;">optional</td>
151<td>Tag cloud intelligent sorting (eg. <code>e-&gt;è-&gt;f</code>)<a href=".html"></a></td> 168<td>localized text sorting (e.g. <code>e-&gt;è-&gt;f</code>)<a href=".html"></a></td>
169</tr>
170<tr class="odd">
171<td><a href="http://php.net/manual/en/book.curl.php"><code>php-curl</code></a></td>
172<td style="text-align: center;">optional</td>
173<td>using cURL for fetching webpages and thumbnails in a more robust way<a href=".html"></a></td>
152</tr> 174</tr>
153</tbody> 175</tbody>
154</table> 176</table>
diff --git a/doc/Server-requirements.md b/doc/Server-requirements.md
index 7955fddf..4962193e 100644
--- a/doc/Server-requirements.md
+++ b/doc/Server-requirements.md
@@ -12,17 +12,26 @@ Version | Status | Shaarli compatibility
12:---:|:---:|:---: 12:---:|:---:|:---:
137.0 | Supported | :white_check_mark: 137.0 | Supported | :white_check_mark:
145.6 | Supported | :white_check_mark: 145.6 | Supported | :white_check_mark:
155.5 | Supported | :white_check_mark: 155.5 | EOL: 2016-07-10 | :white_check_mark:
165.4 | EOL: 2015-09-14 | :white_check_mark: 165.4 | EOL: 2015-09-14 | :white_check_mark: (up to Shaarli 0.8.x)
175.3 | EOL: 2014-08-14 | :white_check_mark: 175.3 | EOL: 2014-08-14 | :white_check_mark: (up to Shaarli 0.8.x)
18 18
19See also: 19See also:
20- [Travis configuration](https://github.com/shaarli/Shaarli/blob/master/.travis.yml)[](.html) 20- [Travis configuration](https://github.com/shaarli/Shaarli/blob/master/.travis.yml)[](.html)
21 21
22### Dependency management
23Starting with Shaarli `v0.8.x`, [Composer](https://getcomposer.org/) is used to resolve,[](.html)
24download and install third-party PHP dependencies.
25
26Library | Required? | Usage
27---|:---:|---
28[`shaarli/netscape-bookmark-parser`](https://packagist.org/packages/shaarli/netscape-bookmark-parser) | All | Import bookmarks from Netscape files[](.html)
29
22### Extensions 30### Extensions
23Extension | Required? | Usage 31Extension | Required? | Usage
24---|:---:|--- 32---|:---:|---
25[`openssl`](http://php.net/manual/en/book.openssl.php) | All | OpenSSL, HTTPS[](.html) 33[`openssl`](http://php.net/manual/en/book.openssl.php) | All | OpenSSL, HTTPS[](.html)
26[`php-mbstring`](http://php.net/manual/en/book.mbstring.php) | CentOS, Fedora, RHEL, Windows | multibyte (Unicode) string support[](.html) 34[`php-mbstring`](http://php.net/manual/en/book.mbstring.php) | CentOS, Fedora, RHEL, Windows | multibyte (Unicode) string support[](.html)
27[`php-gd`](http://php.net/manual/en/book.image.php) | - | thumbnail resizing[](.html) 35[`php-gd`](http://php.net/manual/en/book.image.php) | optional | thumbnail resizing[](.html)
28[`php-intl`](http://php.net/manual/fr/book.intl.php) | Optional | Tag cloud intelligent sorting (eg. `e->è->f`)[](.html) 36[`php-intl`](http://php.net/manual/en/book.intl.php) | optional | localized text sorting (e.g. `e->è->f`)[](.html)
37[`php-curl`](http://php.net/manual/en/book.curl.php) | optional | using cURL for fetching webpages and thumbnails in a more robust way[](.html)
diff --git a/doc/Server-security.html b/doc/Server-security.html
index 6b44a133..3551deff 100644
--- a/doc/Server-security.html
+++ b/doc/Server-security.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -118,11 +116,11 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
118</ul> 116</ul>
119<h3 id="locate-.ini-files">Locate .ini files</h3> 117<h3 id="locate-.ini-files">Locate .ini files</h3>
120<h4 id="console-environment">Console environment</h4> 118<h4 id="console-environment">Console environment</h4>
121<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">php</span> --ini 119<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">php</span> --ini
122<span class="kw">Configuration</span> File (php.ini) <span class="kw">Path</span>: /etc/php 120<span class="ex">Configuration</span> File (php.ini) <span class="ex">Path</span>: /etc/php
123<span class="kw">Loaded</span> Configuration File: /etc/php/php.ini 121<span class="ex">Loaded</span> Configuration File: /etc/php/php.ini
124<span class="kw">Scan</span> for additional .ini files in: /etc/php/conf.d 122<span class="ex">Scan</span> for additional .ini files in: /etc/php/conf.d
125<span class="kw">Additional</span> .ini files parsed: /etc/php/conf.d/xdebug.ini</code></pre></div> 123<span class="ex">Additional</span> .ini files parsed: /etc/php/conf.d/xdebug.ini</code></pre></div>
126<h4 id="server-environment">Server environment</h4> 124<h4 id="server-environment">Server environment</h4>
127<ul> 125<ul>
128<li>create a <code>phpinfo.php</code> script located in a path supported by the web server, e.g. 126<li>create a <code>phpinfo.php</code> script located in a path supported by the web server, e.g.
@@ -161,5 +159,15 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
161<span class="kw">[Definition][]</span><span class="dt">(.html)</span> 159<span class="kw">[Definition][]</span><span class="dt">(.html)</span>
162<span class="dt">failregex </span><span class="ot">=</span><span class="st"> \s-\s&lt;HOST&gt;\s-\sLogin failed for user.*$</span> 160<span class="dt">failregex </span><span class="ot">=</span><span class="st"> \s-\s&lt;HOST&gt;\s-\sLogin failed for user.*$</span>
163<span class="dt">ignoreregex </span><span class="ot">=</span><span class="st"> </span></code></pre></div> 161<span class="dt">ignoreregex </span><span class="ot">=</span><span class="st"> </span></code></pre></div>
162<h2 id="robots---restricting-search-engines-and-web-crawler-traffic">Robots - Restricting search engines and web crawler traffic</h2>
163<p>Creating a <code>robots.txt</code> with the following contents at the root of your Shaarli installation will prevent <em>honest</em> web crawlers from indexing each and every link and Daily page from a Shaarli instance, thus getting rid of a certain amount of unsollicited network traffic.</p>
164<pre><code>User-agent: *
165Disallow: /</code></pre>
166<p>See:</p>
167<ul>
168<li><a href="http://www.robotstxt.org/" class="uri">http://www.robotstxt.org/</a></li>
169<li><a href="http://www.robotstxt.org/robotstxt.html" class="uri">http://www.robotstxt.org/robotstxt.html</a></li>
170<li><a href="http://www.robotstxt.org/meta.html" class="uri">http://www.robotstxt.org/meta.html</a></li>
171</ul>
164</body> 172</body>
165</html> 173</html>
diff --git a/doc/Server-security.md b/doc/Server-security.md
index 0d16e284..50549a21 100644
--- a/doc/Server-security.md
+++ b/doc/Server-security.md
@@ -58,3 +58,17 @@ before = common.conf
58failregex = \s-\s<HOST>\s-\sLogin failed for user.*$ 58failregex = \s-\s<HOST>\s-\sLogin failed for user.*$
59ignoreregex = 59ignoreregex =
60``` 60```
61
62## Robots - Restricting search engines and web crawler traffic
63
64Creating a `robots.txt` with the following contents at the root of your Shaarli installation will prevent _honest_ web crawlers from indexing each and every link and Daily page from a Shaarli instance, thus getting rid of a certain amount of unsollicited network traffic.
65
66```
67User-agent: *
68Disallow: /
69```
70
71See:
72- http://www.robotstxt.org/
73- http://www.robotstxt.org/robotstxt.html
74- http://www.robotstxt.org/meta.html
diff --git a/doc/Shaarli-configuration.html b/doc/Shaarli-configuration.html
index 74947578..6d717c65 100644
--- a/doc/Shaarli-configuration.html
+++ b/doc/Shaarli-configuration.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,18 +96,19 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
104<h1 id="shaarli-configuration">Shaarli configuration</h1> 102<h1 id="shaarli-configuration">Shaarli configuration</h1>
103<h1 id="shaarli-configuration-1">Shaarli configuration</h1>
105<h2 id="foreword">Foreword</h2> 104<h2 id="foreword">Foreword</h2>
106<p><strong>Do not edit configuration options in index.php! Your changes would be lost.</strong></p> 105<p><strong>Do not edit configuration options in index.php! Your changes would be lost.</strong></p>
107<p>Once your Shaarli instance is installed, the file <code>data/config.php</code> is generated:</p> 106<p>Once your Shaarli instance is installed, the file <code>data/config.json.php</code> is generated:</p>
108<ul> 107<ul>
109<li>it contains all settings, and can be edited to customize values</li> 108<li>it contains all settings in JSON format, and can be edited to customize values</li>
110<li>it defines which <a href="Plugin-System">plugins</a> are enabled<a href=".html"></a></li> 109<li>it defines which <a href="Plugin-System">plugins</a> are enabled<a href="(.html).html">(.html)</a></li>
111<li>its values override those defined in <code>index.php</code></li> 110<li>its values override those defined in <code>index.php</code></li>
111<li>it is wrap in a PHP comment to prevent anyone accessing it, regardless of server configuration</li>
112</ul> 112</ul>
113<h2 id="file-and-directory-permissions">File and directory permissions</h2> 113<h2 id="file-and-directory-permissions">File and directory permissions</h2>
114<p>The server process running Shaarli must have:</p> 114<p>The server process running Shaarli must have:</p>
@@ -141,120 +141,155 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
141<li>unzip Shaarli in the default web server location (usually <code>/var/www/</code>) and set the web server user as the owner</li> 141<li>unzip Shaarli in the default web server location (usually <code>/var/www/</code>) and set the web server user as the owner</li>
142<li>put users in the same group as the web server, and set the appropriate access rights</li> 142<li>put users in the same group as the web server, and set the appropriate access rights</li>
143</ul></li> 143</ul></li>
144<li>if you have a domain / subdomain to serve Shaarli, <a href="Server-configuration">configure the server</a> accordingly<a href=".html"></a></li> 144<li>if you have a domain / subdomain to serve Shaarli, <a href="Server-configuration">configure the server</a> accordingly<a href="(.html).html">(.html)</a></li>
145</ul> 145</ul>
146<h2 id="example-dataconfig.php">Example <code>data/config.php</code></h2> 146<h2 id="configuration">Configuration</h2>
147<p>See also <a href="Plugin-System.html">Plugin System</a>.</p> 147<p>In <code>data/config.json.php</code>.</p>
148<div class="sourceCode"><pre class="sourceCode php"><code class="sourceCode php"><span class="kw">&lt;?php</span> 148<p>See also <a href="Plugin-System.html">Plugin System</a>.<a href=".html"></a></p>
149<span class="co">// User login</span> 149<h3 id="credentials">Credentials</h3>
150<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;login&#39;</span><span class="ot">]</span> = <span class="st">&#39;&lt;login&gt;&#39;</span><span class="ot">;[](</span>.html<span class="ot">)</span> 150<blockquote>
151 151<p>You shouldn't edit those.</p>
152<span class="co">// User password hash</span> 152</blockquote>
153<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;hash&#39;</span><span class="ot">]</span> = <span class="st">&#39;200c452da46c2f889e5e48c49ef044bcacdcb095&#39;</span><span class="ot">;[](</span>.html<span class="ot">)</span> 153<p><strong>login</strong>: Login username.<br />
154 154<strong>hash</strong>: Generated password hash.<br />
155<span class="co">// Password salt</span> 155<strong>salt</strong>: Password salt.</p>
156<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;salt&#39;</span><span class="ot">]</span> = <span class="st">&#39;13b654102321576033d8473b63a275a1bf94c0f0&#39;</span><span class="ot">;</span> <span class="ot">[](</span>.html<span class="ot">)</span> 156<h3 id="general">General</h3>
157 157<p><strong>title</strong>: Shaarli's instance title.<br />
158<span class="co">// Local timezone</span> 158<strong>header_link</strong>: Link to the homepage.<br />
159<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;timezone&#39;</span><span class="ot">]</span> = <span class="st">&#39;Africa/Abidjan&#39;</span><span class="ot">;[](</span>.html<span class="ot">)</span> 159<strong>links_per_page</strong>: Number of shaares displayed per page.<br />
160<span class="fu">date_default_timezone_set</span><span class="ot">(</span><span class="st">&#39;Africa/Abidjan&#39;</span><span class="ot">);</span> 160<strong>timezone</strong>: See <a href="http://php.net/manual/en/timezones.php">the list of supported timezones</a>. <a href=".html"></a><br />
161 161<strong>enabled_plugins</strong>: List of enabled plugins.</p>
162<span class="co">// Shaarli title</span> 162<h3 id="security">Security</h3>
163<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;title&#39;</span><span class="ot">]</span> = <span class="st">&#39;My Little Shaarly&#39;</span><span class="ot">;[](</span>.html<span class="ot">)</span> 163<p><strong>session_protection_disabled</strong>: Disable session cookie hijacking protection (not recommended).<br />
164 164It might be useful if your IP adress often changes.<br />
165<span class="co">// Link the Shaarli title points to</span> 165<strong>ban_after</strong>: Failed login attempts before being IP banned.<br />
166<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;titleLink&#39;</span><span class="ot">]</span> = <span class="st">&#39;?&#39;</span><span class="ot">;[](</span>.html<span class="ot">)</span> 166<strong>ban_duration</strong>: IP ban duration in seconds.<br />
167 167<strong>open_shaarli</strong>: Anyone can add a new link while logged out if enabled.<br />
168<span class="co">// HTTP referer redirector</span> 168<strong>trusted_proxies</strong>: List of trusted IP which won't be banned after failed login attemps. Useful if Shaarli is behind a reverse proxy.</p>
169<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;redirector&#39;</span><span class="ot">]</span> = <span class="st">&#39;&#39;</span><span class="ot">;[](</span>.html<span class="ot">)</span> 169<h3 id="resources">Resources</h3>
170 170<p><strong>data_dir</strong>: Data directory.<br />
171<span class="co">// Disable session hijacking</span> 171<strong>datastore</strong>: Shaarli's links database file path.<br />
172<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;disablesessionprotection&#39;</span><span class="ot">]</span> = <span class="kw">false</span><span class="ot">;</span> <span class="ot">[](</span>.html<span class="ot">)</span> 172<strong>updates</strong>: File path for the ran updates file.<br />
173 173<strong>log</strong>: Log file path.<br />
174<span class="co">// Whether new links are private by default</span> 174<strong>update_check</strong>: Last update check file path.<br />
175<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;privateLinkByDefault&#39;</span><span class="ot">]</span> = <span class="kw">false</span><span class="ot">;[](</span>.html<span class="ot">)</span> 175<strong>raintpl_tpl</strong>: Templates directory.<br />
176 176<strong>raintpl_tmp</strong>: Template engine cache directory.<br />
177<span class="co">// Enabled plugins</span> 177<strong>thumbnails_cache</strong>: Thumbnails cache directory.<br />
178<span class="co">// Note: each plugin may provide further settings through its own &quot;config.php&quot;</span> 178<strong>page_cache</strong>: Shaarli's internal cache directory.<br />
179<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;ENABLED_PLUGINS&#39;</span><span class="ot">]</span> = <span class="fu">array</span><span class="ot">(</span><span class="st">&#39;addlink_toolbar&#39;</span><span class="ot">,</span> <span class="st">&#39;qrcode&#39;</span><span class="ot">);](</span><span class="st">&#39;ENABLED_PLUGINS&#39;</span><span class="ot">]</span>-=-<span class="fu">array</span><span class="ot">(</span><span class="st">&#39;addlink_toolbar&#39;</span><span class="ot">,</span>-<span class="st">&#39;qrcode&#39;</span><span class="ot">);</span>.html<span class="ot">)</span> 179<strong>ban_file</strong>: Banned IP file path.</p>
180 180<h3 id="updates">Updates</h3>
181<span class="co">// Subdirectory where Shaarli stores its data files.</span> 181<p><strong>check_updates</strong>: Enable or disable update check to the git repository.<br />
182<span class="co">// You can change it for better security.</span> 182<strong>check_updates_branch</strong>: Git branch used to check updates (e.g. <code>stable</code> or <code>master</code>).<br />
183<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;DATADIR&#39;</span><span class="ot">]</span> = <span class="st">&#39;data&#39;</span><span class="ot">;](</span><span class="st">&#39;DATADIR&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;data&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 183<strong>check_updates_interval</strong>: Look for new version every N seconds (default: every day).</p>
184 184<h3 id="privacy">Privacy</h3>
185<span class="co">// File used to store settings</span> 185<p><strong>default_private_links</strong>: Check the private checkbox by default for every new link.<br />
186<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;CONFIG_FILE&#39;</span><span class="ot">]</span> = <span class="st">&#39;data/config.php&#39;</span><span class="ot">;](</span><span class="st">&#39;CONFIG_FILE&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;data/config.php&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 186<strong>hide_public_links</strong>: All links are hidden while logged out.<br />
187 187<strong>hide_timestamps</strong>: Timestamps are hidden.</p>
188<span class="co">// File containing the link database</span> 188<h3 id="feed">Feed</h3>
189<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;DATASTORE&#39;</span><span class="ot">]</span> = <span class="st">&#39;data/datastore.php&#39;</span><span class="ot">;](</span><span class="st">&#39;DATASTORE&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;data/datastore.php&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 189<p><strong>rss_permalinks</strong>: Enable this to redirect RSS links to Shaarli's permalinks instead of shaared URL.<br />
190 190<strong>show_atom</strong>: Display ATOM feed button.</p>
191<span class="co">// Number of links displayed per page</span> 191<h3 id="thumbnail">Thumbnail</h3>
192<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;LINKS_PER_PAGE&#39;</span><span class="ot">]</span> = <span class="dv">20</span><span class="ot">;](</span><span class="st">&#39;LINKS_PER_PAGE&#39;</span><span class="ot">]</span>-=-<span class="dv">20</span><span class="ot">;</span>.html<span class="ot">)</span> 192<p><strong>enable_thumbnails</strong>: Enable or disable thumbnail display.<br />
193 193<strong>enable_localcache</strong>: Enable or disable local cache.</p>
194<span class="co">// File recording failed login attempts and IP bans</span> 194<h3 id="redirector">Redirector</h3>
195<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;IPBANS_FILENAME&#39;</span><span class="ot">]</span> = <span class="st">&#39;data/ipbans.php&#39;</span><span class="ot">;](</span><span class="st">&#39;IPBANS_FILENAME&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;data/ipbans.php&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 195<p><strong>url</strong>: Redirector URL, such as <code>anonym.to</code>.<br />
196 196<strong>encode_url</strong>: Enable this if the redirector needs encoded URL to work properly.</p>
197<span class="co">// Failed login attempts before being banned</span> 197<h2 id="configuration-file-example">Configuration file example</h2>
198<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;BAN_AFTER&#39;</span><span class="ot">]</span> = <span class="dv">4</span><span class="ot">;](</span><span class="st">&#39;BAN_AFTER&#39;</span><span class="ot">]</span>-=-<span class="dv">4</span><span class="ot">;</span>.html<span class="ot">)</span> 198<div class="sourceCode"><pre class="sourceCode json"><code class="sourceCode json"><span class="er">&lt;?php</span> <span class="er">/*</span>
199 199<span class="fu">{</span>
200<span class="co">// Duration of an IP ban, in seconds (30 minutes)</span> 200 <span class="dt">&quot;credentials&quot;</span><span class="fu">:</span> <span class="fu">{</span>
201<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;BAN_DURATION&#39;</span><span class="ot">]</span> = <span class="dv">1800</span><span class="ot">;](</span><span class="st">&#39;BAN_DURATION&#39;</span><span class="ot">]</span>-=-<span class="dv">1800</span><span class="ot">;</span>.html<span class="ot">)</span> 201 <span class="dt">&quot;login&quot;</span><span class="fu">:</span> <span class="st">&quot;&lt;login&gt;&quot;</span><span class="fu">,</span>
202 202 <span class="dt">&quot;hash&quot;</span><span class="fu">:</span> <span class="st">&quot;&lt;password hash&gt;&quot;</span><span class="fu">,</span>
203<span class="co">// If set to true, everyone will be able to add, edit and remove links,</span> 203 <span class="dt">&quot;salt&quot;</span><span class="fu">:</span> <span class="st">&quot;&lt;password salt&gt;&quot;</span>
204<span class="co">// as well as change configuration</span> 204 <span class="fu">},</span>
205<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;OPEN_SHAARLI&#39;</span><span class="ot">]</span> = <span class="kw">false</span><span class="ot">;](</span><span class="st">&#39;OPEN_SHAARLI&#39;</span><span class="ot">]</span>-=-<span class="kw">false</span><span class="ot">;</span>.html<span class="ot">)</span> 205 <span class="dt">&quot;security&quot;</span><span class="fu">:</span> <span class="fu">{</span>
206 206 <span class="dt">&quot;ban_after&quot;</span><span class="fu">:</span> <span class="dv">4</span><span class="fu">,</span>
207<span class="co">// Do not show link timestamps</span> 207 <span class="dt">&quot;session_protection_disabled&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
208<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;HIDE_TIMESTAMPS&#39;</span><span class="ot">]</span> = <span class="kw">false</span><span class="ot">;](</span><span class="st">&#39;HIDE_TIMESTAMPS&#39;</span><span class="ot">]</span>-=-<span class="kw">false</span><span class="ot">;</span>.html<span class="ot">)</span> 208 <span class="dt">&quot;ban_duration&quot;</span><span class="fu">:</span> <span class="dv">1800</span><span class="fu">,</span>
209 209 <span class="dt">&quot;trusted_proxies&quot;</span><span class="fu">:</span> <span class="ot">[[]</span><span class="er">(.html)</span>
210<span class="co">// Set to false to disable local thumbnail cache, e.g. due to limited disk quotas</span> 210 <span class="st">&quot;1.2.3.4&quot;</span><span class="ot">,</span>
211<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;ENABLE_THUMBNAILS&#39;</span><span class="ot">]</span> = <span class="kw">true</span><span class="ot">;](</span><span class="st">&#39;ENABLE_THUMBNAILS&#39;</span><span class="ot">]</span>-=-<span class="kw">true</span><span class="ot">;</span>.html<span class="ot">)</span> 211 <span class="st">&quot;5.6.7.8&quot;</span>
212 212 <span class="ot">]</span>
213<span class="co">// Thumbnail cache directory</span> 213 <span class="fu">},</span>
214<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;CACHEDIR&#39;</span><span class="ot">]</span> = <span class="st">&#39;cache&#39;</span><span class="ot">;](</span><span class="st">&#39;CACHEDIR&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;cache&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 214 <span class="dt">&quot;resources&quot;</span><span class="fu">:</span> <span class="fu">{</span>
215 215 <span class="dt">&quot;data_dir&quot;</span><span class="fu">:</span> <span class="st">&quot;data&quot;</span><span class="fu">,</span>
216<span class="co">// Enable feed (rss, atom, dailyrss) cache</span> 216 <span class="dt">&quot;config&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">config.php&quot;</span><span class="fu">,</span>
217<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;ENABLE_LOCALCACHE&#39;</span><span class="ot">]</span> = <span class="kw">true</span><span class="ot">;](</span><span class="st">&#39;ENABLE_LOCALCACHE&#39;</span><span class="ot">]</span>-=-<span class="kw">true</span><span class="ot">;</span>.html<span class="ot">)</span> 217 <span class="dt">&quot;datastore&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">datastore.php&quot;</span><span class="fu">,</span>
218 218 <span class="dt">&quot;ban_file&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">ipbans.php&quot;</span><span class="fu">,</span>
219<span class="co">// Feed cache directory</span> 219 <span class="dt">&quot;updates&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">updates.txt&quot;</span><span class="fu">,</span>
220<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;PAGECACHE&#39;</span><span class="ot">]</span> = <span class="st">&#39;pagecache&#39;</span><span class="ot">;](</span><span class="st">&#39;PAGECACHE&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;pagecache&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 220 <span class="dt">&quot;log&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">log.txt&quot;</span><span class="fu">,</span>
221 221 <span class="dt">&quot;update_check&quot;</span><span class="fu">:</span> <span class="st">&quot;data</span><span class="ch">\/</span><span class="st">lastupdatecheck.txt&quot;</span><span class="fu">,</span>
222<span class="co">// RainTPL cache directory (keep the trailing slash!)</span> 222 <span class="dt">&quot;raintpl_tmp&quot;</span><span class="fu">:</span> <span class="st">&quot;tmp</span><span class="ch">\/</span><span class="st">&quot;</span><span class="fu">,</span>
223<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;RAINTPL_TMP&#39;</span><span class="ot">]</span> = <span class="st">&#39;tmp/&#39;</span><span class="ot">;](</span><span class="st">&#39;RAINTPL_TMP&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;tmp/&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 223 <span class="dt">&quot;raintpl_tpl&quot;</span><span class="fu">:</span> <span class="st">&quot;tpl</span><span class="ch">\/</span><span class="st">&quot;</span><span class="fu">,</span>
224 224 <span class="dt">&quot;thumbnails_cache&quot;</span><span class="fu">:</span> <span class="st">&quot;cache&quot;</span><span class="fu">,</span>
225<span class="co">// RainTPL template directory (keep the trailing slash!)</span> 225 <span class="dt">&quot;page_cache&quot;</span><span class="fu">:</span> <span class="st">&quot;pagecache&quot;</span>
226<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;RAINTPL_TPL&#39;</span><span class="ot">]</span> = <span class="st">&#39;tpl/&#39;</span><span class="ot">;](</span><span class="st">&#39;RAINTPL_TPL&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;tpl/&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 226 <span class="fu">},</span>
227 227 <span class="dt">&quot;general&quot;</span><span class="fu">:</span> <span class="fu">{</span>
228<span class="co">// Whether Shaarli checks for new releases at https://github.com/shaarli/Shaarli</span> 228 <span class="dt">&quot;check_updates&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
229<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;ENABLE_UPDATECHECK&#39;</span><span class="ot">]</span> = <span class="kw">true</span><span class="ot">;](</span><span class="st">&#39;ENABLE_UPDATECHECK&#39;</span><span class="ot">]</span>-=-<span class="kw">true</span><span class="ot">;</span>.html<span class="ot">)</span> 229 <span class="dt">&quot;rss_permalinks&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
230 230 <span class="dt">&quot;links_per_page&quot;</span><span class="fu">:</span> <span class="dv">20</span><span class="fu">,</span>
231<span class="co">// File to store the latest Shaarli version</span> 231 <span class="dt">&quot;default_private_links&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
232<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;UPDATECHECK_FILENAME&#39;</span><span class="ot">]</span> = <span class="st">&#39;data/lastupdatecheck.txt&#39;</span><span class="ot">;](</span><span class="st">&#39;UPDATECHECK_FILENAME&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;data/lastupdatecheck.txt&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 232 <span class="dt">&quot;enable_thumbnails&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
233 233 <span class="dt">&quot;enable_localcache&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
234<span class="co">// Delay between version checks (requires to be logged in) (24 hours)</span> 234 <span class="dt">&quot;check_updates_branch&quot;</span><span class="fu">:</span> <span class="st">&quot;stable&quot;</span><span class="fu">,</span>
235<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;UPDATECHECK_INTERVAL&#39;</span><span class="ot">]</span> = <span class="dv">86400</span><span class="ot">;](</span><span class="st">&#39;UPDATECHECK_INTERVAL&#39;</span><span class="ot">]</span>-=-<span class="dv">86400</span><span class="ot">;</span>.html<span class="ot">)</span> 235 <span class="dt">&quot;check_updates_interval&quot;</span><span class="fu">:</span> <span class="dv">86400</span><span class="fu">,</span>
236 236 <span class="dt">&quot;enabled_plugins&quot;</span><span class="fu">:</span> <span class="ot">[[]</span><span class="er">(.html)</span>
237<span class="co">// For each link, display a link to an archived version on archive.org</span> 237 <span class="st">&quot;markdown&quot;</span><span class="ot">,</span>
238<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;ARCHIVE_ORG&#39;</span><span class="ot">]</span> = <span class="kw">false</span><span class="ot">;](</span><span class="st">&#39;ARCHIVE_ORG&#39;</span><span class="ot">]</span>-=-<span class="kw">false</span><span class="ot">;</span>.html<span class="ot">)</span> 238 <span class="st">&quot;wallabag&quot;</span><span class="ot">,</span>
239 239 <span class="st">&quot;archiveorg&quot;</span>
240<span class="co">// The RSS item links point:</span> 240 <span class="ot">]</span><span class="fu">,</span>
241<span class="co">// true =&gt; directly to the link</span> 241 <span class="dt">&quot;timezone&quot;</span><span class="fu">:</span> <span class="st">&quot;Europe</span><span class="ch">\/</span><span class="st">Paris&quot;</span><span class="fu">,</span>
242<span class="co">// false =&gt; to the entry on Shaarli (permalink)</span> 242 <span class="dt">&quot;title&quot;</span><span class="fu">:</span> <span class="st">&quot;My Shaarli&quot;</span><span class="fu">,</span>
243<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;ENABLE_RSS_PERMALINKS&#39;</span><span class="ot">]</span> = <span class="kw">true</span><span class="ot">;](</span><span class="st">&#39;ENABLE_RSS_PERMALINKS&#39;</span><span class="ot">]</span>-=-<span class="kw">true</span><span class="ot">;</span>.html<span class="ot">)</span> 243 <span class="dt">&quot;header_link&quot;</span><span class="fu">:</span> <span class="st">&quot;?&quot;</span>
244 244 <span class="fu">},</span>
245<span class="co">// Hide all links to non-logged users</span> 245 <span class="dt">&quot;extras&quot;</span><span class="fu">:</span> <span class="fu">{</span>
246<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;HIDE_PUBLIC_LINKS&#39;</span><span class="ot">]</span> = <span class="kw">false</span><span class="ot">;](</span><span class="st">&#39;HIDE_PUBLIC_LINKS&#39;</span><span class="ot">]</span>-=-<span class="kw">false</span><span class="ot">;</span>.html<span class="ot">)</span> 246 <span class="dt">&quot;show_atom&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
247 247 <span class="dt">&quot;hide_public_links&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
248<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;PUBSUBHUB_URL&#39;</span><span class="ot">]</span> = <span class="st">&#39;&#39;</span><span class="ot">;](</span><span class="st">&#39;PUBSUBHUB_URL&#39;</span><span class="ot">]</span>-=-<span class="st">&#39;&#39;</span><span class="ot">;</span>.html<span class="ot">)</span> 248 <span class="dt">&quot;hide_timestamps&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
249 249 <span class="dt">&quot;open_shaarli&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
250<span class="co">// Show an ATOM Feed button next to the Subscribe (RSS) button.</span> 250 <span class="dt">&quot;redirector&quot;</span><span class="fu">:</span> <span class="st">&quot;http://anonym.to/?&quot;</span><span class="fu">,</span>
251<span class="co">// ATOM feeds are available at the address ?do=atom regardless of this option.</span> 251 <span class="dt">&quot;redirector_encode_url&quot;</span><span class="fu">:</span> <span class="kw">false</span>
252<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;SHOW_ATOM&#39;</span><span class="ot">]</span> = <span class="kw">false</span><span class="ot">;](</span><span class="st">&#39;SHOW_ATOM&#39;</span><span class="ot">]</span>-=-<span class="kw">false</span><span class="ot">;</span>.html<span class="ot">)</span> 252 <span class="fu">},</span>
253 253 <span class="dt">&quot;general&quot;</span><span class="fu">:</span> <span class="fu">{</span>
254<span class="co">// Set this to true if the redirector requires encoded URL, false otherwise.</span> 254 <span class="dt">&quot;header_link&quot;</span><span class="fu">:</span> <span class="st">&quot;?&quot;</span><span class="fu">,</span>
255<span class="kw">$GLOBALS</span><span class="ot">[</span><span class="st">&#39;config&#39;</span><span class="ot">[</span><span class="st">&#39;REDIRECTOR_URLENCODE&#39;</span><span class="ot">]</span> = <span class="kw">true</span><span class="ot">;](</span><span class="st">&#39;REDIRECTOR_URLENCODE&#39;</span><span class="ot">]</span>-=-<span class="kw">true</span><span class="ot">;</span>.html<span class="ot">)</span> 255 <span class="dt">&quot;links_per_page&quot;</span><span class="fu">:</span> <span class="dv">20</span><span class="fu">,</span>
256<span class="kw">?&gt;</span></code></pre></div> 256 <span class="dt">&quot;enabled_plugins&quot;</span><span class="fu">:</span> <span class="ot">[[]</span><span class="er">(.html)</span>
257 <span class="st">&quot;markdown&quot;</span><span class="ot">,</span>
258 <span class="st">&quot;wallabag&quot;</span>
259 <span class="ot">]</span><span class="fu">,</span>
260 <span class="dt">&quot;timezone&quot;</span><span class="fu">:</span> <span class="st">&quot;Europe</span><span class="ch">\/</span><span class="st">Paris&quot;</span><span class="fu">,</span>
261 <span class="dt">&quot;title&quot;</span><span class="fu">:</span> <span class="st">&quot;My Shaarli&quot;</span>
262 <span class="fu">},</span>
263 <span class="dt">&quot;updates&quot;</span><span class="fu">:</span> <span class="fu">{</span>
264 <span class="dt">&quot;check_updates&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
265 <span class="dt">&quot;check_updates_branch&quot;</span><span class="fu">:</span> <span class="st">&quot;stable&quot;</span><span class="fu">,</span>
266 <span class="dt">&quot;check_updates_interval&quot;</span><span class="fu">:</span> <span class="dv">86400</span>
267 <span class="fu">},</span>
268 <span class="dt">&quot;feed&quot;</span><span class="fu">:</span> <span class="fu">{</span>
269 <span class="dt">&quot;rss_permalinks&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
270 <span class="dt">&quot;show_atom&quot;</span><span class="fu">:</span> <span class="kw">false</span>
271 <span class="fu">},</span>
272 <span class="dt">&quot;privacy&quot;</span><span class="fu">:</span> <span class="fu">{</span>
273 <span class="dt">&quot;default_private_links&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
274 <span class="dt">&quot;hide_public_links&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span>
275 <span class="dt">&quot;hide_timestamps&quot;</span><span class="fu">:</span> <span class="kw">false</span>
276 <span class="fu">},</span>
277 <span class="dt">&quot;thumbnail&quot;</span><span class="fu">:</span> <span class="fu">{</span>
278 <span class="dt">&quot;enable_thumbnails&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span>
279 <span class="dt">&quot;enable_localcache&quot;</span><span class="fu">:</span> <span class="kw">true</span>
280 <span class="fu">},</span>
281 <span class="dt">&quot;redirector&quot;</span><span class="fu">:</span> <span class="fu">{</span>
282 <span class="dt">&quot;url&quot;</span><span class="fu">:</span> <span class="st">&quot;http://anonym.to/?&quot;</span><span class="fu">,</span>
283 <span class="dt">&quot;encode_url&quot;</span><span class="fu">:</span> <span class="kw">false</span>
284 <span class="fu">},</span>
285 <span class="dt">&quot;plugins&quot;</span><span class="fu">:</span> <span class="fu">{</span>
286 <span class="dt">&quot;WALLABAG_URL&quot;</span><span class="fu">:</span> <span class="st">&quot;http://demo.wallabag.org&quot;</span><span class="fu">,</span>
287 <span class="dt">&quot;WALLABAG_VERSION&quot;</span><span class="fu">:</span> <span class="st">&quot;1&quot;</span>
288 <span class="fu">}</span>
289<span class="fu">}</span> <span class="er">?&gt;</span></code></pre></div>
257<h2 id="additional-configuration">Additional configuration</h2> 290<h2 id="additional-configuration">Additional configuration</h2>
258<p>The playvideos plugin may require that you adapt your server's <a href="https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md#troubleshooting">Content Security Policy</a> configuration to work properly.<a href=".html"></a></p> 291<p>The playvideos plugin may require that you adapt your server's<br />
292<a href="https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md#troubleshooting">Content Security Policy</a> <a href=".html"></a><br />
293configuration to work properly.<a href="(.html).html">(.html)</a></p>
259</body> 294</body>
260</html> 295</html>
diff --git a/doc/Shaarli-configuration.md b/doc/Shaarli-configuration.md
index d0560d79..4a783c0e 100644
--- a/doc/Shaarli-configuration.md
+++ b/doc/Shaarli-configuration.md
@@ -1,14 +1,18 @@
1#Shaarli configuration 1#Shaarli configuration
2# Shaarli configuration
3
2## Foreword 4## Foreword
3 5
4**Do not edit configuration options in index.php! Your changes would be lost.** 6**Do not edit configuration options in index.php! Your changes would be lost.**
5 7
6Once your Shaarli instance is installed, the file `data/config.php` is generated: 8Once your Shaarli instance is installed, the file `data/config.json.php` is generated:
7* it contains all settings, and can be edited to customize values 9* it contains all settings in JSON format, and can be edited to customize values
8* it defines which [plugins](Plugin-System) are enabled[](.html) 10* it defines which [plugins](Plugin-System) are enabled[(.html)]((.html).html)
9* its values override those defined in `index.php` 11* its values override those defined in `index.php`
12* it is wrap in a PHP comment to prevent anyone accessing it, regardless of server configuration
10 13
11## File and directory permissions 14## File and directory permissions
15
12The server process running Shaarli must have: 16The server process running Shaarli must have:
13- `read` access to the following resources: 17- `read` access to the following resources:
14 - PHP scripts: `index.php`, `application/*.php`, `plugins/*.php` 18 - PHP scripts: `index.php`, `application/*.php`, `plugins/*.php`
@@ -29,123 +33,179 @@ On a Linux distribution:
29- to give it access to Shaarli, either: 33- to give it access to Shaarli, either:
30 - unzip Shaarli in the default web server location (usually `/var/www/`) and set the web server user as the owner 34 - unzip Shaarli in the default web server location (usually `/var/www/`) and set the web server user as the owner
31 - put users in the same group as the web server, and set the appropriate access rights 35 - put users in the same group as the web server, and set the appropriate access rights
32- if you have a domain / subdomain to serve Shaarli, [configure the server](Server-configuration) accordingly[](.html) 36- if you have a domain / subdomain to serve Shaarli, [configure the server](Server-configuration) accordingly[(.html)]((.html).html)
33 37
34## Example `data/config.php` 38## Configuration
35See also [Plugin System](Plugin-System.html). 39
36 40In `data/config.json.php`.
37```php 41
38<?php 42See also [Plugin System](Plugin-System.html).[](.html)
39// User login 43
40$GLOBALS['login'] = '<login>';[](.html) 44### Credentials
41 45
42// User password hash 46> You shouldn't edit those.
43$GLOBALS['hash'] = '200c452da46c2f889e5e48c49ef044bcacdcb095';[](.html) 47
44 48**login**: Login username.
45// Password salt 49**hash**: Generated password hash.
46$GLOBALS['salt'] = '13b654102321576033d8473b63a275a1bf94c0f0'; [](.html) 50**salt**: Password salt.
47 51
48// Local timezone 52### General
49$GLOBALS['timezone'] = 'Africa/Abidjan';[](.html) 53
50date_default_timezone_set('Africa/Abidjan'); 54**title**: Shaarli's instance title.
51 55**header_link**: Link to the homepage.
52// Shaarli title 56**links_per_page**: Number of shaares displayed per page.
53$GLOBALS['title'] = 'My Little Shaarly';[](.html) 57**timezone**: See [the list of supported timezones](http://php.net/manual/en/timezones.php). [](.html)
54 58**enabled_plugins**: List of enabled plugins.
55// Link the Shaarli title points to 59
56$GLOBALS['titleLink'] = '?';[](.html) 60### Security
57 61
58// HTTP referer redirector 62**session_protection_disabled**: Disable session cookie hijacking protection (not recommended).
59$GLOBALS['redirector'] = '';[](.html) 63It might be useful if your IP adress often changes.
60 64**ban_after**: Failed login attempts before being IP banned.
61// Disable session hijacking 65**ban_duration**: IP ban duration in seconds.
62$GLOBALS['disablesessionprotection'] = false; [](.html) 66**open_shaarli**: Anyone can add a new link while logged out if enabled.
63 67**trusted_proxies**: List of trusted IP which won't be banned after failed login attemps. Useful if Shaarli is behind a reverse proxy.
64// Whether new links are private by default 68
65$GLOBALS['privateLinkByDefault'] = false;[](.html) 69### Resources
66 70
67// Enabled plugins 71**data_dir**: Data directory.
68// Note: each plugin may provide further settings through its own "config.php" 72**datastore**: Shaarli's links database file path.
69$GLOBALS['config'['ENABLED_PLUGINS'] = array('addlink_toolbar', 'qrcode');]('ENABLED_PLUGINS']-=-array('addlink_toolbar',-'qrcode');.html) 73**updates**: File path for the ran updates file.
70 74**log**: Log file path.
71// Subdirectory where Shaarli stores its data files. 75**update_check**: Last update check file path.
72// You can change it for better security. 76**raintpl_tpl**: Templates directory.
73$GLOBALS['config'['DATADIR'] = 'data';]('DATADIR']-=-'data';.html) 77**raintpl_tmp**: Template engine cache directory.
74 78**thumbnails_cache**: Thumbnails cache directory.
75// File used to store settings 79**page_cache**: Shaarli's internal cache directory.
76$GLOBALS['config'['CONFIG_FILE'] = 'data/config.php';]('CONFIG_FILE']-=-'data/config.php';.html) 80**ban_file**: Banned IP file path.
77 81
78// File containing the link database 82### Updates
79$GLOBALS['config'['DATASTORE'] = 'data/datastore.php';]('DATASTORE']-=-'data/datastore.php';.html) 83
80 84**check_updates**: Enable or disable update check to the git repository.
81// Number of links displayed per page 85**check_updates_branch**: Git branch used to check updates (e.g. `stable` or `master`).
82$GLOBALS['config'['LINKS_PER_PAGE'] = 20;]('LINKS_PER_PAGE']-=-20;.html) 86**check_updates_interval**: Look for new version every N seconds (default: every day).
83 87
84// File recording failed login attempts and IP bans 88### Privacy
85$GLOBALS['config'['IPBANS_FILENAME'] = 'data/ipbans.php';]('IPBANS_FILENAME']-=-'data/ipbans.php';.html) 89
86 90**default_private_links**: Check the private checkbox by default for every new link.
87// Failed login attempts before being banned 91**hide_public_links**: All links are hidden while logged out.
88$GLOBALS['config'['BAN_AFTER'] = 4;]('BAN_AFTER']-=-4;.html) 92**hide_timestamps**: Timestamps are hidden.
89 93
90// Duration of an IP ban, in seconds (30 minutes) 94### Feed
91$GLOBALS['config'['BAN_DURATION'] = 1800;]('BAN_DURATION']-=-1800;.html) 95
92 96**rss_permalinks**: Enable this to redirect RSS links to Shaarli's permalinks instead of shaared URL.
93// If set to true, everyone will be able to add, edit and remove links, 97**show_atom**: Display ATOM feed button.
94// as well as change configuration 98
95$GLOBALS['config'['OPEN_SHAARLI'] = false;]('OPEN_SHAARLI']-=-false;.html) 99### Thumbnail
96 100
97// Do not show link timestamps 101**enable_thumbnails**: Enable or disable thumbnail display.
98$GLOBALS['config'['HIDE_TIMESTAMPS'] = false;]('HIDE_TIMESTAMPS']-=-false;.html) 102**enable_localcache**: Enable or disable local cache.
99 103
100// Set to false to disable local thumbnail cache, e.g. due to limited disk quotas 104### Redirector
101$GLOBALS['config'['ENABLE_THUMBNAILS'] = true;]('ENABLE_THUMBNAILS']-=-true;.html) 105
102 106**url**: Redirector URL, such as `anonym.to`.
103// Thumbnail cache directory 107**encode_url**: Enable this if the redirector needs encoded URL to work properly.
104$GLOBALS['config'['CACHEDIR'] = 'cache';]('CACHEDIR']-=-'cache';.html) 108
105 109## Configuration file example
106// Enable feed (rss, atom, dailyrss) cache 110
107$GLOBALS['config'['ENABLE_LOCALCACHE'] = true;]('ENABLE_LOCALCACHE']-=-true;.html) 111```json
108 112<?php /*
109// Feed cache directory 113{
110$GLOBALS['config'['PAGECACHE'] = 'pagecache';]('PAGECACHE']-=-'pagecache';.html) 114 "credentials": {
111 115 "login": "<login>",
112// RainTPL cache directory (keep the trailing slash!) 116 "hash": "<password hash>",
113$GLOBALS['config'['RAINTPL_TMP'] = 'tmp/';]('RAINTPL_TMP']-=-'tmp/';.html) 117 "salt": "<password salt>"
114 118 },
115// RainTPL template directory (keep the trailing slash!) 119 "security": {
116$GLOBALS['config'['RAINTPL_TPL'] = 'tpl/';]('RAINTPL_TPL']-=-'tpl/';.html) 120 "ban_after": 4,
117 121 "session_protection_disabled": false,
118// Whether Shaarli checks for new releases at https://github.com/shaarli/Shaarli 122 "ban_duration": 1800,
119$GLOBALS['config'['ENABLE_UPDATECHECK'] = true;]('ENABLE_UPDATECHECK']-=-true;.html) 123 "trusted_proxies": [[](.html)
120 124 "1.2.3.4",
121// File to store the latest Shaarli version 125 "5.6.7.8"
122$GLOBALS['config'['UPDATECHECK_FILENAME'] = 'data/lastupdatecheck.txt';]('UPDATECHECK_FILENAME']-=-'data/lastupdatecheck.txt';.html) 126 ]
123 127 },
124// Delay between version checks (requires to be logged in) (24 hours) 128 "resources": {
125$GLOBALS['config'['UPDATECHECK_INTERVAL'] = 86400;]('UPDATECHECK_INTERVAL']-=-86400;.html) 129 "data_dir": "data",
126 130 "config": "data\/config.php",
127// For each link, display a link to an archived version on archive.org 131 "datastore": "data\/datastore.php",
128$GLOBALS['config'['ARCHIVE_ORG'] = false;]('ARCHIVE_ORG']-=-false;.html) 132 "ban_file": "data\/ipbans.php",
129 133 "updates": "data\/updates.txt",
130// The RSS item links point: 134 "log": "data\/log.txt",
131// true => directly to the link 135 "update_check": "data\/lastupdatecheck.txt",
132// false => to the entry on Shaarli (permalink) 136 "raintpl_tmp": "tmp\/",
133$GLOBALS['config'['ENABLE_RSS_PERMALINKS'] = true;]('ENABLE_RSS_PERMALINKS']-=-true;.html) 137 "raintpl_tpl": "tpl\/",
134 138 "thumbnails_cache": "cache",
135// Hide all links to non-logged users 139 "page_cache": "pagecache"
136$GLOBALS['config'['HIDE_PUBLIC_LINKS'] = false;]('HIDE_PUBLIC_LINKS']-=-false;.html) 140 },
137 141 "general": {
138$GLOBALS['config'['PUBSUBHUB_URL'] = '';]('PUBSUBHUB_URL']-=-'';.html) 142 "check_updates": true,
139 143 "rss_permalinks": true,
140// Show an ATOM Feed button next to the Subscribe (RSS) button. 144 "links_per_page": 20,
141// ATOM feeds are available at the address ?do=atom regardless of this option. 145 "default_private_links": true,
142$GLOBALS['config'['SHOW_ATOM'] = false;]('SHOW_ATOM']-=-false;.html) 146 "enable_thumbnails": true,
143 147 "enable_localcache": true,
144// Set this to true if the redirector requires encoded URL, false otherwise. 148 "check_updates_branch": "stable",
145$GLOBALS['config'['REDIRECTOR_URLENCODE'] = true;]('REDIRECTOR_URLENCODE']-=-true;.html) 149 "check_updates_interval": 86400,
146?> 150 "enabled_plugins": [[](.html)
151 "markdown",
152 "wallabag",
153 "archiveorg"
154 ],
155 "timezone": "Europe\/Paris",
156 "title": "My Shaarli",
157 "header_link": "?"
158 },
159 "extras": {
160 "show_atom": false,
161 "hide_public_links": false,
162 "hide_timestamps": false,
163 "open_shaarli": false,
164 "redirector": "http://anonym.to/?",
165 "redirector_encode_url": false
166 },
167 "general": {
168 "header_link": "?",
169 "links_per_page": 20,
170 "enabled_plugins": [[](.html)
171 "markdown",
172 "wallabag"
173 ],
174 "timezone": "Europe\/Paris",
175 "title": "My Shaarli"
176 },
177 "updates": {
178 "check_updates": true,
179 "check_updates_branch": "stable",
180 "check_updates_interval": 86400
181 },
182 "feed": {
183 "rss_permalinks": true,
184 "show_atom": false
185 },
186 "privacy": {
187 "default_private_links": true,
188 "hide_public_links": false,
189 "hide_timestamps": false
190 },
191 "thumbnail": {
192 "enable_thumbnails": true,
193 "enable_localcache": true
194 },
195 "redirector": {
196 "url": "http://anonym.to/?",
197 "encode_url": false
198 },
199 "plugins": {
200 "WALLABAG_URL": "http://demo.wallabag.org",
201 "WALLABAG_VERSION": "1"
202 }
203} ?>
147``` 204```
148 205
149## Additional configuration 206## Additional configuration
150 207
151The playvideos plugin may require that you adapt your server's [Content Security Policy](https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md#troubleshooting) configuration to work properly.[](.html) 208The playvideos plugin may require that you adapt your server's
209[Content Security Policy](https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md#troubleshooting) [](.html)
210configuration to work properly.[(.html)]((.html).html)
211
diff --git a/doc/Shaarli-installation.html b/doc/Shaarli-installation.html
deleted file mode 100644
index 487ec1db..00000000
--- a/doc/Shaarli-installation.html
+++ /dev/null
@@ -1,72 +0,0 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset="utf-8">
5 <meta name="generator" content="pandoc">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
7 <title>Shaarli – Shaarli installation</title>
8 <style type="text/css">code{white-space: pre;}</style>
9 <link rel="stylesheet" href="github-markdown.css">
10 <!--[if lt IE 9]>
11 <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
12 <![endif]-->
13</head>
14<body>
15<div id="local-sidebar">
16<ul>
17<li><a href="Home.html">Home</a></li>
18<li>Installation
19<ul>
20<li><a href="Download.html">Download</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li>
28<li><a href="Docker.html">Docker</a></li>
29<li><a href="Usage.html">Usage</a>
30<ul>
31<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
32<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
33<li><a href="Firefox-share.html">Firefox share</a></li>
34<li><a href="RSS-feeds.html">RSS feeds</a></li>
35</ul></li>
36<li>How To
37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
43<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
44</ul></li>
45<li><a href="Troubleshooting.html">Troubleshooting</a></li>
46<li><a href="Development.html">Development</a>
47<ul>
48<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
49<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
50<li><a href="Directory-structure.html">Directory structure</a></li>
51<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
52<li><a href="Plugin-System.html">Plugin System</a></li>
53<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
54<li><a href="Security.html">Security</a></li>
55<li><a href="Static-analysis.html">Static analysis</a></li>
56<li><a href="Theming.html">Theming</a></li>
57<li><a href="Unit-tests.html">Unit tests</a></li>
58</ul></li>
59<li>About
60<ul>
61<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li>
65</ul>
66</div>
67<h1 id="shaarli-installation">Shaarli installation</h1>
68<p>Once Shaarli is downloaded and installed behind a web server, open it in your favorite browser.</p>
69<p><img src="http://i.imgur.com/wuMpDSN.png" alt="install screenshot" /><a href=".html"></a></p>
70<p>Setup your Shaarli installation, and it's ready to use!</p>
71</body>
72</html>
diff --git a/doc/Shaarli-installation.md b/doc/Shaarli-installation.md
deleted file mode 100644
index be9726e0..00000000
--- a/doc/Shaarli-installation.md
+++ /dev/null
@@ -1,6 +0,0 @@
1#Shaarli installation
2Once Shaarli is downloaded and installed behind a web server, open it in your favorite browser.
3
4![install screenshot](http://i.imgur.com/wuMpDSN.png)[](.html)
5
6Setup your Shaarli installation, and it's ready to use!
diff --git a/doc/Sharing-button.html b/doc/Sharing-button.html
index 3770d8ad..93710efe 100644
--- a/doc/Sharing-button.html
+++ b/doc/Sharing-button.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/Static-analysis.html b/doc/Static-analysis.html
index 86cb4696..d964e917 100644
--- a/doc/Static-analysis.html
+++ b/doc/Static-analysis.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/TODO.html b/doc/TODO.html
deleted file mode 100644
index 04224dbf..00000000
--- a/doc/TODO.html
+++ /dev/null
@@ -1,74 +0,0 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset="utf-8">
5 <meta name="generator" content="pandoc">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
7 <title>Shaarli – TODO</title>
8 <style type="text/css">code{white-space: pre;}</style>
9 <link rel="stylesheet" href="github-markdown.css">
10 <!--[if lt IE 9]>
11 <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
12 <![endif]-->
13</head>
14<body>
15<div id="local-sidebar">
16<ul>
17<li><a href="Home.html">Home</a></li>
18<li>Installation
19<ul>
20<li><a href="Download.html">Download</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li>
28<li><a href="Docker.html">Docker</a></li>
29<li><a href="Usage.html">Usage</a>
30<ul>
31<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
32<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
33<li><a href="Firefox-share.html">Firefox share</a></li>
34<li><a href="RSS-feeds.html">RSS feeds</a></li>
35</ul></li>
36<li>How To
37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
43<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
44</ul></li>
45<li><a href="Troubleshooting.html">Troubleshooting</a></li>
46<li><a href="Development.html">Development</a>
47<ul>
48<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
49<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
50<li><a href="Directory-structure.html">Directory structure</a></li>
51<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
52<li><a href="Plugin-System.html">Plugin System</a></li>
53<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
54<li><a href="Security.html">Security</a></li>
55<li><a href="Static-analysis.html">Static analysis</a></li>
56<li><a href="Theming.html">Theming</a></li>
57<li><a href="Unit-tests.html">Unit tests</a></li>
58</ul></li>
59<li>About
60<ul>
61<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li>
65</ul>
66</div>
67<h1 id="todo">TODO</h1>
68<ul>
69<li>add more screenshots</li>
70<li>improve developer documentation: storage architecture, classes and functions, security handling...</li>
71<li>add server configuration examples: lighthttpd</li>
72</ul>
73</body>
74</html>
diff --git a/doc/TODO.md b/doc/TODO.md
deleted file mode 100644
index fb72fd57..00000000
--- a/doc/TODO.md
+++ /dev/null
@@ -1,4 +0,0 @@
1#TODO
2* add more screenshots
3* improve developer documentation: storage architecture, classes and functions, security handling...
4* add server configuration examples: lighthttpd
diff --git a/doc/Theming.html b/doc/Theming.html
index 27c5d863..13e6acf0 100644
--- a/doc/Theming.html
+++ b/doc/Theming.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -132,6 +130,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
132<li><a href="https://github.com/kalvn/shaarli-blocks">kalvn/shaarli-blocks</a> - A template/theme for Shaarli<a href=".html"></a></li> 130<li><a href="https://github.com/kalvn/shaarli-blocks">kalvn/shaarli-blocks</a> - A template/theme for Shaarli<a href=".html"></a></li>
133<li><a href="https://github.com/kalvn/Shaarli-Material">kalvn/Shaarli-Material</a> - A theme (template) based on Google's Material Design for Shaarli, the superfast delicious clone.<a href=".html"></a></li> 131<li><a href="https://github.com/kalvn/Shaarli-Material">kalvn/Shaarli-Material</a> - A theme (template) based on Google's Material Design for Shaarli, the superfast delicious clone.<a href=".html"></a></li>
134<li><a href="https://github.com/misterair/limonade">misterair/Limonade</a> - A fork of (legacy) Shaarli with a new template<a href=".html"></a></li> 132<li><a href="https://github.com/misterair/limonade">misterair/Limonade</a> - A fork of (legacy) Shaarli with a new template<a href=".html"></a></li>
133<li><a href="https://github.com/mrjovanovic/serious-theme-shaarli">mrjovanovic/serious-theme-shaarli</a> - A serious theme for SHaarli.<a href=".html"></a></li>
135<li><a href="https://github.com/Vinm/Blue-theme-for-Shaarli">Vinm/Blue-theme-for Shaarli</a> - A template/theme for Shaarli (<a href="https://github.com/Vinm/Blue-theme-for-Shaarli/issues/2">unmaintained</a>, compatibility unknown)<a href=".html"></a></li> 134<li><a href="https://github.com/Vinm/Blue-theme-for-Shaarli">Vinm/Blue-theme-for Shaarli</a> - A template/theme for Shaarli (<a href="https://github.com/Vinm/Blue-theme-for-Shaarli/issues/2">unmaintained</a>, compatibility unknown)<a href=".html"></a></li>
136<li><a href="https://github.com/vivienhaese/shaarlitheme">vivienhaese/shaarlitheme</a> - A Shaarli fork meant to be run in an openshift instance<a href=".html"></a></li> 135<li><a href="https://github.com/vivienhaese/shaarlitheme">vivienhaese/shaarlitheme</a> - A Shaarli fork meant to be run in an openshift instance<a href=".html"></a></li>
137</ul> 136</ul>
@@ -142,17 +141,17 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
142<li>user sites are enabled, e.g. <code>/home/user/public_html/somedir</code> is served as <code>http://localhost/~user/somedir</code></li> 141<li>user sites are enabled, e.g. <code>/home/user/public_html/somedir</code> is served as <code>http://localhost/~user/somedir</code></li>
143<li><code>http</code> is the name of the Apache user</li> 142<li><code>http</code> is the name of the Apache user</li>
144</ul> 143</ul>
145<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">cd</span> ~/public_html 144<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> ~/public_html
146 145
147<span class="co"># clone repositories</span> 146<span class="co"># clone repositories</span>
148$ <span class="kw">git</span> clone https://github.com/shaarli/Shaarli.git shaarli 147$ <span class="fu">git</span> clone https://github.com/shaarli/Shaarli.git shaarli
149$ <span class="kw">pushd</span> shaarli/tpl 148$ <span class="bu">pushd</span> shaarli/tpl
150$ <span class="kw">git</span> clone https://github.com/alexisju/albinomouse-template.git 149$ <span class="fu">git</span> clone https://github.com/alexisju/albinomouse-template.git
151$ <span class="kw">popd</span> 150$ <span class="bu">popd</span>
152 151
153<span class="co"># set access rights for Apache</span> 152<span class="co"># set access rights for Apache</span>
154$ <span class="kw">chgrp</span> -R http shaarli 153$ <span class="fu">chgrp</span> -R http shaarli
155$ <span class="kw">chmod</span> g+rwx shaarli shaarli/cache shaarli/data shaarli/pagecache shaarli/tmp</code></pre></div> 154$ <span class="fu">chmod</span> g+rwx shaarli shaarli/cache shaarli/data shaarli/pagecache shaarli/tmp</code></pre></div>
156<p>Get config written:</p> 155<p>Get config written:</p>
157<ul> 156<ul>
158<li>go to the freshly installed site</li> 157<li>go to the freshly installed site</li>
@@ -161,6 +160,6 @@ $ <span class="kw">chmod</span> g+rwx shaarli shaarli/cache shaarli/data shaarli
161</ul> 160</ul>
162<p>Edit Shaarli's <a href="configuration%7CShaarli-configuration.html">configuration|Shaarli configuration</a>:</p> 161<p>Edit Shaarli's <a href="configuration%7CShaarli-configuration.html">configuration|Shaarli configuration</a>:</p>
163<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># the file should be owned by Apache, thus not writeable =&gt; sudo</span> 162<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># the file should be owned by Apache, thus not writeable =&gt; sudo</span>
164$ <span class="kw">sudo</span> sed -i s=tpl=tpl/albinomouse-template=g shaarli/data/config.php</code></pre></div> 163$ <span class="fu">sudo</span> sed -i s=tpl=tpl/albinomouse-template=g shaarli/data/config.php</code></pre></div>
165</body> 164</body>
166</html> 165</html>
diff --git a/doc/Theming.md b/doc/Theming.md
index 9dfdcf9f..7fb8d927 100644
--- a/doc/Theming.md
+++ b/doc/Theming.md
@@ -28,6 +28,7 @@ $GLOBALS['config'['RAINTPL_TPL'] = 'tpl/my-template/';]('RAINTPL_TPL']-=-'tpl/my
28- [kalvn/shaarli-blocks](https://github.com/kalvn/shaarli-blocks) - A template/theme for Shaarli[](.html) 28- [kalvn/shaarli-blocks](https://github.com/kalvn/shaarli-blocks) - A template/theme for Shaarli[](.html)
29- [kalvn/Shaarli-Material](https://github.com/kalvn/Shaarli-Material) - A theme (template) based on Google's Material Design for Shaarli, the superfast delicious clone.[](.html) 29- [kalvn/Shaarli-Material](https://github.com/kalvn/Shaarli-Material) - A theme (template) based on Google's Material Design for Shaarli, the superfast delicious clone.[](.html)
30- [misterair/Limonade](https://github.com/misterair/limonade) - A fork of (legacy) Shaarli with a new template[](.html) 30- [misterair/Limonade](https://github.com/misterair/limonade) - A fork of (legacy) Shaarli with a new template[](.html)
31- [mrjovanovic/serious-theme-shaarli](https://github.com/mrjovanovic/serious-theme-shaarli) - A serious theme for SHaarli.[](.html)
31- [Vinm/Blue-theme-for Shaarli](https://github.com/Vinm/Blue-theme-for-Shaarli) - A template/theme for Shaarli ([unmaintained](https://github.com/Vinm/Blue-theme-for-Shaarli/issues/2), compatibility unknown)[](.html) 32- [Vinm/Blue-theme-for Shaarli](https://github.com/Vinm/Blue-theme-for-Shaarli) - A template/theme for Shaarli ([unmaintained](https://github.com/Vinm/Blue-theme-for-Shaarli/issues/2), compatibility unknown)[](.html)
32- [vivienhaese/shaarlitheme](https://github.com/vivienhaese/shaarlitheme) - A Shaarli fork meant to be run in an openshift instance[](.html) 33- [vivienhaese/shaarlitheme](https://github.com/vivienhaese/shaarlitheme) - A Shaarli fork meant to be run in an openshift instance[](.html)
33 34
diff --git a/doc/Troubleshooting.html b/doc/Troubleshooting.html
index 3de8ad1e..ed1c6f09 100644
--- a/doc/Troubleshooting.html
+++ b/doc/Troubleshooting.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -132,6 +130,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
132<ul> 130<ul>
133<li>false (default): real referer</li> 131<li>false (default): real referer</li>
134<li>true: spoof referer (use target URI as referer)</li> 132<li>true: spoof referer (use target URI as referer)</li>
133<li>known to break some functionality in Shaarli</li>
135</ul> 134</ul>
136<p><code>network.http.referer.trimmingPolicy</code> - trim the URI not to send a full Referer</p> 135<p><code>network.http.referer.trimmingPolicy</code> - trim the URI not to send a full Referer</p>
137<ul> 136<ul>
@@ -140,7 +139,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
140<li>2: scheme+host+port</li> 139<li>2: scheme+host+port</li>
141</ul> 140</ul>
142<h3 id="firefox-localhost-and-redirections">Firefox, localhost and redirections</h3> 141<h3 id="firefox-localhost-and-redirections">Firefox, localhost and redirections</h3>
143<p><code>localhost</code> is not a proper Fully Qualified Domain Name (FQDN); if Firefox has been set up to spoof referers, or anly accept requests from the same base domain/host, Shaarli redirections will not work properly.</p> 142<p><code>localhost</code> is not a proper Fully Qualified Domain Name (FQDN); if Firefox has been set up to spoof referers, or only accept requests from the same base domain/host, Shaarli redirections will not work properly.</p>
144<p>To solve this, assign a local domain to your host, e.g.</p> 143<p>To solve this, assign a local domain to your host, e.g.</p>
145<pre><code>127.0.0.1 localhost desktop localhost.lan 144<pre><code>127.0.0.1 localhost desktop localhost.lan
146::1 localhost desktop localhost.lan</code></pre> 145::1 localhost desktop localhost.lan</code></pre>
diff --git a/doc/Troubleshooting.md b/doc/Troubleshooting.md
index e91fe846..8e30fce5 100644
--- a/doc/Troubleshooting.md
+++ b/doc/Troubleshooting.md
@@ -25,6 +25,7 @@ HTTP settings are available by browsing `about:config`, here are the available s
25`network.http.referer.spoofSource` - Referer spoofing (~faking) 25`network.http.referer.spoofSource` - Referer spoofing (~faking)
26- false (default): real referer 26- false (default): real referer
27- true: spoof referer (use target URI as referer) 27- true: spoof referer (use target URI as referer)
28 - known to break some functionality in Shaarli
28 29
29`network.http.referer.trimmingPolicy` - trim the URI not to send a full Referer 30`network.http.referer.trimmingPolicy` - trim the URI not to send a full Referer
30- 0 (default): send full URI 31- 0 (default): send full URI
@@ -32,7 +33,7 @@ HTTP settings are available by browsing `about:config`, here are the available s
32- 2: scheme+host+port 33- 2: scheme+host+port
33 34
34### Firefox, localhost and redirections 35### Firefox, localhost and redirections
35`localhost` is not a proper Fully Qualified Domain Name (FQDN); if Firefox has been set up to spoof referers, or anly accept requests from the same base domain/host, Shaarli redirections will not work properly. 36`localhost` is not a proper Fully Qualified Domain Name (FQDN); if Firefox has been set up to spoof referers, or only accept requests from the same base domain/host, Shaarli redirections will not work properly.
36 37
37To solve this, assign a local domain to your host, e.g. 38To solve this, assign a local domain to your host, e.g.
38``` 39```
diff --git a/doc/Unit-tests.html b/doc/Unit-tests.html
index 7934e346..266fd33a 100644
--- a/doc/Unit-tests.html
+++ b/doc/Unit-tests.html
@@ -52,13 +52,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
52<div id="local-sidebar"> 52<div id="local-sidebar">
53<ul> 53<ul>
54<li><a href="Home.html">Home</a></li> 54<li><a href="Home.html">Home</a></li>
55<li>Installation 55<li>Setup
56<ul> 56<ul>
57<li><a href="Download.html">Download</a></li> 57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
58<li><a href="Server-requirements.html">Server requirements</a></li> 59<li><a href="Server-requirements.html">Server requirements</a></li>
59<li><a href="Server-configuration.html">Server configuration</a></li> 60<li><a href="Server-configuration.html">Server configuration</a></li>
60<li><a href="Server-security.html">Server security</a></li> 61<li><a href="Server-security.html">Server security</a></li>
61<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li> 63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li> 64</ul></li>
@@ -73,7 +73,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
73<li>How To 73<li>How To
74<ul> 74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
77<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
78<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
79<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -97,7 +96,6 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
97<ul> 96<ul>
98<li><a href="FAQ.html">FAQ</a></li> 97<li><a href="FAQ.html">FAQ</a></li>
99<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
100<li><a href="TODO.html">TODO</a></li>
101</ul></li> 99</ul></li>
102</ul> 100</ul>
103</div> 101</div>
@@ -111,87 +109,87 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
111</ul> 109</ul>
112<h4 id="sample-usage">Sample usage</h4> 110<h4 id="sample-usage">Sample usage</h4>
113<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># system-wide version</span> 111<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># system-wide version</span>
114$ <span class="kw">composer</span> install 112$ <span class="ex">composer</span> install
115$ <span class="kw">composer</span> update 113$ <span class="ex">composer</span> update
116 114
117<span class="co"># local version</span> 115<span class="co"># local version</span>
118$ <span class="kw">php</span> composer.phar self-update 116$ <span class="ex">php</span> composer.phar self-update
119$ <span class="kw">php</span> composer.phar install 117$ <span class="ex">php</span> composer.phar install
120$ <span class="kw">php</span> composer.phar update</code></pre></div> 118$ <span class="ex">php</span> composer.phar update</code></pre></div>
121<h4 id="install-shaarli-dev-dependencies">Install Shaarli dev dependencies</h4> 119<h4 id="install-shaarli-dev-dependencies">Install Shaarli dev dependencies</h4>
122<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">cd</span> /path/to/shaarli 120<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
123$ <span class="kw">composer</span> update</code></pre></div> 121$ <span class="ex">composer</span> update</code></pre></div>
124<h4 id="install-and-enable-xdebug-to-generate-phpunit-coverage-reports">Install and enable Xdebug to generate PHPUnit coverage reports</h4> 122<h4 id="install-and-enable-xdebug-to-generate-phpunit-coverage-reports">Install and enable Xdebug to generate PHPUnit coverage reports</h4>
125<p>For Debian-based distros:</p> 123<p>For Debian-based distros:</p>
126<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">aptitude</span> install php5-xdebug</code></pre></div> 124<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">aptitude</span> install php5-xdebug</code></pre></div>
127<p>For ArchLinux:</p> 125<p>For ArchLinux:</p>
128<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">pacman</span> -S xdebug</code></pre></div> 126<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">pacman</span> -S xdebug</code></pre></div>
129<p>Then add the following line to <code>/etc/php/php.ini</code>:</p> 127<p>Then add the following line to <code>/etc/php/php.ini</code>:</p>
130<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="dt">zend_extension</span><span class="ot">=</span><span class="st">xdebug.so</span></code></pre></div> 128<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="dt">zend_extension</span><span class="ot">=</span><span class="st">xdebug.so</span></code></pre></div>
131<h4 id="run-unit-tests">Run unit tests</h4> 129<h4 id="run-unit-tests">Run unit tests</h4>
132<p>Successful test suite:</p> 130<p>Successful test suite:</p>
133<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">make</span> test 131<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">make</span> test
134 132
135<span class="kw">-------</span> 133<span class="ex">-------</span>
136<span class="kw">PHPUNIT</span> 134<span class="ex">PHPUNIT</span>
137<span class="kw">-------</span> 135<span class="ex">-------</span>
138<span class="kw">PHPUnit</span> 4.6.9 by Sebastian Bergmann and contributors. 136<span class="ex">PHPUnit</span> 4.6.9 by Sebastian Bergmann and contributors.
139 137
140<span class="kw">Configuration</span> read from /home/virtualtam/public_html/shaarli/phpunit.xml 138<span class="ex">Configuration</span> read from /home/virtualtam/public_html/shaarli/phpunit.xml
141 139
142<span class="kw">....................................</span> 140<span class="ex">....................................</span>
143 141
144<span class="kw">Time</span>: 759 ms, Memory: 8.25Mb 142<span class="ex">Time</span>: 759 ms, Memory: 8.25Mb
145 143
146<span class="kw">OK</span> (36 tests, 65 assertions)</code></pre></div> 144<span class="ex">OK</span> (36 tests, 65 assertions)</code></pre></div>
147<p>Test suite with failures and errors:</p> 145<p>Test suite with failures and errors:</p>
148<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="kw">make</span> test 146<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">make</span> test
149<span class="kw">-------</span> 147<span class="ex">-------</span>
150<span class="kw">PHPUNIT</span> 148<span class="ex">PHPUNIT</span>
151<span class="kw">-------</span> 149<span class="ex">-------</span>
152<span class="kw">PHPUnit</span> 4.6.9 by Sebastian Bergmann and contributors. 150<span class="ex">PHPUnit</span> 4.6.9 by Sebastian Bergmann and contributors.
153 151
154<span class="kw">Configuration</span> read from /home/virtualtam/public_html/shaarli/phpunit.xml 152<span class="ex">Configuration</span> read from /home/virtualtam/public_html/shaarli/phpunit.xml
155 153
156<span class="kw">E..FF...............................</span> 154<span class="ex">E..FF...............................</span>
157 155
158<span class="kw">Time</span>: 802 ms, Memory: 8.25Mb 156<span class="ex">Time</span>: 802 ms, Memory: 8.25Mb
159 157
160<span class="kw">There</span> was 1 error: 158<span class="ex">There</span> was 1 error:
161 159
162<span class="kw">1</span>) <span class="kw">LinkDBTest</span>::testConstructLoggedIn 160<span class="ex">1</span>) <span class="ex">LinkDBTest</span>::testConstructLoggedIn
163<span class="kw">Missing</span> argument 2 for LinkDB::__construct(), <span class="kw">called</span> in /home/virtualtam/public_html/shaarli/tests/Link\ 161<span class="ex">Missing</span> argument 2 for LinkDB::__construct(), <span class="ex">called</span> in /home/virtualtam/public_html/shaarli/tests/Link\
164DBTest.php on line 79 and defined 162DBTest.php on line 79 and defined
165 163
166<span class="kw">/home/virtualtam/public_html/shaarli/application</span>/LinkDB.php:<span class="kw">58</span> 164<span class="ex">/home/virtualtam/public_html/shaarli/application</span>/LinkDB.php:<span class="ex">58</span>
167<span class="kw">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="kw">79</span> 165<span class="ex">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="ex">79</span>
168 166
169<span class="kw">--</span> 167<span class="ex">--</span>
170 168
171<span class="kw">There</span> were 2 failures: 169<span class="ex">There</span> were 2 failures:
172 170
173<span class="kw">1</span>) <span class="kw">LinkDBTest</span>::testCheckDBNew 171<span class="ex">1</span>) <span class="ex">LinkDBTest</span>::testCheckDBNew
174<span class="kw">Failed</span> asserting that two strings are equal. 172<span class="ex">Failed</span> asserting that two strings are equal.
175<span class="kw">---</span> Expected 173<span class="ex">---</span> Expected
176<span class="kw">+++</span> Actual 174<span class="ex">+++</span> Actual
177<span class="kw">@@</span> @@ 175<span class="ex">@@</span> @@
178<span class="kw">-</span><span class="st">&#39;e3edea8ea7bb50be4bcb404df53fbb4546a7156e&#39;</span> 176<span class="ex">-</span><span class="st">&#39;e3edea8ea7bb50be4bcb404df53fbb4546a7156e&#39;</span>
179<span class="kw">+</span><span class="st">&#39;85eab0c610d4f68025f6ed6e6b6b5fabd4b55834&#39;</span> 177<span class="ex">+</span><span class="st">&#39;85eab0c610d4f68025f6ed6e6b6b5fabd4b55834&#39;</span>
180 178
181<span class="kw">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="kw">121</span> 179<span class="ex">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="ex">121</span>
182 180
183<span class="kw">2</span>) <span class="kw">LinkDBTest</span>::testCheckDBLoad 181<span class="ex">2</span>) <span class="ex">LinkDBTest</span>::testCheckDBLoad
184<span class="kw">Failed</span> asserting that two strings are equal. 182<span class="ex">Failed</span> asserting that two strings are equal.
185<span class="kw">---</span> Expected 183<span class="ex">---</span> Expected
186<span class="kw">+++</span> Actual 184<span class="ex">+++</span> Actual
187<span class="kw">@@</span> @@ 185<span class="ex">@@</span> @@
188<span class="kw">-</span><span class="st">&#39;e3edea8ea7bb50be4bcb404df53fbb4546a7156e&#39;</span> 186<span class="ex">-</span><span class="st">&#39;e3edea8ea7bb50be4bcb404df53fbb4546a7156e&#39;</span>
189<span class="kw">+</span><span class="st">&#39;85eab0c610d4f68025f6ed6e6b6b5fabd4b55834&#39;</span> 187<span class="ex">+</span><span class="st">&#39;85eab0c610d4f68025f6ed6e6b6b5fabd4b55834&#39;</span>
190 188
191<span class="kw">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="kw">133</span> 189<span class="ex">/home/virtualtam/public_html/shaarli/tests</span>/LinkDBTest.php:<span class="ex">133</span>
192 190
193<span class="kw">FAILURES</span>! 191<span class="ex">FAILURES</span>!
194<span class="kw">Tests</span>: 36, Assertions: 63, Errors: 1, Failures: 2.</code></pre></div> 192<span class="ex">Tests</span>: 36, Assertions: 63, Errors: 1, Failures: 2.</code></pre></div>
195<h4 id="test-results-and-coverage">Test results and coverage</h4> 193<h4 id="test-results-and-coverage">Test results and coverage</h4>
196<p>By default, PHPUnit will run all suitable tests found under the <code>tests</code> directory.</p> 194<p>By default, PHPUnit will run all suitable tests found under the <code>tests</code> directory.</p>
197<p>Each test has 3 possible outcomes:</p> 195<p>Each test has 3 possible outcomes:</p>
diff --git a/doc/Upgrade-and-migration.html b/doc/Upgrade-and-migration.html
new file mode 100644
index 00000000..a5b041d5
--- /dev/null
+++ b/doc/Upgrade-and-migration.html
@@ -0,0 +1,242 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset="utf-8">
5 <meta name="generator" content="pandoc">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
7 <title>Shaarli – Upgrade and migration</title>
8 <style type="text/css">code{white-space: pre;}</style>
9 <style type="text/css">
10div.sourceCode { overflow-x: auto; }
11table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
12 margin: 0; padding: 0; vertical-align: baseline; border: none; }
13table.sourceCode { width: 100%; line-height: 100%; }
14td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
15td.sourceCode { padding-left: 5px; }
16code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
17code > span.dt { color: #902000; } /* DataType */
18code > span.dv { color: #40a070; } /* DecVal */
19code > span.bn { color: #40a070; } /* BaseN */
20code > span.fl { color: #40a070; } /* Float */
21code > span.ch { color: #4070a0; } /* Char */
22code > span.st { color: #4070a0; } /* String */
23code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
24code > span.ot { color: #007020; } /* Other */
25code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
26code > span.fu { color: #06287e; } /* Function */
27code > span.er { color: #ff0000; font-weight: bold; } /* Error */
28code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
29code > span.cn { color: #880000; } /* Constant */
30code > span.sc { color: #4070a0; } /* SpecialChar */
31code > span.vs { color: #4070a0; } /* VerbatimString */
32code > span.ss { color: #bb6688; } /* SpecialString */
33code > span.im { } /* Import */
34code > span.va { color: #19177c; } /* Variable */
35code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
36code > span.op { color: #666666; } /* Operator */
37code > span.bu { } /* BuiltIn */
38code > span.ex { } /* Extension */
39code > span.pp { color: #bc7a00; } /* Preprocessor */
40code > span.at { color: #7d9029; } /* Attribute */
41code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
42code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
43code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
44code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
45 </style>
46 <link rel="stylesheet" href="github-markdown.css">
47 <!--[if lt IE 9]>
48 <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
49 <![endif]-->
50</head>
51<body>
52<div id="local-sidebar">
53<ul>
54<li><a href="Home.html">Home</a></li>
55<li>Setup
56<ul>
57<li><a href="Download-and-Installation.html">Download and Installation</a></li>
58<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
59<li><a href="Server-requirements.html">Server requirements</a></li>
60<li><a href="Server-configuration.html">Server configuration</a></li>
61<li><a href="Server-security.html">Server security</a></li>
62<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
63<li><a href="Plugins.html">Plugins</a></li>
64</ul></li>
65<li><a href="Docker.html">Docker</a></li>
66<li><a href="Usage.html">Usage</a>
67<ul>
68<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
69<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
70<li><a href="Firefox-share.html">Firefox share</a></li>
71<li><a href="RSS-feeds.html">RSS feeds</a></li>
72</ul></li>
73<li>How To
74<ul>
75<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
76<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
77<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
78<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
79<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
80</ul></li>
81<li><a href="Troubleshooting.html">Troubleshooting</a></li>
82<li><a href="Development.html">Development</a>
83<ul>
84<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
85<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
86<li><a href="Directory-structure.html">Directory structure</a></li>
87<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
88<li><a href="Plugin-System.html">Plugin System</a></li>
89<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
90<li><a href="Security.html">Security</a></li>
91<li><a href="Static-analysis.html">Static analysis</a></li>
92<li><a href="Theming.html">Theming</a></li>
93<li><a href="Unit-tests.html">Unit tests</a></li>
94</ul></li>
95<li>About
96<ul>
97<li><a href="FAQ.html">FAQ</a></li>
98<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
99</ul></li>
100</ul>
101</div>
102<h1 id="upgrade-and-migration">Upgrade and migration</h1>
103<h2 id="preparation">Preparation</h2>
104<h3 id="backup-your-data">Backup your data</h3>
105<p>Shaarli stores all user data under the <code>data</code> directory:</p>
106<ul>
107<li><code>data/config.php</code> - main configuration file</li>
108<li><code>data/datastore.php</code> - bookmarked links</li>
109<li><code>data/ipbans.php</code> - banned IP addresses</li>
110</ul>
111<p>See <a href="Shaarli-configuration.html">Shaarli configuration</a> for more information about Shaarli resources.</p>
112<p>It is recommended to backup this repository <em>before</em> starting updating/upgrading Shaarli:</p>
113<ul>
114<li>users with SSH access: copy or archive the directory to a temporary location</li>
115<li>users with FTP access: download a local copy of your Shaarli installation using your favourite client</li>
116</ul>
117<h3 id="migrating-data-from-a-previous-installation">Migrating data from a previous installation</h3>
118<p>As all user data is kept under <code>data</code>, this is the only directory you need to worry about when migrating to a new installation, which corresponds to the following steps:</p>
119<ul>
120<li>backup the <code>data</code> directory</li>
121<li>install or update Shaarli:
122<ul>
123<li>fresh installation - see <a href="Download-and-installation.html">Download and installation</a></li>
124<li>update - see the following sections</li>
125</ul></li>
126<li>check or restore the <code>data</code> directory</li>
127</ul>
128<h2 id="upgrading-from-release-archives">Upgrading from release archives</h2>
129<p>All tagged revisions can be downloaded as tarballs or ZIP archives from the <a href="https://github.com/shaarli/Shaarli/releases">releases</a> page.<a href=".html"></a></p>
130<p>We <em>recommend</em> using the releases from the <code>stable</code> branch, which are available as:</p>
131<ul>
132<li>gzipped tarball - <a href="https://github.com/shaarli/Shaarli/archive/stable.tar.gz" class="uri">https://github.com/shaarli/Shaarli/archive/stable.tar.gz</a></li>
133<li>ZIP archive - <a href="https://github.com/shaarli/Shaarli/archive/stable.zip" class="uri">https://github.com/shaarli/Shaarli/archive/stable.zip</a></li>
134</ul>
135<p>Once downloaded, extract the archive locally and update your remote installation (e.g. via FTP) -be sure you keep the contents of the <code>data</code> directory!</p>
136<p>After upgrading, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to <code>data/config.php</code> (see <a href="Shaarli-configuration.html">Shaarli configuration</a> for more details).</p>
137<h2 id="upgrading-with-git">Upgrading with Git</h2>
138<h3 id="updating-a-community-shaarli">Updating a community Shaarli</h3>
139<p>If you have installed Shaarli from the <a href="Download#clone-with-git-recommended">community Git repository</a>, simply <a href="https://www.git-scm.com/docs/git-pull">pull new changes</a> from your local clone:<a href=".html"></a></p>
140<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
141$ <span class="fu">git</span> pull
142
143<span class="ex">From</span> github.com:shaarli/Shaarli
144 <span class="ex">*</span> branch master -<span class="op">&gt;</span> FETCH_HEAD
145<span class="ex">Updating</span> ebd67c6..521f0e6
146<span class="ex">Fast-forward</span>
147 <span class="ex">application/Url.php</span> <span class="kw">|</span> <span class="ex">1</span> +
148 <span class="ex">shaarli_version.php</span> <span class="kw">|</span> <span class="ex">2</span> +-
149 <span class="ex">tests/Url/UrlTest.php</span> <span class="kw">|</span> <span class="ex">1</span> +
150 <span class="ex">3</span> files changed, 3 insertions(+), <span class="ex">1</span> deletion(-)</code></pre></div>
151<p>Shaarli &gt;= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:<a href=".html"></a></p>
152<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">composer</span> update --no-dev
153
154<span class="ex">Loading</span> composer repositories with package information
155<span class="ex">Updating</span> dependencies
156 <span class="ex">-</span> Installing shaarli/netscape-bookmark-parser (v1.0.1)
157 <span class="ex">Downloading</span>: 100%</code></pre></div>
158<h3 id="migrating-and-upgrading-from-sebsauvages-repository">Migrating and upgrading from Sebsauvage's repository</h3>
159<p>If you have installed Shaarli from <a href="https://github.com/sebsauvage/Shaarli">Sebsauvage's original Git repository</a>, you can use <a href="https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes">Git remotes</a> to update your working copy.<a href=".html"></a></p>
160<p>The following guide assumes that:</p>
161<ul>
162<li>you have a basic knowledge of Git <a href="https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell">branching</a> and <a href="https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes">remote repositories</a><a href=".html"></a></li>
163<li>the default remote is named <code>origin</code> and points to Sebsauvage's repository</li>
164<li>the current branch is <code>master</code>
165<ul>
166<li>if you have personal branches containing customizations, you will need to <a href="https://git-scm.com/book/en/v2/Git-Branching-Rebasing">rebase them</a> after the upgrade; beware though, a lot of changes have been made since the community fork has been created, so things are very likely to break<embed src=".html" /></li>
167</ul></li>
168<li>the working copy is clean:
169<ul>
170<li>no versioned file has been locally modified</li>
171<li>no untracked files are present</li>
172</ul></li>
173</ul>
174<h4 id="step-0-show-repository-information">Step 0: show repository information</h4>
175<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">cd</span> /path/to/shaarli
176
177$ <span class="fu">git</span> remote -v
178<span class="ex">origin</span> https://github.com/sebsauvage/Shaarli (fetch)
179<span class="ex">origin</span> https://github.com/sebsauvage/Shaarli (push)
180
181$ <span class="fu">git</span> branch -vv
182<span class="ex">*</span> master 029f75f [origin/master] Update README.md[](.html)
183
184$ <span class="fu">git</span> status
185<span class="ex">On</span> branch master
186<span class="ex">Your</span> branch is up-to-date with <span class="st">&#39;origin/master&#39;</span>.
187<span class="ex">nothing</span> to commit, working directory clean</code></pre></div>
188<h4 id="step-1-update-git-remotes">Step 1: update Git remotes</h4>
189<pre><code>$ git remote rename origin sebsauvage
190$ git remote -v
191sebsauvage https://github.com/sebsauvage/Shaarli (fetch)
192sebsauvage https://github.com/sebsauvage/Shaarli (push)
193
194$ git remote add origin https://github.com/shaarli/Shaarli
195$ git fetch origin
196
197remote: Counting objects: 3015, done.
198remote: Compressing objects: 100% (19/19), done.
199remote: Total 3015 (delta 446), reused 457 (delta 446), pack-reused 2550
200Receiving objects: 100% (3015/3015), 2.59 MiB | 918.00 KiB/s, done.
201Resolving deltas: 100% (1899/1899), completed with 48 local objects.
202From https://github.com/shaarli/Shaarli
203 * [new branch] master -&gt; origin/master[](.html)
204 * [new branch] stable -&gt; origin/stable[](.html)
205[...][](.html)
206 * [new tag] v0.6.4 -&gt; v0.6.4[](.html)
207 * [new tag] v0.7.0 -&gt; v0.7.0[](.html)</code></pre>
208<h4 id="step-2-use-the-stable-community-branch">Step 2: use the stable community branch</h4>
209<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">git</span> checkout origin/stable -b stable
210<span class="ex">Branch</span> stable set up to track remote branch stable from origin.
211<span class="ex">Switched</span> to a new branch <span class="st">&#39;stable&#39;</span>
212
213$ <span class="fu">git</span> branch -vv
214 <span class="ex">master</span> 029f75f [sebsauvage/master] Update README.md[](.html)
215<span class="ex">*</span> stable 890afc3 [origin/stable] Merge pull request <span class="co">#509 from ArthurHoaro/v0.6.5[](.html)</span></code></pre></div>
216<p>Shaarli &gt;= <code>v0.8.x</code>: install/update third-party PHP dependencies using <a href="https://getcomposer.org/">Composer</a>:<a href=".html"></a></p>
217<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="ex">composer</span> update --no-dev
218
219<span class="ex">Loading</span> composer repositories with package information
220<span class="ex">Updating</span> dependencies
221 <span class="ex">-</span> Installing shaarli/netscape-bookmark-parser (v1.0.1)
222 <span class="ex">Downloading</span>: 100%</code></pre></div>
223<p>Optionally, you can delete information related to the legacy version:</p>
224<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">git</span> branch -D master
225<span class="ex">Deleted</span> branch master (was 029f75f)<span class="ex">.</span>
226
227$ <span class="fu">git</span> remote remove sebsauvage
228
229$ <span class="fu">git</span> remote -v
230<span class="ex">origin</span> https://github.com/shaarli/Shaarli (fetch)
231<span class="ex">origin</span> https://github.com/shaarli/Shaarli (push)
232
233$ <span class="fu">git</span> gc
234<span class="ex">Counting</span> objects: 3317, done.
235<span class="ex">Delta</span> compression using up to 8 threads.
236<span class="ex">Compressing</span> objects: 100% (1237/1237), <span class="kw">done</span><span class="ex">.</span>
237<span class="ex">Writing</span> objects: 100% (3317/3317), <span class="kw">done</span><span class="ex">.</span>
238<span class="ex">Total</span> 3317 (delta 2050), <span class="ex">reused</span> 3301 (delta 2034)<span class="ex">to</span></code></pre></div>
239<h4 id="step-3-configuration">Step 3: configuration</h4>
240<p>After migrating, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to <code>data/config.php</code> (see <a href="Shaarli-configuration.html">Shaarli configuration</a> for more details).</p>
241</body>
242</html>
diff --git a/doc/Upgrade-and-migration.md b/doc/Upgrade-and-migration.md
new file mode 100644
index 00000000..0bc33824
--- /dev/null
+++ b/doc/Upgrade-and-migration.md
@@ -0,0 +1,161 @@
1#Upgrade and migration
2## Preparation
3### Backup your data
4
5Shaarli stores all user data under the `data` directory:
6- `data/config.php` - main configuration file
7- `data/datastore.php` - bookmarked links
8- `data/ipbans.php` - banned IP addresses
9
10See [Shaarli configuration](Shaarli-configuration.html) for more information about Shaarli resources.
11
12It is recommended to backup this repository _before_ starting updating/upgrading Shaarli:
13- users with SSH access: copy or archive the directory to a temporary location
14- users with FTP access: download a local copy of your Shaarli installation using your favourite client
15
16### Migrating data from a previous installation
17As all user data is kept under `data`, this is the only directory you need to worry about when migrating to a new installation, which corresponds to the following steps:
18
19- backup the `data` directory
20- install or update Shaarli:
21 - fresh installation - see [Download and installation](Download-and-installation.html)
22 - update - see the following sections
23- check or restore the `data` directory
24
25## Upgrading from release archives
26All tagged revisions can be downloaded as tarballs or ZIP archives from the [releases](https://github.com/shaarli/Shaarli/releases) page.[](.html)
27
28We _recommend_ using the releases from the `stable` branch, which are available as:
29- gzipped tarball - https://github.com/shaarli/Shaarli/archive/stable.tar.gz
30- ZIP archive - https://github.com/shaarli/Shaarli/archive/stable.zip
31
32Once downloaded, extract the archive locally and update your remote installation (e.g. via FTP) -be sure you keep the contents of the `data` directory!
33
34After upgrading, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to `data/config.php` (see [Shaarli configuration](Shaarli-configuration.html) for more details).
35
36## Upgrading with Git
37### Updating a community Shaarli
38If you have installed Shaarli from the [community Git repository](Download#clone-with-git-recommended), simply [pull new changes](https://www.git-scm.com/docs/git-pull) from your local clone:[](.html)
39
40```bash
41$ cd /path/to/shaarli
42$ git pull
43
44From github.com:shaarli/Shaarli
45 * branch master -> FETCH_HEAD
46Updating ebd67c6..521f0e6
47Fast-forward
48 application/Url.php | 1 +
49 shaarli_version.php | 2 +-
50 tests/Url/UrlTest.php | 1 +
51 3 files changed, 3 insertions(+), 1 deletion(-)
52```
53
54Shaarli >= `v0.8.x`: install/update third-party PHP dependencies using [Composer](https://getcomposer.org/):[](.html)
55
56```bash
57$ composer update --no-dev
58
59Loading composer repositories with package information
60Updating dependencies
61 - Installing shaarli/netscape-bookmark-parser (v1.0.1)
62 Downloading: 100%
63```
64
65### Migrating and upgrading from Sebsauvage's repository
66If you have installed Shaarli from [Sebsauvage's original Git repository](https://github.com/sebsauvage/Shaarli), you can use [Git remotes](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) to update your working copy.[](.html)
67
68The following guide assumes that:
69- you have a basic knowledge of Git [branching](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) and [remote repositories](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes)[](.html)
70- the default remote is named `origin` and points to Sebsauvage's repository
71- the current branch is `master`
72 - if you have personal branches containing customizations, you will need to [rebase them](https://git-scm.com/book/en/v2/Git-Branching-Rebasing) after the upgrade; beware though, a lot of changes have been made since the community fork has been created, so things are very likely to break![](.html)
73- the working copy is clean:
74 - no versioned file has been locally modified
75 - no untracked files are present
76
77#### Step 0: show repository information
78```bash
79$ cd /path/to/shaarli
80
81$ git remote -v
82origin https://github.com/sebsauvage/Shaarli (fetch)
83origin https://github.com/sebsauvage/Shaarli (push)
84
85$ git branch -vv
86* master 029f75f [origin/master] Update README.md[](.html)
87
88$ git status
89On branch master
90Your branch is up-to-date with 'origin/master'.
91nothing to commit, working directory clean
92```
93
94#### Step 1: update Git remotes
95```
96$ git remote rename origin sebsauvage
97$ git remote -v
98sebsauvage https://github.com/sebsauvage/Shaarli (fetch)
99sebsauvage https://github.com/sebsauvage/Shaarli (push)
100
101$ git remote add origin https://github.com/shaarli/Shaarli
102$ git fetch origin
103
104remote: Counting objects: 3015, done.
105remote: Compressing objects: 100% (19/19), done.
106remote: Total 3015 (delta 446), reused 457 (delta 446), pack-reused 2550
107Receiving objects: 100% (3015/3015), 2.59 MiB | 918.00 KiB/s, done.
108Resolving deltas: 100% (1899/1899), completed with 48 local objects.
109From https://github.com/shaarli/Shaarli
110 * [new branch] master -> origin/master[](.html)
111 * [new branch] stable -> origin/stable[](.html)
112[...][](.html)
113 * [new tag] v0.6.4 -> v0.6.4[](.html)
114 * [new tag] v0.7.0 -> v0.7.0[](.html)
115```
116
117#### Step 2: use the stable community branch
118
119```bash
120$ git checkout origin/stable -b stable
121Branch stable set up to track remote branch stable from origin.
122Switched to a new branch 'stable'
123
124$ git branch -vv
125 master 029f75f [sebsauvage/master] Update README.md[](.html)
126* stable 890afc3 [origin/stable] Merge pull request #509 from ArthurHoaro/v0.6.5[](.html)
127```
128
129Shaarli >= `v0.8.x`: install/update third-party PHP dependencies using [Composer](https://getcomposer.org/):[](.html)
130
131```bash
132$ composer update --no-dev
133
134Loading composer repositories with package information
135Updating dependencies
136 - Installing shaarli/netscape-bookmark-parser (v1.0.1)
137 Downloading: 100%
138```
139
140Optionally, you can delete information related to the legacy version:
141
142```bash
143$ git branch -D master
144Deleted branch master (was 029f75f).
145
146$ git remote remove sebsauvage
147
148$ git remote -v
149origin https://github.com/shaarli/Shaarli (fetch)
150origin https://github.com/shaarli/Shaarli (push)
151
152$ git gc
153Counting objects: 3317, done.
154Delta compression using up to 8 threads.
155Compressing objects: 100% (1237/1237), done.
156Writing objects: 100% (3317/3317), done.
157Total 3317 (delta 2050), reused 3301 (delta 2034)to
158```
159
160#### Step 3: configuration
161After migrating, access your fresh Shaarli installation from a web browser; the configuration will then be automatically updated, and new settings added to `data/config.php` (see [Shaarli configuration](Shaarli-configuration.html) for more details).
diff --git a/doc/Upgrade-from-original-sebsauvage-Shaarli.html b/doc/Upgrade-from-original-sebsauvage-Shaarli.html
deleted file mode 100644
index db69a0ed..00000000
--- a/doc/Upgrade-from-original-sebsauvage-Shaarli.html
+++ /dev/null
@@ -1,74 +0,0 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset="utf-8">
5 <meta name="generator" content="pandoc">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
7 <title>Shaarli – Upgrade from original sebsauvage Shaarli</title>
8 <style type="text/css">code{white-space: pre;}</style>
9 <link rel="stylesheet" href="github-markdown.css">
10 <!--[if lt IE 9]>
11 <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
12 <![endif]-->
13</head>
14<body>
15<div id="local-sidebar">
16<ul>
17<li><a href="Home.html">Home</a></li>
18<li>Installation
19<ul>
20<li><a href="Download.html">Download</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li>
28<li><a href="Docker.html">Docker</a></li>
29<li><a href="Usage.html">Usage</a>
30<ul>
31<li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li>
32<li><a href="Browsing-and-Searching.html">Browsing and Searching</a></li>
33<li><a href="Firefox-share.html">Firefox share</a></li>
34<li><a href="RSS-feeds.html">RSS feeds</a></li>
35</ul></li>
36<li>How To
37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
43<li><a href="Datastore-hacks.html">Datastore hacks</a></li>
44</ul></li>
45<li><a href="Troubleshooting.html">Troubleshooting</a></li>
46<li><a href="Development.html">Development</a>
47<ul>
48<li><a href="GnuPG-signature.html">GnuPG signature</a></li>
49<li><a href="Coding-guidelines.html">Coding guidelines</a></li>
50<li><a href="Directory-structure.html">Directory structure</a></li>
51<li><a href="3rd-party-libraries.html">3rd party libraries</a></li>
52<li><a href="Plugin-System.html">Plugin System</a></li>
53<li><a href="Release-Shaarli.html">Release Shaarli</a></li>
54<li><a href="Security.html">Security</a></li>
55<li><a href="Static-analysis.html">Static analysis</a></li>
56<li><a href="Theming.html">Theming</a></li>
57<li><a href="Unit-tests.html">Unit tests</a></li>
58</ul></li>
59<li>About
60<ul>
61<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li>
65</ul>
66</div>
67<h1 id="upgrade-from-original-sebsauvage-shaarli">Upgrade from original sebsauvage Shaarli</h1>
68<ul>
69<li>Backup your original <code>data/</code> directory.</li>
70<li><a href="https://github.com/shaarli/Shaarli#installation--upgrade">Install</a> and setup the Shaarli community fork.<a href=".html"></a></li>
71<li>Copy your original <code>data</code> directory over the new installation.</li>
72</ul>
73</body>
74</html>
diff --git a/doc/Upgrade-from-original-sebsauvage-Shaarli.md b/doc/Upgrade-from-original-sebsauvage-Shaarli.md
deleted file mode 100644
index 6ae0c67b..00000000
--- a/doc/Upgrade-from-original-sebsauvage-Shaarli.md
+++ /dev/null
@@ -1,4 +0,0 @@
1#Upgrade from original sebsauvage Shaarli
2 * Backup your original `data/` directory.
3 * [Install](https://github.com/shaarli/Shaarli#installation--upgrade) and setup the Shaarli community fork.[](.html)
4 * Copy your original `data` directory over the new installation.
diff --git a/doc/Usage.html b/doc/Usage.html
index 2befaa02..63f21d93 100644
--- a/doc/Usage.html
+++ b/doc/Usage.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,7 +59,6 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
diff --git a/doc/_Footer.html b/doc/_Footer.html
index a054cc53..e8a62d2a 100644
--- a/doc/_Footer.html
+++ b/doc/_Footer.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,11 +59,10 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
67<h1 id="footer-shaarli-the-personal-minimalist-super-fast-no-database-delicious-clone">_Footer<br /> 65<h1 id="footer-shaarli-the-personal-minimalist-super-fast-database-free-bookmarking-service">_Footer<br />
68<em>Shaarli, the personal, minimalist, super-fast, no-database delicious clone</em></h1> 66<em>Shaarli, the personal, minimalist, super-fast, database-free bookmarking service</em></h1>
69</body> 67</body>
70</html> 68</html>
diff --git a/doc/_Footer.md b/doc/_Footer.md
index 29c39bb6..50fa4f56 100644
--- a/doc/_Footer.md
+++ b/doc/_Footer.md
@@ -1,2 +1,2 @@
1#_Footer 1#_Footer
2_Shaarli, the personal, minimalist, super-fast, no-database delicious clone_ 2_Shaarli, the personal, minimalist, super-fast, database-free bookmarking service_
diff --git a/doc/_Sidebar.html b/doc/_Sidebar.html
index 89c2cf8a..bb6dad93 100644
--- a/doc/_Sidebar.html
+++ b/doc/_Sidebar.html
@@ -15,13 +15,13 @@
15<div id="local-sidebar"> 15<div id="local-sidebar">
16<ul> 16<ul>
17<li><a href="Home.html">Home</a></li> 17<li><a href="Home.html">Home</a></li>
18<li>Installation 18<li>Setup
19<ul> 19<ul>
20<li><a href="Download.html">Download</a></li> 20<li><a href="Download-and-Installation.html">Download and Installation</a></li>
21<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
21<li><a href="Server-requirements.html">Server requirements</a></li> 22<li><a href="Server-requirements.html">Server requirements</a></li>
22<li><a href="Server-configuration.html">Server configuration</a></li> 23<li><a href="Server-configuration.html">Server configuration</a></li>
23<li><a href="Server-security.html">Server security</a></li> 24<li><a href="Server-security.html">Server security</a></li>
24<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 25<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
26<li><a href="Plugins.html">Plugins</a></li> 26<li><a href="Plugins.html">Plugins</a></li>
27</ul></li> 27</ul></li>
@@ -36,7 +36,6 @@
36<li>How To 36<li>How To
37<ul> 37<ul>
38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 38<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
39<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
40<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 39<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
41<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 40<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
42<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 41<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -60,20 +59,19 @@
60<ul> 59<ul>
61<li><a href="FAQ.html">FAQ</a></li> 60<li><a href="FAQ.html">FAQ</a></li>
62<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 61<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
63<li><a href="TODO.html">TODO</a></li>
64</ul></li> 62</ul></li>
65</ul> 63</ul>
66</div> 64</div>
67<h1 id="sidebar">_Sidebar</h1> 65<h1 id="sidebar">_Sidebar</h1>
68<ul> 66<ul>
69<li><a href="Home.html">Home</a></li> 67<li><a href="Home.html">Home</a></li>
70<li>Installation 68<li>Setup
71<ul> 69<ul>
72<li><a href="Download.html">Download</a></li> 70<li><a href="Download-and-Installation.html">Download and Installation</a></li>
71<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
73<li><a href="Server-requirements.html">Server requirements</a></li> 72<li><a href="Server-requirements.html">Server requirements</a></li>
74<li><a href="Server-configuration.html">Server configuration</a></li> 73<li><a href="Server-configuration.html">Server configuration</a></li>
75<li><a href="Server-security.html">Server security</a></li> 74<li><a href="Server-security.html">Server security</a></li>
76<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
77<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 75<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
78<li><a href="Plugins.html">Plugins</a></li> 76<li><a href="Plugins.html">Plugins</a></li>
79</ul></li> 77</ul></li>
@@ -88,7 +86,6 @@
88<li>How To 86<li>How To
89<ul> 87<ul>
90<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 88<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
91<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
92<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 89<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
93<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 90<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
94<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 91<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -112,7 +109,6 @@
112<ul> 109<ul>
113<li><a href="FAQ.html">FAQ</a></li> 110<li><a href="FAQ.html">FAQ</a></li>
114<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 111<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
115<li><a href="TODO.html">TODO</a></li>
116</ul></li> 112</ul></li>
117</ul> 113</ul>
118</body> 114</body>
diff --git a/doc/_Sidebar.md b/doc/_Sidebar.md
index 7c71f462..1778e3a3 100644
--- a/doc/_Sidebar.md
+++ b/doc/_Sidebar.md
@@ -1,11 +1,11 @@
1#_Sidebar 1#_Sidebar
2- [Home](Home.html) 2- [Home](Home.html)
3- Installation 3- Setup
4 - [Download](Download.html) 4 - [Download and Installation](Download-and-Installation.html)
5 - [Upgrade and migration](Upgrade-and-migration.html)
5 - [Server requirements](Server-requirements.html) 6 - [Server requirements](Server-requirements.html)
6 - [Server configuration](Server-configuration.html) 7 - [Server configuration](Server-configuration.html)
7 - [Server security](Server-security.html) 8 - [Server security](Server-security.html)
8 - [Shaarli installation](Shaarli-installation.html)
9 - [Shaarli configuration](Shaarli-configuration.html) 9 - [Shaarli configuration](Shaarli-configuration.html)
10 - [Plugins](Plugins.html) 10 - [Plugins](Plugins.html)
11- [Docker](Docker.html) 11- [Docker](Docker.html)
@@ -16,7 +16,6 @@
16 - [RSS feeds](RSS-feeds.html) 16 - [RSS feeds](RSS-feeds.html)
17- How To 17- How To
18 - [Backup, restore, import and export](Backup,-restore,-import-and-export.html) 18 - [Backup, restore, import and export](Backup,-restore,-import-and-export.html)
19 - [Upgrade from original sebsauvage/Shaarli](Upgrade-from-original-sebsauvage/Shaarli.html)
20 - [Copy an existing installation over SSH and serve it locally](Copy-an-existing-installation-over-SSH-and-serve-it-locally.html) 19 - [Copy an existing installation over SSH and serve it locally](Copy-an-existing-installation-over-SSH-and-serve-it-locally.html)
21 - [Create and serve multiple Shaarlis (farm)](Create-and-serve-multiple-Shaarlis-(farm).html) 20 - [Create and serve multiple Shaarlis (farm)](Create-and-serve-multiple-Shaarlis-(farm).html)
22 - [Download CSS styles from an OPML list](Download-CSS-styles-from-an-OPML-list.html) 21 - [Download CSS styles from an OPML list](Download-CSS-styles-from-an-OPML-list.html)
@@ -36,4 +35,3 @@
36- About 35- About
37 - [FAQ](FAQ.html) 36 - [FAQ](FAQ.html)
38 - [Community & Related software](Community-&-Related-software.html) 37 - [Community & Related software](Community-&-Related-software.html)
39 - [TODO](TODO.html)
diff --git a/doc/sidebar.html b/doc/sidebar.html
index 62844581..4dad0161 100644
--- a/doc/sidebar.html
+++ b/doc/sidebar.html
@@ -1,13 +1,13 @@
1<div id="local-sidebar"> 1<div id="local-sidebar">
2<ul> 2<ul>
3<li><a href="Home.html">Home</a></li> 3<li><a href="Home.html">Home</a></li>
4<li>Installation 4<li>Setup
5<ul> 5<ul>
6<li><a href="Download.html">Download</a></li> 6<li><a href="Download-and-Installation.html">Download and Installation</a></li>
7<li><a href="Upgrade-and-migration.html">Upgrade and migration</a></li>
7<li><a href="Server-requirements.html">Server requirements</a></li> 8<li><a href="Server-requirements.html">Server requirements</a></li>
8<li><a href="Server-configuration.html">Server configuration</a></li> 9<li><a href="Server-configuration.html">Server configuration</a></li>
9<li><a href="Server-security.html">Server security</a></li> 10<li><a href="Server-security.html">Server security</a></li>
10<li><a href="Shaarli-installation.html">Shaarli installation</a></li>
11<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> 11<li><a href="Shaarli-configuration.html">Shaarli configuration</a></li>
12<li><a href="Plugins.html">Plugins</a></li> 12<li><a href="Plugins.html">Plugins</a></li>
13</ul></li> 13</ul></li>
@@ -22,7 +22,6 @@
22<li>How To 22<li>How To
23<ul> 23<ul>
24<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> 24<li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li>
25<li><a href="Upgrade-from-original-sebsauvage/Shaarli.html">Upgrade from original sebsauvage/Shaarli</a></li>
26<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> 25<li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li>
27<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li> 26<li><a href="Create-and-serve-multiple-Shaarlis-(farm).html">Create and serve multiple Shaarlis (farm)</a></li>
28<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> 27<li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li>
@@ -46,7 +45,6 @@
46<ul> 45<ul>
47<li><a href="FAQ.html">FAQ</a></li> 46<li><a href="FAQ.html">FAQ</a></li>
48<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li> 47<li><a href="Community-&amp;-Related-software.html">Community &amp; Related software</a></li>
49<li><a href="TODO.html">TODO</a></li>
50</ul></li> 48</ul></li>
51</ul> 49</ul>
52</div> 50</div>
diff --git a/index.php b/index.php
index c6f86c59..5bc13d49 100644
--- a/index.php
+++ b/index.php
@@ -1,6 +1,6 @@
1<?php 1<?php
2/** 2/**
3 * Shaarli v0.7.0 - Shaare your links... 3 * Shaarli v0.8.0 - Shaare your links...
4 * 4 *
5 * The personal, minimalist, super-fast, database free, bookmarking service. 5 * The personal, minimalist, super-fast, database free, bookmarking service.
6 * 6 *
@@ -25,7 +25,7 @@ if (date_default_timezone_get() == '') {
25/* 25/*
26 * PHP configuration 26 * PHP configuration
27 */ 27 */
28define('shaarli_version', '0.7.0'); 28define('shaarli_version', '0.8.0');
29 29
30// http://server.com/x/shaarli --> /shaarli/ 30// http://server.com/x/shaarli --> /shaarli/
31define('WEB_PATH', substr($_SERVER['REQUEST_URI'], 0, 1+strrpos($_SERVER['REQUEST_URI'], '/', 0))); 31define('WEB_PATH', substr($_SERVER['REQUEST_URI'], 0, 1+strrpos($_SERVER['REQUEST_URI'], '/', 0)));
@@ -332,8 +332,17 @@ include $conf->get('resource.ban_file', 'data/ipbans.php');
332function ban_loginFailed($conf) 332function ban_loginFailed($conf)
333{ 333{
334 $ip = $_SERVER['REMOTE_ADDR']; 334 $ip = $_SERVER['REMOTE_ADDR'];
335 $trusted = $conf->get('security.trusted_proxies', array());
336 if (in_array($ip, $trusted)) {
337 $ip = getIpAddressFromProxy($_SERVER, $trusted);
338 if (!$ip) {
339 return;
340 }
341 }
335 $gb = $GLOBALS['IPBANS']; 342 $gb = $GLOBALS['IPBANS'];
336 if (!isset($gb['FAILURES'][$ip])) $gb['FAILURES'][$ip]=0; 343 if (! isset($gb['FAILURES'][$ip])) {
344 $gb['FAILURES'][$ip]=0;
345 }
337 $gb['FAILURES'][$ip]++; 346 $gb['FAILURES'][$ip]++;
338 if ($gb['FAILURES'][$ip] > ($conf->get('security.ban_after') - 1)) 347 if ($gb['FAILURES'][$ip] > ($conf->get('security.ban_after') - 1))
339 { 348 {
@@ -1236,6 +1245,9 @@ function renderPage($conf, $pluginManager)
1236 // -------- User clicked the "Save" button when editing a link: Save link to database. 1245 // -------- User clicked the "Save" button when editing a link: Save link to database.
1237 if (isset($_POST['save_edit'])) 1246 if (isset($_POST['save_edit']))
1238 { 1247 {
1248 $linkdate = $_POST['lf_linkdate'];
1249 $updated = isset($LINKSDB[$linkdate]) ? strval(date('Ymd_His')) : false;
1250
1239 // Go away! 1251 // Go away!
1240 if (! tokenOk($_POST['token'])) { 1252 if (! tokenOk($_POST['token'])) {
1241 die('Wrong token.'); 1253 die('Wrong token.');
@@ -1246,7 +1258,7 @@ function renderPage($conf, $pluginManager)
1246 $tags = preg_replace('/(^| )\-/', '$1', $tags); 1258 $tags = preg_replace('/(^| )\-/', '$1', $tags);
1247 // Remove duplicates. 1259 // Remove duplicates.
1248 $tags = implode(' ', array_unique(explode(' ', $tags))); 1260 $tags = implode(' ', array_unique(explode(' ', $tags)));
1249 $linkdate = $_POST['lf_linkdate']; 1261
1250 $url = trim($_POST['lf_url']); 1262 $url = trim($_POST['lf_url']);
1251 if (! startsWith($url, 'http:') && ! startsWith($url, 'https:') 1263 if (! startsWith($url, 'http:') && ! startsWith($url, 'https:')
1252 && ! startsWith($url, 'ftp:') && ! startsWith($url, 'magnet:') 1264 && ! startsWith($url, 'ftp:') && ! startsWith($url, 'magnet:')
@@ -1261,6 +1273,7 @@ function renderPage($conf, $pluginManager)
1261 'description' => $_POST['lf_description'], 1273 'description' => $_POST['lf_description'],
1262 'private' => (isset($_POST['lf_private']) ? 1 : 0), 1274 'private' => (isset($_POST['lf_private']) ? 1 : 0),
1263 'linkdate' => $linkdate, 1275 'linkdate' => $linkdate,
1276 'updated' => $updated,
1264 'tags' => str_replace(',', ' ', $tags) 1277 'tags' => str_replace(',', ' ', $tags)
1265 ); 1278 );
1266 // If title is empty, use the URL as title. 1279 // If title is empty, use the URL as title.
@@ -1624,6 +1637,12 @@ function buildLinkList($PAGE,$LINKSDB, $conf, $pluginManager)
1624 $link['class'] = $link['private'] == 0 ? $classLi : 'private'; 1637 $link['class'] = $link['private'] == 0 ? $classLi : 'private';
1625 $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']); 1638 $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']);
1626 $link['timestamp'] = $date->getTimestamp(); 1639 $link['timestamp'] = $date->getTimestamp();
1640 if (! empty($link['updated'])) {
1641 $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['updated']);
1642 $link['updated_timestamp'] = $date->getTimestamp();
1643 } else {
1644 $link['updated_timestamp'] = '';
1645 }
1627 $taglist = explode(' ', $link['tags']); 1646 $taglist = explode(' ', $link['tags']);
1628 uasort($taglist, 'strcasecmp'); 1647 uasort($taglist, 'strcasecmp');
1629 $link['taglist'] = $taglist; 1648 $link['taglist'] = $taglist;
diff --git a/shaarli_version.php b/shaarli_version.php
index 3c89e94f..eaab95c6 100644
--- a/shaarli_version.php
+++ b/shaarli_version.php
@@ -1 +1 @@
<?php /* 0.7.0 */ ?> <?php /* 0.8.0 */ ?>
diff --git a/tests/FeedBuilderTest.php b/tests/FeedBuilderTest.php
index 460fb0c5..c9ff397d 100644
--- a/tests/FeedBuilderTest.php
+++ b/tests/FeedBuilderTest.php
@@ -76,7 +76,7 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase
76 // Test headers (RSS) 76 // Test headers (RSS)
77 $this->assertEquals(self::$RSS_LANGUAGE, $data['language']); 77 $this->assertEquals(self::$RSS_LANGUAGE, $data['language']);
78 $this->assertEmpty($data['pubsubhub_url']); 78 $this->assertEmpty($data['pubsubhub_url']);
79 $this->assertRegExp('/Tue, 10 Mar 2015 11:46:51 \+\d{4}/', $data['last_update']); 79 $this->assertRegExp('/Wed, 03 Aug 2016 09:30:33 \+\d{4}/', $data['last_update']);
80 $this->assertEquals(true, $data['show_dates']); 80 $this->assertEquals(true, $data['show_dates']);
81 $this->assertEquals('http://host.tld/index.php?do=feed', $data['self_link']); 81 $this->assertEquals('http://host.tld/index.php?do=feed', $data['self_link']);
82 $this->assertEquals('http://host.tld/', $data['index_url']); 82 $this->assertEquals('http://host.tld/', $data['index_url']);
@@ -88,7 +88,10 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase
88 $this->assertEquals('20150310_114651', $link['linkdate']); 88 $this->assertEquals('20150310_114651', $link['linkdate']);
89 $this->assertEquals('http://host.tld/?WDWyig', $link['guid']); 89 $this->assertEquals('http://host.tld/?WDWyig', $link['guid']);
90 $this->assertEquals('http://host.tld/?WDWyig', $link['url']); 90 $this->assertEquals('http://host.tld/?WDWyig', $link['url']);
91 $this->assertRegExp('/Tue, 10 Mar 2015 11:46:51 \+\d{4}/', $link['iso_date']); 91 $this->assertRegExp('/Tue, 10 Mar 2015 11:46:51 \+\d{4}/', $link['pub_iso_date']);
92 $pub = DateTime::createFromFormat(DateTime::RSS, $link['pub_iso_date']);
93 $up = DateTime::createFromFormat(DateTime::ATOM, $link['up_iso_date']);
94 $this->assertEquals($pub, $up);
92 $this->assertContains('Stallman has a beard', $link['description']); 95 $this->assertContains('Stallman has a beard', $link['description']);
93 $this->assertContains('Permalink', $link['description']); 96 $this->assertContains('Permalink', $link['description']);
94 $this->assertContains('http://host.tld/?WDWyig', $link['description']); 97 $this->assertContains('http://host.tld/?WDWyig', $link['description']);
@@ -101,6 +104,9 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase
101 // Test multitags. 104 // Test multitags.
102 $this->assertEquals(5, count($data['links']['20141125_084734']['taglist'])); 105 $this->assertEquals(5, count($data['links']['20141125_084734']['taglist']));
103 $this->assertEquals('css', $data['links']['20141125_084734']['taglist'][0]); 106 $this->assertEquals('css', $data['links']['20141125_084734']['taglist'][0]);
107
108 // Test update date
109 $this->assertRegExp('/2016-08-03T09:30:33\+\d{2}:\d{2}/', $data['links']['20150310_114633']['up_iso_date']);
104 } 110 }
105 111
106 /** 112 /**
@@ -112,8 +118,10 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase
112 $feedBuilder->setLocale(self::$LOCALE); 118 $feedBuilder->setLocale(self::$LOCALE);
113 $data = $feedBuilder->buildData(); 119 $data = $feedBuilder->buildData();
114 $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); 120 $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links']));
121 $this->assertRegExp('/2016-08-03T09:30:33\+\d{2}:\d{2}/', $data['last_update']);
115 $link = array_shift($data['links']); 122 $link = array_shift($data['links']);
116 $this->assertRegExp('/2015-03-10T11:46:51\+\d{2}:+\d{2}/', $link['iso_date']); 123 $this->assertRegExp('/2015-03-10T11:46:51\+\d{2}:\d{2}/', $link['pub_iso_date']);
124 $this->assertRegExp('/2016-08-03T09:30:33\+\d{2}:\d{2}/', $data['links']['20150310_114633']['up_iso_date']);
117 } 125 }
118 126
119 /** 127 /**
diff --git a/tests/HttpUtils/GetIpAdressFromProxyTest.php b/tests/HttpUtils/GetIpAdressFromProxyTest.php
new file mode 100644
index 00000000..6a74a45a
--- /dev/null
+++ b/tests/HttpUtils/GetIpAdressFromProxyTest.php
@@ -0,0 +1,58 @@
1<?php
2
3require_once 'application/HttpUtils.php';
4
5/**
6 * Unitary tests for getIpAddressFromProxy()
7 */
8class GetIpAdressFromProxyTest extends PHPUnit_Framework_TestCase {
9
10 /**
11 * Test without proxy
12 */
13 public function testWithoutProxy()
14 {
15 $this->assertFalse(getIpAddressFromProxy(array(), array()));
16 }
17
18 /**
19 * Test with a single IP in proxy header.
20 */
21 public function testWithOneForwardedIp()
22 {
23 $ip = '1.1.1.1';
24 $server = array('HTTP_X_FORWARDED_FOR' => $ip);
25 $this->assertEquals($ip, getIpAddressFromProxy($server, array()));
26 }
27
28 /**
29 * Test with a multiple IPs in proxy header.
30 */
31 public function testWithMultipleForwardedIp()
32 {
33 $ip = '1.1.1.1';
34 $ip2 = '2.2.2.2';
35
36 $server = array('HTTP_X_FORWARDED_FOR' => $ip .','. $ip2);
37 $this->assertEquals($ip2, getIpAddressFromProxy($server, array()));
38
39 $server = array('HTTP_X_FORWARDED_FOR' => $ip .' , '. $ip2);
40 $this->assertEquals($ip2, getIpAddressFromProxy($server, array()));
41 }
42
43 /**
44 * Test with a trusted IP address.
45 */
46 public function testWithTrustedIp()
47 {
48 $ip = '1.1.1.1';
49 $ip2 = '2.2.2.2';
50
51 $server = array('HTTP_X_FORWARDED_FOR' => $ip);
52 $this->assertFalse(getIpAddressFromProxy($server, array($ip)));
53
54 $server = array('HTTP_X_FORWARDED_FOR' => $ip .','. $ip2);
55 $this->assertEquals($ip2, getIpAddressFromProxy($server, array($ip)));
56 $this->assertFalse(getIpAddressFromProxy($server, array($ip, $ip2)));
57 }
58}
diff --git a/tests/utils/ReferenceLinkDB.php b/tests/utils/ReferenceLinkDB.php
index fcc7a4f9..937961c8 100644
--- a/tests/utils/ReferenceLinkDB.php
+++ b/tests/utils/ReferenceLinkDB.php
@@ -30,7 +30,8 @@ class ReferenceLinkDB
30 'Richard Stallman and the Free Software Revolution. Read this. #hashtag', 30 'Richard Stallman and the Free Software Revolution. Read this. #hashtag',
31 0, 31 0,
32 '20150310_114633', 32 '20150310_114633',
33 'free gnu software stallman -exclude stuff hashtag' 33 'free gnu software stallman -exclude stuff hashtag',
34 '20160803_093033'
34 ); 35 );
35 36
36 $this->addLink( 37 $this->addLink(
@@ -82,7 +83,7 @@ class ReferenceLinkDB
82 /** 83 /**
83 * Adds a new link 84 * Adds a new link
84 */ 85 */
85 protected function addLink($title, $url, $description, $private, $date, $tags) 86 protected function addLink($title, $url, $description, $private, $date, $tags, $updated = '')
86 { 87 {
87 $link = array( 88 $link = array(
88 'title' => $title, 89 'title' => $title,
@@ -91,6 +92,7 @@ class ReferenceLinkDB
91 'private' => $private, 92 'private' => $private,
92 'linkdate' => $date, 93 'linkdate' => $date,
93 'tags' => $tags, 94 'tags' => $tags,
95 'updated' => $updated,
94 ); 96 );
95 $this->_links[$date] = $link; 97 $this->_links[$date] = $link;
96 98
diff --git a/tpl/feed.atom.html b/tpl/feed.atom.html
index 2ebb162a..1932f507 100644
--- a/tpl/feed.atom.html
+++ b/tpl/feed.atom.html
@@ -27,7 +27,8 @@
27 {/if} 27 {/if}
28 <id>{$value.guid}</id> 28 <id>{$value.guid}</id>
29 {if="$show_dates"} 29 {if="$show_dates"}
30 <updated>{$value.iso_date}</updated> 30 <published>{$value.pub_iso_date}</published>
31 <updated>{$value.up_iso_date}</updated>
31 {/if} 32 {/if}
32 <content type="html" xml:lang="{$language}"> 33 <content type="html" xml:lang="{$language}">
33 <![CDATA[{$value.description}]]> 34 <![CDATA[{$value.description}]]>
diff --git a/tpl/feed.rss.html b/tpl/feed.rss.html
index 26de7f19..4bfe4196 100644
--- a/tpl/feed.rss.html
+++ b/tpl/feed.rss.html
@@ -22,7 +22,8 @@
22 <link>{$value.url}</link> 22 <link>{$value.url}</link>
23 {/if} 23 {/if}
24 {if="$show_dates"} 24 {if="$show_dates"}
25 <pubDate>{$value.iso_date}</pubDate> 25 <pubDate>{$value.pub_iso_date}</pubDate>
26 <atom:modified>{$value.up_iso_date}</atom:modified>
26 {/if} 27 {/if}
27 <description><![CDATA[{$value.description}]]></description> 28 <description><![CDATA[{$value.description}]]></description>
28 {loop="$value.taglist"} 29 {loop="$value.taglist"}
diff --git a/tpl/linklist.html b/tpl/linklist.html
index 2316f145..9979f12a 100644
--- a/tpl/linklist.html
+++ b/tpl/linklist.html
@@ -89,7 +89,16 @@
89 <br> 89 <br>
90 {if="$value.description"}<div class="linkdescription">{$value.description}</div>{/if} 90 {if="$value.description"}<div class="linkdescription">{$value.description}</div>{/if}
91 {if="!$hide_timestamps || isLoggedIn()"} 91 {if="!$hide_timestamps || isLoggedIn()"}
92 <span class="linkdate" title="Permalink"><a href="?{$value.linkdate|smallHash}">{function="strftime('%c', $value.timestamp)"} - permalink</a> - </span> 92 {$updated=$value.updated_timestamp ? 'Edited: '. strftime('%c', $value.updated_timestamp) : 'Permalink'}
93 <span class="linkdate" title="Permalink">
94 <a href="?{$value.linkdate|smallHash}">
95 <span title="{$updated}">
96 {function="strftime('%c', $value.timestamp)"}
97 {if="$value.updated_timestamp"}*{/if}
98 </span>
99 - permalink
100 </a> -
101 </span>
93 {else} 102 {else}
94 <span class="linkdate" title="Short link here"><a href="?{$value.shorturl}">permalink</a> - </span> 103 <span class="linkdate" title="Short link here"><a href="?{$value.shorturl}">permalink</a> - </span>
95 {/if} 104 {/if}