<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Alteroot:~#</title>
    <link>https://blog.alteroot.org/index.html</link>
    <description>Recent content on Alteroot:~#</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 12 Sep 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.alteroot.org/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>New blog engine!</title>
      <link>https://blog.alteroot.org/articles/2025-09-12/newblog-2025.html</link>
      <pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2025-09-12/newblog-2025.html</guid>
      <description>&lt;p&gt;Ok, the last article was 5 years ago, setup was 12 years old, time for a revamp!&lt;/p&gt;&#xA;&lt;p&gt;I switched from jekyllrb to &lt;a href=&#34;https://gohugo.io/&#34;&gt;gohugo&lt;/a&gt;, with a new &amp;ldquo;modern&amp;rdquo; theme, and imported all articles. URLs should be stay same.&lt;/p&gt;&#xA;&lt;p&gt;I hope LLM scrapper will love it ;-)&lt;/p&gt;&#xA;&lt;p&gt;Maybe I&amp;rsquo;ll write some new posts, I&amp;rsquo;m still kinda involved in Xfce (on the infra side), and I work again with Apache Cassandra at $job, so… :)&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Xfce infrastructure in 2020</title>
      <link>https://blog.alteroot.org/articles/2020-07-18/xfce-infrastructure-2020.html</link>
      <pubDate>Sat, 18 Jul 2020 10:21:00 +0200</pubDate>
      <guid>https://blog.alteroot.org/articles/2020-07-18/xfce-infrastructure-2020.html</guid>
      <description>&lt;p&gt;Oh boy, 3 years without any blogpost ! So much things happened in the Xfce world!&lt;br&gt;&#xA;First, we finally released &lt;a href=&#34;https://www.xfce.org/about/news/?post=1565568000&#34;&gt;Xfce 4.14&lt;/a&gt; in August 2019, more than 4 years of effort, a migration to gtk3, and so much new things, but you already know that, and you surely already run it.&#xA;We are now working on &lt;a href=&#34;https://wiki.xfce.org/releng/4.16/roadmap&#34;&gt;Xfce 4.16&lt;/a&gt; , with the hope to release it this year  (yes, in 2020) !&lt;br&gt;&#xA;You can read more development news on our &lt;a href=&#34;https://blog.xfce.org&#34;&gt;blog&lt;/a&gt;.&lt;br&gt;&#xA;Some buzzwords: new icons, CSD, drop of gtk2 support, UI revamp, and tons of other stuff.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.alteroot.org/media/images/xfce4-settings-manager-4.15.png&#34;&gt;&lt;img src=&#34;https://blog.alteroot.org/media/images/xfce4-settings-manager-4.15.png&#34; alt=&#34;xfce4-setting-manager 4.15&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I want to talk a bit about the infrastructure.&lt;br&gt;&#xA;Last year, we had a &lt;a href=&#34;https://gandi.net&#34;&gt;Gandi&lt;/a&gt; sponsorship for our servers. I started an Ansible repository with all our services (no more -undocumented- local modifications!), and we migrated a big part of our infra to the new servers (docs, www, wiki etc).&lt;/p&gt;&#xA;&lt;p&gt;Then came the time to think about our development environment. We used the &lt;code&gt;cgit/gitolite/bugzilla&lt;/code&gt; triptych, which worked fine for us for more than a decade, but make difficulty to have new contributor (our workflow was…hm, suboptimal).&lt;br&gt;&#xA;We tested differents solutions (mainly Gitea and GitLab), and we opted for the famous &lt;a href=&#34;https://about.gitlab.com&#34;&gt;Gitlab&lt;/a&gt;, already used by multiples open source projects. In the core team we were several to use it at work, so we were in a familiar environment.&lt;/p&gt;&#xA;&lt;p&gt;For months, a gitlab was running on one of our Gandi instance, to do tests and prepare the transition.&lt;/p&gt;&#xA;&lt;p&gt;But it was so much work that we never started the real migration. Then came the Covid-19 lockdown. No friends, no bars, lot of free time, so why not spent it on Xfce ?&lt;/p&gt;&#xA;&lt;p&gt;With Simon (ochosi) and Andre (andreldm), we started to use our own gitlab by opening issues, creating todo, doing merge requests etc related to the migration.&lt;br&gt;&#xA;The 1st of May, we finally did &lt;a href=&#34;https://simon.shimmerproject.org/2020/04/30/xfce-switches-to-gitlab/&#34;&gt;the migration to GitLab&lt;/a&gt; ! Woot !&lt;/p&gt;&#xA;&lt;p&gt;Jason (j4yav), working for Gitlab inc, joined us and proposed to help us for the Gitlab CI/CD setup. At the same time, we got a new (sponsored !) VM from &lt;a href=&#34;https://fosshost.org/&#34;&gt;FossHost&lt;/a&gt; ! Perfect timing, we can now run a dedicated &lt;code&gt;gitlab-runner&lt;/code&gt; instance, and we &lt;a href=&#34;https://simon.shimmerproject.org/2020/05/10/gitlab-ci-is-up-and-running/&#34;&gt;started to use gitlab-ci&lt;/a&gt; !&lt;/p&gt;&#xA;&lt;p&gt;As of July 2020, almost all &lt;code&gt;Xfce&lt;/code&gt; components (core, apps, panel plugins) run &lt;code&gt;make distcheck&lt;/code&gt; on every merge requests and push to master, thanks to our &lt;a href=&#34;https://hub.docker.com/r/xfce/xfce-build/tags&#34;&gt;xfce-build&lt;/a&gt; docker container.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.alteroot.org/media/images/xfce-gitlab-pipelines.png&#34;&gt;&lt;img src=&#34;https://blog.alteroot.org/media/images/xfce-gitlab-pipelines.png&#34; alt=&#34;xfce gitlab-ci pipelines&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Now that we have a beautiful &lt;a href=&#34;https://gitlab.xfce.org&#34;&gt;GitLab&lt;/a&gt;, merge requests and CI, the only missing part was… the migration from Bugzilla !&lt;br&gt;&#xA;I forked and modified &lt;a href=&#34;https://gitlab.xfce.org/infra/bztogl&#34;&gt;bztogl&lt;/a&gt;, a tool developped and used by Gnome and Freedesktop folks when they migrated away from bugzilla to gitlab in 2018/2019.&lt;br&gt;&#xA;Initially, we wanted to migrate all bugzilla issues to gitlab (opened and closed ones). But we had more than 15000 issues ! We decided to only migrate opened issues. We took the opportunity to do a biiig cleanup of old bugs by closing more than 500 of them.&lt;/p&gt;&#xA;&lt;p&gt;A important condition of the bugzilla migration was to not lose our 15 years of history.&lt;br&gt;&#xA;AndreLDM did a huge work by creating &lt;a href=&#34;https://gitlab.xfce.org/andreldm/bzstatic&#34;&gt;bzstatic&lt;/a&gt;, a tool to snapshot a bugzilla instance and make it a simple static html version : &lt;a href=&#34;https://bugzilla.xfce.org&#34;&gt;https://bugzilla.xfce.org&lt;/a&gt;.&lt;br&gt;&#xA;He open sourced it at &lt;a href=&#34;https://gitlab.xfce.org/andreldm/bzstatic&#34;&gt;https://gitlab.xfce.org/andreldm/bzstatic&lt;/a&gt; !&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.alteroot.org/media/images/xfce-bugzilla-bzstatic.png&#34;&gt;&lt;img src=&#34;https://blog.alteroot.org/media/images/xfce-bugzilla-bzstatic.png&#34; alt=&#34;xfce bugzillla bzstatic&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;As a result, we now have a modern developments workflow, fully integrated with gitlab.&#xA;We enabled github and gitlab.com auth on our instance (some people requested it), and since 3 months, we&amp;rsquo;ve seen a surge of new contributors, issues and merge requests ! Really a good news for the Xfce project !&#xA;We also had a sponsorship from &lt;a href=&#34;https://www.scaleway.com&#34;&gt;Scaleway&lt;/a&gt; lately, that we need to set up !&lt;/p&gt;&#xA;&lt;p&gt;So much things left to do, like update all our documentations for the new workflow, work on &lt;code&gt;Xfce 4.16&lt;/code&gt;, get rid of our old release manager app and use gitlab-ci to generate artifacts, simplify our translation workflow and tons of other things !&lt;/p&gt;&#xA;&lt;p&gt;Enjoy !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Road to Xfce 4.14, part 2</title>
      <link>https://blog.alteroot.org/articles/2017-05-30/road-to-xfce-4.14-part-2.html</link>
      <pubDate>Tue, 30 May 2017 18:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2017-05-30/road-to-xfce-4.14-part-2.html</guid>
      <description>&lt;p&gt;More than 1 year since my latest blogpost… wow !&lt;br&gt;&#xA;Lots of activities these last months, on code and infra side :)&lt;br&gt;&#xA;But the good news is that we had done a lots of background tasks (see the &lt;a href=&#34;#infrastructure&#34;&gt;Infrastructure&lt;/a&gt;  section) !&lt;/p&gt;&#xA;&lt;p&gt;As you might know, Xfce 4.14 is a transitionnal release, where the main goal is to port all components to GTK+3.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;GTK+3 minimum version has &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2016-September/031741.html&#34;&gt;been bumped to version 3.20&lt;/a&gt;&lt;/strong&gt; (and maybe 3.22), because of so much changes since gtk 3.14 (broken themes, css), this will remove a lot of ifdef maze and code complexity to support several gtk versions.&#xA;By the time of 4.14 release, all major distributions will have gtk&amp;gt;3.20.&lt;/p&gt;&#xA;&lt;p&gt;You can check the status of all currents efforts on the wiki. Please &lt;strong&gt;&lt;a href=&#34;https://wiki.xfce.org/releng/4.14/roadmap#status&#34;&gt;check this page before starting a GTK+3 port&lt;/a&gt;&lt;/strong&gt;, maybe it&amp;rsquo;s already done but not yet on master !&lt;/p&gt;&#xA;&lt;h2 id=&#34;core&#34;&gt;Core&lt;/h2&gt;&#xA;&lt;p&gt;Almost all core components have now a gtk+3 version (yai !), with developement releases lately ! Here a small summary :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2016-November/000482.html&#34;&gt;xfce4-settings 4.13.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2017-April/000509.html&#34;&gt;xfce4-session 4.13.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2017-April/000508.html&#34;&gt;garcon 0.6.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2017-May/000510.html&#34;&gt;xfdesktop 4.13.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2017-May/000517.html&#34;&gt;xfce4-panel 4.13.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2017-May/000515.html&#34;&gt;tumbler 0.1.90&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2016-November/000470.html&#34;&gt;exo 0.11.2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2016-September/000462.html&#34;&gt;libxfce4ui 4.13.1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In the &lt;em&gt;help wanted&lt;/em&gt; section, AndreLDM is currently working on &lt;a href=&#34;https://github.com/andreldm/thunar/&#34;&gt;Thunar gtk+3&lt;/a&gt; port ! If you have gtk/gdk/cairo knowledges, any contributor is welcome ! Contact us on #xfce-dev irc channel (freenode) or xfce4-dev mailist.&lt;/p&gt;&#xA;&lt;p&gt;Ochosi made some great blog posts on all activities theses last months, (xfce4-notifyd, panel, taskmanager, clipman), stay tuned on  &lt;a href=&#34;https://blog.xfce.org&#34;&gt;https://blog.xfce.org/&lt;/a&gt; !&lt;/p&gt;&#xA;&lt;h2 id=&#34;xfce-apps&#34;&gt;Xfce Apps&lt;/h2&gt;&#xA;&lt;p&gt;In the xfce apps world, please notice the work on xfce4-terminal , with a complete port to gtk+3 in 0.8 (+ get rid of the old and insecure vte 0.28),  new features and more :  &lt;a href=&#34;https://git.xfce.org/apps/xfce4-terminal/tree/NEWS%5D&#34;&gt;https://git.xfce.org/apps/xfce4-terminal/tree/NEWS&lt;/a&gt; .&lt;/p&gt;&#xA;&lt;p&gt;This work will be available in the future Debian Stretch!  Thanks to Igor for his hard work !&lt;/p&gt;&#xA;&lt;p&gt;You can also notice the &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2017-May/000512.html&#34;&gt;GTK+3 port of xfce4-screenshooter&lt;/a&gt; by AndreLDM.&lt;/p&gt;&#xA;&lt;h2 id=&#34;xfce-panel-plugins&#34;&gt;Xfce Panel plugins&lt;/h2&gt;&#xA;&lt;p&gt;On the panel plugins side, tons of new releases, I can&amp;rsquo;t list all of them - netload, clipman, datetime, cpufreq etc - with of course a bunch of gtk3 ports, thanks to all of our contributors.&lt;/p&gt;&#xA;&lt;p&gt;Look at the &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/%5D&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/&lt;/a&gt; mailist to see the work done.&lt;/p&gt;&#xA;&lt;p&gt;I also updated the &lt;a href=&#34;https://git.xfce.org/panel-plugins/xfce4-sample-plugin/&#34;&gt;xfce4-sample-plugin&lt;/a&gt; which can be used as a base if you want to start a new panel plugin !&lt;/p&gt;&#xA;&lt;h2 id=&#34;tests&#34;&gt;Tests&lt;/h2&gt;&#xA;&lt;p&gt;If you want to test the current state of Xfce 4.14, you can look at  &lt;a href=&#34;https://github.com/schuellerf/xfce-test&#34;&gt;xfce-test&lt;/a&gt;, a docker image by Florian which allow you to test git master and to run &lt;em&gt;behave&lt;/em&gt; (behaviour-driven development)  ! -okay sometimes it&amp;rsquo;s b0rken-&lt;/p&gt;&#xA;&lt;p&gt;Ochosi wrote a &lt;a href=&#34;https://simon.shimmerproject.org/2017/04/07/releases-releases-releases-part-2/&#34;&gt;small blog post&lt;/a&gt; about this docker image last month.&lt;/p&gt;&#xA;&lt;p&gt;Here a screenshot of a git master build (a.k.a : xfce 4.14) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://i.imgur.com/NyRp5mJ.png&#34; alt=&#34;xfce-test&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;infrastructure&#34;&gt;Infrastructure&lt;/h2&gt;&#xA;&lt;p&gt;Almost all the infrastructure problems we had by the time of my &lt;a href=&#34;http://blog.alteroot.org/articles/2016-04-12/road-to-xfce-4.14.html&#34;&gt;last blog post&lt;/a&gt; have been fixed.&lt;/p&gt;&#xA;&lt;p&gt;Thanks to gaston, &lt;a href=&#34;https://docs.xfce.org/contribute/dev/git/userrepos&#34;&gt;user repositories&lt;/a&gt; are now working, and all services are now HTTPS enabled (with let&amp;rsquo;s encrypt) ! Youhou !&lt;/p&gt;&#xA;&lt;p&gt;Moreover, since a few month, I try to take care of the Xfce servers infrastructure. Here a small summary of latest actions.&lt;/p&gt;&#xA;&lt;h4 id=&#34;git--bugzilla&#34;&gt;Git / Bugzilla&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enabling syntax highlighting on cgit web interface !  Based on python fragment, it detect c/h files, see &lt;a href=&#34;https://git.xfce.org/xfce/xfce4-power-manager/tree/panel-plugins/power-manager-plugin/power-manager-button.c&#34;&gt;https://git.xfce.org/xfce/xfce4-power-manager/tree/panel-plugins/power-manager-plugin/power-manager-button.c&lt;/a&gt; as an example.&lt;/li&gt;&#xA;&lt;li&gt;Bug number catch in commit message to highlight them in cgit and link to the related bugzilla issue ! It catch several patterns like &lt;em&gt;Bug #xxxx&lt;/em&gt; or &lt;em&gt;bug xxxx&lt;/em&gt;. Developers, please use it ! :)&#xA;&lt;img src=&#34;https://i.imgur.com/QNrpWdR.png&#34; alt=&#34;bz issue catch&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Speaking of bug number, a new git hook is in place, it parse the git commit message, detect if there is a bug number referenced,  &lt;strong&gt;and automatically posts commits references to bugzilla&lt;/strong&gt; ! An example: &lt;a href=&#34;https://bugzilla.xfce.org/show_bug.cgi?id=12159#c4&#34;&gt;https://bugzilla.xfce.org/show_bug.cgi?id=12159#c4&lt;/a&gt; ! This is a really cool new feature (thanks ochosi for the idea). It&amp;rsquo;s not perfect and it need more works, but it is now available on all repositories !&#xA;&lt;img src=&#34;https://i.imgur.com/ZU5GmBA.png&#34; alt=&#34;bz gitbot&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;The famous &lt;a href=&#34;https://bugzilla.xfce.org/show_bug.cgi?id=12117&#34;&gt;&amp;ldquo;Bug 12117 - The default desktop startup screen causes damage to monitor!&amp;rdquo;&lt;/a&gt; got a lot of attention (x10 in traffic!) last March on reddit, hackernews, fefes.de  and killed our poor bugzilla instance ! (thanks mod_perl :] ). Here are some visitor stats, see the difference…&#xA;&lt;img src=&#34;https://i.imgur.com/PsBjSnh.png&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;A new bugzilla template/theme by knome is available, with a &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2017-April/031899.html&#34;&gt;lot of improvements&lt;/a&gt; ! You can enable it in your account preferences. It&amp;rsquo;s still a work in progress but should be released as the default theme soon&#xA;&lt;img src=&#34;https://i.imgur.com/5k8umCB.png&#34; alt=&#34;bugzilla theme&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Upgrade to  latest cgit version (1.1)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;website&#34;&gt;Website&lt;/h4&gt;&#xA;&lt;p&gt;Maybe you already seen it, but the &lt;a href=&#34;https://xfce.org&#34;&gt;https://xfce.org&lt;/a&gt; website got a nice revamp with a more modern code/css, and is now responsive. Many thanks to knome, you can read his &lt;a href=&#34;https://open.knome.fi/2017/05/21/improving-xfce-infrastructure-website/&#34;&gt;blog post&lt;/a&gt; which contain more informations :)&lt;/p&gt;&#xA;&lt;h4 id=&#34;misc&#34;&gt;Misc&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://geoip.xfce.org&#34;&gt;http://geoip.xfce.org&lt;/a&gt; (used by the weather plugin to auto-detect the user localization) has been updated and should be more accurate. It is also available in https.&lt;/li&gt;&#xA;&lt;li&gt;The wiki engine (dokuwiki) and plugins used on wiki.x.o, docs.x.o and goodies.x.o, has been updated to latest release.&lt;/li&gt;&#xA;&lt;li&gt;The forum engine has been updated.&lt;/li&gt;&#xA;&lt;li&gt;Some obsoletes/outdated subdomains now redirect to the main xfce.org website (xfc.x.o, squeeze.x.o, thunar.x.o, foundation.x.o etc)&lt;/li&gt;&#xA;&lt;li&gt;The wiki now use an invisible captcha and not an ugly one like previously.&lt;/li&gt;&#xA;&lt;li&gt;Tons of Infrastructure bugs opened on our bugzilla has been fixed.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Enjoy,&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Road to Xfce 4.14</title>
      <link>https://blog.alteroot.org/articles/2016-04-12/road-to-xfce-4.14.html</link>
      <pubDate>Tue, 12 Apr 2016 13:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2016-04-12/road-to-xfce-4.14.html</guid>
      <description>&lt;p&gt;The looong road to xfce 4.14. I hope you still want some news about Xfce !&lt;br&gt;&#xA;As usual, the xfce development is slow, has some organisation problems (only few members have access to servers, and are often not present), and lack &amp;ldquo;core&amp;rdquo; maintainers/mentors. But hey, we do our best :).&lt;/p&gt;&#xA;&lt;p&gt;The bigger change for 4.14 is the &lt;strong&gt;port / upgrade to GTK+ 3.x&lt;/strong&gt;.&lt;br&gt;&#xA;It will be a &lt;em&gt;like-for-like&lt;/em&gt; port. New and &amp;ldquo;big&amp;rdquo; features are postponed to 4.16.&lt;/p&gt;&#xA;&lt;p&gt;You can read the thread on the ML &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031146.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031146.html&lt;/a&gt; about the decision of only port to gtk3 and not introduce any new features for now.&lt;/p&gt;&#xA;&lt;p&gt;The roadmap is available on the Wiki : &lt;a href=&#34;http://wiki.xfce.org/releng/4.14/roadmap&#34;&gt;http://wiki.xfce.org/releng/4.14/roadmap&lt;/a&gt;.&#xA;The minimum requiered version has been fixed to be GTK+ 3.14.&lt;/p&gt;&#xA;&lt;p&gt;Roadmap / Planned Features :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;All components of -core will be ported to Gtk+ 3.&lt;/li&gt;&#xA;&lt;li&gt;Replace dbus-glib with GDbus.&lt;/li&gt;&#xA;&lt;li&gt;Review icon-names in all components and use consistent naming, following the fd.o spec where possible&lt;/li&gt;&#xA;&lt;li&gt;Use symbolic icons for panel plugins and in apps where suitable&lt;/li&gt;&#xA;&lt;li&gt;Replace deprecated widgets.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Here is a quick (and somewhat incomplete) overview of what is already done !&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Core components&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Work is on progress for core components, with &amp;ldquo;users&amp;rdquo; branches availables on &lt;a href=&#34;http://git.xfce.org/&#34;&gt;http://git.xfce.org/&lt;/a&gt; (xfce4-panel, libxfce4ui, xfce4-session, panel etc). Nothing really available for daily use though.&lt;/p&gt;&#xA;&lt;p&gt;Lots of works on xfwm4&amp;rsquo; compositor (in master), with implementation of vsync using OpenGL, libepoxy support, adding of DRI3/Present to the compositor, use of GLX for compositing instead of Xrender&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Libxfce4ui 4.12 already compile with gtk2 and gtk3 support, exo git master have a gtk3 preliminary support, garcon is already ported.&#xA;xfdesktop have a &lt;a href=&#34;http://git.xfce.org/users/eric/xfdesktop/log/?h=gtk3&#34;&gt;gtk3 branch&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The panel support GTK-3 plugins since 4.12, but it core need to be upgraded to use gtk3.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Xfce4-power-manager&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;One of the most active project. Version 1.6 (released last month) is a complete port to gtk3 and gdbus, see &lt;a href=&#34;http://git.xfce.org/xfce/xfce4-power-manager/tree/NEWS&#34;&gt;http://git.xfce.org/xfce/xfce4-power-manager/tree/NEWS&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Xfce4-notifyd&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;A GTK3 branch exist, you can read the thread on the ML : &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-October/031504.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2015-October/031504.html&lt;/a&gt;. I use it since few months, and it works pretty well :)&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Xfce4-Appfinder&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;xfce4-appfinder progress to gtk3 : &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-August/031438.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2015-August/031438.html&lt;/a&gt;&lt;br&gt;&#xA;&lt;em&gt;Can you guess which one use GTK3 ? (hint: the left one ;))&lt;/em&gt;&#xA;&lt;img src=&#34;https://i.imgur.com/5RJ1uFZ.png&#34; alt=&#34;xfce4-appfinder gtk3&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Plugins&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Some plugins are still active, and are already ported to GTK-3 (xfce4-indicator-plugin, xfce4-pulseaudio-plugin), as xfce4-panel support both gtk2 and gtk3 plugins.&lt;/p&gt;&#xA;&lt;p&gt;Last months have seen new versions of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-August/000432.html&#34;&gt;xfce4-equake-plugin&lt;/a&gt;, &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-July/000430.html&#34;&gt;xfce4-embed-plugin&lt;/a&gt;, &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-July/000429.html&#34;&gt;xfce4-verve-plugin&lt;/a&gt;, &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-June/000428.html&#34;&gt;xfce4-notes-plugin&lt;/a&gt;, &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-June/000427.html&#34;&gt;xfce4-cpufreq-plugin&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;One of the more usefull new plugin is the pulseaudio-plugin, a replacement for xfce4-mixer : &lt;a href=&#34;http://git.xfce.org/panel-plugins/xfce4-pulseaudio-plugin/&#34;&gt;http://git.xfce.org/panel-plugins/xfce4-pulseaudio-plugin/&lt;/a&gt;, I use it and it works well.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://i.imgur.com/RDnfU3q.png&#34; alt=&#34;xfce4-notifyd gtk3&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Stay tuned !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Compte rendu du Meetup ArchLinux France du 10 Nov. 2015</title>
      <link>https://blog.alteroot.org/articles/2015-11-11/compte-rendu-du-meetup-archlinux-france-du-10-nov.-2015.html</link>
      <pubDate>Wed, 11 Nov 2015 21:30:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2015-11-11/compte-rendu-du-meetup-archlinux-france-du-10-nov.-2015.html</guid>
      <description>&lt;p&gt;Ce 10 Novembre 2015 a eu lieu le second meetup ArchLinux France, chez &lt;a href=&#34;https://www.blablacar.fr/&#34;&gt;BlaBlaCar&lt;/a&gt; à Paris ! Pour rappel le premier Meetup avait eu lieu &lt;a href=&#34;http://blog.alteroot.org/articles/2014-10-22/slide-premier-meetup-archlinux-france.html&#34;&gt;en Octobre 2014&lt;/a&gt;.&#xA;Pour cette nouvelle édition, il y avait 5 présentations, et près de 70 personnes ! (vous pouvez retrouver le programme sur &lt;a href=&#34;http://www.meetup.com/archlinux-france/events/226033273/&#34;&gt;meetup&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Voici la liste des présentations et leurs slides (update: elles sont maintenant toutes disponibles !) :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Arch Linux Security Team Genesis (&lt;a href=&#34;https://twitter.com/rbnctl&#34;&gt;RbN&lt;/a&gt;) / &lt;a href=&#34;https://blog.alteroot.org/media/misc/Archlinux%20Security%20Team%20Genesis.pdf&#34;&gt;Slides&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Arch Linux Security Projects (&lt;a href=&#34;https://twitter.com/rgacogne&#34;&gt;Remi Gacogne&lt;/a&gt;) / &lt;a href=&#34;https://www.coredump.fr/static/arch/arch-security-projects.pdf&#34;&gt;Slides&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Vous reprendrez bien un peu de yaourt? (&lt;a href=&#34;https://twitter.com/_Skunnyk_&#34;&gt;Skunnyk&lt;/a&gt;) / &lt;a href=&#34;https://blog.alteroot.org/media/misc/Yaourt.meetup.10nov2015.Skunnyk.pdf&#34;&gt;Slides&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Ansible 101 (Julien Girardin) / &lt;a href=&#34;https://github.com/Zempashi/presentation_arch_meetup_2/raw/master/arch_meetup_2.pdf&#34;&gt;Slides&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Arch Linux Archive / agetpkg (&lt;a href=&#34;https://twitter.com/seblu42&#34;&gt;Sebastien Luttringer&lt;/a&gt;) / &lt;a href=&#34;http://slides.com/seblu/arch-linux-archive#/&#34;&gt;Slides&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai pour ma part parlé de &lt;a href=&#34;https://github.com/archlinuxfr/yaourt&#34;&gt;Yaourt&lt;/a&gt;, son histoire, son développement, ses features. Si vous souhaitez participer, n&amp;rsquo;hésitez pas à vous rendre sur le &lt;a href=&#34;https://github.com/archlinuxfr/yaourt&#34;&gt;github du projet&lt;/a&gt; :)&lt;/p&gt;&#xA;&lt;p&gt;Mes slides ci dessous :&lt;/p&gt;&#xA;&lt;iframe id=&#34;viewer&#34; src=&#34;//blog.alteroot.org/media/tools/viewerjs/#../../misc/Yaourt.meetup.10nov2015.Skunnyk.pdf&#34; width=&#39;750&#39; height=&#39;566&#39; allowfullscreen webkitallowfullscreen&gt;&lt;/iframe&gt; &#xA;&lt;p&gt;Et quelques photos, tirées du &amp;lsquo;Live Tweet&amp;rsquo; de &lt;a href=&#34;https://twitter.com/archlinuxfr&#34;&gt;@archlinuxfr&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34; lang=&#34;en&#34;&gt;&lt;p lang=&#34;fr&#34; dir=&#34;ltr&#34;&gt;Le grand jour ! &lt;a href=&#34;https://twitter.com/hashtag/archlinux?src=hash&#34;&gt;#archlinux&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/meetup?src=hash&#34;&gt;#meetup&lt;/a&gt; &lt;a href=&#34;https://twitter.com/BlaBlaCar_FR&#34;&gt;@BlaBlaCar_FR&lt;/a&gt; &lt;a href=&#34;https://t.co/edg5DaM2ye&#34;&gt;pic.twitter.com/edg5DaM2ye&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skunnyk (@_Skunnyk_) &lt;a href=&#34;https://twitter.com/_Skunnyk_/status/664132909180297216&#34;&gt;November 10, 2015&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34; lang=&#34;en&#34;&gt;&lt;p lang=&#34;fr&#34; dir=&#34;ltr&#34;&gt;Et maintenant le Hardening de &lt;a href=&#34;https://twitter.com/hashtag/archlinux?src=hash&#34;&gt;#archlinux&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/meetup?src=hash&#34;&gt;#meetup&lt;/a&gt; &lt;a href=&#34;https://t.co/PMO0U3DsTB&#34;&gt;https://t.co/PMO0U3DsTB&lt;/a&gt; &lt;a href=&#34;https://t.co/AeXvYkiMlK&#34;&gt;pic.twitter.com/AeXvYkiMlK&lt;/a&gt;&lt;/p&gt;&amp;mdash; archlinuxfr (@archlinuxfr) &lt;a href=&#34;https://twitter.com/archlinuxfr/status/664154999644135424&#34;&gt;November 10, 2015&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34; lang=&#34;en&#34;&gt;&lt;p lang=&#34;fr&#34; dir=&#34;ltr&#34;&gt;Et pour finir, &lt;a href=&#34;https://twitter.com/seblu42&#34;&gt;@seblu42&lt;/a&gt; nous parle de &amp;#39;Arch Linux Archive&amp;#39; ! &lt;a href=&#34;https://t.co/IcVOm30AAB&#34;&gt;https://t.co/IcVOm30AAB&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/archlinux?src=hash&#34;&gt;#archlinux&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/meetup?src=hash&#34;&gt;#meetup&lt;/a&gt; &lt;a href=&#34;https://t.co/gNxYsUU3IQ&#34;&gt;pic.twitter.com/gNxYsUU3IQ&lt;/a&gt;&lt;/p&gt;&amp;mdash; archlinuxfr (@archlinuxfr) &lt;a href=&#34;https://twitter.com/archlinuxfr/status/664172084021633024&#34;&gt;November 10, 2015&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;//platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&lt;p&gt;Encore merci aux talkers, à tous ceux présents, et à BlaBlaCar (et &lt;a href=&#34;https://twitter.com/Puckel_&#34;&gt;Puckel_&lt;/a&gt;) pour le sponsoring de la salle et la collation !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Enhance Apache Cassandra Logging</title>
      <link>https://blog.alteroot.org/articles/2015-09-22/enhance-apache-cassandra-logging.html</link>
      <pubDate>Tue, 22 Sep 2015 13:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2015-09-22/enhance-apache-cassandra-logging.html</guid>
      <description>&lt;p&gt;Cassandra usually output all its logs in a system.log file. It uses log4j &lt;a href=&#34;https://logging.apache.org/log4j/1.2/&#34;&gt;old 1.2 version&lt;/a&gt; for cassandra 2.0, and &lt;a href=&#34;https://issues.apache.org/jira/browse/CASSANDRA-5883&#34;&gt;since 2.1&lt;/a&gt;, &lt;a href=&#34;http://logback.qos.ch/&#34;&gt;logback&lt;/a&gt;, which of course use different syntax :)&lt;br&gt;&#xA;Logs can be enhanced with some configuration. These explanations works with Cassandra 2.0.x and Cassandra 2.1.x, I haven&amp;rsquo;t tested others versions yet.&lt;/p&gt;&#xA;&lt;p&gt;I wanted to split logs in different files, depending on their &amp;ldquo;sources&amp;rdquo; (repair, compaction, tombstones etc), to ease debugging, while keeping the system.log as usual.&lt;/p&gt;&#xA;&lt;p&gt;For example, to declare 2 new files to handle, say Repair and Tombstones logs :&lt;/p&gt;&#xA;&lt;p&gt;Cassandra 2.0 :&lt;/p&gt;&#xA;&lt;p&gt;You need to declare each new log files in &lt;a href=&#34;http://docs.datastax.com/en/cassandra/2.0/cassandra/configuration/configLoggingLevels_t.html&#34;&gt;log4j-server.properties&lt;/a&gt; file.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## Repair&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Repair&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;org.apache.log4j.RollingFileAppender&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Repair.maxFileSize&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;20MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Repair.maxBackupIndex&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Repair.layout&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;org.apache.log4j.PatternLayout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Repair.layout.ConversionPattern&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;%5p &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;%t&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; %d&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;ISO8601&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt; %F &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line %L&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; %m%n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## Edit the next line to point to your logs directory&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Repair.File&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/var/log/cassandra/repair.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## Tombstones&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Tombstones&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;org.apache.log4j.RollingFileAppender&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Tombstones.maxFileSize&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;20MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Tombstones.maxBackupIndex&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Tombstones.layout&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;org.apache.log4j.PatternLayout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Tombstones.layout.ConversionPattern&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;%5p &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;%t&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; %d&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;ISO8601&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt; %F &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line %L&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; %m%n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;### Edit the next line to point to your logs directory&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.appender.Tombstones.File&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/home/log/cassandra/tombstones.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cassandra 2.1 :&lt;/p&gt;&#xA;&lt;p&gt;It is in the &lt;a href=&#34;http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configLoggingLevels_r.html&#34;&gt;logback.xml&lt;/a&gt; file.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;appender name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Repair&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ch&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;qos&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;logback&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;core&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;rolling&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;RollingFileAppender&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;file&amp;gt;${cassandra.logdir}/repair.log&amp;lt;/file&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;rollingPolicy class=&amp;#34;&lt;/span&gt;ch.&lt;span style=&#34;color:#a6e22e&#34;&gt;qos&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;logback&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;core&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;rolling&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;FixedWindowRollingPolicy&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;fileNamePattern&amp;gt;${cassandra.logdir}/system.log.%i.zip&amp;lt;/fileNamePattern&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;minIndex&amp;gt;1&amp;lt;/minIndex&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;maxIndex&amp;gt;20&amp;lt;/maxIndex&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;/rollingPolicy&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;triggeringPolicy class=&amp;#34;&lt;/span&gt;ch.&lt;span style=&#34;color:#a6e22e&#34;&gt;qos&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;logback&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;core&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;rolling&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;SizeBasedTriggeringPolicy&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;maxFileSize&amp;gt;20MB&amp;lt;/maxFileSize&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;/triggeringPolicy&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;encoder&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;pattern&amp;gt;%-5level [%thread] %date{ISO8601} %F:%L - %msg%n&amp;lt;/pattern&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;!-- old-style log format&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;pattern&amp;gt;%5level [%thread] %date{ISO8601} %F (line %L) %msg%n&amp;lt;/pattern&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      --&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;/encoder&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  &amp;lt;/appender&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  &amp;lt;appender name=&amp;#34;&lt;/span&gt;Tombstones&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; class=&amp;#34;&lt;/span&gt;ch.&lt;span style=&#34;color:#a6e22e&#34;&gt;qos&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;logback&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;core&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;rolling&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;RollingFileAppender&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;file&amp;gt;${cassandra.logdir}/tombstones.log&amp;lt;/file&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;rollingPolicy class=&amp;#34;&lt;/span&gt;ch.&lt;span style=&#34;color:#a6e22e&#34;&gt;qos&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;logback&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;core&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;rolling&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;FixedWindowRollingPolicy&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;fileNamePattern&amp;gt;${cassandra.logdir}/tombstones.log.%i.zip&amp;lt;/fileNamePattern&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;minIndex&amp;gt;1&amp;lt;/minIndex&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;maxIndex&amp;gt;20&amp;lt;/maxIndex&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;/rollingPolicy&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;triggeringPolicy class=&amp;#34;&lt;/span&gt;ch.&lt;span style=&#34;color:#a6e22e&#34;&gt;qos&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;logback&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;core&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;rolling&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;SizeBasedTriggeringPolicy&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;maxFileSize&amp;gt;20MB&amp;lt;/maxFileSize&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;/triggeringPolicy&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;encoder&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;pattern&amp;gt;%-5level [%thread] %date{ISO8601} %F:%L - %msg%n&amp;lt;/pattern&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;!-- old-style log format&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      &amp;lt;pattern&amp;gt;%5level [%thread] %date{ISO8601} %F (line %L) %msg%n&amp;lt;/pattern&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      --&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;lt;/encoder&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  &amp;lt;/appender&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that theses new files are declared, we need to fill them with logs. To do that, simply redirect some Java class to the good file. To redirect the class org.apache.cassandra.db.filter.SliceQueryFilter, loglevel WARN  to the Tombstone file, simply add :&lt;/p&gt;&#xA;&lt;p&gt;Cassandra 2.0 :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.logger.org.apache.cassandra.db.filter.SliceQueryFilter&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;WARN,Tombstones&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cassandra 2.1 :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;logger name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;org.apache.cassandra.db.filter.SliceQueryFilter&amp;#34;&lt;/span&gt; level&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;WARN&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;appender&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;ref ref&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Tombstones&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/&lt;/span&gt;logger&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s a on-the-fly configuration, so no need to restart Cassandra !&lt;br&gt;&#xA;Now you will have dedicated files for each kind of logs.&lt;/p&gt;&#xA;&lt;p&gt;A list of interesting Cassandra classes :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.service.StorageService, WARN : Repair&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.net.OutboundTcpConnection, DEBUG : Repair &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;haha, theses fucking stuck repair&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.repair, INFO : Repair&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.db.HintedHandOffManager, DEBUG : Repair&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.streaming.StreamResultFuture, DEBUG : Repair &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.cql3.statements.BatchStatement, WARN : Statements&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.db.filter.SliceQueryFilter, WARN : Tombstones&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can find from which java class a log message come from by adding &amp;ldquo;%c&amp;rdquo; in log4j/logback &amp;ldquo;ConversionPattern&amp;rdquo; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.db.ColumnFamilyStore INFO  &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;BatchlogTasks:1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; 2015-09-18 16:43:48,261 ColumnFamilyStore.java:939 - Enqueuing flush of batchlog: &lt;span style=&#34;color:#ae81ff&#34;&gt;226172&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;0%&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; on-heap, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;0%&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; off-heap&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.db.Memtable INFO  &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;MemtableFlushWriter:4213&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; 2015-09-18 16:43:48,262 Memtable.java:347 - Writing Memtable-batchlog@1145616338&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;195.566KiB serialized bytes, &lt;span style=&#34;color:#ae81ff&#34;&gt;205&lt;/span&gt; ops, 0%/0% of on/off-heap limit&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;org.apache.cassandra.db.Memtable INFO  &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;MemtableFlushWriter:4213&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; 2015-09-18 16:43:48,264 Memtable.java:393 - Completed flushing /home/cassandra/data/system/batchlog/system-batchlog-tmp-ka-4267-Data.db; nothing needed to be retained.  Commitlog position was ReplayPosition&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;segmentId&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;1442331704273, position&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;17281204&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can disable &amp;ldquo;additivity&amp;rdquo; (i.e avoid adding messages in system.log for example) in log4j for a specific class by adding :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log4j.additivity.org.apache.cassandra.db.filter.SliceQueryFilter&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;false&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For logback, you can add additivity=&amp;ldquo;false&amp;rdquo; to &amp;lt;logger .../&amp;gt; elements.&lt;/p&gt;&#xA;&lt;p&gt;To migrate from log4j logs to logback.xml, you can look at &lt;a href=&#34;http://logback.qos.ch/translator/&#34;&gt;http://logback.qos.ch/translator/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sources :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configLoggingLevels_r.html&#34;&gt;http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configLoggingLevels_r.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://docs.datastax.com/en/cassandra/2.0/cassandra/configuration/configLoggingLevels_t.html&#34;&gt;http://docs.datastax.com/en/cassandra/2.0/cassandra/configuration/configLoggingLevels_t.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://logging.apache.org/log4j/1.2/manual.html&#34;&gt;https://logging.apache.org/log4j/1.2/manual.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://logback.qos.ch/manual/appenders.html&#34;&gt;http://logback.qos.ch/manual/appenders.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Note: you can add &lt;a href=&#34;http://blog.alteroot.org/feed.cassandra.xml&#34;&gt;http://blog.alteroot.org/feed.cassandra.xml&lt;/a&gt; to your rss aggregator to follow all my Cassandra posts :)&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Working OCSP Stapling setup with free Wosign Certificate on Nginx</title>
      <link>https://blog.alteroot.org/articles/2015-07-17/working-ocsp-stapling-setup-with-free-wosign-certificate-on-nginx.html</link>
      <pubDate>Fri, 17 Jul 2015 15:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2015-07-17/working-ocsp-stapling-setup-with-free-wosign-certificate-on-nginx.html</guid>
      <description>&lt;p&gt;Chinese CA WoSign issues free multi-domain SSL certificates valid for 3 years. You can read some informations on how to get theses free certificates on &lt;a href=&#34;https://www.ohling.org/blog/2015/02/wosign-free-2y-ssl-certificate.html&#34;&gt;https://www.ohling.org/blog/2015/02/wosign-free-2y-ssl-certificate.html&lt;/a&gt;.&lt;br&gt;&#xA;FYI, I received my certificate around 1hour after submission :)&lt;/p&gt;&#xA;&lt;p&gt;Now, the nginx ssl configuration ! I won&amp;rsquo;t cover the pure SSL configuration, you can look at &lt;a href=&#34;https://wiki.mozilla.org/Security/Server_Side_TLS&#34;&gt;mozilla wiki&lt;/a&gt; for a &amp;ldquo;perfect setup&amp;rdquo;.&lt;br&gt;&#xA;Standard procedure, you extract the provided zip, grab the 1_mydomain_bundle.crt and add it to nginx ssl configuration.&lt;/p&gt;&#xA;&lt;p&gt;I wanted to enable &lt;a href=&#34;https://en.wikipedia.org/wiki/OCSP_stapling&#34;&gt;OCSP stapling&lt;/a&gt;, for checking the revocation status of X.509 digital certificates on server side.&lt;br&gt;&#xA;Basic OCSP checking potentially impairs users&amp;rsquo; privacy and slows down browsing, since it requires the client to contact a third party (the CA) to confirm the validity of each certificate that it encounters. With OCSP Stapling, the certificate holder (your servers) queries the OCSP server themselves at regular intervals, obtaining a signed time-stamped OCSP response.&lt;br&gt;&#xA;When the site&amp;rsquo;s visitors attempt to connect to the site, this response is included with the TLS Handshake.&lt;/p&gt;&#xA;&lt;p&gt;In nginx, the stapling configuration is simple :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ssl_stapling&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ssl_stapling_verify&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then you need to reload nginx. You can now test OCSP response with openssl.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl s_client -connect blog.alteroot.org:443 -tls1_2 -tlsextdebug -status&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: the FIRST client request always has a empty OSCP response, because nginx query the remote OCSP server at the same time. This applies to ALL nginx workers, Nginx uses a per-worker cache of OCSP responses.&lt;/p&gt;&#xA;&lt;p&gt;Unfortunately, it does not works, and I can see in nginx logs this error :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2015/07/17 11:31:21 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;error&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; 19557#0: OCSP responder sent invalid &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Type&amp;#34;&lt;/span&gt; header: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text/html&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; requesting certificate status, responder: ocsp6.wosign.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By checking &lt;a href=&#34;http://ocsp6.wosign.com/&#34;&gt;http://ocsp6.wosign.com/&lt;/a&gt; (504 bad gateway), I thought that their OCSP Server was down.&lt;br&gt;&#xA;After some investigations, I found this &lt;a href=&#34;http://trac.nginx.org/nginx/ticket/740&#34;&gt;nginx ticket&lt;/a&gt; : You need at least Nginx 1.7.4 which fix a bug with uppercase on ngx_escape_uri() !&lt;/p&gt;&#xA;&lt;p&gt;As I just set up a new server with debian Jessie, I used the default Nginx (1.6.2).&#xA;So I need to upgrade to 1.8.0 with &lt;a href=&#34;https://dotdeb.org&#34;&gt;Dotdeb&lt;/a&gt; packages (thanks @gui ;)).&lt;/p&gt;&#xA;&lt;p&gt;After upgrade to 1.8.0, in Nginx logs :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2015/07/17 11:47:30 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;error&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; 21390#21390: OCSP_basic_verify&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; failed &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; requesting certificate status, responder: ocsp6.wosign.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Yes ! At least nginx can talk to the OCSP server :)&lt;/p&gt;&#xA;&lt;p&gt;Now, I need to add &lt;a href=&#34;http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_trusted_certificate&#34;&gt;&amp;ldquo;trusted&amp;rdquo; certificate&lt;/a&gt; to Nginx.&lt;br&gt;&#xA;You need to &amp;ldquo;cat&amp;rdquo; StartCom Certification Authority certificate then Wosign one.&lt;br&gt;&#xA;Why Startcom ? Because the WoSign root CA is cross-signed by the StartCom CA so it is trusted by every browsers.&lt;/p&gt;&#xA;&lt;p&gt;The StartCom Certification Authority certificate (Serial 1, PEM format) : &lt;a href=&#34;https://ssl-tools.net/certificates/1cf30e1-startcom-certification-authority&#34;&gt;https://ssl-tools.net/certificates/1cf30e1-startcom-certification-authority&lt;/a&gt;&lt;br&gt;&#xA;And WoSign CA certificates (includes in the 1_mydomain_bundle.crt)&lt;/p&gt;&#xA;&lt;p&gt;The final ssl_trusted_certificate file :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-----BEGIN CERTIFICATE-----&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-----END CERTIFICATE-----&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-----BEGIN CERTIFICATE-----&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MIIGXDCCBESgAwIBAgIHGcKFMOk7NjANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQG&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;EwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Z2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2Vy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MjI0NjM2WhcNMTkxMjMxMjM1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OTU5WjBVMQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;KjAoBgNVBAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjCCAiIw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL3Kjay4kRVWl3trXHrC3mvZobDD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ECP6p6GyzDH6PtmmKW8WPeBr+LhAX9s5qAB6i6BNVH3CInj8jgm4qIXXzJWXS3TY&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nn7wAOQOia5JKEQaEJkyDyWIU6QNsw8SCBYLA3EnHH/h29L9Z2jEBV0KDl1w19iX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;oLxTQZqRjfSeNmZ6flbBkF/msWggNqSMJCwsRwtZdmYwtb7e7Y/4ndO7ATDm8vMO&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4CySgPOF+SiKtFQumu33dvwVaBbrSmzrLhKP1M/+DMdcHQt+BTK+XrAJKkLVyU6Q&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;s1kNu3p+zdUIWrR/2BxpEfknD3sGr1SDGHvh3VR6UWhud/zGv1JKZkahsmcau6NP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;d6C+Xf/8VgtDcneQyp758jn1Dan06tfnsxAvMEI3IcwwcMmGmA/MWE2Du33lGqU3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jbasMpcAOmNxJB6eN8T/dNQ3wOL+iEZgEd0IP1A2q7h6pJViam6wymohWmnz8/sd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cDmV86dupoGJoYjFO3HKo1Lug7v9oHf05G/nQtttSpmKNEi8F9zkgAgitvIxwD8E&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PuufIHnWuAZkZAIx16nNUvuERWkJACrcVYvEBkZLwEodCVs5KP2pq84A+S5ISybm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MEylWMq0RIJP55EeM8Owk/8R/IHSyh9xKd12T5Ilrx2Btw8vjMMGzC8no0rkDpm6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fB5FH3+qGUWW/fw9AgMBAAGjggEHMIIBAzASBgNVHRMBAf8ECDAGAQH/AgECMA4G&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU4WbPDtHxs0u3BiAU/ocS1fb++z4wHwYD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VR0jBBgwFoAUTgvvGqRAW6UXaYcwyjRoQ9BBrvIwaQYIKwYBBQUHAQEEXTBbMCcG&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CCsGAQUFBzABhhtodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vY2EwMAYIKwYBBQUH&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MAKGJGh0dHA6Ly9haWEuc3RhcnRzc2wuY29tL2NlcnRzL2NhLmNydDAyBgNVHR8E&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;KzApMCegJaAjhiFodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9zZnNjYS5jcmwwDQYJ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;KoZIhvcNAQELBQADggIBALZt+HD74g1MmLMHSRX1BMRsysr1aKAI/hJtnAQGya2a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kVI+eMRc7p9UHe7j8V4wyUnhOeCmnTZsV/rmNE9V6IeoLN0F8VgSkejKzih4j98H&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hQGl3EWWBdSAsisFmsuapYvgOmfmc0e+Sv0nsYjv5srPjQ4mn/pfV3itbf6umzUI&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scO6wQBKS30Uvffx01UYrNAzcIhtxAlxFKYrT4iB5wsAN6kVfX7XAZY/L697Yq4K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Sr9LOS41EIv+BDnkPDoMCVZAOrX0wmgMtflSze6d+Jj8eOdYR48cc1hpM6v/3d+O&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;JAF3mBk6sGZ5vOEIow5PwQSz8wHI69NZHDXSkx5wZYJ/28/7yJkSYMNEbzqAS9e+&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IaoUemTL3TdDRVsyLkXw2VkfaxjwfOlVNhlhX7V98Y29iOR1S5jdJ7DkhEQqYYRX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BYIRH6o1WPMgDq9Z7/pVcnINJtCbU0mszjcuZWH/9uwb6vbxptPRtXu+NfQiwbyN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Ab1oXoMNL+zW2mMMJ9FUPuSo085LMriRlP/7W0ktdRiounGaO67ZwKlPh5Hti3tr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IJiJOYNPgMRpzBfJyE6+5KmlgXZwBgQyzYNl9Lx9PhO80uhvY6q1O9qNhjKCeJ3Z&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zP+/V2R07Sg9RGIVYUv3lLANKmcc8MubpZK/+EFawT1g7Z+7uG2bzqlqFj9+6gbx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-----END CERTIFICATE-----&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-----BEGIN CERTIFICATE-----&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MIIFrDCCA5SgAwIBAgIQOPZFweJdkSzOOys5EjF0DTANBgkqhkiG9w0BAQsFADBV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0xNDExMDgw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MDU4NThaFw0yOTExMDgwMDU4NThaMFUxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;b1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhV29TaWduIENBIEZyZWUgU1NMIENl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cnRpZmljYXRlIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA47SA&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DmswUIIvH+edv/h8QiXtrmHE64aHI38RH8CTXxuSkB53jLx29/sKpdV9rNxLGNhY&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Lt9GazQPRWRghMLrmg5R1CpUUT4nO2Rohm98awA8mfZMqEUnraXLKzftWcNSTE/e&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NJzyt9H6WMvlYp5VRly3xY04JDXvlyx8ZRAN75+XCNXlsxJ6kt3+iA+PpK+9xdY2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;90Eb6Fndhv81v+3k0aCTblGomcvf3b5xiMPasWXMe5XEZo++TgZ/m1OMazzOlyaC&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Hxcwuj/I3swLobTvEj2Tywgw5xqYl4A6JoSP/nN0lVMPUbKqiVf0lkByEx3kZ5hO&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;j8ZAC/UdDEUt4NWSgwIDAQABo4IBdjCCAXIwDgYDVR0PAQH/BAQDAgEGMB0GA1Ud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/AgEAMDAG&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;A1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jcmxzMS53b3NpZ24uY29tL2NhMS5jcmww&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cgYIKwYBBQUHAQEEZjBkMCcGCCsGAQUFBzABhhtodHRwOi8vb2NzcDEud29zaWdu&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LmNvbS9jYTEwOQYIKwYBBQUHMAKGLWh0dHA6Ly9haWExLndvc2lnbi5jb20vY2Ex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ZzItc2VydmVyMS1mcmVlLmNlcjAdBgNVHQ4EFgQU0qcWIHyv2ZWe60MKGfLguXQO&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;qMcwHwYDVR0jBBgwFoAU4WbPDtHxs0u3BiAU/ocS1fb++z4wRwYDVR0gBEAwPjA8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Bg0rBgEEAYKbUQYBAgIBMCswKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cud29zaWdu&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LmNvbS9wb2xpY3kvMA0GCSqGSIb3DQEBCwUAA4ICAQCWWt+WkRdokF0vtDIVgAMD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;C+kct3Ns2qj6lN3dPjQrLoCTbPqmZ9MbeoJBzp7/P++yg2qe/DL9RPOCZqrPRC+z&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;N0HweRLjAieGSJK+z1bXy9fnHiWdQdsK5zMSWK2V2J7Ut5Upuv7/34Ckd1sVYg9p&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+IdtdOqFonZdn5UuA7yK+YqsgWRQ8gtFS+yXMDl05ad+FiRiK1DxXNhPzS6iGCWj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zvYfYN0V3iAVGw5/r4XZQKwHKjTdUbAaqOYOn1/bRnDm9dklHPAd5UKhLSKdbhHJ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jaZlvA6qdnPIVmAv+z+GuaX1M+/VEx9JTDgHnlkiWsdO2SUkulNw/GMqVFHrw0tB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;feToPCyldlq/2UyoDa5SbqVdmD1skG14H8NwlYYHP1Tj6oqBZGKajzGveyp+kiLD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jsxTrMecmRErSD9ScStuwOGzCuUDYteJGChMCo0/C0WJgYuIpJPCf0TlHltAAPwv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zDv4ankx/UQUto9IhUyrCp27Nwr8URng/llqO49gYqcHgq8IZqDy2mAC6tg0fldx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;obX+adf73Vqc8//E6s10+pRw01iSzq8S5G7r3bivHeJl1EbqCz7jaA4KTCeDUJEG&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xnv4+psm7SwOZ7hs5SyYbV96KMOEPAMN9+ID4ZTCWCf4TYFZL/F8YclXXb3cnIDQ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ZN98h3iF5pSLcIsFR+TIew&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-----END CERTIFICATE-----&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now the OCSP check works !&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ openssl s_client -connect blog.alteroot.org:443 -tls1_2 -tlsextdebug -status&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OCSP response: &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;======================================&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OCSP Response Data:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    OCSP Response Status: successful &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;0x0&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Response Type: Basic OCSP Response&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Version: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;0x0&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Responder Id: C &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; CN, O &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; WoSign CA Limited, CN &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; WoSign Free SSL OCSP Responder&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;G2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Produced At: Jul &lt;span style=&#34;color:#ae81ff&#34;&gt;17&lt;/span&gt; 11:12:45 &lt;span style=&#34;color:#ae81ff&#34;&gt;2015&lt;/span&gt; GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Responses:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Certificate ID:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Hash Algorithm: sha1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Issuer Name Hash: A06661F16CBCC23E98BC71914830B85AAA8D0A6B&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Issuer Key Hash: D2A716207CAFD9959EEB430A19F2E0B9740EA8C7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Serial Number: 5FA7F414BCB7C7374B525EEB4D894072&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Cert Status: good&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    This Update: Jul &lt;span style=&#34;color:#ae81ff&#34;&gt;17&lt;/span&gt; 11:12:45 &lt;span style=&#34;color:#ae81ff&#34;&gt;2015&lt;/span&gt; GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Next Update: Jul &lt;span style=&#34;color:#ae81ff&#34;&gt;19&lt;/span&gt; 11:12:45 &lt;span style=&#34;color:#ae81ff&#34;&gt;2015&lt;/span&gt; GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enjoy :)&lt;/p&gt;&#xA;&lt;p&gt;Sources:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.ohling.org/blog/2015/02/wosign-free-2y-ssl-certificate.html&#34;&gt;https://www.ohling.org/blog/2015/02/wosign-free-2y-ssl-certificate.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://ssl-tools.net/certificates/&#34;&gt;https://ssl-tools.net/certificates/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://trac.nginx.org/nginx/ticket/740/&#34;&gt;http://trac.nginx.org/nginx/ticket/740&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Awesome Weekly Newsletters !</title>
      <link>https://blog.alteroot.org/articles/2015-05-21/awesome-weekly-newsletters.html</link>
      <pubDate>Thu, 21 May 2015 15:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2015-05-21/awesome-weekly-newsletters.html</guid>
      <description>&lt;p&gt;Like the well known &lt;a href=&#34;https://github.com/bayandin/awesome-awesomeness&#34;&gt;awesome-awesomeness&lt;/a&gt; repository on Github, below, you&amp;rsquo;ll find a list of Weekly (some are not so weekly ^^) newsletters.&lt;/p&gt;&#xA;&lt;p&gt;If you want to add an unlisted newsletter, feel free to submit a &lt;a href=&#34;https://github.com/alteroot/awesome-mailinglists&#34;&gt;PR&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;devops&#34;&gt;DevOps&lt;/h3&gt;&#xA;&lt;h4 id=&#34;devops-weekly-newsletter&#34;&gt;DevOps Weekly newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.devopsweekly.com/&#34;&gt;http://www.devopsweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://www.devopsweekly.com/archive&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;devops-newsletter-by-serverdensity&#34;&gt;DevOps newsletter by ServerDensity&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.serverdensity.com/devops-newsletter/&#34;&gt;https://blog.serverdensity.com/devops-newsletter/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;sysadmin-casts-newsletter&#34;&gt;SysAdmin Casts newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://sysadmincasts.com/&#34;&gt;https://sysadmincasts.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;https://sysadmincasts.com/episodes/&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;servers-for-hackers-newsletter&#34;&gt;Servers for hackers newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://serversforhackers.com/&#34;&gt;https://serversforhackers.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;https://serversforhackers.com/editions&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;docker-weekly-newsletter&#34;&gt;Docker Weekly newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.docker.com/subscribe_newsletter/&#34;&gt;http://www.docker.com/subscribe_newsletter/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;https://blog.docker.com/docker-weekly-archives/&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;kubernetes-weekly-newsletter&#34;&gt;Kubernetes Weekly newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://kubeweekly.com/&#34;&gt;http://kubeweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://kubeweekly.com/&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;usingchef-weekly-newsletter&#34;&gt;UsingChef Weekly newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://usingchef.com/&#34;&gt;https://usingchef.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;https://usingchef.com/articles&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;briefs-on-ansible&#34;&gt;Briefs on Ansible&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://devopsu.com/newsletters/ansible-weekly-newsletter.html&#34;&gt;https://devopsu.com/newsletters/ansible-weekly-newsletter.html&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;https://devopsu.com/newsletters/ansible-weekly-newsletter.html&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;web-operations-weekly&#34;&gt;Web Operations Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://webopsweekly.com/&#34;&gt;http://webopsweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://webopsweekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;cloud-development-weekly&#34;&gt;Cloud Development Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://clouddevweekly.co/&#34;&gt;http://clouddevweekly.co/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://clouddevweekly.co/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;this-week-on-domains&#34;&gt;This Week on Domains&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.thisweekindomains.com/&#34;&gt;http://www.thisweekindomains.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://www.thisweekindomains.com/archive/&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;development&#34;&gt;Development&lt;/h3&gt;&#xA;&lt;h4 id=&#34;python-weekly&#34;&gt;Python Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.pythonweekly.com/&#34;&gt;http://www.pythonweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://www.pythonweekly.com/archive/&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;pycoders-weekly-newsletter&#34;&gt;PyCoders Weekly newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.pycoders.com/&#34;&gt;http://www.pycoders.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://www.pycoders.com/archive/&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;ruby-weekly&#34;&gt;Ruby Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://rubyweekly.com/&#34;&gt;http://rubyweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://rubyweekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;go-newsletter&#34;&gt;Go Newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://golangweekly.com/&#34;&gt;http://golangweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://golangweekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;dbs&#34;&gt;DBs&lt;/h3&gt;&#xA;&lt;h4 id=&#34;db-weekly&#34;&gt;DB Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://dbweekly.com/&#34;&gt;http://dbweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://dbweekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;weekly-mysql-newsletter&#34;&gt;Weekly MySQL Newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://mysqlnewsletter.com/&#34;&gt;http://mysqlnewsletter.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://us6.campaign-archive1.com/home/?u=009fd87839a759e30570956a2&amp;amp;id=9bd9fc13c5&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;postgres-weekly-newsletter&#34;&gt;Postgres Weekly newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://postgresweekly.com/&#34;&gt;http://postgresweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://postgresweekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;nosql-weekly&#34;&gt;NoSQL Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.nosqlweekly.com/&#34;&gt;http://www.nosqlweekly.com/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;bigdata-science&#34;&gt;(big)Data Science&lt;/h3&gt;&#xA;&lt;h4 id=&#34;big-data-weekly-newsletter&#34;&gt;Big Data Weekly newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.bigdataweekly.com/&#34;&gt;http://www.bigdataweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://us2.campaign-archive1.com/home/?u=878bcd0ec6493f52f57278516&amp;amp;id=8556a84b93&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;datascience-weekly-newsletter&#34;&gt;DataScience Weekly newsletter&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.datascienceweekly.org/&#34;&gt;http://www.datascienceweekly.org/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://www.datascienceweekly.org/newsletters&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;web-development&#34;&gt;Web Development&lt;/h3&gt;&#xA;&lt;h4 id=&#34;html5-weekly&#34;&gt;HTML5 Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://html5weekly.com/&#34;&gt;http://html5weekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://html5weekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;javascript-weekly&#34;&gt;JavaScript Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://javascriptweekly.com/&#34;&gt;http://javascriptweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://javascriptweekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;mobile-web-weekly&#34;&gt;Mobile Web Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://mobilewebweekly.co/&#34;&gt;http://mobilewebweekly.co/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://mobilewebweekly.co/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;node-weekly&#34;&gt;Node Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://nodeweekly.com/&#34;&gt;http://nodeweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://nodeweekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;others&#34;&gt;Others&lt;/h3&gt;&#xA;&lt;h4 id=&#34;raspi-weekly&#34;&gt;RasPi Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.raspiweekly.com/&#34;&gt;http://www.raspiweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://www.raspiweekly.com/archive/&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;bitcoin-weekly&#34;&gt;Bitcoin Weekly&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://bitcoinweekly.com/&#34;&gt;http://bitcoinweekly.com/&lt;/a&gt;&lt;br&gt;&#xA;Past issues: &lt;a href=&#34;http://bitcoinweekly.com/issues&#34;&gt;Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Enjoy !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>How to change Cassandra compaction strategy on a production cluster</title>
      <link>https://blog.alteroot.org/articles/2015-04-20/how-to-change-cassandra-compaction-strategy-on-a-production-cluster.html</link>
      <pubDate>Mon, 20 Apr 2015 12:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2015-04-20/how-to-change-cassandra-compaction-strategy-on-a-production-cluster.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ll talk about changing Cassandra CompactionStrategy on a live production Cluster.&lt;br&gt;&#xA;First of all, an extract of the &lt;a href=&#34;http://docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml_write_path_c.html&#34;&gt;Cassandra documentation&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Periodic compaction is essential to a healthy Cassandra database because Cassandra does not insert/update in place. As inserts/updates occur, instead of overwriting the rows, Cassandra writes a new timestamped version of the inserted or updated data in another SSTable. Cassandra manages the accumulation of SSTables on disk using compaction. Cassandra also does not delete in place because the SSTable is immutable. Instead, Cassandra marks data to be deleted using a tombstone.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;By default, Cassandra use SizeTieredCompactionStrategyi (STC). This strategy triggers a minor compaction when there are a number of similar sized SSTables on disk as configured by the table subproperty, 4 by default.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Another compaction strategy available since &lt;a href=&#34;http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra&#34;&gt;Cassandra 1.0 &lt;/a&gt; is &lt;a href=&#34;http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra&#34;&gt;LeveledCompactionStrategy (LCS)&lt;/a&gt; based on &lt;a href=&#34;https://github.com/google/leveldb&#34;&gt;LevelDB&lt;/a&gt;.&lt;br&gt;&#xA;Since 2.0.11, &lt;a href=&#34;http://www.datastax.com/dev/blog/datetieredcompactionstrategy&#34;&gt;DateTieredCompactionStrategy&lt;/a&gt; is also available.&lt;/p&gt;&#xA;&lt;p&gt;Depending on your needs, you may need to change the compaction strategy on a running cluster. Change this setting involves rewrite ALL sstables to the new strategy, which may take long time and can be cpu / i/o intensive.&lt;/p&gt;&#xA;&lt;p&gt;I needed to change the compaction strategy on my production cluster to LeveledCompactionStrategy because of our workflow : lot of updates and deletes, wide rows etc.&lt;br&gt;&#xA;Moreover, with the default STC, progressively the largest SSTable that is created will not be compacted until the amount of actual data increases four-fold. So it can take long time before old data are really deleted !&lt;/p&gt;&#xA;&lt;p&gt;Note: You can test a new compactionStrategy on one new node with the write_survey bootstrap option. See the &lt;a href=&#34;http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-1-live-traffic-sampling&#34;&gt;datastax blogpost&lt;/a&gt; about it.&lt;/p&gt;&#xA;&lt;p&gt;The basic procedure to change the CompactionStrategy is to alter the table via cql :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cqlsh&amp;gt; ALTER TABLE mykeyspace.mytable  WITH compaction &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;class&amp;#39;&lt;/span&gt; :  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;LeveledCompactionStrategy&amp;#39;&lt;/span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you run alter table to change to LCS like that, all nodes will recompact data at the same time, so performances problems can occurs for hours/days…&lt;/p&gt;&#xA;&lt;p&gt;A better solution is to &lt;strong&gt;migrate nodes by nodes&lt;/strong&gt; !&lt;/p&gt;&#xA;&lt;p&gt;You need to change the compaction locally on-the-fly, via the JMX, like in write_survey mode.&lt;br&gt;&#xA;I use &lt;a href=&#34;http://wiki.cyclopsgroup.org/jmxterm/&#34;&gt;jmxterm&lt;/a&gt; for that. I think I&amp;rsquo;ll write articles about all theses jmx things :)&lt;br&gt;&#xA;For example, to change to LCS on &lt;em&gt;mytable&lt;/em&gt; table with jmxterm :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;~ java -jar jmxterm-1.0-alpha-4-uber.jar --url instance1:7199                                                      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Welcome to JMX terminal. Type &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;help&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; available commands.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&amp;gt;domain org.apache.cassandra.db&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#domain is set to org.apache.cassandra.db&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&amp;gt;bean org.apache.cassandra.db:columnfamily&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;mytable,keyspace&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;mykeyspace,type&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;ColumnFamilies&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#bean is set to org.apache.cassandra.db:columnfamily=mytable,keyspace=mykeyspace,type=ColumnFamilies&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&amp;gt;get CompactionStrategyClass&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#mbean = org.apache.cassandra.db:columnfamily=mytable,keyspace=mykeyspace,type=ColumnFamilies:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CompactionStrategyClass &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&amp;gt;set CompactionStrategyClass &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;org.apache.cassandra.db.compaction.LeveledCompactionStrategy&amp;#34;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#Value of attribute CompactionStrategyClass is set to &amp;#34;org.apache.cassandra.db.compaction.LeveledCompactionStrategy&amp;#34; &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A nice one-liner :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;~ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;set -b org.apache.cassandra.db:columnfamily=mytable,keyspace=mykeyspace,type=ColumnFamilies CompactionStrategyClass org.apache.cassandra.db.compaction.LeveledCompactionStrategy&amp;#34;&lt;/span&gt; | java -jar jmxterm-1.0-alpha-4-uber.jar --url instance1:7199&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On next commitlog flush, the node will start it compaction to rewrite all it &lt;em&gt;mytable&lt;/em&gt; sstables to the new strategy.&lt;/p&gt;&#xA;&lt;p&gt;You can see the progression with nodetool :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;~ nodetool compactionstats&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pending tasks: &lt;span style=&#34;color:#ae81ff&#34;&gt;48&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;compaction type        keyspace           table       completed           total      unit  progress&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Compaction        mykeyspace       mytable      &lt;span style=&#34;color:#ae81ff&#34;&gt;4204151584&lt;/span&gt;     &lt;span style=&#34;color:#ae81ff&#34;&gt;25676012644&lt;/span&gt;     bytes    16.37%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Active compaction remaining time :   0h23m30s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You need to wait for the node to recompact all it sstables, then change the strategy to instance2, etc.&lt;br&gt;&#xA;The transition will be done in multiple compactions if you have lots of data. By default new sstables will be 160MB large.&lt;/p&gt;&#xA;&lt;p&gt;you can monitor you table with nodetool cfstats too :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;~ nodetool cfstats mykeyspace.mytable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Pending Tasks: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;Table: sort&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;SSTable count: &lt;span style=&#34;color:#ae81ff&#34;&gt;31&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;SSTables in each level: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;31/4, 0, 0, 0, 0, 0, 0, 0, 0&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can see the 31/4 : it means that there is 31 sstables in L0, whereas cassandra try to have only 4 in L0.&lt;/p&gt;&#xA;&lt;p&gt;Taken from the code ( src/java/org/apache/cassandra/db/compaction/LeveledManifest.java )&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// L0: 988 [ideal: 4]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// L1: 117 [ideal: 10]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// L2: 12  [ideal: 100]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When all nodes have the new strategy, let&amp;rsquo;s go for the global alter table.&#xA;&lt;strong&gt;/!\ If a node restart before the final alter table, it will recompact to default strategy (SizeTiered)!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;~ cqlsh &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cqlsh&amp;gt; ALTER TABLE mykeyspace.mytable  WITH compaction &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;class&amp;#39;&lt;/span&gt; :  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;LeveledCompactionStrategy&amp;#39;&lt;/span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, I hope this article will help you :)&lt;/p&gt;&#xA;&lt;p&gt;My latest Cassandra blogpost was &lt;a href=&#34;http://blog.alteroot.org/articles/2014-03-12/replace-a-dead-node-in-cassandra.html&#34;&gt;one year ago&lt;/a&gt;…  I have several in mind (jmx things !) so stay tuned !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>HTTP alternative services and opportunistic encryption</title>
      <link>https://blog.alteroot.org/articles/2015-03-28/http-alternative-services-and-opportunistic-encryption.html</link>
      <pubDate>Sat, 28 Mar 2015 17:30:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2015-03-28/http-alternative-services-and-opportunistic-encryption.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-04&#34;&gt;HTTP Alternative services&lt;/a&gt; allow an origin&amp;rsquo;s resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.&lt;br&gt;&#xA;Opportunistic Encryption (OE) provides unauthenticated encryption over TLS for data that would otherwise be carried via clear text. &lt;strong&gt;It allows a http:// connection to use secure resources&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt; : &lt;a href=&#34;https://www.mozilla.org/en-US/security/advisories/mfsa2015-44/&#34;&gt;Mozilla has disabled &amp;ldquo;opportunistic encryption&amp;rdquo;&lt;/a&gt; to fix HTTPS-crippling bug in Firefox 37.0.1 :(&lt;/p&gt;&#xA;&lt;p&gt;You can read a good introduction on &lt;a href=&#34;https://www.mnot.net/blog/2014/03/17/trying_out_tls_for_http_urls&#34;&gt;Mnot blog&lt;/a&gt;. I think this quote is a good summary :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;It doesn&#39;t help at all with active attacks; for example, it&#39;s trivial to downgrade this mechanism to plaintext by simply removing a header. Furthermore, Firefox currently doesn&#39;t check the certificate when using TLS for http:// URLs, so an attacker can pretend to be the server and the browser won&#39;t be the wiser.&#xA;In other words, if you want real security, you still need to use &amp;quot;full&amp;quot; https://. &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Today I read on &lt;a href=&#34;http://bitsup.blogspot.fr/2015/03/opportunistic-encryption-for-firefox.html&#34;&gt;Patrick McManus blog&lt;/a&gt; that Opportunistic Encryption will be available in Firefox 37 ! (&lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=1003448&#34;&gt;the bug report&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;I have a self signed certificate, so let&amp;rsquo;s go for some testing !&lt;br&gt;&#xA;I use nginx, thus I only need to modify my configuration to add the Alt-Svc header in my blog&amp;rsquo;s virtualhost.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;add_header Alt-Svc &#39;h2=&amp;quot;:443&amp;quot;; ma=60&#39;; &#xA;# It seems that it works too with &amp;quot;spdy/3.1=:443&amp;quot;.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You can specify another host, for example h2=&amp;ldquo;secure.alteroot.org:443&amp;rdquo;. In this case, secure.alteroot.org must present a valid certificate for blog.alteroot.org (see &lt;a href=&#34;https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-04#section-2.1&#34;&gt;the rfc&lt;/a&gt;, Clients MUST NOT use alternative services with a host that is different than the origin&amp;rsquo;s without strong server authentication.)&lt;br&gt;&#xA;The &amp;ldquo;ma&amp;rdquo; is &amp;lsquo;max-age&amp;rsquo;,  which indicates the number of seconds since the response was generated the alternative service is considered fresh for (default 24h). According to my tests, once the max-age is expired ( 60 sec without requests in this example), the browser reuses plain http request.&lt;/p&gt;&#xA;&lt;p&gt;Of course your service must be configured on port 443 with an ssl certificate (even selfsigned).&lt;/p&gt;&#xA;&lt;p&gt;Here a screenshot of Firefox 37 inspector.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.alteroot.org/media/images/firefox-alt-svc.png&#34; alt=&#34;firefox 37 alt-svc&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;You can see that I request &lt;a href=&#34;http://blog.alteroot.org&#34;&gt;http://blog.alteroot.org&lt;/a&gt; (first two requests), then I refresh : now my request use encryption !&lt;br&gt;&#xA;You see the Alt-Svc header sent by nginx, and the client header &amp;ldquo;Alt-Used: 1&amp;rdquo; (When a client uses an alternate service, it MUST emit the Alt-Used header field on every request using that alternate service.).&lt;br&gt;&#xA;And no certificate warning !&lt;/p&gt;&#xA;&lt;p&gt;In my nginx log, I can see that the browser use a secure channel :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;[28/Mar/2015:17:23:09 +0100] &amp;quot;GET /page2/ HTTP/1.1&amp;quot; 304 200 &amp;quot;http://blog.alteroot.org/&amp;quot; &amp;quot;Mozilla/5.0 (X11; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0&amp;quot; blog.alteroot.org:443 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;At the moment, only Firefox 37 support alt-svc for Opportunistic Encryption. A &lt;a href=&#34;https://code.google.com/p/chromium/issues/detail?id=392575&#34;&gt;chromium&lt;/a&gt; implementation is under development.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>News from Xfce 4.12, part 3</title>
      <link>https://blog.alteroot.org/articles/2015-02-19/news-from-xfce-4.12-part-3.html</link>
      <pubDate>Thu, 19 Feb 2015 13:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2015-02-19/news-from-xfce-4.12-part-3.html</guid>
      <description>&lt;p&gt;A bunch of news from the development of Xfce 4.12 !&lt;br&gt;&#xA;Since &lt;a href=&#34;http://blog.alteroot.org/articles/2014-11-19/news-from-xfce-part-2.html&#34;&gt;my previous post in november (read it !)&lt;/a&gt; , many things have happened.&lt;br&gt;&#xA;First, &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031057.html&#34;&gt;the most awaited news &amp;hellip; wait for it&amp;hellip;&lt;/a&gt; a date has been decided ! &lt;strong&gt;4.12&lt;/strong&gt; will released by &lt;strong&gt;the last week end of February 2015 !&lt;/strong&gt; (yes, 1 week from now)&lt;/p&gt;&#xA;&lt;p&gt;Now, I would like to draw your attention to a list of threads on the xfce4-dev mailist :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-November/030946.html&#34;&gt;Listing our current forces&lt;/a&gt; : This thread has helped a lot to grant privileges on git, bugzilla and xfce internal services to more people. Now it&amp;rsquo;s easier to give access to a new contributors !&lt;/li&gt;&#xA;&lt;li&gt;A proposition to do &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-November/030975.html&#34;&gt;regular releases for translation updates&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;A Xfce mirror is now &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-December/030979.html&#34;&gt;available on GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Discussions around the &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031062.html&#34;&gt;4.12 default Gtk+ theme&lt;/a&gt;. Maybe the &amp;rsquo;new&amp;rsquo; xfce-refresh from ochosi&lt;/li&gt;&#xA;&lt;li&gt;About gtk-xfce-engine, the decision has been made to drop the gtk3 engine part completely, and leave creating themes to themers &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031084.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031084.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Participation to &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031112.html&#34;&gt;GSoC 2015 ?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;In order to attract new contributors to Xfce, a &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031123.html&#34;&gt;&amp;ldquo;list of easy bugs&amp;rdquo;&lt;/a&gt; is now available &lt;a href=&#34;https://wiki.xfce.org/contribute/easybugs&#34;&gt;on the wiki&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;4.12 String freeze will be the 20 February to let translators do their job &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031127.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031127.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;New discussion about the &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031128.html&#34;&gt;port to GTK3&lt;/a&gt;. Note: some components (libxfce4ui, xfce4-panel etc) already have a partial support of gtk3.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://twitter.com/xfceofficial/status/567661493366575104&#34;&gt;In other news&lt;/a&gt;, Graeme Gott&amp;rsquo;s Whisker Menu plugin is now an official Xfce project! Andrzej&amp;rsquo;s PulseAudio plugin also joining the family!&lt;/li&gt;&#xA;&lt;li&gt;The &lt;a href=&#34;https://wiki.xfce.org/releng/4.12/roadmap/critical-bugs&#34;&gt;critical bug list&lt;/a&gt; has almost been eradicated, huge congrats to all developpers :)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;core-apps-&#34;&gt;Core Apps :&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-panel&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The intelligent panel hiding feature (see my previous post) has been released in &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-January/000351.html&#34;&gt;4.11.2&lt;/a&gt; !&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfwm4&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;p&gt;Oh wow, many commits, such features ! You can read the &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-February/000357.html&#34;&gt;4.11.3 announcement here&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Add titleless maximization feature.&lt;/li&gt;&#xA;&lt;li&gt;Client Side Decoration (&lt;a href=&#34;http://blogs.gnome.org/mclasen/2014/01/13/client-side-decorations-continued/&#34;&gt;CSD&lt;/a&gt;) support ! (Compositor need to be enabled). A screenshot with and without on gedit (an application that need CSD)&#xA;&lt;img src=&#34;https://i.imgur.com/nyOtGcwl.png&#34; alt=&#34;CSD on xfwm4&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Windows preview in alt+tab (Compositor need to be enabled too).&#xA;&lt;img src=&#34;https://i.imgur.com/aNQi8m8l.png&#34; alt=&#34;Windows preview in alttab&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Nice, right ? :)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-settings&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Release of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-February/000358.html&#34;&gt;4.11.4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Add touchpad support with &lt;a href=&#34;http://freedesktop.org/wiki/Software/libinput/&#34;&gt;libinput&lt;/a&gt; (yes, already !)&lt;/li&gt;&#xA;&lt;li&gt;Better monitor and multi monitor support&lt;/li&gt;&#xA;&lt;li&gt;Add Gtk+ theme palettes in the appearance dialog (see screenshot)&lt;/li&gt;&#xA;&lt;li&gt;Add previews for icon themes in appearance settings (see screenshot)&#xA;&lt;img src=&#34;https://i.imgur.com/v72TSfJl.png&#34; alt=&#34;Themes and icons preview&#34;&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-session&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Bugfixes, bugfixes, bugfixes !&lt;/li&gt;&#xA;&lt;li&gt;The &amp;ldquo;logind runtime detection to support suspend/hibernate&amp;rdquo; patch has been merged.&lt;/li&gt;&#xA;&lt;li&gt;Release of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000346.html&#34;&gt;4.11.1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;thunar&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Add support for the GTK 3 bookmarks file,&lt;/li&gt;&#xA;&lt;li&gt;Bugfixes, support for binary file size units&lt;/li&gt;&#xA;&lt;li&gt;Release of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-January/000353.html&#34;&gt;1.6.4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;gtk-xfce-engine&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Drop of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2015-February/031084.html&#34;&gt;gtk3 part&lt;/a&gt; of the engine + fixes&lt;/li&gt;&#xA;&lt;li&gt;Release of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-February/000362.html&#34;&gt;3.1.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-dev-tools&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fixes, dependencies update etc&lt;/li&gt;&#xA;&lt;li&gt;Release of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-February/000359.html&#34;&gt;4.11.1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfconf&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Not many exciting changes for this release, mostly translation updates, small fixes and code tweaks.. &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-February/000363.html&#34;&gt;4.11.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;apps-&#34;&gt;Apps :&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-screenshooter&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Support of imgur uploads ! Yes ! &lt;img src=&#34;https://i.imgur.com/GYXSUcdl.png&#34; alt=&#34;imgur upload&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Release of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-January/000354.html&#34;&gt;1.8.2&lt;/a&gt; . Thank gaston !&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-taskmanager&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Big cleanup of UI, with new treeview mode, general UI/graph overhaul and lot of bugfixes) &lt;img src=&#34;https://i.imgur.com/AMezD5Al.png&#34; alt=&#34;xfce4-taskmanager&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Release of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000350.html&#34;&gt;1.1.0&lt;/a&gt; with all theses changes. Thanks gaston, ochosi and Cavalier&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-power-manager&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The famous &amp;ldquo;&lt;a href=&#34;https://bugzilla.xfce.org/show_bug.cgi?id=11054&#34;&gt;Please bring back the tray icon&lt;/a&gt;&amp;rdquo; bug got some attention, with a patch from Eric to re-add a tray icon, it need extended testing though&lt;/li&gt;&#xA;&lt;li&gt;Release of &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000345.html&#34;&gt;1.4.2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;panel-plugins-&#34;&gt;Panel Plugins :&lt;/h2&gt;&#xA;&lt;p&gt;Some love for panel plugins, from Harald Judt and Landry Breuil, mostly build/bugfixes and translations updates :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;xfce4-systemload-plugin 1.1.3 &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-November/000343.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2014-November/000343.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfce4-netload-plugin 1.2.4 &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-November/000344.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2014-November/000344.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfce4-weather-plugin 0.8.5 &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000347.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000347.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfce4-eyes-plugin 4.4.3 &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000348.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000348.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfce4-cpufreq-plugin 1.1.1 &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000349.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2014-December/000349.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfce4-verve-plugin 1.0.1 &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-January/000355.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2015-January/000355.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfce4-indicator-plugin 2.3.3 &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2015-January/000352.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2015-January/000352.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;As you can see, xfce development is more active than ever !&lt;br&gt;&#xA;So be prepared to be amazed by 4.12 in a few weeks !&lt;/p&gt;&#xA;&lt;p&gt;Sources :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The #xfce-dev IRC chan on Freenode, THE place to be.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/&#34;&gt;Xfce4 dev list&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Thanks to ToZ  on the &lt;a href=&#34;https://forum.xfce.org/viewtopic.php?id=8945&#34;&gt;xfce forum&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>News from xfce 4.12, part 2 !</title>
      <link>https://blog.alteroot.org/articles/2014-11-19/news-from-xfce-4.12-part-2.html</link>
      <pubDate>Wed, 19 Nov 2014 21:30:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-11-19/news-from-xfce-4.12-part-2.html</guid>
      <description>&lt;p&gt;&lt;em&gt;Update 19/02/2015&lt;/em&gt; : &lt;a href=&#34;http://blog.alteroot.org/articles/2015-02-19/new-from-xfce-part-3.html&#34;&gt;A new post is available !&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Following my first post about the Xfce development status 4 months ago (you can (re) read it &lt;a href=&#34;http://blog.alteroot.org/articles/2014-07-26/news-from-xfce.html&#34;&gt;here&lt;/a&gt;), let&amp;rsquo;s go for a bunch of reviews of the last commits.&lt;/p&gt;&#xA;&lt;p&gt;A little clarifications about comments on my 1st post : I&amp;rsquo;m NOT a core xfce dev, I&amp;rsquo;m just a small contributor, who try to help as much as I can.&lt;/p&gt;&#xA;&lt;p&gt;Note: You can see lots of screenshots about all theses news features on the xfce forum, in the &lt;a href=&#34;https://forum.xfce.org/viewtopic.php?id=8945&#34;&gt;What&amp;rsquo;s New in Xfce&lt;/a&gt; topic from ToZ.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-power-manager&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A new xfce4-power-manager release (compatible with xfce 4.10), thanks to Eric Koegell and Simon Steinbeiss&lt;/li&gt;&#xA;&lt;li&gt;Provide a better support of systemd and upower&lt;/li&gt;&#xA;&lt;li&gt;Brightness plugin has been merged into the battery indicator plugin so a new plugin is born, &amp;ldquo;Power Manager plugin&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Some design changes, see &lt;a href=&#34;https://forum.xfce.org/viewtopic.php?pid=34040#p34040&#34;&gt;screenshots&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;The roadmap to 1.5 : &lt;a href=&#34;https://wiki.xfce.org/design/power-manager&#34;&gt;https://wiki.xfce.org/design/power-manager&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfdesktop&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Add a &amp;ndash;next option to force wallpaper changes&lt;/li&gt;&#xA;&lt;li&gt;Add a move to trash menu option&lt;/li&gt;&#xA;&lt;li&gt;Add an &amp;ndash;enable-debug option added to xfdesktop-settings&lt;/li&gt;&#xA;&lt;li&gt;Add optional blurring on shadow on text of icons, see &lt;a href=&#34;https://forum.xfce.org/viewtopic.php?pid=34780#p34780&#34;&gt;Screenshots&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-panel&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Implementation of a &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-July/030810.html&#34;&gt;intelligent auto-hide functionality&lt;/a&gt; by Jannis Pohlmann !&lt;/li&gt;&#xA;&lt;li&gt;Whenever the active window changes or whenever the geometry of an already active window changes, the algorithm checks whether the active window and the panel overlap. If this is the case, the panel is hidden. Otherwise, it is made or remains visible.&lt;/li&gt;&#xA;&lt;li&gt;A quick demo (only available in git version for now)&#xA;&lt;video controls  width=&#34;640&#34; height=&#34;480&#34; controls&gt;&lt;source src=&#34;https://blog.alteroot.org/media/video/xfce4-panel-intellignet-hide.ogv&#34; type=&#34;video/ogg&#34;&gt;Xfce4-panel 4.12 intelligent auto-hide feature&lt;/video&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-session&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Add logind runtime detection to support suspend/hibernate&lt;/li&gt;&#xA;&lt;li&gt;Support for upower 0.99&lt;/li&gt;&#xA;&lt;li&gt;Add DragonflyBSD to host check&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-settings&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Reapply settings when external keyboard connects&lt;/li&gt;&#xA;&lt;li&gt;New display settings dialog&lt;/li&gt;&#xA;&lt;li&gt;Add support for upower 0.99&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;Thunar&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Default application not respected with glib &amp;gt;= 2.4&lt;/li&gt;&#xA;&lt;li&gt;Check for thumbnails in the location&lt;/li&gt;&#xA;&lt;li&gt;Add appdata file&lt;/li&gt;&#xA;&lt;li&gt;Add pkexec policy. This way if the user of a desktop system wants to use thunar to modify files as root and has the proper credentials they can.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;Apps / Plugins&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Mousepad and &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-July/000328.html&#34;&gt;Parole&lt;/a&gt; have been ported to gtk3 !&lt;/li&gt;&#xA;&lt;li&gt;Partial rewrite of squeeze (Archive manager)&lt;/li&gt;&#xA;&lt;li&gt;Multiples releases/bugfixes of xfce4-netload-plugin, xfce4-weather-plugin,  xfce4-equake-plugin&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;Development Releases of core components&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;xfdesktop 4.11.8 : &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-August/030823.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2014-August/030823.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfwm4 4.11.2 : &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-July/000329.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2014-July/000329.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfce4-settings 4.11.3 : &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce-announce/2014-July/000329.html&#34;&gt;https://mail.xfce.org/pipermail/xfce-announce/2014-August/000333.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;Maintenances/New Releases (for xfce 4.10 )&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Xfce4-power-manager 1.4.1 : see above in this post. &lt;a href=&#34;http://git.xfce.org/xfce/xfce4-power-manager/tree/NEWS&#34;&gt;http://git.xfce.org/xfce/xfce4-power-manager/tree/NEWS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;xfdesktop 4.10.3 : Release of a maintenance version which fix a lot of bugs. &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-November/030941.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2014-November/030941.html&lt;/a&gt;, thanks to Eric Koegel&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;Others&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A side note about &lt;a href=&#34;https://github.com/the-cavalry/light-locker&#34;&gt;light-locker&lt;/a&gt;, a simple session-locker for lightdm, which work really great with xfce :). If you want a nice and modern locker, try it !&lt;/li&gt;&#xA;&lt;li&gt;Debian Jessie will use xfce 4.10 (as 4.12 is not ready on 5th November, the date of Debian Freeze)&lt;/li&gt;&#xA;&lt;li&gt;If you are an ArchLinux user, and want to test the devel version of xfce, you can use &lt;a href=&#34;http://download.alteroot.org/arch/xfce4.11/x86_64/README.txt&#34;&gt;my [xfce411] repo&lt;/a&gt;. NO WARRANTY, support or whatever ! Use it at your own risks. Read the README ;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;Last minute&lt;/em&gt; : A reorganisation of the team is running, to list our current force, identify weak spots (where we urgently need new contributors), welcome new members etc. See &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-November/030946.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2014-November/030946.html&lt;/a&gt; for more informations !&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Sources :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Thanks to ToZ  on the &lt;a href=&#34;https://forum.xfce.org/viewtopic.php?id=8945&#34;&gt;xfce forum&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;The #xfce-dev IRC chan on Freenode, the best way to be involved in Xfce development&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/&#34;&gt;Xfce4 dev list&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Slides du Premier Meetup Archlinux France</title>
      <link>https://blog.alteroot.org/articles/2014-10-22/slides-du-premier-meetup-archlinux-france.html</link>
      <pubDate>Wed, 22 Oct 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-10-22/slides-du-premier-meetup-archlinux-france.html</guid>
      <description>&lt;p&gt;Ce 21 Octobre a eu lieu le premier &lt;a href=&#34;http://www.meetup.com/archlinux-france/events/209417752/&#34;&gt;meetup&lt;/a&gt; Archlinux France, dans les locaux d&amp;rsquo;Arkena à Paris.&lt;/p&gt;&#xA;&lt;p&gt;Deux sujets étaient à l&amp;rsquo;ordre du jour :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Présentation de la communauté Archlinux.fr ( par moi même )&lt;/li&gt;&#xA;&lt;li&gt;Gestion de serveurs sous Archlinux ( par &lt;a href=&#34;https://twitter.com/seblu42&#34;&gt;seblu&lt;/a&gt; )&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;35 personnes étaient présentes, ce qui est pas mal pour une première sans trop de communication (on commence doucement !)&lt;/p&gt;&#xA;&lt;p&gt;Les discussions ont été très intéressantes, avec la présence de plusieurs developpeurs Archlinux, entre autres &lt;a href=&#34;https://www.archlinux.org/developers/#guillaume&#34;&gt;Guillaume&lt;/a&gt; , &lt;a href=&#34;https://www.archlinux.org/developers/#remy&#34;&gt;Remy&lt;/a&gt; , et bien sur &lt;a href=&#34;https://www.archlinux.org/developers/#seblu&#34;&gt;Seblu&lt;/a&gt; (qui a organisé tout ça !)&lt;/p&gt;&#xA;&lt;p&gt;Voici mes slides, présentant Archlinux.fr, son histoire, ses projets, ses besoins. Vous pouvez d&amp;rsquo;ailleurs aussi &lt;a href=&#34;http://blog.alteroot.org/articles/2014-05-18/archlinuxfr-passe-present-futur.html&#34;&gt;relire ce post&lt;/a&gt; d&amp;rsquo;il y a quelques mois).&lt;br&gt;&#xA;Seblu devrait partager les siens prochainement :) :&lt;/p&gt;&#xA;&lt;iframe id=&#34;viewer&#34; src=&#34;//blog.alteroot.org/media/tools/viewerjs/#../../misc/Archlinux.fr.meetup.21octobre2014.Skunnyk.pdf&#34; width=&#39;800&#39; height=&#39;566&#39; allowfullscreen webkitallowfullscreen&gt;&lt;/iframe&gt; &#xA;&lt;p&gt;Merci à tous les présents, et à bientôt pour la prochaine session !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Nginx - create a cache based on upstream response time</title>
      <link>https://blog.alteroot.org/articles/2014-10-01/nginx-create-a-cache-based-on-upstream-response-time.html</link>
      <pubDate>Wed, 01 Oct 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-10-01/nginx-create-a-cache-based-on-upstream-response-time.html</guid>
      <description>&lt;p&gt;The problem : be able to cache a backend response if it took more than 5 seconds. If not, don&amp;rsquo;t cache it!&lt;br&gt;&#xA;A good challenge from &lt;a href=&#34;https://twitter.com/florentsolt&#34;&gt;@florentsolt&lt;/a&gt;. He solves the problem with a nodejs reverse proxy behind nginx, but I prefer a pure nginx implementation ;)&lt;/p&gt;&#xA;&lt;p&gt;I needed that kind of configuration as a temporary workaround due to a proprietary backend which responds slowly to certain request, and quickly to anothers.&lt;br&gt;&#xA;So instead of let the client wait 10 seconds or more, it&amp;rsquo;s better to render a cached response for next clients for 60 seconds, even if it&amp;rsquo;s not the more up to date data.&lt;/p&gt;&#xA;&lt;p&gt;Finding no informations on the subject, here&amp;rsquo;s my solution (maybe not the better, but it worked for my needs). If you have a better solution (even with another software), you can add a comment :).&lt;/p&gt;&#xA;&lt;p&gt;I use the &amp;ldquo;map&amp;rdquo; directive to set a variable and pass it via the X-Accel-Expires header (from &lt;a href=&#34;http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_valid&#34;&gt;man page&lt;/a&gt; : &lt;em&gt;Parameters of caching can also be set directly in the response header. This has higher priority than setting of caching time using the directive. The &amp;ldquo;X-Accel-Expires&amp;rdquo; header field sets caching time of a response in seconds.&lt;/em&gt;  ).&lt;/p&gt;&#xA;&lt;p&gt;I use two vhosts for this trick, because we need to calculate the response time before send the response to the client.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;proxy_cache_path&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/home/tmpcache/mycache&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;levels=1:2&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;keys_zone=example:10m&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# If request_time &amp;gt; 3sec -&amp;gt; set a 60sec cache&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;map&lt;/span&gt; $request_time $longtime {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;~^([3-9]|[1-9][0-9]+)\.&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;60&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;default&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;listen&lt;/span&gt; 127.0.0.1:&lt;span style=&#34;color:#ae81ff&#34;&gt;8888&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;root&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/var/www/&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;example.com&lt;/span&gt;; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt; { &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;proxy_redirect&lt;/span&gt;          &lt;span style=&#34;color:#66d9ef&#34;&gt;off&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;Host&lt;/span&gt; $host;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;proxy_pass&lt;/span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;http://mybackend&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;add_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Accel-Expires&lt;/span&gt; $longtime;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;root&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/var/www/&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;example.com&lt;/span&gt;; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt; { &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;proxy_redirect&lt;/span&gt;          &lt;span style=&#34;color:#66d9ef&#34;&gt;off&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;Host&lt;/span&gt; $host;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;proxy_pass&lt;/span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;http://127.0.0.1:8888&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;proxy_cache&lt;/span&gt;             &lt;span style=&#34;color:#e6db74&#34;&gt;example&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;proxy_cache_valid&lt;/span&gt;       &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0m&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;add_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Cached&lt;/span&gt; $upstream_cache_status;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;add_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Time&lt;/span&gt; $request_time;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A request to &lt;a href=&#34;http://example.com:8080&#34;&gt;http://example.com:8080&lt;/a&gt; will now force nginx to cache the response if it take more than 3 seconds via X-Accel-Expires: 60.&lt;br&gt;&#xA;If request take less than 3 sec, a X-Accel-Expires: 0 is sent, which totally disable caching.&lt;/p&gt;&#xA;&lt;p&gt;We can see it with curl :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# curl -I &amp;#34;http://example.com:8080/mylongrequest&amp;#34; &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/1.1 &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt; OK&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Server: nginx/1.6.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Date: Tue, &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt; Sep &lt;span style=&#34;color:#ae81ff&#34;&gt;2014&lt;/span&gt; 16:43:35 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Content-Type: text/xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Connection: keep-alive&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Cached: MISS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Time: 11.862&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It took 11.8 sec ! On the next call :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# curl -I &amp;#34;http://example.com:8080/mylongrequest&amp;#34; &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/1.1 &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt; OK&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Server: nginx/1.6.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Date: Tue, &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt; Sep &lt;span style=&#34;color:#ae81ff&#34;&gt;2014&lt;/span&gt; 16:45:05 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Content-Type: text/xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Connection: keep-alive&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Cached: HIT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Time: 0.000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We hit the cache \o/&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Remote code execution through bash CVE-2014-6271</title>
      <link>https://blog.alteroot.org/articles/2014-09-24/remote-code-execution-through-bash-cve-2014-6271.html</link>
      <pubDate>Wed, 24 Sep 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-09-24/remote-code-execution-through-bash-cve-2014-6271.html</guid>
      <description>&lt;p&gt;A new vulnerability has been discovered in bash, related to how environment variables are processed. You can &lt;a href=&#34;https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/&#34;&gt;read more&lt;/a&gt; on redhat security blog.&#xA;This vulnerability can be used to execute remote code, even via ssh, if the remote shell is bash.&lt;/p&gt;&#xA;&lt;p&gt;In ssh, you can use the ForceCommand in sshd_config, or the &amp;ldquo;command&amp;rsquo; option in .ssh/authorized_keys. This option &amp;lsquo;Specifies that the command is executed whenever this key is used for authentication. The command supplied by the user (if any) is ignored.&amp;rsquo; (man sshd).&lt;br&gt;&#xA;So you can use it for example to auto launch a backup script when the user connect, and nothing more.&lt;/p&gt;&#xA;&lt;p&gt;For example in test/.ssh/authorized_keys,&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;command=&amp;quot;/usr/local/bin/backup.sh&amp;quot; ssh-rsa [...thepublickey...]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now, a &amp;ldquo;ssh &lt;a href=&#34;mailto:test@myserver.com&#34;&gt;test@myserver.com&lt;/a&gt;&amp;rdquo; will automatically launch this script, and that&amp;rsquo;s all.&lt;/p&gt;&#xA;&lt;p&gt;With CVE-2014-6271, the flaw is triggered when extra code is added to the end of these function definitions (inside the environment variable).&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ ssh test@myserver.com &#39;() { ignored; }; /bin/date&#39;&#xA;Wed Sep 24 18:32:41 CEST 2014&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;So, instead of execute your backup script, your custom command is launched !&lt;br&gt;&#xA;From there; everything is possible&amp;hellip;&lt;br&gt;&#xA;So especially update your bash package if you have this kind of configuration !&lt;/p&gt;&#xA;&lt;p&gt;Note: of course, in this case, the remote attacker need a valid account on the machine. But if you use command/ForceCommand to provide git-shell access for example, this can be a real problem !&lt;/p&gt;&#xA;&lt;p&gt;Sources :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://seclists.org/oss-sec/2014/q3/649&#34;&gt;http://seclists.org/oss-sec/2014/q3/649&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://bugzilla.novell.com/show_bug.cgi?id=896776&#34;&gt;http://bugzilla.novell.com/show_bug.cgi?id=896776&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/&#34;&gt;https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.csoonline.com/article/2687265/application-security/remote-exploit-in-bash-cve-2014-6271.html&#34;&gt;http://www.csoonline.com/article/2687265/application-security/remote-exploit-in-bash-cve-2014-6271.html&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>News from Xfce !</title>
      <link>https://blog.alteroot.org/articles/2014-07-26/news-from-xfce.html</link>
      <pubDate>Sat, 26 Jul 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-07-26/news-from-xfce.html</guid>
      <description>&lt;p&gt;&lt;em&gt;Update 19/11/2014&lt;/em&gt; : &lt;a href=&#34;http://blog.alteroot.org/articles/2014-11-19/news-from-xfce-part-2.html&#34;&gt;A new post is available !&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Some news from Xfce, my favourite Desktop Environment, that I use since something like 2006.&lt;/p&gt;&#xA;&lt;p&gt;The development is relatively slow (the last stable version, &lt;a href=&#34;http://xfce.org/about/news/?post=1335571200&#34;&gt;4.10&lt;/a&gt; was released in April 2012). There is not so many developers, 1 or 2 &amp;ldquo;core&amp;rdquo; devs, and less than 10 contributors (who are generally distributions maintainers, from debian, xubuntu, gentoo, arch, thanks to them !).&lt;/p&gt;&#xA;&lt;p&gt;There was a &lt;a href=&#34;https://wiki.xfce.org/releng/4.12/roadmap&#34;&gt;roadmap&lt;/a&gt; for 4.12, where it was planned to release 4.12 mid-2013. But, hey, it&amp;rsquo;s open source, it will be out when &amp;ldquo;it will be ready&amp;rdquo; :-).&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-June/030772.html&#34;&gt;Some weeks ago&lt;/a&gt;, it was decided to establish a list of &amp;ldquo;critical bugs&amp;rdquo; to be eradicated in order to release xfce 4.12.&lt;br&gt;&#xA;You can find the list here : &lt;a href=&#34;https://wiki.xfce.org/releng/4.12/roadmap/critical-bugs&#34;&gt;https://wiki.xfce.org/releng/4.12/roadmap/critical-bugs&lt;/a&gt;.&lt;br&gt;&#xA;Xfce 4.12 will still use gtk2, with some support of gtk3 for better integration.&lt;br&gt;&#xA;Port to gtk3 will maybe be done for the next version.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;What will be new in xfce 4.12 ?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;All major components are already available in development version (4.11), here are a small list of what to expect :&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;xfwm4&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Zoom mode. &lt;a href=&#34;http://blog.alteroot.org/articles/2013-12-11/xfce-xfwm4-zoom-mode.html&#34;&gt;I wrote about this cool new feature in december&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;New, themable tabwin (alt+tab)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;img src=&#34;https://blog.alteroot.org/media/images/xfwm4-tabwin-4.12.png&#34; alt=&#34;xfwm4-tabwin-4.12&#34; style=&#34;width: 300px;&#34;/&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Changelog at &lt;a href=&#34;http://git.xfce.org/xfce/xfwm4/tree/NEWS&#34;&gt;http://git.xfce.org/xfce/xfwm4/tree/NEWS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-settings&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The display settings have been much improved with supporting extended desktop mode for 2 monitors and an improve minimal dialog.&lt;/li&gt;&#xA;&lt;li&gt;Changelog at &lt;a href=&#34;http://git.xfce.org/xfce/xfce4-settings/tree/NEWS&#34;&gt;http://git.xfce.org/xfce/xfce4-settings/tree/NEWS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfdesktop&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Lot of works on xfdesktop, already 6 pre releases!&lt;/li&gt;&#xA;&lt;li&gt;Per-workspace wallpapers support (finally !)&lt;/li&gt;&#xA;&lt;li&gt;Better multi monitor handling&lt;/li&gt;&#xA;&lt;li&gt;Changelog at &lt;a href=&#34;http://git.xfce.org/xfce/xfdesktop/tree/NEWS&#34;&gt;http://git.xfce.org/xfce/xfdesktop/tree/NEWS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;xfce4-panel&lt;/em&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Support of gtk3 plugins&lt;/li&gt;&#xA;&lt;li&gt;Better behavior of buttons/menus&lt;/li&gt;&#xA;&lt;li&gt;Changelog at &lt;a href=&#34;http://git.xfce.org/xfce/xfce4-panel/tree/NEWS&#34;&gt;http://git.xfce.org/xfce/xfce4-panel/tree/NEWS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;And lot of works on other components, like xfce4-power-manager (systemd support), xfburn, xfce4-mixer etc&#xA;There is still some works/tests to be done on upower or systemd support for example.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt; : You can see lot of screenshots of new features on the Xfce forum, by ToZ : &lt;a href=&#34;https://forum.xfce.org/viewtopic.php?id=8945&#34;&gt;https://forum.xfce.org/viewtopic.php?id=8945&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Buildbot&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;A &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-June/030774.html&#34;&gt;new buildbot based on jenkins&lt;/a&gt; is available since few days on &lt;a href=&#34;http://buildbot.xfce.org&#34;&gt;http://buildbot.xfce.org&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Bountysource&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s easier to copy &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-July/030802.html&#34;&gt;the mail from Simon Steinbeiß&lt;/a&gt; to explain this part :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;To get to the point: we see bountysource[2] as an easy way to offer&#xA;the community with a way to financially support Xfce. There are two&#xA;avenues a backer can choose from.&#xA;1) Set a bounty on a specific bug (we&#39;ve pulled in all the reports for&#xA;many components already, so you can easily find them on&#xA;bountysource.com)&#xA;2) Back the Xfce team&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: More explanations about bountysource: &lt;a href=&#34;https://mail.xfce.org/pipermail/xfce4-dev/2014-July/030807.html&#34;&gt;https://mail.xfce.org/pipermail/xfce4-dev/2014-July/030807.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;So if you are interested yo help Xfce, go to &lt;a href=&#34;http://docs.xfce.org/contribute/start&#34;&gt;the contribute wiki page !&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Chiffrement entre serveurs avec starttls et postfix</title>
      <link>https://blog.alteroot.org/articles/2014-07-02/chiffrement-entre-serveurs-avec-starttls-et-postfix.html</link>
      <pubDate>Wed, 02 Jul 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-07-02/chiffrement-entre-serveurs-avec-starttls-et-postfix.html</guid>
      <description>&lt;p&gt;Depuis quelques temps, la question du chiffrement des mails en transit (de serveurs à serveurs) revient d&amp;rsquo;actualité. On peut voir google qui diffuse des statistiques dans son report &lt;a href=&#34;http://www.google.com/transparencyreport/saferemail/&#34;&gt;&amp;ldquo;Safer email&amp;rdquo;&lt;/a&gt;,&lt;/p&gt;&#xA;&lt;p&gt;En effet dans l&amp;rsquo;état actuel, si vous avez suivi le setup d&amp;rsquo;un &lt;a href=&#34;http://blog.alteroot.org/articles/2013-10-07/setup-postfix-dspam-dovecot.html&#34;&gt;serveur mail&lt;/a&gt;, les connexions sont chiffrées entre le client (thunderbird par exemple) et votre serveur mail, mais pas lors de l&amp;rsquo;envoi d&amp;rsquo;un mail vers un domaine distant (de serveur à serveur donc).&lt;/p&gt;&#xA;&lt;p&gt;Par exemple, quand j&amp;rsquo;envoi un mail vers example.com depuis mondomaine.org :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;client mail ===&amp;gt; smtp.mondomaine.org ---&amp;gt; smtp.example.com ===&amp;gt; client mail&#xA;&#xA;===&amp;gt; : chiffré&#xA;---&amp;gt; : non chiffré&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On voit bien que le mail transite en clair sur l&amp;rsquo;internet à un moment. Dommage de chiffrer aux deux bouts si le transit sur le net se fait en clair !&lt;/p&gt;&#xA;&lt;p&gt;Pour remédier à cela, c&amp;rsquo;est assez simple avec postfix (et encore plus avec &lt;a href=&#34;https://opensmtpd.org/&#34;&gt;opensmtpd&lt;/a&gt;), il suffit de modifier quelques options dans la configuration de postfix pour que starttls soit actif, fichier /etc/postfix/main.cf :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;smtpd_tls_security_level = may # Cette directive remplace smtpd_use_tls=yes&#xA;smtp_tls_security_level = may # &amp;quot;may&amp;quot; pour autoriser l&#39;envoi de mail si le serveur distant ne supporte pas STARTTLS (ce qui est encore relativement courant).&#xA;smtpd_tls_exclude_ciphers = aNULL, MD5, DES, ADH # On desactive certains ciphers pour des raisons de sécurité...&#xA;smtpd_tls_loglevel = 1 # Et on ajoute quelques logs pour voir si tout se passe bien &#xA;smtp_tls_loglevel = 1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Il est possible d&amp;rsquo;être bien plus stricte sur la directive smtp_tls_security_level, voir &lt;a href=&#34;http://www.postfix.org/postconf.5.html#smtp_tls_security_level&#34;&gt;http://www.postfix.org/postconf.5.html#smtp_tls_security_level&lt;/a&gt;, à vous de tester selon vos besoins.&lt;/p&gt;&#xA;&lt;p&gt;Vous pouvez ensuite tester votre configuration sur &lt;a href=&#34;https://starttls.info/&#34;&gt;https://starttls.info/&lt;/a&gt;, ou via &lt;a href=&#34;https://github.com/iSECPartners/sslyze&#34;&gt;sslyze&lt;/a&gt; (merci &lt;a href=&#34;https://twitter.com/Puckel_&#34;&gt;Puckel&lt;/a&gt; pour l&amp;rsquo;info) :&lt;/p&gt;&#xA;&lt;img src=&#34;https://blog.alteroot.org/media/images/starttls-alteroot.png&#34; alt=&#34;Starttls alteroot&#34; style=&#34;width: 400px;&#34;/&gt;&#xA;&lt;p&gt;Note : Postfix supporte &lt;a href=&#34;http://fr.wikipedia.org/wiki/DNS_-_based_Authentication_of_Named_Entities&#34;&gt;DANE&lt;/a&gt; depuis la &lt;a href=&#34;http://www.postfix.org/TLS_README.html#client_tls_dane&#34;&gt;version 2.11&lt;/a&gt;, qui permet une validation des certificats via DNSSEC. Ayant du DNSSEC sur alteroot.org, cela sera surement  l&amp;rsquo;objet d&amp;rsquo;un prochain article :)&lt;/p&gt;&#xA;&lt;p&gt;Sources :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.postfix.org/postconf.5.html#smtpd_tls_exclude_ciphers&#34;&gt;http://www.postfix.org/postconf.5.html#smtpd_tls_exclude_ciphers&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.postfix.org/postconf.5.html#smtp_tls_security_level&#34;&gt;http://www.postfix.org/postconf.5.html#smtp_tls_security_level&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Fail2ban on FreeBSD</title>
      <link>https://blog.alteroot.org/articles/2014-06-14/fail2ban-on-freebsd.html</link>
      <pubDate>Sat, 14 Jun 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-06-14/fail2ban-on-freebsd.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.fail2ban.org/&#34;&gt;Fail2ban&lt;/a&gt; scans log files (e.g. /var/log/apache/error_log) and bans IPs that show the malicious signs &amp;ndash; too many password failures, seeking for exploits…&lt;br&gt;&#xA;It can be usefull to ban bots who try to bruteforce your ssh and flood your logs (another solution is to restrict allowed IP or change sshd port).&lt;/p&gt;&#xA;&lt;p&gt;Here a quick how-to to enable fail2ban on FreeBSD, in combination with pf (packet filter).&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Update 07/05/2015&lt;/em&gt; : This works on FreeBSD 9.x. I haven&amp;rsquo;t tested it against FreeBSD 10.x yet.&lt;/p&gt;&#xA;&lt;p&gt;First, install it, use pkg, portinstall, whatever :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# pkg install py27-fail2ban&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then go to /usr/local/etc/fail2ban and create the file jail.d/ssh-pf.local&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;ssh-pf&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;enabled  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;filter   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sshd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;action   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; pf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#          sendmail-whois[name=SSH, dest=root@localhost, sender=noreply@localhost]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;logpath  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /var/log/auth.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;findtime  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;maxretry &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bantime  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3600&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can of course configure maxretry/bantime/findtime or sending mails.&lt;br&gt;&#xA;I use pf in action (&amp;lsquo;action = pf&amp;rsquo;), you can see what this action do in action.d/pf.conf&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Definition&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;actionstart &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;actionstop &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;actioncheck &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;actionban &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /sbin/pfctl -t &amp;lt;tablename&amp;gt; -T add &amp;lt;ip&amp;gt;/32&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;actionunban &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /sbin/pfctl -t &amp;lt;tablename&amp;gt; -T delete &amp;lt;ip&amp;gt;/32&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Init&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tablename &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; fail2ban&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When &amp;lsquo;action&amp;rsquo; is triggered, fail2ban launch &lt;em&gt;pfctl -t &amp;lt;tablename&amp;gt; -T add &amp;lt;ip&amp;gt;/32&lt;/em&gt; to add it to pf table &amp;lsquo;fail2ban&amp;rsquo;.&lt;br&gt;&#xA;It&amp;rsquo;s now ok on fail2ban side (easy right ?)&lt;/p&gt;&#xA;&lt;p&gt;On pf side, in /etc/pf.conf (blank by default, adapt it if you already have pf rules), you need to add a rule to block all IPs in the fail2ban table, for example :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ext_if&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;re0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# your interface ! &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;table &amp;lt;fail2ban&amp;gt; persist&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;block quick proto tcp from &amp;lt;fail2ban&amp;gt; to $ext_if port ssh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, we need to start pf, then fail2ban :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/etc/rc.d/pf onestart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/usr/local/etc/rc.d/fail2ban onestart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I use onestart, with the assumption that it&amp;rsquo;s the first start of pf and fail2ban, you will need to add pf and fail2ban in /etc/rc.conf to auto start them on boot.&lt;/p&gt;&#xA;&lt;p&gt;Now you can look in /var/log/fail2ban.log to see detected IP and applied ban.&lt;/p&gt;&#xA;&lt;p&gt;To list current banned IP :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pfctl -t fail2ban -T show&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sources:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://philpep.org/blog/fail2ban-sshd-et-pf&#34;&gt;http://philpep.org/blog/fail2ban-sshd-et-pf&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.fail2ban.org/wiki/index.php/MANUAL_0_8&#34;&gt;http://www.fail2ban.org/wiki/index.php/MANUAL_0_8&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Archlinux.fr passé, présent, futur</title>
      <link>https://blog.alteroot.org/articles/2014-05-18/archlinux.fr-pass%C3%A9-pr%C3%A9sent-futur.html</link>
      <pubDate>Sun, 18 May 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-05-18/archlinux.fr-pass%C3%A9-pr%C3%A9sent-futur.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://archlinux.fr&#34;&gt;Archlinux.fr&lt;/a&gt; est le principal site francophone autour de la distribution Archlinux.&#xA;Comme tout site animé par une communauté, il a subi des hauts et des bas au niveau de son activité. Je vais tenter de faire un état des lieux et des projets futurs.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;D&amp;rsquo;abord, un petit &amp;ldquo;About me&amp;rdquo;, je suis dans l&amp;rsquo;aventure archlinux.fr depuis le quasi début (septembre 2006), et admin depuis cette époque.&#xA;Je me suis co-occupé de la partie serveurs/miroirs toutes ces années (c&amp;rsquo;est mon métier après tout), et me retrouve à l&amp;rsquo;heure actuelle le dernier admin actif. D&amp;rsquo;ou ce blogpost :)&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Archlinux.fr existe depuis aout 2006, suite à une scission d&amp;rsquo; avec archlinuxfr.org (maintenant disparu) après plusieurs désaccords,&#xA;un fork comme on les connait dans le monde du libre (je suis arrivé à ce moment là).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Archlinux.fr, c&amp;rsquo;est&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Un &lt;a href=&#34;http://archlinux.fr&#34;&gt;portail&lt;/a&gt;, qui traduit généralement les news en français, et menant vers les autres ressources&lt;/li&gt;&#xA;&lt;li&gt;Un &lt;a href=&#34;http://forums.archlinux.fr&#34;&gt;forum&lt;/a&gt; d&amp;rsquo;entraide en français, ayant plusieurs milliers d&amp;rsquo;inscrits (pas tous actifs ;))&lt;/li&gt;&#xA;&lt;li&gt;Un &lt;a href=&#34;http://wiki.archlinux.fr&#34;&gt;wiki&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Un chan &lt;a href=&#34;http://irc.archlinux.fr&#34;&gt;IRC&lt;/a&gt; #archlinux-fr sur freenode&lt;/li&gt;&#xA;&lt;li&gt;Un &lt;a href=&#34;http://mir.archlinux.fr&#34;&gt;miroir&lt;/a&gt; officiel&lt;/li&gt;&#xA;&lt;li&gt;Un miroir fournissant des &lt;a href=&#34;http://wiki.archlinux.fr/Deltas&#34;&gt;delta&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://afur.archlinux.fr&#34;&gt;AFUR&lt;/a&gt;, un &amp;ldquo;AUR&amp;rdquo; à la française, ou vous pouvez proposer vos paquets précompilés, utilisables via &lt;a href=&#34;http://wiki.archlinux.fr/Repos_archlinuxfr&#34;&gt;archlinuxfr&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Un &lt;a href=&#34;http://planet.archlinux.fr&#34;&gt;planète&lt;/a&gt; regroupant quelques blogs français&lt;/li&gt;&#xA;&lt;li&gt;Et l&amp;rsquo;un des softs les plus connus d&amp;rsquo;archlinux : &lt;a href=&#34;http://archlinux.fr/yaourt&#34;&gt;yaourt&lt;/a&gt; !&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Le tout tourne sur 2 serveurs dédiés + un mutualisé, évidemment les dédiés tournent sur archlinux, avec un kernel linux-lts ;)&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Un pour le site/wiki/forum&lt;/li&gt;&#xA;&lt;li&gt;Un pour la partie miroir/afur&lt;/li&gt;&#xA;&lt;li&gt;Le mutu pour les mails/dns/historiquement :)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Les projets en cours / à venir&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Léger redesign du site/wiki (resynchronisation avec le design du .org)&lt;/li&gt;&#xA;&lt;li&gt;A venir un redesign du forum ! (si &lt;a href=&#34;http://blizzart.net&#34;&gt;Mike&lt;/a&gt; se motive)&lt;/li&gt;&#xA;&lt;li&gt;Mise en place du support des signature de paquets sur [archlinuxfr] (disponible depuis pacman 4)&lt;/li&gt;&#xA;&lt;li&gt;Trouver un vrai mainteneur pour yaourt (j&amp;rsquo;y reviens plus loin)&lt;/li&gt;&#xA;&lt;li&gt;Tout passer en https par défaut (déjà disponible, mais pas forcé, merci &lt;a href=&#34;https://www.globalsign.com/ssl/ssl-open-source/&#34;&gt;globalsign&lt;/a&gt; pour le certificat !)&lt;/li&gt;&#xA;&lt;li&gt;Pourquoi pas ajouter un miroir &lt;a href=&#34;http://archlinuxarm.org/&#34;&gt;archlinuxarm&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Yaourt, la bonne crème&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Yaourt est une surcouche à Pacman, le gestionnaire de paquets d&amp;rsquo;archlinux. C&amp;rsquo;est l&amp;rsquo;une des plus vieilles surcouches encore en activité,&#xA;et je pense la plus utilisée (enfin, moins depuis 2/3 ans). Écrit au départ par Wain (un des fondateurs de archlinux.fr), entièrement en bash,&#xA;il a ensuite été réécrit et splitté en 2 parties par notre ami Tuxce.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;package-query en C, pour toute la partie &lt;a href=&#34;https://www.archlinux.org/pacman/libalpm.3.html&#34;&gt;alpm&lt;/a&gt; / aur&lt;/li&gt;&#xA;&lt;li&gt;yaourt en bash pour l&amp;rsquo;interface utilisateur&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Package-query a grandement aidé à améliorer la vitesse d&amp;rsquo;exécution de yaourt.&lt;br&gt;&#xA;Malheureusement depuis environ 1-2 ans, yaourt évolue très peu, par faute de mainteneur (wain et tuxce ayant d&amp;rsquo;autres priorités personnelles).&#xA;Son &lt;a href=&#34;https://github.com/archlinuxfr/yaourt&#34;&gt;code source&lt;/a&gt; est disponible sur github, il y a plusieurs bugs ouverts et des pull request en cours. Il y a donc besoin de bras pour cette partie ! Donc si vous vous sentez l&amp;rsquo;âme d&amp;rsquo;un mangeur de yaourt, la porte est ouverte :) Vous pouvez me contacter soit dans les commentaires, soit sur IRC, soit par mail, &lt;a href=&#34;https://twitter.com/_Skunnyk_&#34;&gt;twitter&lt;/a&gt; etc pour en discuter.&lt;br&gt;&#xA;J&amp;rsquo; écrirai une version anglais à ce propos afin de toucher un plus large public :)&lt;/p&gt;&#xA;&lt;p&gt;Et pour finir un merci à tous ceux qui participent/ont participés à archlinux.fr !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Replace a dead node in Cassandra</title>
      <link>https://blog.alteroot.org/articles/2014-03-12/replace-a-dead-node-in-cassandra.html</link>
      <pubDate>Wed, 12 Mar 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-03-12/replace-a-dead-node-in-cassandra.html</guid>
      <description>&lt;p&gt;Note (June 2020): this article is old and not really revelant anymore. If you use a modern version of cassandra, look at &lt;a href=&#34;https://cassandra.apache.org/doc/latest/operating/topo_changes.html#replacing-a-dead-node&#34;&gt;&lt;code&gt;-Dcassandra.replace_address_first_boot&lt;/code&gt;&lt;/a&gt; option !&lt;/p&gt;&#xA;&lt;p&gt;I want to share some tips about my experimentations with Cassandra (version 2.0.x).&lt;/p&gt;&#xA;&lt;p&gt;I found some documentations on &lt;a href=&#34;http://www.datastax.com&#34;&gt;datastax&lt;/a&gt; website about &lt;a href=&#34;http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_replace_node_t.html&#34;&gt;replacing a dead node&lt;/a&gt;, but it is not suitable for our needs, because in case of hardware crash, we will set up a new node with exactly the same IP (replace &amp;ldquo;in place&amp;rdquo;). &lt;em&gt;Update : the documentation in now up to date on datastax !&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you try to start the new node with the same IP, cassandra doesn&amp;rsquo;t start with :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;java.lang.RuntimeException: A node with address /10.20.10.2 already exists, cancelling join. Use cassandra.replace_address if you want to replace this node.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;So, we need to use the &amp;ldquo;cassandra.replace_address&amp;rdquo; directive (which is not really documented ? :()&#xA;See &lt;a href=&#34;https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=commitdiff;h=351d43ef&#34;&gt;this commit&lt;/a&gt; and &lt;a href=&#34;https://issues.apache.org/jira/browse/CASSANDRA-5916&#34;&gt;this bug report&lt;/a&gt;, available since 1.2.11/2.0.0, it&amp;rsquo;s an easier solution and it works.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;+    - New replace_address to supplant the (now removed) replace_token and&#xA;+      replace_node workflows to replace a dead node in place.  Works like the&#xA;+      old options, but takes the IP address of the node to be replaced.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a JVM directive, so we can add it at the end of /etc/cassandra/cassandra-env.sh (debian package), for example:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;JVM_OPTS=&amp;quot;$JVM_OPTS -Dcassandra.replace_address=10.20.10.2&amp;quot; &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Of course, 10.20.10.2 = ip of your dead/new node.&lt;/p&gt;&#xA;&lt;p&gt;Now, start cassandra, and in logs you will see :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;INFO [main] 2014-03-10 14:58:17,804 StorageService.java (line 941) JOINING: schema complete, ready to bootstrap&#xA;INFO [main] 2014-03-10 14:58:17,805 StorageService.java (line 941) JOINING: waiting for pending range calculation&#xA;INFO [main] 2014-03-10 14:58:17,805 StorageService.java (line 941) JOINING: calculation complete, ready to bootstrap&#xA;INFO [main] 2014-03-10 14:58:17,805 StorageService.java (line 941) JOINING: Replacing a node with token(s): [...]&#xA;[...]&#xA;INFO [main] 2014-03-10 14:58:17,844 StorageService.java (line 941) JOINING: Starting to bootstrap...&#xA;INFO [main] 2014-03-10 14:58:18,551 StreamResultFuture.java (line 82) [Stream #effef960-6efe-11e3-9a75-3f94ec5476e9] Executing streaming plan for Bootstrap&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Node is in boostraping mode and will retrieve data from cluster. This may take lots of time.&lt;br&gt;&#xA;If the node is a seed node, a warning will indicate that the node did not auto bootstrap. This is normal, you need to run a &lt;a href=&#34;http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_replace_seed_node.html&#34;&gt;nodetool repair&lt;/a&gt; on the node.&lt;/p&gt;&#xA;&lt;p&gt;On the new node :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# nodetools netstats&#xA;&#xA;Mode: JOINING&#xA;Bootstrap effef960-6efe-11e3-9a75-3f94ec5476e9&#xA;    /10.20.10.1&#xA;&#x9;Receiving 102 files, 17467071157 bytes total&#xA;[...]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;After some time, you will see some informations on logs !&lt;br&gt;&#xA;On the new node :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; INFO [STREAM-IN-/10.20.10.1] 2014-03-10 15:15:40,363 StreamResultFuture.java (line 215) [Stream #effef960-6efe-11e3-9a75-3f94ec5476e9] All sessions completed&#xA; INFO [main] 2014-03-10 15:15:40,366 StorageService.java (line 970) Bootstrap completed! for the tokens [...]&#xA;[...]&#xA; INFO [main] 2014-03-10 15:15:40,412 StorageService.java (line 1371) Node /10.20.10.2 state jump to normal&#xA; WARN [main] 2014-03-10 15:15:40,413 StorageService.java (line 1378) Not updating token metadata for /10.20.30.51 because I am replacing it&#xA; INFO [main] 2014-03-10 15:15:40,419 StorageService.java (line 821) Startup completed! Now serving reads.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;And on other nodes :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; INFO [GossipStage:1] 2014-03-10 15:15:40,625 StorageService.java (line 1371) Node /10.20.10.2 state jump to normal&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Et voilà, dead node has been replaced !&lt;br&gt;&#xA;Don&amp;rsquo;t forget to &lt;strong&gt;REMOVE&lt;/strong&gt; modifications on cassandra-env.sh after the complete bootstrap !&lt;/p&gt;&#xA;&lt;p&gt;Enjoy !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Mise en place de DKIM avec Postfix</title>
      <link>https://blog.alteroot.org/articles/2014-01-30/mise-en-place-de-dkim-avec-postfix.html</link>
      <pubDate>Thu, 30 Jan 2014 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2014-01-30/mise-en-place-de-dkim-avec-postfix.html</guid>
      <description>&lt;p&gt;Cette documentation décrit la mise en place de DKIM (DomainKeys Identified Mail), une norme d&amp;rsquo;authentification du nom de domaine de l&amp;rsquo;expéditeur d&amp;rsquo;un mail.&lt;/p&gt;&#xA;&lt;p&gt;Elle fait suite à la documentation de mise en place d&amp;rsquo;un &lt;a href=&#34;http://blog.alteroot.org/articles/2013-10-07/setup-postfix-dspam-dovecot.html&#34;&gt;serveur mail&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;On prendra en domaine de test domain.org et comme nom de serveur server.domain.org&lt;/p&gt;&#xA;&lt;p&gt;On utilise opendkim pour gérer dkim. Postfix transmet ensuite le mail à OpenDKIM (via socket).&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# apt-get install opendkim opendkim-tools&#xA;# mkdir -p /etc/opendkim&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On génère les clés, et on utilise &amp;ldquo;server&amp;rdquo; en tant que selector (choisi arbitrairement, on peut aussi utiliser &amp;ldquo;default&amp;rdquo;).&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# opendkim-genkey -D /etc/opendkim/ -d domain.org -s server&#xA;# rm /etc/opendkim.conf&#xA;# vim /etc/opendkim/opendkim.conf&#xA;&#xA;UserID    opendkim:opendkim&#xA;Domain    domain.org&#xA;KeyFile  /etc/opendkim/server.private&#xA;Selector        server&#xA;AutoRestart     yes&#xA;DNSTimeout  5&#xA;UMask      002&#xA;&#xA;# ln -s /etc/opendkim/opendkim.conf /etc/opendkim.conf&#xA;# chown opendkim:opendkim -R /etc/opendkim&#xA;# vim /etc/default/opendkim&#xA; &#xA;SOCKET=&amp;quot;local:/var/spool/postfix/var/run/opendkim/opendkim.sock&amp;quot;&#xA; &#xA;# mkdir /var/spool/postfix/var/run/opendkim&#xA;# chmod 775 /var/spool/postfix/var/run/opendkim&#xA;# chown opendkim: /var/spool/postfix/var/run/opendkim&#xA;# adduser postfix opendkim&#xA;# vim  /etc/postfix/main.cf&#xA;&#xA;# Ce chemin est en réalité /var/spool/postfix/var/run/opendkim/opendkim.sock &#xA;# car nous sommes dans le chroot de postfix &#xA;smtpd_milters           = unix:/var/run/opendkim/opendkim.sock&#xA;non_smtpd_milters       = $smtpd_milters&#xA;milter_default_action   = accept&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Copiez les lignes de /etc/opendkim/server.txt dans votre zone DNS.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# /etc/init.d/opendkim restart&#xA;# /etc/init.d/postfix restart&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Vous pouvez tester la bonne configuration sur &lt;a href=&#34;http://www.appmaildev.com/en/domainkeys/&#34;&gt;http://www.appmaildev.com/en/domainkeys/&lt;/a&gt; ou via dig :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# &amp;quot;server&amp;quot; est notre selector&#xA;# dig TXT server._domainkey.domain.org&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Liens :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.opendkim.org/&#34;&gt;http://www.opendkim.org/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.postfix.org/MILTER_README.html&#34;&gt;http://www.postfix.org/MILTER_README.html&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Xfce - Xfwm4 zoom mode in 4.12</title>
      <link>https://blog.alteroot.org/articles/2013-12-11/xfce-xfwm4-zoom-mode-in-4.12.html</link>
      <pubDate>Wed, 11 Dec 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-12-11/xfce-xfwm4-zoom-mode-in-4.12.html</guid>
      <description>&lt;p&gt;Xfce is my main desktop environment since more than 6 years, and I really like it. I try to make some patch from time to time, and if you search a project to contribute, &lt;a href=&#34;http://wiki.xfce.org/dev/howto/contribute&#34;&gt;it&amp;rsquo;s here&lt;/a&gt; ;-)&lt;/p&gt;&#xA;&lt;p&gt;The core team is really small (2 or 3 people), so development evolves rather slowly, and the 4.12 will be released when it is ready.&lt;/p&gt;&#xA;&lt;p&gt;One of the latest feature is the implementation of a compositor zoom, like the &lt;a href=&#34;http://wiki.compiz.org/Plugins/Ezoom&#34;&gt;compiz ezoom plugin&lt;/a&gt;, from an external developper ( see &lt;a href=&#34;http://mail.xfce.org/pipermail/xfce4-dev/2013-November/030508.html&#34;&gt;this thread&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Here a little video with latest git version ( from &lt;a href=&#34;http://git.xfce.org/xfce/xfwm4/&#34;&gt;http://git.xfce.org/xfce/xfwm4/&lt;/a&gt; ).&#xA;You just need to press ALT and scroll up/down to zoom in/out.&lt;/p&gt;&#xA;&lt;p&gt;&lt;video controls  width=&#34;640&#34; height=&#34;480&#34; controls&gt;&lt;source src=&#34;http://blog.alteroot.org/media/video/xfce.ogv&#34; type=&#34;video/ogg&#34;&gt;Xfwm4 4.12 zoom feature&lt;/video&gt;&lt;/p&gt;&#xA;&lt;p&gt;(yeah, it&amp;rsquo;s an excuse to test the html5 &amp;lt;video&amp;gt; balise with ogv file ;)).&lt;/p&gt;&#xA;&lt;p&gt;I will try to make some blog posts about new features in xfce world for the upcoming 4.12 (in 2014 I hope!), stay tuned !&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Use KDEConnect with android and Xfce</title>
      <link>https://blog.alteroot.org/articles/2013-11-16/use-kdeconnect-with-android-and-xfce.html</link>
      <pubDate>Sat, 16 Nov 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-11-16/use-kdeconnect-with-android-and-xfce.html</guid>
      <description>&lt;p&gt;&lt;em&gt;Update 14/06/2014&lt;/em&gt; : kdeconnect is in community + typo&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://albertvaka.wordpress.com/2013/08/05/introducing-kde-connect/&#34;&gt;KdeConnect&lt;/a&gt; allow you to share notifications (sms, phone calls), files, clipboard and more things between your Android and your Linux desktop.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s designed to work with KDE, but you can use it on other desktop environment (like xfce!), modulo some dependencies installations. You can look at &lt;a href=&#34;http://albertvaka.wordpress.com/&#34;&gt;Albert Vaka&amp;rsquo;s&lt;/a&gt; blog for more informations and demonstrations.&lt;/p&gt;&#xA;&lt;p&gt;I use ArchLinux, and Kdeconnect is available &lt;s&gt;on AUR&lt;/s&gt; in community, here are the steps to run kdeconnect on Xfce, with a fewer dependencies (but you&amp;rsquo;ll still need kdelibs).&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ yaourt -Sy kdeconnect&#xA;[...]&#xA;# No need to launch qdbus command, this will not work yet&#xA;# Some other dependencies to allow qdbus to works...&#xA;$ yaourt -S qt5-tools&#xA;# And to manager notifications, you need knotify4 (who will give a hand to your notify daemon, xfce4-notifyd for me)&#xA;$ yaourt -S kdebase-runtime&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Ok, so now, kdeconnect is installed. You need to relaunch Xfce with KDE compatibility enabled (to launch kdeinit on startup).&lt;/p&gt;&#xA;&lt;p&gt;To do that, you can go to xfce4-settings-manager -&amp;gt; Session and startup -&amp;gt; advanced and enable &amp;lsquo;Launch KDE services on startup&amp;rsquo;, or use xfconf-query :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ xfconf-query -c xfce4-session -p /compat/LaunchKDE -s true&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Restart your session ! Now, open a terminal and launch the qdbus command :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ qdbus org.kde.kded /kded loadModule kdeconnect &#xA;true&#xA;$ kbuildsycoca4 -noincremental&#xA;[...]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Note: you&amp;rsquo;ll need to autolaunch &amp;ldquo;qdbus org.kde.kded /kded loadModule kdeconnect&amp;rdquo; on each startup.&lt;/p&gt;&#xA;&lt;p&gt;Install the &lt;a href=&#34;https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp&#34;&gt;Android application&lt;/a&gt; on your smartphone, and you are ready !&lt;/p&gt;&#xA;&lt;p&gt;The application should detect your kdeconnect setup (you MUST be on the same wifi network).&lt;/p&gt;&#xA;&lt;p&gt;You can now ping your laptop and a notification should appear on you desktop ! You can share you clipboard, pictures, sms text etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;On the kdeconnect android application, you can enable/disable features (like the shared clipboard which can be hassle).&lt;/p&gt;&#xA;&lt;p&gt;For some debug look at you ~/.xsession-errors file.&lt;/p&gt;&#xA;&lt;p&gt;Here are some screenshots :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.alteroot.org/media/images/kdeconnect-ping.png&#34; alt=&#34;Kdeconnect ping&#34;&gt;&lt;/p&gt;&#xA;&lt;img src=&#34;https://blog.alteroot.org/media/images/kdeconnect-share.png&#34; alt=&#34;Kdeconnect share&#34; style=&#34;width: 300px;&#34;/&gt;&#xA;&lt;img src=&#34;https://blog.alteroot.org/media/images/kdeconnect-share2.png&#34; alt=&#34;Kdeconnect share 2&#34; style=&#34;width: 300px;&#34;/&gt;&#xA;</description>
    </item>
    <item>
      <title>Playing with the new ownCloud share API</title>
      <link>https://blog.alteroot.org/articles/2013-11-02/playing-with-the-new-owncloud-share-api.html</link>
      <pubDate>Sat, 02 Nov 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-11-02/playing-with-the-new-owncloud-share-api.html</guid>
      <description>&lt;p&gt;I use &lt;a href=&#34;http://www.owncloud.org&#34;&gt;OwnCloud&lt;/a&gt; since v2, and really enjoy it, mainly since desktop clients are available. I can easily sync a file if I copy it in my ~/ownCloud/ directory (dropbox style) !&lt;/p&gt;&#xA;&lt;p&gt;But one of the missing feature for me is a share API. You can synchronize files from your desktop client or owncloud smartphone apps, but you CAN&amp;rsquo;T share a file without going to the web interface&amp;hellip; Pretty annoying. I need this feature to quickly share a file with a public URL (share on IRC or IM)&lt;/p&gt;&#xA;&lt;p&gt;Since owncloud v6 ( &lt;del&gt;still in &lt;a href=&#34;http://blog.karlitschek.de/2013/10/introducing-owncloud-6.html&#34;&gt;beta stage ATM&lt;/a&gt;&lt;/del&gt; Now released !), a share api is now available!&lt;/p&gt;&#xA;&lt;p&gt;The documentation is available here on the &lt;a href=&#34;https://github.com/owncloud/documentation/blob/stable6/developer_manual/core/ocs-share-api.rst&#34;&gt;owncloud github account&lt;/a&gt;. So let&amp;rsquo;s try ! (Note: it only works on owncloud 6 !)&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a REST API, so you can use it simply via cURL call. Here are some examples.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Get all shares for your user&lt;/strong&gt; ( you need your session cookie to be authenticated during requests):&lt;/p&gt;&#xA;&lt;p&gt;Request :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;curl &amp;quot;https://your.instance.com/ocs/v1.php/apps/files_sharing/api/v1/shares&amp;quot; -k -H &#39;Cookie: ocxxxxx=xxxxxxxxx&#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Response :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&#xA;&amp;lt;ocs&amp;gt;&#xA; &amp;lt;meta&amp;gt;&#xA;  &amp;lt;status&amp;gt;ok&amp;lt;/status&amp;gt;&#xA;  &amp;lt;statuscode&amp;gt;100&amp;lt;/statuscode&amp;gt;&#xA;  &amp;lt;message/&amp;gt;&#xA; &amp;lt;/meta&amp;gt;&#xA; &amp;lt;data&amp;gt;&#xA;  &amp;lt;element&amp;gt;&#xA;   &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&#xA;   &amp;lt;item_type&amp;gt;file&amp;lt;/item_type&amp;gt;&#xA;   &amp;lt;parent/&amp;gt;&#xA;   &amp;lt;share_type&amp;gt;3&amp;lt;/share_type&amp;gt;&#xA;   &amp;lt;share_with/&amp;gt;&#xA;   &amp;lt;file_source&amp;gt;6&amp;lt;/file_source&amp;gt;&#xA;   &amp;lt;path&amp;gt;/ownCloudUserManual.pdf&amp;lt;/path&amp;gt;&#xA;   &amp;lt;permissions&amp;gt;1&amp;lt;/permissions&amp;gt;&#xA;   &amp;lt;stime&amp;gt;1383432712&amp;lt;/stime&amp;gt;&#xA;   &amp;lt;expiration/&amp;gt;&#xA;   &amp;lt;token&amp;gt;yyyyyyyyyyyyyyyyyyyyyy&amp;lt;/token&amp;gt;&#xA;   &amp;lt;storage&amp;gt;1&amp;lt;/storage&amp;gt;&#xA;   &amp;lt;mail_send&amp;gt;0&amp;lt;/mail_send&amp;gt;&#xA;  &amp;lt;/element&amp;gt;&#xA;  &amp;lt;element&amp;gt;&#xA;   &amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&#xA;   &amp;lt;item_type&amp;gt;folder&amp;lt;/item_type&amp;gt;&#xA;   &amp;lt;parent/&amp;gt;&#xA;   &amp;lt;share_type&amp;gt;3&amp;lt;/share_type&amp;gt;&#xA;   &amp;lt;share_with/&amp;gt;&#xA;   &amp;lt;file_source&amp;gt;5&amp;lt;/file_source&amp;gt;&#xA;   &amp;lt;path&amp;gt;/photos&amp;lt;/path&amp;gt;&#xA;   &amp;lt;permissions&amp;gt;1&amp;lt;/permissions&amp;gt;&#xA;   &amp;lt;stime&amp;gt;1383434668&amp;lt;/stime&amp;gt;&#xA;   &amp;lt;expiration/&amp;gt;&#xA;   &amp;lt;token&amp;gt;31ca68aae4d357cf6c89598983cd0c25&amp;lt;/token&amp;gt;&#xA;   &amp;lt;storage&amp;gt;1&amp;lt;/storage&amp;gt;&#xA;   &amp;lt;mail_send&amp;gt;0&amp;lt;/mail_send&amp;gt;&#xA;  &amp;lt;/element&amp;gt;&#xA; &amp;lt;/data&amp;gt;&#xA;&amp;lt;/ocs&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Create a public share&lt;/strong&gt; (type 3) for &amp;ldquo;Pictures/picture1.png&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Request :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;curl &amp;quot;https://your.instance.com/ocs/v1.php/apps/files_sharing/api/v1/shares&amp;quot; -k -u $USER:$PASS -X POST --data &amp;quot;path=Pictures/picture1.png&amp;amp;shareType=3&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Response :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&#xA;&amp;lt;ocs&amp;gt;&#xA; &amp;lt;meta&amp;gt;&#xA;  &amp;lt;status&amp;gt;ok&amp;lt;/status&amp;gt;&#xA;  &amp;lt;statuscode&amp;gt;100&amp;lt;/statuscode&amp;gt;&#xA;  &amp;lt;message/&amp;gt;&#xA; &amp;lt;/meta&amp;gt;&#xA; &amp;lt;data&amp;gt;&#xA;  &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&#xA;  &amp;lt;url&amp;gt;https://your.instance.com/public.php?service=files&amp;amp;amp;t=xxxxxxxxxxxxxxxxxxxxxxxxxxx&amp;lt;/url&amp;gt;&#xA;  &amp;lt;token&amp;gt;yyyyyyyyyyyyyyyy&amp;lt;/token&amp;gt;&#xA; &amp;lt;/data&amp;gt;&#xA;&amp;lt;/ocs&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;File is now available publicy to &lt;a href=&#34;https://your.instance.com/public.php?service=files&amp;amp;t=xxxxxxxxxxxxxxxxxxxxxxxxxxx&#34;&gt;https://your.instance.com/public.php?service=files&amp;amp;t=xxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;/a&gt; !&lt;/p&gt;&#xA;&lt;p&gt;So, you can use a simple shell script to share a file automagically and copy the public URL to your clipboard.&#xA;You need bash, xclip and xpath (perl-xml-xpath -ArchLinux- or libxml-xpath-perl -Debian-).&lt;/p&gt;&#xA;&lt;p&gt;Update 2014/03/01 : A public link creator script is now available on &lt;a href=&#34;http://blog.schiessle.org/2013/12/30/the-owncloud-public-link-creator/&#34;&gt;http://blog.schiessle.org/2013/12/30/the-owncloud-public-link-creator/&lt;/a&gt; :)&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/bin/bash&#xA;# This is a quick &amp;amp; dirty shell script, consider it as a proof of concept ;) &#xA;# License: WTFPL v2 &#xA;# Author: Skunnyk{@}alteroot.org&#xA;# Change theses 3 values&#xA;url=&amp;quot;https://your.instance.com&amp;quot;&#xA;user=&amp;quot;User&amp;quot;&#xA;pass=&amp;quot;Password&amp;quot;&#xA;# You should not touch theses values&#xA;curlopts=&amp;quot;-s -k&amp;quot;&#xA;apiurl=&amp;quot;ocs/v1.php/apps/files_sharing/api/v1/shares&amp;quot;&#xA;&#xA;# Some checks&#xA;for executables in xpath curl xclip; do&#xA;    command -v $executables  &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || { echo &amp;gt;&amp;amp;2 &amp;quot;I need $executables but it&#39;s not installed.&amp;quot;; exit 1; }&#xA;done&#xA;&#xA;usage() {&#xA;    echo &amp;quot;&amp;quot;&#xA;    echo &amp;quot;&amp;quot;&#xA;    echo &amp;quot;USAGE : &amp;quot;&#xA;    echo &amp;quot;$(basename $0) path/to/file&amp;quot;&#xA;    echo &amp;quot;Don&#39;t forget to change url/user/pass variables in this script&amp;quot;&#xA;    echo &amp;quot;&amp;quot;&#xA;}&#xA;&#xA;if [[ $# -ne 1 ]]; then&#xA;    usage&#xA;    exit 1&#xA;fi&#xA;&#xA;file=&amp;quot;$1&amp;quot;&#xA;&#xA;command=&amp;quot;curl $curlopts $url/$apiurl -u $user:$pass -X POST --data path=$1&amp;amp;shareType=3&amp;quot;&#xA;&#xA;result=$($command | xpath &amp;quot;/ocs/data/url/text()&amp;quot; 2&amp;gt;/dev/null)&#xA;if [ -z $result ]; then&#xA;    echo &amp;quot;Error on share...&amp;quot; &#xA;    exit 1&#xA;else&#xA;    echo $result | sed &amp;quot;s/amp;//&amp;quot; | xclip&#xA;    xclip -o&#xA;fi&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now, you juste need to launch &amp;ldquo;share-me.sh MyDocument&amp;rdquo; or &amp;ldquo;share-me.sh photos/photo.png&amp;rdquo;, and the public share URL will be copied to your clipboard.&lt;/p&gt;&#xA;&lt;p&gt;I hope this feature will be added soon in the desktop and android/ios client :)&lt;/p&gt;&#xA;&lt;p&gt;Enjoy,&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Mise en place d&#39;un serveur mail - Postfix, Dspam et Dovecot</title>
      <link>https://blog.alteroot.org/articles/2013-10-07/mise-en-place-dun-serveur-mail-postfix-dspam-et-dovecot.html</link>
      <pubDate>Mon, 07 Oct 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-10-07/mise-en-place-dun-serveur-mail-postfix-dspam-et-dovecot.html</guid>
      <description>&lt;p&gt;Update 14/01/14 : ajout de la liste complète des paquets nécessaires et correction de quelques typos. Thx &lt;a href=&#34;https://twitter.com/Puckel_&#34;&gt;@Puckel_&lt;/a&gt; !&lt;/p&gt;&#xA;&lt;p&gt;Cette documentation décrit la mise en place de postfix, dspam et dovecot pour un usage simple, géré avec des utilisateurs et domaines virtuels. Le stockage se fait en fichiers, que ce soit pour les règles antispam ou les mails (pas besoin de databases).&lt;/p&gt;&#xA;&lt;p&gt;Le tout en mode sécurisé, avec de l&amp;rsquo;imap et du smtp via starttls. Il est aussi possible de signaler un spam simplement en le déplaçant dans le dossier &amp;ldquo;SPAM&amp;rdquo; afin que dspam l&amp;rsquo;apprenne.&lt;/p&gt;&#xA;&lt;p&gt;Les doc existantes ne me convenaient pas, soit obsolètes, soit demandant de desactiver le chroot de postfix, soit trop de hacks dans le master.cf, ou bien incomplètes…&lt;/p&gt;&#xA;&lt;p&gt;On prendra en domaine de test domain.org et comme nom de serveur server.domain.org&lt;/p&gt;&#xA;&lt;p&gt;Le fonctionnement est le suivant :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Postfix -&amp;gt; dspam -&amp;gt; dovecot&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Postfix transmet le mail à dspam (via socket), qui analyse le mail, puis le retourne (toujours via socket) à dovecot qui le stocke.&lt;/p&gt;&#xA;&lt;p&gt;Dovecot centralise l&amp;rsquo;authentification via sasl, que ce soit pour imap ou pour smtp.&lt;/p&gt;&#xA;&lt;p&gt;On utilise les version suivante (debian wheezy):&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;postfix 2.9 : smtp&#xA;dspam 3.10  : antispam &#xA;dovecot 2.1 : imap&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On a aussi besoin des paquets suivants :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;postfix&#xA;dspam&#xA;libdspam7-drv-hash&#xA;dovecot-antispam&#xA;dovecot-managesieved&#xA;dovecot-sieve&#xA;dovecot-imapd&#xA;dovecot-lmtp&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Tout d&amp;rsquo;abord, on créé un user vmail, qui s&amp;rsquo;occupera du stockage des mails (ici /home/mail)&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;addgroup --gid 5000 vmail&#xA;adduser --home /home/mail/ --uid 5000 --gid 5000 --shell /bin/false vmail&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On configure Postfix, les commentaires sont integrés :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;smtpd_tls_cert_file=/etc/ssl/domain.chain.crt&#xA;smtpd_tls_key_file=/etc/ssl/domain.key&#xA;smtpd_use_tls=yes&#xA;&#xA;myhostname = server.domain.org&#xA;alias_maps = hash:/etc/aliases&#xA;alias_database = hash:/etc/aliases&#xA;mydestination = server.domain.org, localhost.localdomain, localhost&#xA;&#xA;virtual_mailbox_domains = domain.org # completer avec d&#39;autres domaines, séparé par des virgules&#xA;virtual_mailbox_base = /home/mail/vhosts # ou sont physiquement stockés les mails&#xA;virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_recipients # le mapping entre l&#39;adresse et le stockage physique &#xA;virtual_uid_maps = static:5000 # tout est géré via l&#39;utilisateur vmail, qui a l&#39;id 5000&#xA;virtual_gid_maps = static:5000&#xA;virtual_alias_maps = hash:/etc/postfix/virtual_alias_recipients # en cas d&#39;alias (par exemple root@ -&amp;gt; posmaster@)&#xA;smtpd_sasl_auth_enable = yes # activer l&#39;auth sasl pour l&#39;envoi de mail&#xA;smtpd_sasl_local_domain =&#xA;smtpd_sasl_security_options = noanonymous&#xA;smtpd_sasl_type = dovecot # On passe par dovecot pour l&#39;auth sasl&#xA;smtpd_sasl_path = private/auth # la socket d&#39;authentifiction&#xA;broken_sasl_auth_clients = yes # pour allow de vieux clients mails&#xA;smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_unverified_recipient&#xA;smtpd_tls_auth_only = yes&#xA;virtual_transport  = lmtp:unix:dspam/dspam.sock # et on transmet le mail à dspam&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Les fichiers virtual_mailbox_recipients et virtual_alias_recipients sont de la forme suivante :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ cat virtual_mailbox_recipients &#xA;myuser@domain.org    domain.org/myuser&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;domain.org/myuser correspond au stockage physique, ce qui va se transformer en /home/mail/vhosts/domain.org/myuser&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ cat virtual_alias_recipients&#xA;aliasuser@domain.org myuser@domain.org&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Il faut ensuite générer les fichiers .db pour que postfix puisse les utiliser, à faire à chaque modification&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ postmap virtual_mailbox_recipients&#xA;$ postmap virtual_alias_recipients&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Reste à modifier le master.cf de postfix afin d&amp;rsquo;activer le port submission (port 587) pour l&amp;rsquo;envoi de mails.&#xA;Décommenter les lignes suivantes :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;submission inet n       -       -       -       -       smtpd&#xA;-o syslog_name=postfix/submission&#xA;-o smtpd_tls_security_level=encrypt&#xA;-o smtpd_sasl_auth_enable=yes&#xA;-o smtpd_client_restrictions=permit_sasl_authenticated,reject&#xA;-o milter_macro_daemon_name=ORIGINATING&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On est bon coté postfix.&lt;/p&gt;&#xA;&lt;p&gt;Attaquons dspam. On a vu que postfix passe le mail à dspam via dspam/dspam.sock, qui se situe dans le chroot de postfix, par défaut dans /var/spool/postfix/ . On créé donc un dossier /var/spool/postfix/dspam :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;mkdir /var/spool/postfix/dspam&#xA;chown dspam: /var/spool/postfix/dspam&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Editer le /etc/default/dspam&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;START=yes&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Editer le /etc/dspam/dspam.conf&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;DeliveryHost            /var/run/dovecot/lmtp # On delivera le mail à dovecot après le parsing antispam&#xA;DeliveryIdent           dspam.domain&#xA;DeliveryProto           LMTP&#xA;&#xA;Trust vmail # C&#39;est l&#39;utilisateur vmail qui déplace dans le dossier SPAM via les règles sieve&#xA;&#xA;Preference &amp;quot;tagSpam=on&amp;quot; # On veut que les spams soient taggués  &#xA;&#xA;ServerMode auto&#xA;ServerParameters        &amp;quot;--deliver=innocent,spam&amp;quot; # On veut que dspam délivre aussi les mails taggués en spam (que l&#39;ont mettra dans le dossier SPAM via sieve)&#xA;ServerDomainSocketPath  &amp;quot;/var/spool/postfix/dspam/dspam.sock&amp;quot; # Le path dans le chroot de postfix&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Ensuite dans /etc/dspam/default.prefs&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;spamAction=deliver # On veut delivrer dans la mailbox, pas en quarantaine&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On passe à dovecot. Debian split la configuration dans de multiples fichier sous /etc/dovecot/conf.d/, ici une version simplifiée, à adapter à la configuration existante (il vous faudra modifier 10-auth.conf 10-mail.conf 10-ssl.conf 15-lda.conf 20-imap.conf 10-director.conf 10-master.conf 20-lmtp.conf 20-managesieve.conf 90-plugin.conf 90-sieve.conf auth-passwdfile.conf.ext):&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;disable_plaintext_auth = yes&#xA;auth_mechanisms = plain login&#xA;!include auth-passwdfile.conf.ext # On y revient plus tard&#xA;&#xA;mail_location = maildir:/home/mail/vhosts/%d/%n # %d = domaine %n = user&#xA;namespace inbox {&#xA;separator = /&#xA;inbox = yes&#xA;}&#xA;mail_uid = 5000 # Utilisateur vmail&#xA;mail_gid = 5000&#xA;&#xA;service lmtp {&#xA;unix_listener lmtp {&#xA;user = vmail # On tourne avec le user vmail&#xA;}&#xA;}&#xA;&#xA;service auth {&#xA;unix_listener /var/spool/postfix/private/auth {&#xA;mode = 0666&#xA;user = postfix&#xA;group = postfix&#xA;}&#xA;}&#xA;&#xA;ssl = required&#xA;ssl_cert = &amp;lt;/etc/ssl/domain.chain.crt&#xA;ssl_key = &amp;lt;/etc/ssl/domain.key&#xA;&#xA;postmaster_address = root@domain.org&#xA;&#xA;protocol lda {&#xA;auth_socket_path = /var/spool/postfix/private/auth&#xA;}&#xA;&#xA;protocol imap {&#xA;mail_plugins = $mail_plugins antispam # On load le plugin antispam&#xA;}&#xA;&#xA;protocol lmtp {&#xA;# Space separated list of plugins to load (default is global mail_plugins).&#xA;mail_plugins = $mail_plugins sieve # On load le pluin sieve pour trier les mails&#xA;}&#xA;&#xA;# On active managesieve, afin de pouvoir gérer les règles sieve&#xA;service managesieve-login {&#xA;inet_listener sieve {&#xA;port = 4190&#xA;}&#xA;&#xA;service managesieve {&#xA;}&#xA;&#xA;protocol sieve {&#xA;}&#xA;&#xA;# On passe à la configuration antispam, afin de faire apprendre à dspam lorsque vous placez manuellement dans le repertoire SPAM&#xA;&#xA;plugin {&#xA;antispam_backend = dspam&#xA;antispam_dspam_binary = /usr/bin/dspam&#xA;antispam_dspam_args = --deliver;--user;%u&#xA;antispam_spam = SPAM; Spam&#xA;antispam_trash = Trash&#xA;antispam_unsure = Trash&#xA;antispam_signature = X-DSPAM-Signature&#xA;}&#xA;&#xA;&#xA;plugin {&#xA;# The path to the user&#39;s main active script. If ManageSieve is used, this the&#xA;# location of the symbolic link controlled by ManageSieve.&#xA;sieve = ~/.dovecot.sieve&#xA;sieve_dir = ~/sieve&#xA;sieve_before = /home/mail/sieve/before/ # Cette règle sera appliquée à TOUS les mails&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Dans le fichier auth-passwdfile.conf.ext:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;passdb {&#xA;&#x9;driver = passwd-file&#xA;&#x9;args = scheme=CRYPT username_format=%u /etc/dovecot/users&#xA;}&#xA;userdb {&#xA;&#x9;args = uid=vmail gid=vmail home=/home/mail/vhosts/%d/%n allow_all_users=yes&#xA;&#x9;driver = static&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;C&amp;rsquo;en est fini pour Dovecot.&lt;/p&gt;&#xA;&lt;p&gt;On utilise le driver static, car dans ce setup tout est géré via l&amp;rsquo;utilisateur vmail.&lt;/p&gt;&#xA;&lt;p&gt;Pour créer un user, il faut remplir le fichier /etc/dovecot/users. Comme postfix utilise dovecot pour l&amp;rsquo;authentification, tout se passe ici, que ce soit imap ou smtp.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;ajout d&amp;rsquo;un utilisateur se fait de la façon suivante :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;echo &amp;quot;myuser@domain.org:$(doveadm pw -s CRYPT -p mypassword)&amp;quot; &amp;gt;&amp;gt; /etc/dovecot/users&#xA;echo myuser@domain.org domain.org/myuser &amp;gt;&amp;gt; /etc/postfix/virtual_mailbox_recipients&#xA;postmap /etc/postfix/virtual_mailbox_recipients&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Il est ensuite simple de faire un script shell pour créer les users en une commande.&lt;/p&gt;&#xA;&lt;p&gt;On voit qu&amp;rsquo;une règle sieve par défaut est appliquée à tous les mails. Je m&amp;rsquo;en sers pour mettre les mails taggués en SPAM dans le dossier spam automatiquement.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ vim /home/mail/sieve/before/spam.sieve&#xA;require [&amp;quot;fileinto&amp;quot;];&#xA;# rule:[SPAM]&#xA;if anyof (header :contains &amp;quot;X-DSPAM-Result&amp;quot; &amp;quot;Spam&amp;quot;)&#xA;{&#xA;    fileinto &amp;quot;SPAM&amp;quot;;&#xA;    stop;&#xA;}&#xA;&#xA;# Puis on compile la règle&#xA;sievec /home/mail/sieve/before/spam.sieve&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;J&amp;rsquo;utilise Roundcube en tant que webmail, la seul configuration à ajouter est de charger le plugin &amp;ldquo;managesieve&amp;rdquo;, afin que chaque utilisateur puisse éditer ses règles de filtrage via roundcube.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ vim roundcube/config/main.inc.php&#xA;$rcmail_config[&#39;plugins&#39;] = array(&#39;managesieve&#39;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Avec un client mail, il suffit de se connecter en imap sur le port 143 (avec starttls) et le port 587 pour l&amp;rsquo;envoi (toujours en starttls).&lt;/p&gt;&#xA;&lt;p&gt;En bonus, pour implementer DKIM, c&amp;rsquo;est par ici : &lt;a href=&#34;http://blog.alteroot.org/articles/2014-01-30/mise-en-place-dkim-postfix.html&#34;&gt;http://blog.alteroot.org/articles/2014-01-30/mise-en-place-dkim-postfix.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sources:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://sourceforge.net/apps/mediawiki/dspam/index.php?title=Integrate_DSPAM_into_the_Debian-based_ISPmail_setup&#34;&gt;http://sourceforge.net/apps/mediawiki/dspam/index.php?title=Integrate_DSPAM_into_the_Debian-based_ISPmail_setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://wiki.linuxwall.info/doku.php/en:ressources:dossiers:dspam&#34;&gt;http://wiki.linuxwall.info/doku.php/en:ressources:dossiers:dspam&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.kirya.net/articles/setting-up-dspam-as-a-filter-for-postfix-on-debian/&#34;&gt;http://www.kirya.net/articles/setting-up-dspam-as-a-filter-for-postfix-on-debian/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://wiki2.dovecot.org/&#34;&gt;http://wiki2.dovecot.org/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://wiki.linuxwall.info/doku.php/fr:ressources:dossiers:dspam&#34;&gt;http://wiki.linuxwall.info/doku.php/fr:ressources:dossiers:dspam&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.checktls.com/index.html&#34;&gt;http://www.checktls.com/index.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Share on Wallabag from Netvibes</title>
      <link>https://blog.alteroot.org/articles/2013-09-30/share-on-wallabag-from-netvibes.html</link>
      <pubDate>Mon, 30 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-09-30/share-on-wallabag-from-netvibes.html</guid>
      <description>&lt;p&gt;Update 2014/30/01 : Poche is now &lt;a href=&#34;http://www.wallabag.org/&#34;&gt;Wallabag&lt;/a&gt; ! (see &lt;a href=&#34;http://www.wallabag.org/2014/01/27/lets-go/&#34;&gt;the blog&lt;/a&gt; for more informations). A WAAS (Wallabag As A Service) is available on &lt;a href=&#34;http://framabag.org/&#34;&gt;Framabag&lt;/a&gt; :)&lt;/p&gt;&#xA;&lt;p&gt;&lt;s&gt;Poche&lt;/s&gt; &lt;a href=&#34;http://www.wallabag.org/&#34;&gt;Wallabag&lt;/a&gt; is an open source self hosted read-it-later app, like pocket, readability… So you can install it on your server, or use it via &lt;a href=&#34;http://www.framabag.org/&#34;&gt;wallabag hosting&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;With the new Share on &lt;a href=&#34;http://www.netvibes.com&#34;&gt;Netvibes&lt;/a&gt;, you can add unlisted web services. Go to your &lt;a href=&#34;http://www.netvibes.com/account/share&#34;&gt;account share options&lt;/a&gt;, clic on &amp;ldquo;Add a custom link&amp;rdquo;, and complete with needed parameters.&#xA;For example, to share on Wallabag demo service :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Name : Wallabag&#xA;Url : http://demo.wallabag.org/index.php?plainurl=${url}&#xA;Icon Url: http://demo.wallabag.org/themes/default/img/logo.svg&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.alteroot.org/media/images/share-on-netvibes.png&#34; alt=&#34;Share on Netvibes&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Save, and go back to your dashboard. Now you can share to your Wallabag instance !&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.alteroot.org/media/images/share-on-wallabag.png&#34; alt=&#34;Share on Netvibes&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà :)&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Setup de Mozilla Sync Server</title>
      <link>https://blog.alteroot.org/articles/2013-09-18/setup-de-mozilla-sync-server.html</link>
      <pubDate>Wed, 18 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-09-18/setup-de-mozilla-sync-server.html</guid>
      <description>&lt;p&gt;Firefox sync est disponible depuis Firefox 4, et il est possible de l&amp;rsquo;installer en auto hébergement. Je m&amp;rsquo;en sers pour synchroniser firefox desktop avec celui de mon android.&#xA;L&amp;rsquo;installation est relativement simple, surtout sur une Debian, il suffit de suivre la &lt;a href=&#34;http://docs.services.mozilla.com/howtos/run-sync.html&#34;&gt;documentation&lt;/a&gt; de mozilla.&lt;/p&gt;&#xA;&lt;p&gt;Mon setup est en place avec du Nginx et Gunicorn (mozilla-sync étant en python).&lt;/p&gt;&#xA;&lt;p&gt;Évidement, le tout se fait via une connexion https, et c&amp;rsquo;est là que les ennuis commencent…&lt;/p&gt;&#xA;&lt;p&gt;Premièrement, si c&amp;rsquo;est un certificat auto-signé, il ne faut pas oublier d&amp;rsquo;importer votre CA certificat dans votre Firefox Android ! Sinon il sera impossible pour votre smartphone de se connecter au sync server car le certificat ne sera pas reconnu …&lt;br&gt;&#xA;Ensuite, si vous avez suivi la documentation, vous devriez avoir une sync qui fonctionne avec votre Firefox desktop, via une connexion sécurisée.Le problème se situe lors du setup de Sync via Firefox Android, sur l&amp;rsquo;écran &amp;ldquo;Serveur personnalisé&amp;rdquo;, vous avez beau entrer la bonne url et mots de passe, le seul résultat est &amp;ldquo;Please enter a valid server URL&amp;rdquo;, et absolument RIEN dans les logs nginx coté serveur… Même constatation via la fonction &amp;ldquo;Pair a device&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Après une sortie de tshark afin de voir les trames réseau, il s&amp;rsquo;avère que firefox android ne sait négocier le tls qu&amp;rsquo;AVEC un cipher RC4, ce qui est confirmé par le code mozilla-central/mobile/android/base/sync/net/TLSSocketFactory.java :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;public class TLSSocketFactory extends SSLSocketFactory {&#xA;  private static final String LOG_TAG = &amp;quot;TLSSocketFactory&amp;quot;;&#xA;  private static final String[] DEFAULT_CIPHER_SUITES = new String[] {&#xA;    &amp;quot;SSL_RSA_WITH_RC4_128_SHA&amp;quot;,        // &amp;quot;RC4_SHA&amp;quot;&#xA;  };&#xA;  private static final String[] DEFAULT_PROTOCOLS = new String[] {&#xA;    &amp;quot;SSLv3&amp;quot;,&#xA;    &amp;quot;TLSv1&amp;quot;&#xA;  };&#xA;&#xA;  // Guarded by `this`.&#xA;  private static String[] cipherSuites = DEFAULT_CIPHER_SUITES;&#xA;&#xA;  public TLSSocketFactory(SSLContext sslContext) {&#xA;    super(sslContext);&#xA;  }&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Le problème est que les versions récente de nginx utilisent par défaut &amp;ldquo;ssl_ciphers HIGH:!aNULL:!MD5;&amp;rdquo;, et SSL_RSA_WITH_RC4_128_SHA n&amp;rsquo;est pas considéré comme un cipher &amp;ldquo;high&amp;rdquo;, donc la négociation ssl échoue tout bêtement…&lt;/p&gt;&#xA;&lt;p&gt;Il faut donc forcer nginx à utiliser RC4, ce qui est dommage au vu de &lt;a href=&#34;http://blog.ivanristic.com/2013/09/updated-best-practices-deprecate-rc4.html&#34;&gt;http://blog.ivanristic.com/2013/09/updated-best-practices-deprecate-rc4.html&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;De plus, il semble que le client Android ne supporte pas le &lt;a href=&#34;http://en.wikipedia.org/wiki/Server_Name_Indication&#34;&gt;SNI&lt;/a&gt;, ce qui est dommage car vous devez donc faire la modification de ciphers dans le vhost ssl par défaut.&lt;/p&gt;&#xA;&lt;p&gt;Voici donc une configuration fonctionnelle :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;server {&#xA;&#x9;listen 443 ssl default;&#xA;&#x9;server_name mozillasync.domain.org;&#xA;&#x9;ssl_certificate /etc/nginx/ssl/cert.chain.crt;&#xA;&#x9;ssl_certificate_key /etc/nginx/ssl/cert.key;&#xA;&#x9;access_log  /var/log/nginx/mozillasync.access.log;&#xA;&#x9;ssl_ciphers RC4:HIGH:!aNULL:!MD5;&#xA;&#x9;ssl_prefer_server_ciphers on;&#xA;&#xA;&#x9;location /sync/ {&#xA;&#x9;&#x9;rewrite  ^/mozillasync/(.+)$ /$1 break;&#xA;&#x9;&#x9;proxy_pass_header Server;&#xA;&#x9;&#x9;proxy_set_header Host $http_host;&#xA;&#x9;&#x9;proxy_redirect off;&#xA;&#x9;&#x9;proxy_set_header X-Real-IP $remote_addr;&#xA;&#x9;&#x9;proxy_set_header X-Scheme $scheme;&#xA;&#x9;&#x9;proxy_connect_timeout 10;&#xA;&#x9;&#x9;proxy_read_timeout 10;&#xA;&#x9;&#x9;proxy_pass http://localhost:5000/;&#xA;&#x9;&#x9;}&#xA;&#x9;location / {&#xA;&#x9;&#x9;root /home/server-full/;&#xA;&#x9;}&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Et un lien vers le rapport de bug chez mozilla : &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=756763#c31&#34;&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=756763#c31&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Hotot twitter client on OpenBSD</title>
      <link>https://blog.alteroot.org/articles/2013-09-09/hotot-twitter-client-on-openbsd.html</link>
      <pubDate>Mon, 09 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-09-09/hotot-twitter-client-on-openbsd.html</guid>
      <description>&lt;p&gt;I use &lt;a href=&#34;http://hotot.org&#34;&gt;Hotot&lt;/a&gt; on my linux setup everyday, it&amp;rsquo;s the best twitter client on Linux for me, even if it is not well maintained (maybe &lt;a href=&#34;https://launchpad.net/polly&#34;&gt;polly&lt;/a&gt; will surpass hotot a day&amp;hellip;)&lt;/p&gt;&#xA;&lt;p&gt;But Hotot is not available on OpenBSD ! (yes, I use it too, on -current). A port existed on &lt;a href=&#34;https://github.com/jasperla/openbsd-wip&#34;&gt;openbsd-wip&lt;/a&gt; github repository, but since it submission on &lt;a href=&#34;mailto:ports@openbsd.org&#34;&gt;ports@openbsd.org&lt;/a&gt;, it diseappeared from openbsd-wip and never been accepted on official ports.&lt;/p&gt;&#xA;&lt;p&gt;So I retrieved the last Makefile from openbsd-wip git history and adapt it for latest Hotot version.&#xA;Source is the zip version from this &lt;a href=&#34;https://github.com/lyricat/Hotot/tree/ed2ff013cac979a0f3b02359c6a4262d5479f479&#34;&gt;git revision&lt;/a&gt; (latest on 2013-09-09)&lt;/p&gt;&#xA;&lt;p&gt;The short version (maybe this works only on -current):&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    pkg_add http://download.alteroot.org/openbsd/hotot/Hotot-0.9.8.14.tgz&#xA;    Hotot-0.9.8.14: ok    &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Et voila :)&lt;/p&gt;&#xA;&lt;p&gt;To compile it locally (e.g for openbsd5.3) :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    In your /etc/mk.conf, add /home/user/build/ to your PORTSDIR_PATH variable&#xA;    mkdir /home/user/build/net/&#xA;    cd /home/user/build/net/&#xA;    wget http://download.alteroot.org/openbsd/hotot/hotot-build.tar.gz&#xA;    tar -tzf Hotot-build.tar.gz&#xA;    cd hotot&#xA;    make&#xA;    make install&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Enjoy :-)&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Setup de KVM/Libvirt sur une dedibox</title>
      <link>https://blog.alteroot.org/articles/2013-09-06/setup-de-kvm/libvirt-sur-une-dedibox.html</link>
      <pubDate>Fri, 06 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-09-06/setup-de-kvm/libvirt-sur-une-dedibox.html</guid>
      <description>&lt;p&gt;Cet article explique le setup de KVM/Libvirt sur une dedibox de chez online.net, sur un serveur hôte en Debian Wheezy. Évidement, une bonne partie des infos sont valides pour n&amp;rsquo;importe quel hébergeur.&lt;/p&gt;&#xA;&lt;p&gt;On commence par installer la base :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    apt-get install libvirt-bin bridge-utils qemu-kvm virtinst&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On setup un LVM que l&amp;rsquo;on appelle &amp;ldquo;system&amp;rdquo;, sur lequel on créé des LV pour les VM (je vous laisse vous debrouiller).&lt;/p&gt;&#xA;&lt;p&gt;Il faut commander une IP Failover et sa mac associée, de type KVM,  sur console.online.net et l&amp;rsquo;assigner à votre serveur.&#xA;On prendra les paramètres suivants :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    IP hote : 4.3.2.10&#xA;    IP VM : 1.2.3.4&#xA;    Mac VM : 54:52:00:00:00:00 &#xA;    Nom de la VM : vm1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On édite la configuration réseau afin de créer un bridge sur lequel les VM seront attachée, et ajouter une route pour que la VM ai une connexion.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    vim /etc/network/interfaces&#xA;&#xA;    auto eth0&#xA;    iface eth0 inet static&#xA;      address 4.3.2.10&#xA;      netmask 255.255.255.0&#xA;      gateway 4.3.2.1&#xA;      up brctl addbr dmz0&#xA;      up brctl setfd dmz0 0&#xA;      up brctl stp dmz0 on&#xA;      up ifconfig dmz0 up&#xA;      up /sbin/route add 1.2.3.4 dev dmz0&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Un petit /etc/init.d/networking restart et ça devrait passer.&lt;/p&gt;&#xA;&lt;p&gt;Faites un &amp;ldquo;brctl show&amp;rdquo;, vous devriez voir le bridge.&lt;/p&gt;&#xA;&lt;p&gt;Ne pas oublier d&amp;rsquo;activer l&amp;rsquo;ip_forward sur l&amp;rsquo;hôte.&lt;/p&gt;&#xA;&lt;p&gt;Note : Bien qu&amp;rsquo;il ne devrait plus être indispensable d&amp;rsquo;activer le proxy arp si on a fait générer une adresse mac sur l&amp;rsquo;interface d&amp;rsquo;online, j&amp;rsquo;ai tout de même eu des soucis, donc activons le !&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    vim /etc/sysctl.conf&#xA;&#xA;      net.ipv4.conf.eth0.proxy_arp=1&#xA;      net.ipv4.ip_forward=1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Tout d&amp;rsquo;abord, il faut créer le LV associé avant de lancer l&amp;rsquo;installation, puis on utilise virt-install pour la suite :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    lvcreate -v -L 20G -n vm1 system&#xA;    virt-install -v --os-type=linux -n vm1 -r 2048 --disk=/dev/system/vm1 --vnc --vnclisten=4.3.2.10 --network bridge=dmz0,mac=54:52:00:00:00:00 --cdrom=debian-7.1.0-amd64-i386-netinst.iso&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Connectez vous avec vncview sur l&amp;rsquo;IP de votre hôte et faire une installation tout ce qu&amp;rsquo;il y a de plus basique (sans réseau).&#xA;Rebootez la VM, reconnectez vous en VNC, ensuite place à quelques modifications dans la VM afin d&amp;rsquo;avoir une console et du réseau.&lt;/p&gt;&#xA;&lt;p&gt;Pour pouvoir acceder à votre VM avec un virsh console vm1 depuis l&amp;rsquo;hôte (utile en cas de dépanage…), éditez dans la vm&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    vim /etc/default/grub&#xA;&#xA;      GRUB_CMDLINE_LINUX=&amp;quot;console=tty0 console=ttyS0,115200&amp;quot;&#xA;&#xA;    vim Editer /etc/inittab&#xA;      # Decommenter la ligne suivante &#xA;      T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Puis update-grub pour mettre à jour le grub.cfg&lt;/p&gt;&#xA;&lt;p&gt;Pour le réseau&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    vim /etc/network/interfaces&#xA;&#xA;    auto eth0&#xA;    iface eth0 inet static &#xA;      address 1.2.3.4 # Ip de votre VM&#xA;      netmask 255.255.255.255 # oui, un /32&#xA;      post-up /sbin/ip route add 4.3.2.10/32 dev eth0&#xA;      post-up /sbin/ip route add default via 4.3.2.10 # Oui, c&#39;est l&#39;IP de l&#39;hote !&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Faire un halt de la VM, puis éditez la configuration&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    virsh shutdown vm1&#xA;    virsh edit vm1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Supprimez les lignes dans le XML à propos de vnc pour desactiver VNC&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;     &amp;lt;graphics type=&#39;vnc&#39; listen type=&#39;address&#39; address=&#39;4.3.2.10&#39;/&amp;gt; &amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On start la VM&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;     virsh start vm1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;La console devrait être disponible&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;     virsh console vm1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Et la machine devrait pinguer sur le réseau, et avoir accès au net :)&lt;/p&gt;&#xA;&lt;p&gt;Prochaine étape, activer les drivers virtio pour de meilleurs perfs, dans un autre article&lt;/p&gt;&#xA;&lt;h2 id=&#34;trucs-et-astuces-&#34;&gt;Trucs et astuces :&lt;/h2&gt;&#xA;&lt;p&gt;Il est possible de monter les partitions de la VM sur l&amp;rsquo;hôte (VM éteinte) afin de pouvoir éditer directement les fichiers sans passer par la console/vnc qui peut parfois être récalcitrant. Pour cela, utiliser kpartx pour activer ou désactiver les partitions du LV !&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    # Lister les partitions du LV&#xA;    kpartx -l /dev/system/vm1&#xA;&#xA;    # Activer les partitions &#xA;    kpartx -av /dev/system/vm1&#xA;&#xA;      add map system-vm11 (254:9): 0 19529728 linear /dev/system/vm1 2048&#xA;      add map system-vm12 (254:10): 0 399894530 linear /dev/system/vm1 19533822&#xA;      add map system-vm15 : 0 1951744 linear 254:10 2&#xA;      add map system-vm16 : 0 397940736 linear 254:10 1953794&#xA;&#xA;&#xA;    # On peut ensuite mounter une partition !&#xA;    mount /dev/mapper/system-vm1 /mnt&#xA;&#xA;    # Ne pas oublier de umount et desactiver les partitions après opération&#xA;    umount /mnt&#xA;    kpartx -dv /dev/system/vm1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;</description>
    </item>
    <item>
      <title>Use Irc Server-Time capabilities  with znc and hexchat/weechat</title>
      <link>https://blog.alteroot.org/articles/2013-09-03/use-irc-server-time-capabilities-with-znc-and-hexchat/weechat.html</link>
      <pubDate>Tue, 03 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://blog.alteroot.org/articles/2013-09-03/use-irc-server-time-capabilities-with-znc-and-hexchat/weechat.html</guid>
      <description>&lt;p&gt;Server time is a &amp;ldquo;new&amp;rdquo; capabilities for IRC protocol (based on work by ircv3 working group, see &lt;a href=&#34;http://ircv3.atheme.org/&#34;&gt;http://ircv3.atheme.org/&lt;/a&gt; and &lt;a href=&#34;http://ircv3.atheme.org/extensions/server-time-3.2&#34;&gt;http://ircv3.atheme.org/extensions/server-time-3.2&lt;/a&gt; ).&lt;/p&gt;&#xA;&lt;p&gt;If you already use ZNC, you probably use the backlog feature, which allow znc to buffer all messages on irc while you are away, and sent back to you client when you reconnect (yes, I know, you can use screen/tmux with irssi ;-)).&lt;/p&gt;&#xA;&lt;p&gt;The IRC protocol does not communicate time, however, and a client would typically attribute these buffered messages to the time the client received them. This will always be the time at which the client connected, rather than the actual time the message was sent.&lt;/p&gt;&#xA;&lt;p&gt;Server-time solve this problem, and is available in hexchat (&amp;gt;2.9.5), weechat (&amp;gt;0.4.0), limechat (&amp;gt; 2.29) and znc (&amp;gt;=1.0).&lt;/p&gt;&#xA;&lt;p&gt;You just need to activate it on client side.&lt;/p&gt;&#xA;&lt;p&gt;In hexchat via Settings -&amp;gt; preferences -&amp;gt; advanced -&amp;gt; Use server time if supported&lt;/p&gt;&#xA;&lt;p&gt;In weechat, /set irc.server.$yournetwork.capabilities &amp;ldquo;znc.in/server-time&amp;rdquo; (or &amp;ldquo;znc.in/server-time-iso&amp;rdquo; with znc &amp;gt;1.0)&lt;/p&gt;&#xA;&lt;p&gt;On connexion, you will see something like :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;    irc: client capability, server supports: userhost-in-names multi-prefix znc.in/server-time &#xA;    irc: client capability, requesting: znc.in/server-time&#xA;    irc: client capability, enabled: znc.in/server-time&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now your backlogs have correct timestamps !&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
