<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sakana.fr - A sysadmin&#039;s blog &#187; Software</title>
	<atom:link href="http://www.sakana.fr/blog/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sakana.fr/blog</link>
	<description>On the fly saving of few useful (?) tech tips</description>
	<lastBuildDate>Thu, 26 Jan 2012 15:30:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Getting Spotify to run on Gentoo/Linux: A Gross and Cruel Hack</title>
		<link>http://www.sakana.fr/blog/2012/01/26/getting-spotify-to-run-on-gentoolinux-a-gross-and-cruel-hack/</link>
		<comments>http://www.sakana.fr/blog/2012/01/26/getting-spotify-to-run-on-gentoolinux-a-gross-and-cruel-hack/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 15:30:09 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[spotify]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=529</guid>
		<description><![CDATA[Spotify is a great way to listen to music. Unfortunately the official client only runs on Windows and Mac machines. There is an experimental unsupported client for linux, however it&#8217;s provided as a DEB (ubuntu/debian) package. Here&#8217;s a gross hack for whom is desperate to get it working on Gentoo. Step 1 : Get the [...]<p><a href="http://www.sakana.fr/blog/2012/01/26/getting-spotify-to-run-on-gentoolinux-a-gross-and-cruel-hack/">Getting Spotify to run on Gentoo/Linux: A Gross and Cruel Hack</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Spotify is a great way to listen to music. Unfortunately the official client only runs on Windows and Mac machines. There is an experimental unsupported client for linux, however it&#8217;s provided as a DEB (ubuntu/debian) package.</p>
<p>Here&#8217;s a gross hack for whom is desperate to get it working on Gentoo.<br />
<span id="more-529"></span></p>
<h4>Step 1 : Get the package</h4>
<p>You can download the package from <a href="http://repository.spotify.com/pool/non-free/s/spotify/">here</a>.<br />
Pick the package matching your own architecture.</p>
<h4>Step 2 : Convert the DEB package and extract it</h4>
<p>Install the package deb2targz if you don&#8217;t already have it.</p>
<p>The following command will create a tar.gz file from the .deb package :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p529code5'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p5295"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p529code5"><pre class="text" style="font-family:monospace;">deb2targz spotify-client-qt_0.6.2.291.gcccc1f5.116-1_amd64.deb</pre></td></tr></table></div>

<p>You can then extract that tar.gz file like below :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p529code6'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p5296"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p529code6"><pre class="text" style="font-family:monospace;">tar zxvf spotify-client-qt_0.6.2.291.gcccc1f5.116-1_amd64.tar.gz</pre></td></tr></table></div>

<p>This will create you a usr directory, containing spotify files.</p>
<p>Toss them at the appropriate places on your system :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p529code7'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p5297"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p529code7"><pre class="text" style="font-family:monospace;">cd usr
mv bin/spotify /usr/bin/
mv share/pixmaps/* /usr/share/pixmaps/
mv share/spotify/ /usr/share/</pre></td></tr></table></div>

<h4>Step 3 : Fixing library issues</h4>
<p>Now this is the ugly part. Spotify is linked against specific versions of some libraries (SSL 0.9.8 and Crypto 0.9.8). In order to make it work, you need to fake those versions by creating a symlink from the wanted version to the existing (you&#8217;ll need to figure this out) version in your system.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p529code8'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p5298"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p529code8"><pre class="text" style="font-family:monospace;">cd /usr/lib
ln -s libssl.so.1.0.0 libssl.so.0.9.8
ln -s libcrypto.so.1.0.0 libcrypto.so.0.9.8</pre></td></tr></table></div>

<h4>Step 4 : Instructing firefox to open the spotify protocol with the Spotify application</h4>
<p>You need to register the spotify protocol so that Firefox will know how to deal with those &#8220;spotify:&#8221; urls.</p>
<ol>
<li>Open the about:config page</li>
<li>Create a boolean value by the name of network.protocol-handler.expose.spotify</li>
<li>Set its value to false</li>
<li>Click on a spotify link (for example a playlist link or such). A popup will open and ask you to pick an application. Use /usr/bin/spotify.</li>
</ol>
<p>That&#8217;s it. All set.<br />
I&#8217;m not proud of it&#8230;. but I wanted to use Spotify badly <img src='http://www.sakana.fr/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4571688872511149";
/* 728x90, created 10/17/09 */
google_ad_slot = "0784069657";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><a href="http://www.sakana.fr/blog/2012/01/26/getting-spotify-to-run-on-gentoolinux-a-gross-and-cruel-hack/">Getting Spotify to run on Gentoo/Linux: A Gross and Cruel Hack</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2012/01/26/getting-spotify-to-run-on-gentoolinux-a-gross-and-cruel-hack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk 101 : How to get rid of your mother-in-law &#8230;</title>
		<link>http://www.sakana.fr/blog/2011/04/30/asterisk-101-how-to-get-rid-of-your-mother-in-law/</link>
		<comments>http://www.sakana.fr/blog/2011/04/30/asterisk-101-how-to-get-rid-of-your-mother-in-law/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 17:23:51 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[blacklist]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=512</guid>
		<description><![CDATA[&#8230; or anyone else really, with a little trick to implement a black list and filter unwanted callers. 1. The BLACKLIST function Asterisk implements a BLACKLIST function which can be used to check whether a callerID is blacklisted or not, here is the synopsis (which you can get by connecting to thee asterisk server by [...]<p><a href="http://www.sakana.fr/blog/2011/04/30/asterisk-101-how-to-get-rid-of-your-mother-in-law/">Asterisk 101 : How to get rid of your mother-in-law &#8230;</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>&#8230; or anyone else really, with a little trick to implement a black list and filter unwanted callers.<br />
<span id="more-512"></span></p>
<h4>1. The BLACKLIST function</h4>
<p>Asterisk implements a <tt>BLACKLIST</tt> function which can be used to check whether a callerID is blacklisted or not, here is the synopsis (which you can get by connecting to thee asterisk server by issuing the <tt>asterisk -v</tt> command and then <tt>core show function BLACKLIST</tt>) :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p512code14'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51214"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code" id="p512code14"><pre class="text" style="font-family:monospace;">spaghetti*CLI&gt; core show function BLACKLIST
&nbsp;
  -= Info about function 'BLACKLIST' =- 
&nbsp;
[Synopsis]
Check if the callerid is on the blacklist. 
&nbsp;
[Description]
Uses astdb to check if the Caller*ID is in family 'blacklist'. Returns '1'
or '0'.
&nbsp;
[Syntax]
BLACKLIST()
&nbsp;
[Arguments]
Not available
&nbsp;
[See Also]
DB
spaghetti*CLI&gt;</pre></td></tr></table></div>

<p>This is what we&#8217;re going to use for this example.</p>
<h3>2. Managing the blacklist</h3>
<p>You can add callerIDs to the blacklist with the following command :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p512code15'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51215"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p512code15"><pre class="text" style="font-family:monospace;">spaghetti*CLI&gt; database put blacklist 03001125000 &quot;Mother-in-law from hell&quot;
Updated database successfully
spaghetti*CLI&gt; database put blacklist 03001125150 &quot;FAX machine harassing me&quot;
Updated database successfully</pre></td></tr></table></div>

<p>If later on you wish to remove an item from the blacklist (maybe the fax is not that bad after all !), use the following :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p512code16'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51216"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p512code16"><pre class="text" style="font-family:monospace;">spaghetti*CLI&gt; database del blacklist 03001125150 
Database entry removed.</pre></td></tr></table></div>

<p>And of course you can list the content of the current blacklist like that :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p512code17'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51217"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p512code17"><pre class="text" style="font-family:monospace;">spaghetti*CLI&gt; database show blacklist
/blacklist/03001125000                             : Mother-in-law from hell
1 results found.
spaghetti*CLI&gt;</pre></td></tr></table></div>

<p>Use those commands to tailor the blacklist according to your needs.</p>
<h3>3. Altering the dialplan to filter out the blacklisted numbers</h3>
<p>Next you&#8217;ve got to update your incoming context to deal with blacklisted callerIDs. My incoming context is named &#8220;incoming-calls&#8221; but you might have to adjust that :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p512code18'); return false;">View Code</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51218"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p512code18"><pre class="text" style="font-family:monospace;">[incoming-calls] ; on declare le contexte de reception d'appels depuis freephonie
exten =&gt; s,1,GotoIf($[&quot;${CALLERID(NUM)}&quot; = &quot;anonymous&quot;] ? 10) 
exten =&gt; s,2,GotoIf(${BLACKLIST()} ? 10)
exten =&gt; s,3,Dial(SIP/phone1&amp;SIP/phone2,10)
exten =&gt; s,4,Congestion()
exten =&gt; s,5,Hangup()
exten =&gt; s,10,Answer
exten =&gt; s,11,Wait(1)
exten =&gt; s,12,MusicOnHold(default)
exten =&gt; s,13,Hangup</pre></td></tr></table></div>

<p>So here, the rules 1 and 2 are to send both anonymous callers (mostly telemarketers over here) and blacklisted callers to an infinite holding music (starting at line 10). The rules 3,4,5 are to deal with other calls and direct them to 2 SIP phones.</p>
<p>That&#8217;s it ! Feel free to ask if you need more details about this set up.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4571688872511149";
/* 728x90, created 10/17/09 */
google_ad_slot = "0784069657";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><a href="http://www.sakana.fr/blog/2011/04/30/asterisk-101-how-to-get-rid-of-your-mother-in-law/">Asterisk 101 : How to get rid of your mother-in-law &#8230;</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2011/04/30/asterisk-101-how-to-get-rid-of-your-mother-in-law/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asterisk 101 &#8211; Ghetto GoogleVoice : Signing up for / using GV even if you&#8217;re not in the USA using Asterisk</title>
		<link>http://www.sakana.fr/blog/2011/01/09/asterisk-101-ghetto-googlevoice-signing-up-for-using-gv-even-if-youre-not-in-the-usa-using-asterisk/</link>
		<comments>http://www.sakana.fr/blog/2011/01/09/asterisk-101-ghetto-googlevoice-signing-up-for-using-gv-even-if-youre-not-in-the-usa-using-asterisk/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 11:10:19 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[googlevoice]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=500</guid>
		<description><![CDATA[GoogleVoice (GV for short) is a great service (I won&#8217;t go into the details, but you can read up about it here), but it is unfortunately accessible only if you are in the USA. Granted there is already plenty of documentation about how to circumvent this, but I&#8217;m not aware of any of those using [...]<p><a href="http://www.sakana.fr/blog/2011/01/09/asterisk-101-ghetto-googlevoice-signing-up-for-using-gv-even-if-youre-not-in-the-usa-using-asterisk/">Asterisk 101 &#8211; Ghetto GoogleVoice : Signing up for / using GV even if you&#8217;re not in the USA using Asterisk</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>GoogleVoice (GV for short) is a great service (I won&#8217;t go into the details, but <a href="http://www.google.com/support/voice/bin/answer.py?answer=115061" target="_blank">you can read up about it here</a>), but it is unfortunately accessible only if you are in the USA.<br />
Granted there is already plenty of documentation about how to circumvent this, but I&#8217;m not aware of any of those using Asterisk.</p>
<p>So this post will document how to sign up for a GV account as well as how to use it with Asterisk afterwards, in the prospect of using it if you are not in the USA.</p>
<p>In order to be able to sign up for GV, you need to meet 2 prerequisites :</p>
<ol>
<li>You need to have a US IP address</li>
<li>You need to have a US phone number, which will be used to validate your GV account</li>
</ol>
<p>Step 1 is left <a href="http://www.google.com/search?hl=en&#038;safe=off&#038;q=free+http+proxy+usa" target="_blank">as an exercise to the reader</a> (<a href="http://encyclopediadramatica.com/7_Proxies"><em>&#8220;Good luck ! I&#8217;m behind 7 proxies !&#8221;</em></a> <img src='http://www.sakana.fr/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ).</p>
<p>Step 2 is the one we&#8217;re going to describe here, as an example of what you can pull with simple Asterisk configurations.</p>
<p><span id="more-500"></span></p>
<h4>1. Getting a US phone number</h4>
<p>What you really need to find is a <strong>DID</strong> (Direct Inward Dialing aka DDI : Direct Dial-In) provider. It will provide you with a US phone number and will patch that call either to another phone number or to a SIP address.</p>
<p>GV will only forward calls to US phone numbers, so you need one of those. <a href="http://www.ipkall.com/" target="_blank">IPKall</a> is such a <strong>free provider</strong>. They will provide you an American phone number and will forward it to any SIP or IAX2 address. Creating an account only takes a minute.</p>
<p>Nothing fancy here : Simply fill the SIP account into the <strong>SIP phone number</strong> field, and the SIP servername or IP into the <strong>SIP proxy</strong> field.</p>
<h4>2. Setting up Asterisk</h4>
<p>Now IPKall will gladly forward the calls to your SIP account. You can setup this SIP account as simply as below :</p>
<p>IPKall has a specificity we need to take care of : calls can originate from 2 different servers. We need to have calls coming from both servers to get into the same context. To avoid repeating twice the same configuration block (with just the IP address being different), we&#8217;ll use a template.</p>
<p>We&#8217;ll also define a SIP account for a SIP phone (or for a softphone).</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.sakana.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=500&amp;download=sip.conf">sip.conf</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p50021"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code" id="p500code21"><pre class="example" style="font-family:monospace;">[phone1]
type=friend
username=phone1
secret=SecretPassword
host=dynamic
context=myhouse
nat=yes ; if you need to connect from behind a nat
&nbsp;
[ipkall](!) ; This section is only a template
type=peer
username=ipkall
context=ipkall-in
insecure=invite
&nbsp;
[ipkall-01](ipkall) ; We import the previous template to setup calls from
host=66.54.140.46       ; the first IPKall server
&nbsp;
[ipkall-02](ipkall) ; We import the previous template to setup calls from
host=66.54.140.47       ; the second IPKall server</pre></td></tr></table></div>

<p>I&#8217;ve setup an SIP &#8220;number&#8221; I&#8217;ve instructed IPKall to forward the calls to is &#8220;ipkall&#8221;. The configuration below must reflect this. Here, phone calls to the &#8220;ipkall&#8221; extension will be routed to the &#8220;phone1&#8243; SIP phone.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.sakana.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=500&amp;download=extensions.conf">extensions.conf</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p50022"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p500code22"><pre class="example" style="font-family:monospace;">[ipkall-in]
exten =&gt; ipkall,1,Dial(SIP/phone1)
exten =&gt; ipkall,n,Hangup()</pre></td></tr></table></div>

<h4>3.Setup a softphone and finally your GV account</h4>
<p>Now all you need is a softphone (I like sflphone for that purpose) or a SIP phone to be configured as &#8220;phone1&#8243; (check your favorite softphone instructions to do so) and head back to GV to create your account.</p>
<p>GV will assign you a phone number and will ask you to which phone number to route the phone calls. That&#8217;s where you&#8217;ll specify your IPKall phone number.</p>
<p>GV will then ask you to validate this phone call by giving you a 2 digit number and calling you on your IPKall phone number. You&#8217;ll have to pick up the call on your softphone and dial the 2 digit number. </p>
<p>Voila, the account is created and validated !</p>
<p>Any call to your GV phone number will be routed to IPKall which will send it to your Asterisk installation, which will then ring your softphone or SIP phone.</p>
<p>Pretty nifty, heh ? <img src='http://www.sakana.fr/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><!--adsense--></p>
<p><a href="http://www.sakana.fr/blog/2011/01/09/asterisk-101-ghetto-googlevoice-signing-up-for-using-gv-even-if-youre-not-in-the-usa-using-asterisk/">Asterisk 101 &#8211; Ghetto GoogleVoice : Signing up for / using GV even if you&#8217;re not in the USA using Asterisk</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2011/01/09/asterisk-101-ghetto-googlevoice-signing-up-for-using-gv-even-if-youre-not-in-the-usa-using-asterisk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Asterisk 101 : How to troll telemarketers (aka automatically send hidden Caller ID to a waiting music forever)</title>
		<link>http://www.sakana.fr/blog/2010/12/16/asterisk-how-to-troll-telemarketers-aka-automatically-send-hidden-caller-id-to-a-waiting-music-forever/</link>
		<comments>http://www.sakana.fr/blog/2010/12/16/asterisk-how-to-troll-telemarketers-aka-automatically-send-hidden-caller-id-to-a-waiting-music-forever/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 18:13:20 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[caller id]]></category>
		<category><![CDATA[telemarketers]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=488</guid>
		<description><![CDATA[If like me you get tons of telemarketers calls, there&#8217;s an easy way to get rid of them with a quick Asterisk hack. The following Asterisk configuration snippet will immediately send any hidden caller ID (99% telemarketers, and I have a general policy of not picking up the phone for hidden caller ID anyway) to [...]<p><a href="http://www.sakana.fr/blog/2010/12/16/asterisk-how-to-troll-telemarketers-aka-automatically-send-hidden-caller-id-to-a-waiting-music-forever/">Asterisk 101 : How to troll telemarketers (aka automatically send hidden Caller ID to a waiting music forever)</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>If like me you get tons of telemarketers calls, there&#8217;s an easy way to get rid of them with a quick Asterisk hack. The following Asterisk configuration snippet will immediately send any hidden caller ID (99% telemarketers, and I have a general policy of not picking up the phone for hidden caller ID anyway) to a holding music making them waste money and time&#8230;</p>
<p><span id="more-488"></span></p>
<p>This snippet is to place into the <tt>extension.conf</tt> file :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p488code24'); return false;">View Code</a> ASTERISK</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p48824"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p488code24"><pre class="asterisk" style="font-family:monospace;">[incoming] ; incoming calls
exten =&gt; s,1,GotoIf($[&quot;${CALLERID(NUM)}&quot; = &quot;anonymous&quot;] ? 10) 
exten =&gt; s,2,Dial(SIP/phone1&amp;SIP/phone2,10)
exten =&gt; s,3,Congestion()
exten =&gt; s,4,Hangup()
exten =&gt; s,10,Answer
exten =&gt; s,11,Wait(1)
exten =&gt; s,12,MusicOnHold(default)
exten =&gt; s,13,Hangup</pre></td></tr></table></div>

<p>This block will check for the NUMber information of the Caller ID and if it is &#8220;anonymous&#8221;, it will send it to the step 10 which will pick up the call and start the holding music. If the Caller ID is not &#8220;anonymous&#8221;, it will ring 2 SIP phones for 10 secs, and if no one picks those, send it to congestion mode.</p>
<p>That&#8217;s all !</p>
<p><strong>Edit</strong> : On a second thought, I think I&#8217;ll change that to have Asterisk to pick up the call and let the caller leave a message. That&#8217;s still going to catch those telemarketers (waste time &#038; money), while giving a chance to legit callers to speak their message.</p>
<p><!--adsense--></p>
<p><a href="http://www.sakana.fr/blog/2010/12/16/asterisk-how-to-troll-telemarketers-aka-automatically-send-hidden-caller-id-to-a-waiting-music-forever/">Asterisk 101 : How to troll telemarketers (aka automatically send hidden Caller ID to a waiting music forever)</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2010/12/16/asterisk-how-to-troll-telemarketers-aka-automatically-send-hidden-caller-id-to-a-waiting-music-forever/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>AutoHotkey : Copying without formatting</title>
		<link>http://www.sakana.fr/blog/2010/09/06/autohotkey-copying-without-formatting/</link>
		<comments>http://www.sakana.fr/blog/2010/09/06/autohotkey-copying-without-formatting/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 20:48:31 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[AutoHotkey]]></category>
		<category><![CDATA[clipboard]]></category>
		<category><![CDATA[macro]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=451</guid>
		<description><![CDATA[One of the common annoyances of copy-pasting on Windows is that it tries to copy-paste the formatting as well. This issue can easily be fixed by the following AutoHotkey macro, which will copy the selection to the clipboard as pure text. ?Download macro.ahk1 2 3 4 5 6 7 8 9 ;;;;;;;;;;;;;;;;;;;;;;;;;; ; Copy without [...]<p><a href="http://www.sakana.fr/blog/2010/09/06/autohotkey-copying-without-formatting/">AutoHotkey : Copying without formatting</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>One of the common annoyances of copy-pasting on Windows is that it tries to copy-paste the formatting as well. This issue can easily be fixed by the following AutoHotkey macro, which will copy the selection to the clipboard as pure text.</p>
<p><span id="more-451"></span></p>
<p><!--adsense--></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.sakana.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=451&amp;download=macro.ahk">macro.ahk</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45126"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p451code26"><pre class="ahk" style="font-family:monospace;">;;;;;;;;;;;;;;;;;;;;;;;;;;
; Copy without formatting
;;;;;;;;;;;;;;;;;;;;;;;;;;
^Ins::
	Clipboard =    ; Purge Clipboard content
	Send ^{Ins}  ; Send the Ctrl+Insert command
	ClipWait        ; Wait till data is present in the Clipboard
	Clipboard = %clipboard%    ;remove formatting
Return</pre></td></tr></table></div>

<p>That&#8217;s it. When hitting CTRL-Insert, the selection will be copied into the clipboard without formatting.</p>
<p>I am aware there are other ways around this problem, most stripping the formatting when pasting, but I had little success with them.</p>
<p><em><strong>What are your favorite AutoHotkey hacks ?</strong></em></p>
<p><!--adsense--></p>
<p><a href="http://www.sakana.fr/blog/2010/09/06/autohotkey-copying-without-formatting/">AutoHotkey : Copying without formatting</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2010/09/06/autohotkey-copying-without-formatting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asterisk : Basic SOHO environment VoIP PABX configuration</title>
		<link>http://www.sakana.fr/blog/2010/09/04/asterisk-basic-soho-environment-pabx-configuration/</link>
		<comments>http://www.sakana.fr/blog/2010/09/04/asterisk-basic-soho-environment-pabx-configuration/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 12:49:20 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[freephonie]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[softphones]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=443</guid>
		<description><![CDATA[Asterisk is a free telephony software. I&#8217;m posting here sample commented configuration files for reference purposes, hoping they will help you get kickstarted if needed. This config sets up : SIP phones (for softphones or harware phones with SIP capabilities) Voice mails A few test phone numbers Forwarding of calls to a SIP provider for [...]<p><a href="http://www.sakana.fr/blog/2010/09/04/asterisk-basic-soho-environment-pabx-configuration/">Asterisk : Basic SOHO environment VoIP PABX configuration</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Asterisk is a free telephony software. I&#8217;m posting here sample commented configuration files for reference purposes, hoping they will help you get kickstarted if needed.</p>
<p>This config sets up :</p>
<ul>
<li>SIP phones (for softphones or harware phones with SIP capabilities)</li>
<li>Voice mails</li>
<li>A few test phone numbers</li>
<li>Forwarding of calls to a SIP provider for outbound and incoming calls (from/to PSTN)</li>
</ul>
<p>That should be plenty already for a SOHO environment !</p>
<p><strong>Note to French readers : Si votre FAI est Free, cette configuration fonctionne pour passer / recevoir des appels via le SIP de Free (Freephonie).</strong> </p>
<p><span id="more-443"></span></p>
<p><!--adsense--></p>
<h4>SIP configuration</h4>
<p>SIP configuration (for softphones / SIP hardware phones, as well as outbound / incoming PSTN calls to/from an SIP-to-PSTN gateway provider) is performed in the <strong>/etc/asterisk/sip.conf</strong> file.</p>
<p>Here is an example :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p443code30'); return false;">View Code</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p44330"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</pre></td><td class="code" id="p443code30"><pre class="txt" style="font-family:monospace;"># cat sip.conf 
[general]
defaultexpiry=1800
dtmfmode=auto
qualify=yes
&nbsp;
register =&gt; 09510XXXXX:ProviderPassword@freephonie.net
&nbsp;
; selecting CODECs
disallow=all
allow=ulaw
allow=alaw
allow=speex
allow=gsm
&nbsp;
language=fr
&nbsp;
[freephonie] ; Outbound phone calls SIP configuration
type=friend
host=freephonie.net
username=09510XXXXX
fromuser=09510XXXXX
secret=ProviderPassword
nat=yes
insecure=port,invite
fromdomain=freephonie.net
context=fromfree
&nbsp;
[client1] ; Softphone declaration
type=friend
username=client1
secret=Password01
host=dynamic
context=home
nat=yes ; connexion is allowed from NATted networks
&nbsp;
[client2] ; 2nd softphone declaration
type=friend
username=client2
secret=Password02
host=dynamic
context=home
nat=yes</pre></td></tr></table></div>

<h4>Dialplan configuration</h4>
<p>Next you&#8217;ll need to setup a dialplan so that calls are routed as you wish.</p>
<p>The dialplan is setup in the <strong>/etc/asterisk/extensions.conf</strong>.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p443code31'); return false;">View Code</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p44331"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</pre></td><td class="code" id="p443code31"><pre class="txt" style="font-family:monospace;">; context for local SIP clients
[home] 
; if 101 is dialed then send it to SIP client1, wait 15 sec for a 
; pick up, then send it to voicemail
exten =&gt; 101,1,Dial(SIP/client1,15)
exten =&gt; 101,n,Wait(1)
exten =&gt; 101,n,VoiceMail(101@voicemails)
exten =&gt; 101,n,PlayBack(vm-goodbye)
exten =&gt; 101,n,Hangup()
&nbsp;
; 201 phone number will lead to the 101 voicemail menu
exten =&gt; 201,1,VoiceMailMain(101@voicemails)
exten =&gt; 201,n,Hangup()
&nbsp;
; same setup for 102 as for 101
exten =&gt; 102,1,Dial(SIP/client2,15)
exten =&gt; 102,n,Wait(1)
exten =&gt; 102,n,VoiceMail(102@voicemails)
exten =&gt; 102,n,PlayBack(vm-goodbye)
exten =&gt; 102,n,Hangup()
&nbsp;
; 202 phone number will lead to the 102 voicemail menu
exten =&gt; 202,1,VoiceMailMain(102@voicemails)
exten =&gt; 202,n,Hangup()
&nbsp;
; outbound calls :
; if dialing a 0 starting phone number, remove the leading 0 and patch it
; through the freephonie link (SIP-to-PSTN gateway service) 
exten =&gt; _0.,1,Dial(SIP/freephonie/${EXTEN:1}) 
&nbsp;
; misc testing stuff
; when dialing 500, Asterisk will pick up and count 1,2,3 before hanging up
exten =&gt; 500,1,Answer
exten =&gt; 500,n,Wait(2)
exten =&gt; 500,n,SayDigits(123)
exten =&gt; 500,n,Hangup
&nbsp;
; when dialing 501, Asterisk will pick up and repeat everything you say with
; as less delay as possible. Good to assess line latency.
exten =&gt; 501,1,Answer()
exten =&gt; 501,n,Playback(welcome)
exten =&gt; 501,n,Playback(demo-echotest)
exten =&gt; 501,n,Echo()
exten =&gt; 501,n,Playback(demo-echodone)
exten =&gt; 501,n,Playback(vm-goodbye)
exten =&gt; 501,n,Hangup()
&nbsp;
[fromfree] ; Context of inbounds call coming from freephonie.net
; rings both client1 and client2 for 10 secs, then send it to congestion.
; congestion is when all the lines are busy.
; in this case freephonie.net will sent it to its voicemail system
exten =&gt; s,1,Dial(SIP/client1&amp;SIP/client2,10)
exten =&gt; s,2,Congestion()
exten =&gt; s,3,Hangup()</pre></td></tr></table></div>

<h4>Voicemail configuration</h4>
<p>Finally, let&#8217;s see the voice mailboxes configuration. They are setup in the <strong>/etc/asterisk/voicemail.conf</strong>.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p443code32'); return false;">View Code</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p44332"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p443code32"><pre class="txt" style="font-family:monospace;">[voicemails]
; 101 is the voicemailbox number, 1234 is the password, client1 is the matching client,
; and the email address is to whom to send the audiofile. 
101	=&gt;	1234,client1,client1@sakana.fr
102	=&gt;	5678,client2,client2@sakana.fr</pre></td></tr></table></div>

<p><!--adsense--></p>
<p><a href="http://www.sakana.fr/blog/2010/09/04/asterisk-basic-soho-environment-pabx-configuration/">Asterisk : Basic SOHO environment VoIP PABX configuration</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2010/09/04/asterisk-basic-soho-environment-pabx-configuration/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Firefox (Linux) : &#8220;Middle-click on page loads URL&#8221; annoyance</title>
		<link>http://www.sakana.fr/blog/2010/01/03/firefox-linux-middle-click-on-page-loads-url-annoyance/</link>
		<comments>http://www.sakana.fr/blog/2010/01/03/firefox-linux-middle-click-on-page-loads-url-annoyance/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 20:52:20 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[annoyance]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=374</guid>
		<description><![CDATA[Firefox will load whatever URL is in the copy-paste buffer in the page if you middle click somewhere on a page. My mouse&#8217;s wheel also serves as the middle button, and I found it really annoying that when occasionally middle-clicking while scrolling the page, Firefox would try to load another page &#8230; You can control [...]<p><a href="http://www.sakana.fr/blog/2010/01/03/firefox-linux-middle-click-on-page-loads-url-annoyance/">Firefox (Linux) : &#8220;Middle-click on page loads URL&#8221; annoyance</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Firefox will load whatever URL is in the copy-paste buffer in the page if you middle click somewhere on a page. My mouse&#8217;s wheel also serves as the middle button, and I found it really annoying that when occasionally middle-clicking while scrolling the page, Firefox would try to load another page &#8230;</p>
<p>You can control this behaviour with this about:config property <tt>middlemouse.contentLoadURL</tt>. Set to true, the middle-click on the page will load the URL (if it is one) in the page, set to false it won&#8217;t.</p>
<p>Thanks <a href="http://aymanh.com/archives/2006/01/27/firefox-and-middle-click-clipboard-url" target="_blank">Ayman</a> !</p>
<p><!--adsense--></p>
<p><a href="http://www.sakana.fr/blog/2010/01/03/firefox-linux-middle-click-on-page-loads-url-annoyance/">Firefox (Linux) : &#8220;Middle-click on page loads URL&#8221; annoyance</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2010/01/03/firefox-linux-middle-click-on-page-loads-url-annoyance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gentoo : Running Cacti with LigHTTPD</title>
		<link>http://www.sakana.fr/blog/2009/10/13/gentoo-running-cacti-with-lighttpd/</link>
		<comments>http://www.sakana.fr/blog/2009/10/13/gentoo-running-cacti-with-lighttpd/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 19:48:14 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=323</guid>
		<description><![CDATA[If you use Gentoo and tried to install Cacti with Lighttpd instead of Apache, chances are that you ran into this error message : ?View Code TXT1 2 3 4 5 6 /usr/lib/python2.6/site-packages/WebappConfig/content.py:27: DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5, re, os, os.path * Fatal error: Your configuration file sets the [...]<p><a href="http://www.sakana.fr/blog/2009/10/13/gentoo-running-cacti-with-lighttpd/">Gentoo : Running Cacti with LigHTTPD</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>If you use Gentoo and tried to install Cacti with Lighttpd instead of Apache, chances are that you ran into this error message :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p323code35'); return false;">View Code</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p32335"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p323code35"><pre class="txt" style="font-family:monospace;">/usr/lib/python2.6/site-packages/WebappConfig/content.py:27: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5, re, os, os.path
* Fatal error: Your configuration file sets the server type &quot;Apache&quot;
* Fatal error: but the corresponding package does not seem to be installed!
* Fatal error: Please &quot;emerge &gt;=www-servers/apache-1.3&quot; or correct your settings.
* Fatal error(s) - aborting</pre></td></tr></table></div>

<p><span id="more-323"></span></p>
<p>You can solve that problem by editing the following file : <tt>/etc/vhosts/webapp-config</tt> and <tt>set vhost_server="lighttpd"</tt>.</p>
<p>For further reference, you&#8217;ll also need the following USE flags for PHP :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p323code36'); return false;">View Code</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p32336"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p323code36"><pre class="txt" style="font-family:monospace;">spaghetti etc # grep php /etc/portage/package.use 
dev-lang/php		cli cgi mysql xml session pcre sockets</pre></td></tr></table></div>

<p>The rest of the installation is pretty straight standard and is already well documented (<a href="http://riscy.biz/node/83">here</a>, <a href="http://forums.gentoo.org/viewtopic-t-276539-highlight-cacti.html">there</a>, or even <a href="http://cacti.net/downloads/docs/html/install_unix.html">there</a>).</p>
<p><!--adsense--></p>
<p><a href="http://www.sakana.fr/blog/2009/10/13/gentoo-running-cacti-with-lighttpd/">Gentoo : Running Cacti with LigHTTPD</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2009/10/13/gentoo-running-cacti-with-lighttpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xfce4 : Bug with key bindings</title>
		<link>http://www.sakana.fr/blog/2009/10/12/xfce4-bug-with-key-bindings/</link>
		<comments>http://www.sakana.fr/blog/2009/10/12/xfce4-bug-with-key-bindings/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 18:25:22 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=317</guid>
		<description><![CDATA[There is currently a little bug in Xfce4 which prevents you to bind the key combinations involving SPACE and ESCAPE. For example you can&#8217;t bind &#60;WINDOWS&#62;-&#60;SPACE&#62;, but you can bind &#60;WINDOWS&#62;-C . This behaviour affects only the xfce-keyboard-settings GUI, which is annoying but leaves us with a workaround using the following command line : ?View [...]<p><a href="http://www.sakana.fr/blog/2009/10/12/xfce4-bug-with-key-bindings/">Xfce4 : Bug with key bindings</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>There is currently a little bug in Xfce4 which prevents you to bind the key combinations involving SPACE and ESCAPE. For example you can&#8217;t bind &lt;WINDOWS&gt;-&lt;SPACE&gt;, but you can bind &lt;WINDOWS&gt;-C . This behaviour affects only the xfce-keyboard-settings GUI,  which is annoying but leaves us with a workaround using the following command line :<br />
<span id="more-317"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p317code38'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p31738"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p317code38"><pre class="bash" style="font-family:monospace;">$ xfconf-query <span style="color: #660033;">-c</span> xfce4-keyboard-shortcuts <span style="color: #660033;">-np</span> <span style="color: #ff0000;">&quot;/commands/custom/&lt;SUPER&gt;space&quot;</span> <span style="color: #660033;">-t</span> string <span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;gmrun&quot;</span></pre></td></tr></table></div>

<p>This example binds &lt;WINDOWS&gt;-&lt;SPACE&gt; to gmrun (which, by the way, is a great lightweight alternative to Launchy for Linux).</p>
<p>This bug is already filed in the <a href="http://bugzilla.xfce.org/show_bug.cgi?id=4972" target="_blank">bugtrack of Xfce</a>, let&#8217;s hope it will soon be fixed <img src='http://www.sakana.fr/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p><!--adsense--></p>
<p><a href="http://www.sakana.fr/blog/2009/10/12/xfce4-bug-with-key-bindings/">Xfce4 : Bug with key bindings</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2009/10/12/xfce4-bug-with-key-bindings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>conky : integrating rTorrent downloads monitoring</title>
		<link>http://www.sakana.fr/blog/2009/10/11/conky-integrating-rtorrent-downloads-monitoring/</link>
		<comments>http://www.sakana.fr/blog/2009/10/11/conky-integrating-rtorrent-downloads-monitoring/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 13:02:18 +0000</pubDate>
		<dc:creator>Stephane Kattoor</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.sakana.fr/blog/?p=292</guid>
		<description><![CDATA[Conky is a lightweight system monitoring tool. It has many built-in probes (processor load, memory usage, temperature sensors, etc), but it is still pretty easy to extend it if you don&#8217;t find the feature you need. In this post I&#8217;ll describe my Conky setup and explain how to extend it to monitor your rTorrent downloads. [...]<p><a href="http://www.sakana.fr/blog/2009/10/11/conky-integrating-rtorrent-downloads-monitoring/">conky : integrating rTorrent downloads monitoring</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Conky is a lightweight system monitoring tool. It has many built-in probes (processor load, memory usage, temperature sensors, etc), but it is still pretty easy to extend it if you don&#8217;t find the feature you need.</p>
<p>In this post I&#8217;ll describe my Conky setup and explain how to extend it to monitor your rTorrent downloads. </p>
<p>rTorrent is a great BitTorrent client which offers an XML-RPC interface to its core functions, making it easy to get the downloads status through scripting. You can read more about that in <a title="rTorrent : Setup XML-RPC access" href="http://www.sakana.fr/blog/2009/10/10/rtorrent-probing-downloads-status-through-xml-rpc/" target="_blank">this previous post</a>.<br />
<span id="more-292"></span></p>
<h3>Starting by the end</h3>
<p>Here is a screenshot of the final Conky layout we&#8217;re going to setup throughout this post.</p>
<p>There are actually 2 instances of Conky running simultaneously : one for the calendar widget on the left, and one for the system monitor containing the rTorrent status on the right.</p>
<p style="text-align: center;"><a href="http://static.zooomr.com/images/8313387_f1cf31bd76_o.png"><img class="size-full wp-image-293 aligncenter" title="conky-full-thumb" src="http://www.sakana.fr/blog/wp-content/uploads/2009/10/conky-full-thumb.png" alt="conky-full-thumb" width="480" height="300" /></a></p>
<h3>The calendar widget</h3>
<p>I can&#8217;t take credit for this calendar widget, which I&#8217;ve found in the <a title="Arch linux forum : Conky configurations" href="http://bbs.archlinux.org/viewtopic.php?pid=423280" target="_blank">forums</a>. It took juste a little bit of tweaking to get to this Conky configuration file :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.sakana.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=292&amp;download=.conkyrc_cal">.conkyrc_cal</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p29243"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code" id="p292code43"><pre class="config" style="font-family:monospace;">own_window yes
own_window_type desktop
own_window_transparent yes
own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky
&nbsp;
update_interval 5
&nbsp;
minimum_size 250
alignment ml
double_buffer yes
&nbsp;
use_xft yes
xftfont DejaVu Sans Mono:size=20
#xftfont Bitstream Vera Sans:size=8
&nbsp;
TEXT
$alignc${time %H:%M}
${color red}$hr$color
${time %A} ${time %d} ${time %B}
${color red}$hr$color
${execpi 300 cal | sed -e 's/'`date | awk '{print $3}'`'/\$\{color e84448}'`date | awk '{print $3}'`'\$\{color}/'}</pre></td></tr></table></div>

<p>execpi is the directive responsible for creating the calendar. It basically executes a shell one-liner which output is then used as a Conky configuration snippet. It runs at 300 seconds (5 minutes) intervals not to waste computing resources.</p>
<p>This is the end result :</p>
<p><center><img class="aligncenter size-full wp-image-296" title="conky-calendar" src="http://www.sakana.fr/blog/wp-content/uploads/2009/10/conky-calendar.png" alt="conky-calendar" width="321" height="362" /></center></p>
<h3>The system monitor</h3>
<p>The system monitor requires a basic Conky configuration file and a perl script.</p>
<h4>Conky configuration file for the system monitor</h4>
<p>The system monitor Conky configuration file is a simple one, with standard Conky elements. The only &#8220;original part&#8221; is the one collecting rTorrent information : like for the calendar widget, an execpi directive is used to run the &#8220;rtorrent-status.pl&#8221; every minute (60 seconds).</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.sakana.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=292&amp;download=.conkyrc">.conkyrc</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p29244"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code" id="p292code44"><pre class="conf" style="font-family:monospace;">own_window yes
own_window_type desktop
own_window_transparent yes
own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky
&nbsp;
update_interval 5
text_buffer_size 512
&nbsp;
minimum_size 250
alignment mr
double_buffer yes
&nbsp;
use_xft yes
#xftfont Fixed:size=12
xftfont Bitstream Vera Sans:size=8
&nbsp;
TEXT
${color red}CPU$color       ${hwmon 0 fan 2} RPM
Core0  ${cpubar cpu1 4,200} @ ${freq 1} MHz ${hwmon 1 temp 1}C
Core1  ${cpubar cpu2 4,200} @ ${freq 2} MHz ${hwmon 2 temp 1}C
Core2  ${cpubar cpu3 4,200} @ ${freq 3} MHz ${hwmon 3 temp 1}C
Core3  ${cpubar cpu4 4,200} @ ${freq 4} MHz ${hwmon 4 temp 1}C
&nbsp;
${color red}MEMORY$color
Memory ${goto 60} ${membar 4,200} ${memperc}%
Swap   ${goto 60} ${swapbar 4,200} ${swapperc}%
&nbsp;
${color red}HDD$color
sda    ${diskio sda} ${alignc 50}${hddtemp /dev/sda}
&nbsp;
${color red}NET$color
Down   ${downspeedf eth0} KiB/s
Up     ${upspeedf eth0} KiB/s
&nbsp;
${color red}BitTorrent$color
${execpi 60 ~/bin/rtorrent-status.pl}</pre></td></tr></table></div>

<h4>Perl Script to collect rTorrent download information</h4>
<p>The following script pulls the information from the remote rTorrent client and outputs it as Conky configuration elements which are used by Conky through the execpi directive.</p>
<p>This script requires the Frontier::Client perl module, which I automatically got when I installed the xmlrpc-c package (I use gentoo and I had to set the &#8220;tools&#8221; USE flag for this package. If you use a different Linux distro, you might have to sort out this point).</p>
<p>It also require that rTorrent be installed/configured with XML-RPC enabled, and that the XML-RPC interface be exported through a HTTP server. It seems like a lot of work, but it is not if you follow <a href="http://www.sakana.fr/blog/2009/10/10/rtorrent-probing-downloads-status-through-xml-rpc/">those instructions</a>.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.sakana.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=292&amp;download=rtorrent-status.pl">rtorrent-status.pl</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p29245"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</pre></td><td class="code" id="p292code45"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> Frontier<span style="color: #339933;">::</span><span style="color: #006600;">Client</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Data<span style="color: #339933;">::</span><span style="color: #006600;">Dumper</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Configuration</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> constant server		<span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'http://spaghetti/RPC2'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> constant bt_stats	<span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'/tmp/rtorrent_data'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Do not edit below this comment</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$server</span> <span style="color: #339933;">=</span> Frontier<span style="color: #339933;">::</span><span style="color: #006600;">Client</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>url <span style="color: #339933;">=&gt;</span> server<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$server</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">call</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'d.multicall'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;main&quot;</span><span style="color: #339933;">,</span> 
	<span style="color: #ff0000;">&quot;d.get_base_filename=&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #ff0000;">&quot;d.get_bytes_done=&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #ff0000;">&quot;d.get_size_bytes=&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #ff0000;">&quot;to_kb=<span style="color: #000099; font-weight: bold;">\$</span>d.get_down_rate=&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://perldoc.perl.org/functions/open.html"><span style="color: #000066;">open</span></a> DATA<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&gt;&quot;</span> <span style="color: #339933;">.</span> bt_stats<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$idx</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@res</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$d</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@$result</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$cur</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$d</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$max</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$d</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dl_rate</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$d</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<a href="http://perldoc.perl.org/functions/print.html"><span style="color: #000066;">print</span></a> DATA <span style="color: #0000ff;">$cur</span><span style="color: #339933;">/</span><span style="color: #0000ff;">$max</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
	<a href="http://perldoc.perl.org/functions/push.html"><span style="color: #000066;">push</span></a> <span style="color: #0000ff;">@res</span><span style="color: #339933;">,</span>
		<a href="http://perldoc.perl.org/functions/sprintf.html"><span style="color: #000066;">sprintf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%.40s <span style="color: #000099; font-weight: bold;">\$</span>{alignr}%7.1f KiB/s<span style="color: #000099; font-weight: bold;">\$</span>alignr<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #339933;">.</span> 
			<span style="color: #ff0000;">&quot; &quot;</span> x <span style="color: #cc66cc;">5</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">&quot;%3.2f%%&quot;</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\$</span>{goto 70}<span style="color: #000099; font-weight: bold;">\$</span>{execbar sed -ne '$idx p' &quot;</span> <span style="color: #339933;">.</span>
			bt_stats <span style="color: #339933;">.</span> <span style="color: #ff0000;">'}'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$d</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$dl_rate</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">100</span> <span style="color: #339933;">*</span> <span style="color: #0000ff;">$cur</span> <span style="color: #339933;">/</span> <span style="color: #0000ff;">$max</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #0000ff;">$idx</span><span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
<a href="http://perldoc.perl.org/functions/close.html"><span style="color: #000066;">close</span></a> DATA<span style="color: #339933;">;</span>
&nbsp;
<a href="http://perldoc.perl.org/functions/print.html"><span style="color: #000066;">print</span></a> <a href="http://perldoc.perl.org/functions/join.html"><span style="color: #000066;">join</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">@res</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Here is the end result for this :</p>
<p><center><img class="aligncenter size-full wp-image-297" title="conky-main" src="http://www.sakana.fr/blog/wp-content/uploads/2009/10/conky-main.png" alt="conky-main" width="348" height="366" /></center></p>
<h3>Bringing it all together</h3>
<p>Finally I wrote this shell script to start both Conky instances at once. You can add this script in the &#8220;autorun&#8221; or equivalent settings for your desktop environment.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.sakana.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=292&amp;download=conky.sh">conky.sh</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p29246"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p292code46"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /bin/sh</span>
&nbsp;
conky <span style="color: #660033;">-dc</span> ~<span style="color: #000000; font-weight: bold;">/</span>.conkyrc
conky <span style="color: #660033;">-dc</span> ~<span style="color: #000000; font-weight: bold;">/</span>.conkyrc_cal</pre></td></tr></table></div>

<h3>That&#8217;s all folks !</h3>
<p>That was it. If you didn&#8217;t know how flexible and easy to extend Conky truly is, I hope this post will have helped you to get started writing your own Conky widgets and monitoring/extension scripts.</p>
<p>If you have any question or suggestion, please share them in the comments.</p>
<p><!--adsense--></p>
<p><a href="http://www.sakana.fr/blog/2009/10/11/conky-integrating-rtorrent-downloads-monitoring/">conky : integrating rTorrent downloads monitoring</a> is a post from: <a href="http://www.sakana.fr/blog">Tech@Sakana - A sysadmin's blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sakana.fr/blog/2009/10/11/conky-integrating-rtorrent-downloads-monitoring/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

