From a2c1e11ecf83f40f09770522cedb0af9b06afc5f Mon Sep 17 00:00:00 2001
From: Adar Nimrod <nimrod@shore.co.il>
Date: Fri, 26 Dec 2014 23:21:29 +0200
Subject: [PATCH] - Configured static content (under content/static). - Removed
 warning when publishing about missing SITEURL. - New content: SSL, Pelican
 and some draft content. - Changed theme to be look better on Desktop and
 mobile.

---
 .gitignore                |   1 +
 .pelicanconf.py.swp       | Bin 0 -> 12288 bytes
 .publishconf.py.swp       | Bin 0 -> 12288 bytes
 about.html                |  32 +++++++++++++++++++++++
 content/collectd.rst      |  10 ++++++++
 content/pages/about.rst   |   2 +-
 content/pelican.rst       |  27 +++++++++++++++-----
 content/riemann.rst       |  43 +++++++++++++++++++++++++++++++
 content/ssl.rst           |  41 ++++++++++++++++++++++++++++++
 content/static/nimrod.gpg |  52 +++++++++++++++++++++++++++++++++++---
 fabfile.py                |   2 +-
 fabfile.pyc               | Bin 2739 -> 2739 bytes
 missfont.log              |   2 ++
 pelicanconf.py            |   3 ++-
 publishconf.py            |   5 ++++
 15 files changed, 208 insertions(+), 12 deletions(-)
 create mode 100644 .pelicanconf.py.swp
 create mode 100644 .publishconf.py.swp
 create mode 100644 about.html
 create mode 100644 content/collectd.rst
 create mode 100644 content/riemann.rst
 create mode 100644 content/ssl.rst
 create mode 100644 missfont.log

diff --git a/.gitignore b/.gitignore
index 8405f5c..acdab51 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 output
 cache
+*.pyc
diff --git a/.pelicanconf.py.swp b/.pelicanconf.py.swp
new file mode 100644
index 0000000000000000000000000000000000000000..0d949f124e676c5c24e01a1cae27b574daf1363f
GIT binary patch
literal 12288
zcmYc?2=nw+FxN9-U|?VnU|`7An;T+~z{&7Lg@GY2Gq)%|1tftV6RWNcqEO!@Ke;qF
zHLs*tKPe|aUB4hTCo?%QFF8LiO|PI5zg45MqaiRF0%V5(FN3j>p#ey{vXY{Luuv$7
zIf_R^U^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qNC=b^Ff!CLFfcGd{i_M38PRAcca$0p
zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Ez0XkeI^2P|D4~V9EoT|A+Pe
zU-2_AT;OM5Si#T0u$-TPp`V|DA&Z}Z!I7VV!GWKFL4}`zL7AU{fsdboftR0w;R+uE
z!+t&nhNXNA3>|z74DEaj3^jZV4266Q3<Z1)3<-P;461w#48M697=H0GFg)UAV0g&O
zz%ZGYfuWX{fuV+%fgzihfx(HFfkB0rfq{{if#Dtx1H(Zc28MM!3=Dld3=B0q3=G*k
z3=Dxh5cisZ+&l!seALOKAut*OqaiRF0;3@?8UmvsFd71*Auyyuz%eMq)7i&0J~YTj
z!B#=Nx;Upay;d)yBsWK$AvnY_#M3!Gz%j%lSix2yTD`a=u_QBDJ(eNF(LFxcG0ZjI
z5hS6m4iX4P6Y+5MbycucP||~~3f9fdPtMNFOHaxyN>O4^4nZg=F3B&-Rbp`Q3=Z&d
zjEoO(baxGo_xFqUb@dBXuvG{tDouq;Iy;8Ay88!tqNs37%qdP~P=*<RRSnn_Wf#vN
zSLcxU5Le#-AIA_^kn=UvGxJhXE7Ua^@JQ+?s3#UBXJnS87OQJAfPw_%x8(f1lGMBs
zB?boNAXgv95YI4hNP<j-Sf>!0mz<vqS|P2FmY<W8U!Iwlu8@<Nm#UDNrcjw*s!*Po
zSE7&tT}7>1l$w)Rl3A9j5E|rDtWchjnx~MGT9%rVUyzxX&cNW}>gE{g69Nh#Pd~>H
zPk%oJTLsV}P-O);&`@{G%P+}DEmA1XPtHut0oj(VuA`u?tgfk}$)FtU@9gOaifauG
z^~n5Eh2+FMg~XH;u(D!>%sh~*iWERAxHHog(lT>WVR{*q6@noqmS?7<r<O1<_;~tx
zgS@Jt$)K#@l#`!cl%JEszz`DT=obtM41d3PH&<7ec*hWbUj<tQzx=#Z258hoV#+|2
z`uLzIS5|OKO-)fqPt8j$N-W9D&r`@ORwyklP0Y!uRLILOQAkNG&MZnz!5vmUj(+Y6
zwhE={sd?%Q3?ZJru2KGepoFRJSe%)t@0D6qTAY}Znyb#h5bPP^3e5)@B_##LR{Hwo
z<>h+C8Tm!2ddc~EnK|H9?&@HLevaVeU8?R2c1UWmLSkNuLQ!dMQch-Gda*i#V`zwn
ze-PMeKk({%1;>=cB6S9aw4(f6h4}ci(vs4m)cAOX%-n+fq7sGDyv*eMl+^f~%#zfi
z#GGOVWd&U=U4`WQl+3(zD}~aMG+hg@h%$q+qJC*{k$zHUo_=axnL<HjNk)Di0|2?O
BSq}gJ

literal 0
HcmV?d00001

diff --git a/.publishconf.py.swp b/.publishconf.py.swp
new file mode 100644
index 0000000000000000000000000000000000000000..fca782a3376afa01ac369d8849e9448a20054721
GIT binary patch
literal 12288
zcmYc?2=nw+FxN9-U|?VnU|_JmI5(s-m6PF_3Iju4W^Pe_3P=J!CRSY?M4`S*esXDU
zYF<gPeo{_;x_&`vQch-ZMsj{$nqEOAeyc`hM?+vV1jq@2(vmb?3tk3eBSQm_c4Z|+
z1!1935OWldhQMeDjE2By2#kinXb6mkz-S1JhQMeDjF1p0DPUx%XJBApg8EkuN;9I-
zQ0^!-8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiQ^Lm)AQfuWm+fkB=Z
zGXD?j|G(mAV7S1~z_5a!fnhm614AJ{1A_}c1A{X^1A`?$1A`tv1A{O>1H(@~28JJe
z3=HS_7#Mc)F)-}lV_=xf$H0)u$H3sv$H3sn$H1V^$H4HHmx19SF9XAFUIvC;ybKKO
zybKI&ybKHlybKJHybKIByihj`!7v<k@@NQ*hQMeDjE2By2#kinXb6mkz-S1JhQP20
zfsi0azhEE75Kn)<csEy9mw3kze_sV#1;6~fR0ieX5XTTt=lB4}5RYI5TZL!^_2QDm
zlFVdvg;)k<cYl9(AJ=$CKS!U)5Km{20wpB|Wf#xjz|i3MV9yX&KSy6z1zQCrB?bm%
z1-Ja1oc!|4ymW=klGNN{g~Xy%h5WRV)I5dK;?%U#9EI|X)I0^~TItNZbOr{;pb$@I
zAJ_O`$1vA;N09mI)x|lb>9zWqc`2zCdKo3TIqD3-KB4ZOZjtf9{-Ht6AnVkV5{pyw
z5_4148I)aI-5f)GLgIa0LmXWkLmU-s6*M%|6H7}n@{81U6iU_oz)Qdt98(gD)HQW9
z8C+a_Tti&r{X;_nLPO$RJcC@FL;Qmx6>Jqkib_)%7@QqLT;2VHBC!M(Rw?zg)YOz>
zebr*U#FG46y$X<vA>r)f0}E@Yn#7zOBt;BCuApcMbBzxT@&WnXEitD!l>rp2p+P<h
zwhHPQB_##LR{Hwo<>h+C8Tm!2ddc~EnK|G!=jsd$X+`<D3I(Y-naPQHprz*unYjh|
zMI{Pa48@hjdIgCk8G4BY1*v%{8u`U~$)!apnMIlmP&LJs#V}@mF(~p<D++QllQT<l
zDiw+gQj;^&DitzI6cURSD)UQ=6hOvjrYodn=A`N|C@X|yWEO)t3Yo<U`FS~&pcqb3
z$V>yN2C)?qauc&tVR4<HkY5CKZhU-NX-R2OYJ5D*wWWEP$@wX%@j00#sYQu7#SF>{
tx>~vl$@wXndFfUP;6=Y+5oHEtMg7v^BK@SyJpI(XGKGT5l8pR31^}A^8YKV#

literal 0
HcmV?d00001

diff --git a/about.html b/about.html
new file mode 100644
index 0000000..7b01137
--- /dev/null
+++ b/about.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="Content-Style-Type" content="text/css" />
+  <meta name="generator" content="pandoc" />
+  <meta name="date" content="2014-04-19" />
+  <title>About me</title>
+  <style type="text/css">code{white-space: pre;}</style>
+  <link rel="stylesheet" href="pelican-mockingbird/static/css/print.css" type="text/css" />
+</head>
+<body>
+<div id="header">
+<h1 class="title">About me</h1>
+<h3 class="date">2014-04-19</h3>
+</div>
+<p>Hi. I'm Nimrod Adar, a Linux and BSD sysadmin and as-needed developer from Haifa, Israel.</p>
+<p>This is my blog about what I do and thus it serves 2 purposes. The 1st is to be my personal journal to document the how or why of some problem solving. The 2nd is more outward facing, for it be a resource for others (by no way complete) and for me to publish whenever I need to.</p>
+<p>Also, I'm a part-time freelancer so you can contact me at <script type="text/javascript">
+<!--
+h='&#x73;&#104;&#x6f;&#114;&#x65;&#46;&#x63;&#x6f;&#46;&#x69;&#108;';a='&#64;';n='&#x25;&#50;&#48;&#110;&#x69;&#x6d;&#114;&#x6f;&#100;';e=n+a+h;
+document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+'<script type="text/javascript">
+<!--
+h='&#x73;&#104;&#x6f;&#114;&#x65;&#46;&#x63;&#x6f;&#46;&#x69;&#108;';a='&#64;';n='&#110;&#x69;&#x6d;&#114;&#x6f;&#100;';e=n+a+h;
+document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+e+'<\/'+'a'+'>');
+// -->
+</script><noscript>&#110;&#x69;&#x6d;&#114;&#x6f;&#100;&#32;&#x61;&#116;&#32;&#x73;&#104;&#x6f;&#114;&#x65;&#32;&#100;&#x6f;&#116;&#32;&#x63;&#x6f;&#32;&#100;&#x6f;&#116;&#32;&#x69;&#108;</noscript>'+'<\/'+'a'+'>');
+// -->
+</script><noscript>&#60;&#x73;&#x63;&#114;&#x69;&#112;&#116;&#32;&#116;&#x79;&#112;&#x65;&#x3d;&#34;&#116;&#x65;&#120;&#116;&#x2f;&#106;&#x61;&#118;&#x61;&#x73;&#x63;&#114;&#x69;&#112;&#116;&#34;&#62;&#10;&#60;&#x21;&#x2d;&#x2d;&#10;&#104;&#x3d;&#x27;&#x73;&#104;&#x6f;&#114;&#x65;&#46;&#x63;&#x6f;&#46;&#x69;&#108;&#x27;&#x3b;&#x61;&#x3d;&#x27;&#64;&#x27;&#x3b;&#110;&#x3d;&#x27;&#110;&#x69;&#x6d;&#114;&#x6f;&#100;&#x27;&#x3b;&#x65;&#x3d;&#110;&#x2b;&#x61;&#x2b;&#104;&#x3b;&#10;&#100;&#x6f;&#x63;&#x75;&#x6d;&#x65;&#110;&#116;&#46;&#x77;&#114;&#x69;&#116;&#x65;&#40;&#x27;&#60;&#x61;&#32;&#104;&#x27;&#x2b;&#x27;&#114;&#x65;&#102;&#x27;&#x2b;&#x27;&#x3d;&#34;&#x6d;&#x61;&#x27;&#x2b;&#x27;&#x69;&#108;&#116;&#x6f;&#x27;&#x2b;&#x27;&#58;&#x27;&#x2b;&#x65;&#x2b;&#x27;&#34;&#62;&#x27;&#x2b;&#x65;&#x2b;&#x27;&#60;&#92;&#x2f;&#x27;&#x2b;&#x27;&#x61;&#x27;&#x2b;&#x27;&#62;&#x27;&#x29;&#x3b;&#10;&#x2f;&#x2f;&#32;&#x2d;&#x2d;&#62;&#10;&#60;&#x2f;&#x73;&#x63;&#114;&#x69;&#112;&#116;&#62;&#60;&#110;&#x6f;&#x73;&#x63;&#114;&#x69;&#112;&#116;&#62;&#110;&#x69;&#x6d;&#114;&#x6f;&#100;&#32;&#x61;&#116;&#32;&#x73;&#104;&#x6f;&#114;&#x65;&#32;&#100;&#x6f;&#116;&#32;&#x63;&#x6f;&#32;&#100;&#x6f;&#116;&#32;&#x69;&#108;&#60;&#x2f;&#110;&#x6f;&#x73;&#x63;&#114;&#x69;&#112;&#116;&#62;&#32;&#40;&#x25;&#50;&#48;&#110;&#x69;&#x6d;&#114;&#x6f;&#100;&#32;&#x61;&#116;&#32;&#x73;&#104;&#x6f;&#114;&#x65;&#32;&#100;&#x6f;&#116;&#32;&#x63;&#x6f;&#32;&#100;&#x6f;&#116;&#32;&#x69;&#108;&#x29;</noscript> or at 052-8713696 (+972-52-871-3696 outside of Israel).</p>
+<p>Last thing, my public <a href="https://www.shore.co.il/blog/static/nimrod.gpg">GPG public key</a></p>
+</body>
+</html>
diff --git a/content/collectd.rst b/content/collectd.rst
new file mode 100644
index 0000000..7f8798c
--- /dev/null
+++ b/content/collectd.rst
@@ -0,0 +1,10 @@
+Configuring Collectd for use with Riemann
+#########################################
+:date: 2014-10-26
+:summary: How I use Collectd to push information to Riemann
+:status: draft
+
+Installing Collectd
+-------------------
+
+
diff --git a/content/pages/about.rst b/content/pages/about.rst
index fcdd69b..b57070f 100644
--- a/content/pages/about.rst
+++ b/content/pages/about.rst
@@ -12,4 +12,4 @@ This is my blog about what I do and thus it serves 2 purposes. The 1st is to be
 
 Also, I'm a part-time freelancer so you can contact me at `nimrod@shore.co.il <mailto: nimrod@shore.co.il>`_ or at 052-8713696 (+972-52-871-3696 outside of Israel).
 
-Last thing, my public `GPG public key <https://www.shore.co.il/blog/static/nimrod.gpg>`_
\ No newline at end of file
+Last thing, my public `GPG public key <{filename}/static/nimrod.gpg>`_
diff --git a/content/pelican.rst b/content/pelican.rst
index 5bb63e0..c9eb1ed 100644
--- a/content/pelican.rst
+++ b/content/pelican.rst
@@ -1,8 +1,6 @@
 Blogging with Pelican
 ########################
 :date: 2014-04-19
-:slug: How-I-blog-with-Pelican
-:author: Nimrod Adar
 :summary: How I blog with Pelican
 
 What is Pelican?
@@ -22,6 +20,9 @@ Alternatively, you can use pip ::
 
     $ pip install pelican fabric
 
+Creating a blog
+---------------
+
 Create a blog directory and an empty blog ::
 
   $ mkdir blog
@@ -56,7 +57,12 @@ Create a blog directory and an empty blog ::
   > Do you want to upload your website using GitHub Pages? (y/N) 
   Done. Your new project is available at blog
 
-Since Pelican uses OpenSSH, you can use servers defined in your SSH preferences. Now, lets configure the blog to our liking. In the blog directory there are the 2 configuration files: pelicanconf.py for configuring Pelican and publishconf.py for configuration that are only for publishing using Make or Fabric. Pelican also creates standard Makefile and fabfile.py for you. I've made the following modifications to pelicanconf.py: ::
+Since Pelican uses OpenSSH, you can use servers defined in your SSH preferences. Now, lets configure the blog to our liking.
+
+Configuration
+-------------
+
+In the blog directory there are the 2 configuration files: pelicanconf.py for configuring Pelican and publishconf.py for configuration that are only for publishing using Make or Fabric. Pelican also creates standard Makefile and fabfile.py for you. I've made the following modifications to pelicanconf.py: ::
 
   TIMEZONE = 'Asia/Jerusalem'
   PATH = "content"
@@ -71,7 +77,11 @@ And to publishconf.py: ::
 
   CATEGORY_FEED_ATOM = None
   
-I've set the timezone to mine (so that the time of published articles is correct), add everything under contents/static as static contents to be uploaded to the server, disabled showing of categories of articles and creating feeds for them, disabled saving of articles by tags and set pages (which are simple web pages unlike articles which are blog entries) to show on the menu. Next, themes. Pelican comes with a default theme (the same as used by Pelican's website) but I wanted something more understated so I took at look at `https://github.com/getpelican/pelican-themes <https://github.com/getpelican/pelican-themes>`_ and chose pelican-mockingbird. Cloned it ::
+I've set the timezone to mine (so that the time of published articles is correct), add everything under contents/static as static contents to be uploaded to the server, disabled showing of categories of articles and creating feeds for them, disabled saving of articles by tags and set pages (which are simple web pages unlike articles which are blog entries) to show on the menu. Next, themes. 
+
+Themes
+------
+Pelican comes with a default theme (the same as used by Pelican's website) but I wanted something more understated so I took at look at `https://github.com/getpelican/pelican-themes <https://github.com/getpelican/pelican-themes>`_ and chose pelican-mockingbird. Cloned it ::
 
   $ git clone https://github.com/wrl/pelican-mockingbird.git
 
@@ -79,7 +89,12 @@ and set the theme to that by adding the following to pelicanconf.py: ::
 
     THEME = "./pelican-mockingbird"
 
-I've also edited base.html and article.html inside of pelican-mockingbird/templates to suite me. Next, let us add a new entry by creating a ReStructedText file inside of contents. The filename is for personal use and not critical. The heading is the article name and you can add the following for Pelican to use: ::
+I've also edited base.html and article.html inside of pelican-mockingbird/templates to suite me. Next, let us add a new entry.
+
+Adding an entry
+---------------
+
+Create a ReStructedText file inside of contents. The filename is for personal use and not critical. The heading is the article name and you can add the following for Pelican to use: ::
 
     :date: 2014-04-19
     :slug:  this-will-the-filename
@@ -93,4 +108,4 @@ After we added the content we want to upload it to our web server (I use fabric)
 If you don't have keys set for the server it will ask you for your password to the server.
 Last thing, you can create pages, create a pages directory inside contents and save the files there. Their format is the same as articles but they'll have a somewhat template applied and they will be shown in the menu. A good example will an 'About Me' page.
 
-That's it, you now have Pelican installed, configured and published to your web site.
\ No newline at end of file
+That's it, you now have Pelican installed, configured and published to your web site.
diff --git a/content/riemann.rst b/content/riemann.rst
new file mode 100644
index 0000000..4c128f6
--- /dev/null
+++ b/content/riemann.rst
@@ -0,0 +1,43 @@
+Installing Riemann on Debian Wheezy
+###################################
+:date: 2014-10-26
+:summary: How I installed Riemann on Debian Wheezy.
+:status: draft
+
+#. Install dependencies. ::
+
+   $ sudo apt-get install openjdk-7-jre ruby-dev build-essential
+
+#. Grab the debian package from the riemann.io front page and install (at time
+   of writing version 0.2.6) ::
+
+   $ wget http://aphyr.com/riemann/riemann_0.2.6_all.deb
+   $ sudo dpkg -i riemann_0.2.6_all.deb
+
+#. Configure Riemann. In /etc/riemann/riemann.config change the host to 0.0.0.0
+   . Add the following line to /etc/default/riemann:
+
+   EXTRA_JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
+
+#. Start the service ::
+
+   $ sudo service riemann start
+
+#. Install the Riemann dashboard. ::
+
+   $ sudo apt-get install ruby
+   $ sudo gem install riemann-dash
+
+#. Create an Upstart configuration file for riemann-dash.
+
+   $ cat > /etc/init/riemann-dash.conf << EOF
+   author "Nimrod Adar <nimrod.adar@wiser.com>"
+   description "The Riemann dashboard."
+   start on runlevel [2345]
+   stop on runlevel [!2345]
+   respawn
+   respawn limit 10 10
+   exec /usr/local/bin/riemann-dash
+   EOF
+
+
diff --git a/content/ssl.rst b/content/ssl.rst
new file mode 100644
index 0000000..a03a689
--- /dev/null
+++ b/content/ssl.rst
@@ -0,0 +1,41 @@
+SSL/TLS ciphers
+===============
+
+:date: 2014-07-12
+:summary: Which ciphers to enable and in which order.
+
+The problem at hand
+-------------------
+
+You have a website and you want to encrypt the traffic going in and out of your webserver. Since you heard of at least some of the attacks currently known at SSL and TLS you want to configure your server to not be vulnerable to any. In a perfect world (or if you control your clients) all you have to do is allow TLS 1.2 and AES-GCM with elliptic-curve Diffie-Hellman key exchange only (AESGCM+ECDH when using openssl) and you're set. This combination is secure, fast, forward-secure and at the time of writing there are no known attacks that make it crackable in a reasonable time. So what's the problem? With a public website you don't control the web browser the visitor uses. If he or she is using IE on Windows XP or Android 2.x the browser doesn't support TLS 1.2 or AES-GCM and the visitor can't access the website. How do you keep your website secure yet reasonably accessible?
+
+Known attacks on SSL and TLS
+----------------------------
+
+First of all, SSL 2.0 is unsecure (it's even disabled by default in IE7) so we'll not be using it. Version roll back attacks allow a man in the middle to change the response from the client to force a lower grade (read the lowest grade possible) cipher suite.
+The BEAST attack exploits a weakness in CBC ciphers in TLS 1.0. There's been fixes to all major browser for some time now, so we're going to assume that the client is secure and CBC ciphers are safe to use (reasonable assumption, but still an assumption).
+CRIME and BREACH exploit a weakness in compression and RC4 is considered to be weak although not broken like DES or MD5.
+
+
+IE in Windows XP
+----------------
+
+All version of IE that are available on Windows XP offer RC4 and 3DES as the best ciphers available and unfortunately Chrome uses the same scrypt library. For a user this means that if you're on Windows XP you should be using an up-to-date version of Firefox to have the best experience until you can move from Windows XP (or Windows in general). For the website manager it leaves you with 2 options, either add support for RC4 cipher with SHA1 hashes (for openssl, add RC4-SHA at the end of the cipher list) or ask users to use Firefox if they're still on XP. I chose the latter rather then the former, but I have that luxury.
+
+What are we left with?
+----------------------
+
+Since modern browser browsers that support SSL 3.0 support TLS 1.0, we'll be using TLS 1.0 or newer. Any AES cipher (AES-GCM preferred) with ECDH key exchange (preferred) or DH key exchange and SHA2 (preferred) or SHA1 hashes and disable compression, . On my server (OpenBSD firewall/ load-balancer/ SSL terminator and reverse-proxy) with the included OpenSSL and Nginx the configuration is as followed ::
+
+    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
+    ssl_ciphers !kRSA:!3DES:!RC4:!DES:!MD5:!aNULL:!NULL:AESGCM+ECDH:AES256+ECDH:AES128:+SHA1;
+    ssl_prefer_server_ciphers on;
+
+
+Take note that I first disable what I don't want, then allow what I do want in the order I prefer. I've also disabled DH key exchange with AES-GCM since all browsers that support AES-GCM support ECDH so I've opted for that.
+
+Final words
+-----------
+
+This is not enough to call your site secure. I haven't mentioned secure cookies, HSTS, input sanitation, cross-site scripting, OCSP, certificate strength, implementation vulnerabilities (such as OpenSSL's heartbleed) or any of the other security considerations. For testing purposes I used `sslscan <http://sourceforge.net/projects/sslscan/>`_ and `Calomel's SSL validation add-on for Firefox <https://calomel.org/firefox_ssl_validation.html>`_. You can also `SSLLabs' SSL test <https://www.ssllabs.com/ssltest/index.html>`_.
+
diff --git a/content/static/nimrod.gpg b/content/static/nimrod.gpg
index 26f8975..9a48968 100644
--- a/content/static/nimrod.gpg
+++ b/content/static/nimrod.gpg
@@ -1,5 +1,5 @@
 -----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1
+Version: GnuPG v2
 
 mQENBFK1T/0BCADLC2iWmTQXFncaGjvg1NB2CiUcMujnw8aaNY6pIB2IoXKniwps
 REBIQprVCGPKsm9umQp1VQV8X4ijWqgDFRK+w51TBAY3GCDREep1K3ZDUr7jCQXs
@@ -14,6 +14,52 @@ vo8reQB17cLMb7PKYScB8najPxHNcWfNHvtSNMCOyUaoNJmjqW7tpWcr6TaD39a/
 s3Le0gZjXdaxKcXVzaUKTLKXlwr/7QyD7qxjwEwOmiTFvSjnCQDOCUXxghQv4FMM
 HeN6Jqxdzb1Ua8xb74TyGkJOZndzUboLrPL6OlLUekQpQNFpUd6qB2/ZZezlLxfx
 27qt/HPkoGmCX5EafRi6RSPnhDbLntca2sO4TDb5vBFBjS2UNYkGynEUb+NKZ84d
-HCUeBA==
-=zy5T
+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
+1Lh1if7rMu9qrhxJo6g5LQ==
+=hidO
 -----END PGP PUBLIC KEY BLOCK-----
diff --git a/fabfile.py b/fabfile.py
index ddb53fa..ca99098 100644
--- a/fabfile.py
+++ b/fabfile.py
@@ -7,7 +7,7 @@ env.deploy_path = 'output'
 DEPLOY_PATH = env.deploy_path
 
 # Remote server configuration
-production = 'nimrod@ns1.shore.co.il:22'
+production = 'nimrod@www.shore.co.il:22'
 dest_path = '/var/www/htdocs/www.shore.co.il/blog/'
 
 # Rackspace Cloud Files configuration settings
diff --git a/fabfile.pyc b/fabfile.pyc
index cba263b0561356e8997b0174ac5157b27e282df4..7154174ddd88afd38ca36b91037212d93790c74e 100644
GIT binary patch
delta 26
icmdlix>=Ni`7<w<@&l%jjU23u%;n|fn*|sba{>TrEC-eV

delta 26
hcmdlix>=Ni`7<w9uSZ?*Mh;d+=DcFV%>s;zIRR|s2ao^&

diff --git a/missfont.log b/missfont.log
new file mode 100644
index 0000000..2566c32
--- /dev/null
+++ b/missfont.log
@@ -0,0 +1,2 @@
+mktextfm ecrm1000
+mktextfm ecrm1000
diff --git a/pelicanconf.py b/pelicanconf.py
index 8d7c471..425df97 100644
--- a/pelicanconf.py
+++ b/pelicanconf.py
@@ -4,7 +4,7 @@ from __future__ import unicode_literals
 
 AUTHOR = u'Nimrod Adar'
 SITENAME = u'My notes and rumblings'
-SITEURL = ''
+SITEURL = 'https://www.shore.co.il/blog'
 
 TIMEZONE = 'Asia/Jerusalem'
 
@@ -38,3 +38,4 @@ THEME = "./pelican-mockingbird"
 TAGS_SAVE_AS = ''
 TAG_SAVE_AS = ''
 STATIC_PATHS = ['static']
+ARTICLE_URL = '{slug}.html'
diff --git a/publishconf.py b/publishconf.py
index e3d8604..678e10e 100644
--- a/publishconf.py
+++ b/publishconf.py
@@ -18,8 +18,13 @@ FEED_ALL_ATOM = 'feeds/all.atom.xml'
 CATEGORY_FEED_ATOM = None
 
 DELETE_OUTPUT_DIRECTORY = True
+#DEFAULT_METADATA = (('author', u'Nimrod Adar'),)
+SLUGIFY_SOURCE = 'basename'
+ARTICLE_SAVE_AS = '{slug}/index.html'
 
 # Following items are often useful when publishing
 
 #DISQUS_SITENAME = ""
 #GOOGLE_ANALYTICS = ""
+#STATIC_PATHS = [ 'static' ]
+TRANSLATION_FEED_ATOM = None
-- 
GitLab