<?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>BarryODonovan.com &#187; Software</title>
	<atom:link href="http://www.barryodonovan.com/index.php/category/software/feed" rel="self" type="application/rss+xml" />
	<link>http://www.barryodonovan.com</link>
	<description>Thoughts, ramblings and rants...</description>
	<lastBuildDate>Wed, 18 Jan 2012 10:31:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Some New Nagios Plugins</title>
		<link>http://www.barryodonovan.com/index.php/2011/10/25/some-new-nagios-plugins</link>
		<comments>http://www.barryodonovan.com/index.php/2011/10/25/some-new-nagios-plugins#comments</comments>
		<pubDate>Tue, 25 Oct 2011 21:04:40 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[nagios-plugins]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=370</guid>
		<description><![CDATA[Over the past ten years I have left many many new and hacked Nagios plugins on many servers around the globe. I&#8217;m now making a concerted effort to find them, clean them, maintain them centrally and release them. To that &#8230; <a href="http://www.barryodonovan.com/index.php/2011/10/25/some-new-nagios-plugins">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over the past ten years I have left many many new and hacked Nagios plugins on many servers around the globe. I&#8217;m now making a concerted effort to find them, clean them, maintain them centrally and release them.</p>
<p>To that end, I have created a repository on GitHub for the task with a detailed readme file:</p>
<ul>
<li><a href="https://github.com/barryo/nagios-plugins">https://github.com/barryo/nagios-plugins</a></li>
</ul>
<p>As a starting point, there are four plugins available now:</p>
<div>
<ul>
<li>check_chassis_cisco.pl &#8211; a script to poll a Cisco switch or router and check if the device was recently rebooted; its temperature sensors; its fans; its PSU; its CPU utilisation; and its memory usage.</li>
</ul>
<p>&nbsp;</p>
<ul>
<li>check_chassis_server.pl &#8211; a script to poll a Linux / BSD server and check its load average; memory and swap usage; and if it has been recently rebooted.</li>
</ul>
<p>&nbsp;</p>
<ul>
<li>check_portsecurity.pl &#8211; a script to check all ports on a Cisco switch and issues a critical alert if port security has been triggered resulting in a shutdown port on the device.</li>
</ul>
<p>&nbsp;</p>
<ul>
<li>check_portstatus.pl &#8211; a script which will issue warnings if the port status on any Ethernet (by default) port on a Cisco switch has changed within the last hour (by default). I.e. a port up or a port down event.</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2011/10/25/some-new-nagios-plugins/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>So I&#8217;ve Made the Switch from SVN to Git&#8230;</title>
		<link>http://www.barryodonovan.com/index.php/2011/08/31/so-ive-made-the-switch-from-svn-to-git</link>
		<comments>http://www.barryodonovan.com/index.php/2011/08/31/so-ive-made-the-switch-from-svn-to-git#comments</comments>
		<pubDate>Wed, 31 Aug 2011 19:21:46 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[inex]]></category>
		<category><![CDATA[ixpmanager]]></category>
		<category><![CDATA[opensolutions]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[vimbadmin]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=361</guid>
		<description><![CDATA[&#8230;and I&#8217;m bloody delighted.  The straw finally came when Nick forced my hand for a project we wanted to release through our work in INEX. I was pushing for Google Code but he had his heart set on GitHub. Now, &#8230; <a href="http://www.barryodonovan.com/index.php/2011/08/31/so-ive-made-the-switch-from-svn-to-git">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>&#8230;and I&#8217;m bloody delighted. </strong></p>
<p>The straw finally came when <a href="http://www.foobar.org/">Nick</a> forced my hand for <a href="https://github.com/inex/IXP-Manager">a project</a> we wanted to release through our work in <a href="https://www.inex.ie/">INEX</a>. I was pushing for Google Code but he had his heart set on GitHub. Now, in fairness, GitHub has some SVN bindings but after some research, I decided to dive right in.</p>
<p>Now, there&#8217;s both a steep learning curve but also a complete change of mindset required from centralised source code management (SCM) with SVN to the distributed model of Git. In the end, most projects will decide on a canonical Git repository anyway which pushes you slightly back towards centralised but there&#8217;s still a world of a difference.</p>
<p>So, what&#8217;s so good about Git? Well, lots. But first and foremost is it&#8217;s exceptionally powerful yet simple branching and merging that <em>just works</em>. And works fast &#8211; remember, with Git everything is local.</p>
<p>One work flow that used to kill me in SVN was that you&#8217;d be implementing feature X but someone needed bug Y fixed immediately involving some of the same code. Getting just the fix for Y in was tough and complicated. And branching in SVN isn&#8217;t quick or simple. In Git, I branch from the main development branch for every new feature, bug fix, etc and then merge what I need between them and back into develop when they&#8217;re ready to be pushed back to the agreed canonical repository.</p>
<p>I&#8217;ve been so impressed with Git that I&#8217;ve moved an open source project we created in <a href="http://www.opensolutions.ie/">Open Solutions</a> over to Github: <a href="https://github.com/opensolutions/ViMbAdmin/wiki">ViMbAdmin</a>. I&#8217;ve also forced the rest of my team in <a href="http://www.opensolutions.ie/">Open Solutions</a> over to Git and migrated a number of customer projects already. <strong>And we&#8217;re reaping productivity rewards!</strong></p>
<p>How we work Git for projects was taken from this excellent post which I would fully recommend: <a href="http://nvie.com/posts/a-successful-git-branching-model/">A successful Git branching model</a>.</p>
<h2>Useful Git Links:</h2>
<ul>
<li>Git for SVN Users: <a href="http://git.or.cz/course/svn.html">http://git.or.cz/course/svn.html</a></li>
<li>Git SVN Comparison: <a href="https://git.wiki.kernel.org/index.php/GitSvnComparison">https://git.wiki.kernel.org/index.php/GitSvnComparison</a></li>
<li>Git&#8217;s own website: <a href="http://git-scm.com/">http://git-scm.com/</a></li>
<li>Git Cheat Sheets: <a href="http://help.github.com/git-cheat-sheets/">http://help.github.com/git-cheat-sheets/</a></li>
<li>The excellent book <em>Version Control with Git</em> (from <a href="http://www.amazon.co.uk/gp/product/0596520123/ref=oss_product">Amazon</a>)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2011/08/31/so-ive-made-the-switch-from-svn-to-git/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing ViMbAdmin – Virtual Mailbox Administration</title>
		<link>http://www.barryodonovan.com/index.php/2011/03/23/introducing-vimbadmin</link>
		<comments>http://www.barryodonovan.com/index.php/2011/03/23/introducing-vimbadmin#comments</comments>
		<pubDate>Wed, 23 Mar 2011 09:45:50 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[OSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[postfix admin]]></category>
		<category><![CDATA[postfixadmin]]></category>
		<category><![CDATA[vimbadmin]]></category>
		<category><![CDATA[virtual domains]]></category>
		<category><![CDATA[virtual mailboxes]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=305</guid>
		<description><![CDATA[About two weeks ago, my company released an internal software project, ViMbAdmin, as open source under a GPL3 license. So far the reception has been great for a project we just put out there. We have over ten third party &#8230; <a href="http://www.barryodonovan.com/index.php/2011/03/23/introducing-vimbadmin">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>About two weeks ago, <a title="Open Solutions" href="http://www.opensolutions.ie/">my company</a> released an internal software project, <a title="ViMbAdmin :: Virtual Mailbox Administration" href="http://www.opensolutions.ie/open-source/vimbadmin">ViMbAdmin</a>, as open source under a GPL3 license. So far the reception has been great for a project we just <em>put out there</em>. We have over ten third party installs and are getting good feedback and activity on the Google Code platform <a href="http://code.google.com/p/vimbadmin/">where we host it</a>.</p>
<p>ViMbAdmin (<em>pronounced vim-be-admin</em>) is essentially a modern replacement for PostfixAdmin &#8211; a web based interface which will allow you to manage virtual mailboxes, virtual domains and aliases.</p>
<p>We have a <a href="http://www.opensolutions.ie/vimbadmin/"><strong>live demo</strong></a> which you can access <a href="http://www.opensolutions.ie/vimbadmin/">here</a>. You can also <strong>browse screenshots</strong> by clicking the image on <a href="http://www.opensolutions.ie/open-source/vimbadmin">this page</a>.</p>
<p>ViMbAdmin was written in PHP using our own web application framework  which includes the Zend Framework, the Doctrine ORM and the Smarty  templating system with JQuery on the frontend.</p>
<p>The decision to use Smarty, Doctrine and Zend unfortunately adds a bit of overhead for someone installing the product as they will also need to locate these third party libraries. Fortunately:</p>
<ul>
<li>many distributions include all three as packages now;</li>
<li>if you take the svn install option then they will be also installed from external svn sources.</li>
</ul>
<p>ViMbAdmin can work as a slot in replacement for Postfix Admin with <a href="https://code.google.com/p/vimbadmin/wiki/MigrateFromPostfixAdmin">a few MySQL ALTER statements</a>.</p>
<h3>Features</h3>
<ul>
<li>Super admin(s) user level with full access;</li>
<li>Admin(s) user level with access only to assigned domains and their mailboxes and aliases;</li>
<li>Super admins can create and modify super admins and admins;</li>
<li>JQuery Datatable throughout for quick in browser searching and pagination;</li>
<li>Create, modify and purge domains including limited the number of mailboxes and aliases a non-super admin can create per-domain;</li>
<li>Activate / deactivate admins, domains, mailboxes and aliases at the click of a button;</li>
<li>Full logging;</li>
<li>Facility for users (mailbox owners) to change their password;</li>
<li>Forgotten Password / Password Reset function for admins;</li>
<li>Very configurable including:
<ul>
<li>set default values for quotas, number of mailboxes and aliases for domain creation;</li>
<li>templated welcome and settings email for users;</li>
<li>either plain or MD5 mailbox password support.</li>
</ul>
</li>
</ul>
<p>We hope it&#8217;s of use to you!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2011/03/23/introducing-vimbadmin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Doctrine ORM with Zend Application</title>
		<link>http://www.barryodonovan.com/index.php/2011/03/11/using-doctrine-orm-with-zend-application</link>
		<comments>http://www.barryodonovan.com/index.php/2011/03/11/using-doctrine-orm-with-zend-application#comments</comments>
		<pubDate>Fri, 11 Mar 2011 11:44:45 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[doctrine orm]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=301</guid>
		<description><![CDATA[We&#8217;ve just published the first in a serious of hidden treasures articles from our ViMbAdmin application over on the company blog: In this first of a serious of articles where we delve into some of the hidden treasures in our ViMbAdmin &#8230; <a href="http://www.barryodonovan.com/index.php/2011/03/11/using-doctrine-orm-with-zend-application">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just published the first in a serious of hidden treasures articles from our <a href="http://www.opensolutions.ie/open-source/vimbadmin">ViMbAdmin</a> application over on the <a href="http://www.opensolutions.ie/blog/2011/03/using-doctrine-orm-with-zend-application/">company blog</a>:</p>
<blockquote><p>In this first of a serious of articles where we delve into some of the hidden treasures in our <a href="http://code.google.com/p/vimbadmin/">ViMbAdmin</a> application, we look at how to integrate Doctrine ORM with Zend – and specifically Zend_Application and Zend_Controller.</p></blockquote>
<p>As all the code is available with the GPL license online, I didn&#8217;t over explain the set-up but I&#8217;d love some feedback on whether I&#8217;ve been too obscure for the article to be useful at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2011/03/11/using-doctrine-orm-with-zend-application/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Database Design for Doctrine</title>
		<link>http://www.barryodonovan.com/index.php/2010/10/18/database-design-for-doctrine</link>
		<comments>http://www.barryodonovan.com/index.php/2010/10/18/database-design-for-doctrine#comments</comments>
		<pubDate>Mon, 18 Oct 2010 11:00:27 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=227</guid>
		<description><![CDATA[Creating a database schema directly in the database or in YAML can be very frustrating and difficult. I&#8217;ve looked at tools like MySQL Workbench in the paste and have not been impressed &#8211; especially as I need an export to &#8230; <a href="http://www.barryodonovan.com/index.php/2010/10/18/database-design-for-doctrine">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Creating a database schema directly in the database or in YAML can be very frustrating and difficult. I&#8217;ve looked at tools like MySQL Workbench in the paste and have not been impressed &#8211; especially as I need an export to YAML function for <a href="http://www.doctrine-project.org/">Doctrine</a> (a PHP ORM project which I&#8217;m a big fan of).</p>
<p>I recently came across <a href="http://www.orm-designer.com/">ORM Designer</a> and have quickly become a big fan. It&#8217;s interface is nice, it has excellent support for Doctrine including behaviors and I&#8217;ve ran through many update / export to YAML / create models from YAML cycles without issue.</p>
<p>I&#8217;d strongly recommend for anyone using Doctrine &#8211; plus there&#8217;s a 30 day evaluation without any limiting of functionality so you can examine it for yourselves.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2010/10/18/database-design-for-doctrine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing SPAM and Virus Filters</title>
		<link>http://www.barryodonovan.com/index.php/2010/10/04/testing-spam-and-virus-filters</link>
		<comments>http://www.barryodonovan.com/index.php/2010/10/04/testing-spam-and-virus-filters#comments</comments>
		<pubDate>Mon, 04 Oct 2010 12:57:31 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Recipes]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[clam]]></category>
		<category><![CDATA[clam anti-virus]]></category>
		<category><![CDATA[clam av]]></category>
		<category><![CDATA[content filtering]]></category>
		<category><![CDATA[eicar]]></category>
		<category><![CDATA[gtube]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mail filtering]]></category>
		<category><![CDATA[spam assassin]]></category>
		<category><![CDATA[spamassassin]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=209</guid>
		<description><![CDATA[I&#8217;ve recently performed a complete upgrade of Open Solutions&#8217; mail servers and I&#8217;ve now moved onto doing likewise for one of our ISP customers with a lot of users. These retrofits include installing virus and SPAM filters to protect both &#8230; <a href="http://www.barryodonovan.com/index.php/2010/10/04/testing-spam-and-virus-filters">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently performed a complete upgrade of <a href="http://www.opensolutions.ie/">Open Solutions&#8217;</a> mail servers and I&#8217;ve now moved onto doing likewise for one of our ISP customers with a lot of users.</p>
<p>These retrofits include installing <a href="http://www.clamav.net/">virus</a> and <a href="http://spamassassin.apache.org/">SPAM</a> filters to protect both ourselves and the ISP customers but also to stop customers who have infected computers from spewing these emails out.</p>
<p>When everything&#8217;s up and appears to be working, I like to test both filtering systems to ensure they&#8217;re working. Quoting from <a href="http://eicar.org/">eicar</a>:</p>
<blockquote><p>Using real viruses for testing in the real world is rather like setting fire to the dustbin in your office to see whether the smoke detector is working. Such a test will give meaningful results, but with unappealing, unacceptable risks.</p></blockquote>
<p>Fortunately, test <em>files</em> exist for virus checkers and SpamAssassin:</p>
<ul>
<li>The EICAR standard anti-virus test file can be found <a href="http://eicar.org/anti_virus_test_file.htm">here</a>.</li>
<li>SpamAssassin created the GTUBE (Generic Test for Unsolicited Bulk Email) for the same purpose and this can be found <a href="http://spamassassin.apache.org/gtube/">here</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2010/10/04/testing-spam-and-virus-filters/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go That Way, Really Fast</title>
		<link>http://www.barryodonovan.com/index.php/2010/09/12/go-that-way-really-fast</link>
		<comments>http://www.barryodonovan.com/index.php/2010/09/12/go-that-way-really-fast#comments</comments>
		<pubDate>Sun, 12 Sep 2010 10:18:15 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[humour]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=184</guid>
		<description><![CDATA[In the vein of Release Early, Release Often, Jeff Atwood, CTO of StackOverflow.com, has posted an interesting article on the topic and on the huge amount of work they have gotten done in five months and their fears that they&#8217;re &#8230; <a href="http://www.barryodonovan.com/index.php/2010/09/12/go-that-way-really-fast">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the vein of <em><a href="http://en.wikipedia.org/wiki/Release_early,_release_often">Release Early, Release Often</a></em>, Jeff Atwood, CTO of StackOverflow.com, has posted an <a href="http://www.codinghorror.com/blog/2010/09/go-that-way-really-fast.html">interesting article</a> on the topic and on the huge amount of work they have gotten done in five months and their fears that they&#8217;re still not moving fast enough.</p>
<blockquote><p><strong>We&#8217;re going to go that way, <em>really</em> fast. And if something gets in our way, we&#8217;ll turn.</strong></p></blockquote>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2010/09/12/go-that-way-really-fast/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous Integration for PHP</title>
		<link>http://www.barryodonovan.com/index.php/2010/08/30/continuous-integration-for-php</link>
		<comments>http://www.barryodonovan.com/index.php/2010/08/30/continuous-integration-for-php#comments</comments>
		<pubDate>Mon, 30 Aug 2010 19:24:28 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=180</guid>
		<description><![CDATA[I stumbled upon phpUnderControl today by chance and it looks like a very interesting project which integrates: PHPUnit PhpDocumentor PHP_CodeSniffer I hope to take a closer look at it in the near future for a new project we&#8217;re lining up &#8230; <a href="http://www.barryodonovan.com/index.php/2010/08/30/continuous-integration-for-php">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I stumbled upon <a href="http://phpundercontrol.org/">phpUnderControl</a> today by chance and it looks like a very interesting project which integrates:</p>
<ul>
<li><a href="http://www.phpunit.de/">PHPUnit</a></li>
<li><a href="http://www.phpdoc.org/">PhpDocumentor</a></li>
<li><a href="http://pear.php.net/package/PHP_CodeSniffer">PHP_CodeSniffer</a></li>
</ul>
<p>I hope to take a closer look at it in the near future for a new project we&#8217;re lining up <a href="http://www.opensolutions.ie/">at work</a> (want to <a href="http://www.opensolutions.ie/about-us/careers">help us</a>?).</p>
<p>Speaking of continuous integration, for another project we installed and look after a <a href="http://hudson-ci.org/">Hudson server</a> for a customer who is developing a Java and Cocoa application &#8211; if you&#8217;re looking for a CI tool for a Java (or other) development project, this is definitely worth a look (easy installation, nice and intuitive interface and well featured).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2010/08/30/continuous-integration-for-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon Web Service&#8217;s ec2-bundle-image on Ubuntu</title>
		<link>http://www.barryodonovan.com/index.php/2007/11/12/ec2-ami-ubuntu</link>
		<comments>http://www.barryodonovan.com/index.php/2007/11/12/ec2-ami-ubuntu#comments</comments>
		<pubDate>Mon, 12 Nov 2007 20:24:06 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/index.php/2007/11/12/ec2-ami-ubuntu/</guid>
		<description><![CDATA[This is really a post for Google&#8217;s crawlers on getting AWS&#8217;s EC2 AMI tools working under Ubuntu (I&#8217;m currently on Gutsy 7.10). Despite any bitching I may do below, EC2 and S3 are cool services. The first problem is that &#8230; <a href="http://www.barryodonovan.com/index.php/2007/11/12/ec2-ami-ubuntu">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
This is really a post for Google&#8217;s crawlers on getting AWS&#8217;s EC2 AMI tools working under Ubuntu (I&#8217;m currently on Gutsy 7.10). Despite any bitching I may do below, EC2 and S3 are cool services.
</p>
<p>
The first problem is that AWS only distribute the tools as an RPM (really guys? I mean FFS). Convert and install with <code>alien</code>.
</p>
<pre>
# apt-get install alien
# alien -k ec2-ami-tools.noarch.rpm
# dpkg -i ec2-ami-tools_1.3-15283_all.deb
</pre>
<p>
Make  sure you also install <code>libopenssl-ruby</code>.
</p>
<p>
Set your Ruby path as the RPM places them where RedHat expects to find them:
</p>
<pre>
# export RUBYLIB="/usr/lib/site_ruby"
</pre>
<p>
Now when you run the utility, you&#8217;ll probably get:
</p>
<pre>
$ ec2-bundle-image -r ... -i ... -k ... -c ... -u ...
sh: Syntax error: Bad substitution
</pre>
<p>
Aparently Ubuntu switched from invoking <code>bash</code> to <code>dash</code> for <code>sh</code> somewhere along the line. Just relink it (temporarily or permanently as suits):
</p>
<pre>
# rm /bin/sh
# ln -s /bin/bash /bin/sh
</pre>
<p>
And you should be good to go.
</p>
<p>
One other issue I encountered was that the permissions of the directories were for root only (i.e. <code>/usr/local/aes</code>, <code>/usr/lib/site_ruby/</code> and <code>/etc/aes</code>). A very sloppy <code>chmod a+rX</code> on each of these will resolve that. Although I suspect it&#8217;s more to do with the fact that I used <code>rpm2cpio</code> and <code>cpio</code> rather than <code>alien</code> the first time around.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2007/11/12/ec2-ami-ubuntu/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nagios Plugin to Check the Status of PRI Lines in Asterisk</title>
		<link>http://www.barryodonovan.com/index.php/2007/11/02/asterisk-pri-nagios</link>
		<comments>http://www.barryodonovan.com/index.php/2007/11/02/asterisk-pri-nagios#comments</comments>
		<pubDate>Fri, 02 Nov 2007 21:15:57 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Recipes]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/index.php/2007/11/02/nagios-plugin-to-check-the-status-of-pri-lines-in-asterisk/</guid>
		<description><![CDATA[I have a number of Asterisk implementations that I keep an eye on that have multiple PRI connections. Knowing if and when they ever go down has the obvious benefits of alerting me to a problem in near real time. &#8230; <a href="http://www.barryodonovan.com/index.php/2007/11/02/asterisk-pri-nagios">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have a number of Asterisk implementations that I keep an eye on that have multiple PRI connections. Knowing if and when they ever go down has the obvious benefits of alerting me to a problem in near real time. But besides that, it allows my customers and I to verify SLAs, track and log issues, etc.</p>
<p>To this end, I have written <a href="http://www.opensolutions.ie/misc/check_asterisk_pri.php.txt">a Nagios plugin</a> which queries Asterisk&#8217;s manager interface and executes the <code>pri show spans</code> CLI command (this is Asterisk 1.4 by the way). The script then parses the output to ascertain whether a PRI is up or not. </p>
<p>The actual code to connect to the manager interface and execute the query is simply:</p>
<pre>
if( ( $astsock = fsockopen( $host, $port, $errno, $errstr, $timeout ) ) === false )
{
    echo "Could not connect to Asterisk manager: $errstr";
    exit( STATUS_CRITICAL );
}

fputs( $astsock, "Action: Login\r\n");
fputs( $astsock, "UserName: $username\r\n");
fputs( $astsock, "Secret: $password\r\n\r\n"); 

fputs( $astsock, "Action: Command\r\n");
fputs( $astsock, "Command: pri show spans\r\n\r\n");

fputs( $astsock, "Action: Logoff\r\n\r\n");

while( !feof( $astsock ) )
{
    $asttext .= fread( $astsock, 8192 );
}

fclose( $astsock );

if( strpos( $asttext, "Authentication failed" ) !== false )
{
    echo "Asterisk manager authentication failed.";
    exit( STATUS_CRITICAL );
}
</pre>
<p>This plugin is hard coded to English and expects to find <code>Provisioned, Up, Active</code> for a good PRI. For example, the Asterisk implementations that support the <code>pri show spans</code> command that I have access to return one of:</p>
<ul>
<li> <code>PRI span 1/0: Provisioned, In Alarm, Down, Active</code> </li>
<li> <code>PRI span 3/0: Provisioned, Up, Active</code> </li>
</ul>
<p>I&#8217;m actually running a slightly older version of Nagios at the moment, version 1.3. To integrate the plugin, first add the following command definition to an appropriate existing or new file under <code>/etc/nagios-plugings/config/</code>:</p>
<pre>
define command{
        command_name    check_asterisk_pri
        command_line    /usr/lib/nagios/plugins/check_asterisk_pri.php \\
             -H $HOSTADDRESS$ -U $ARG1$ -P $ARG2$ -w $ARG3$ \\
             -c $ARG4$ -n $ARG5$
}
</pre>
<p>where <code>$ARG1$</code> is the Asterisk manager username and <code>$ARG2$</code> is the password. <code>$ARG3$</code> and <code>$ARG4$</code> are the warning and critical thresholds respectively whereby if the number of available PRIs reaches one of these values, the appropriate error condition will be set. Lastly, <code>$ARG5$</code> is the number of PRIs the plugin should <string>expect</strong> to find. </p>
<p><strong>NB:</strong> the <code>command_line</code> line above is split for readability but it should all be on the one line.</p>
<p>Now create a test for a host in an appropriate file in <code>/etc/nagios/config/</code>:</p>
<pre>
define service{
        use                             core-service
        host_name                       hostname.domain.ie
        service_description             Asterisk PRIs
        check_command                   check_asterisk_pri!user!pass!2!1!4
}
</pre>
<p>Ensure that your Nagios server has permissions to access the Asterisk server via TCP on the Asterisk manager port (5038 by default). If on a public network, this should be done via stunnel or a VPN for security reasons. </p>
<p>Lastly, you&#8217;ll need a user with the appropriate permissions and host allow statements in your Asterisk configuration (<code>/etc/asterisk/manager.conf</code>):</p>
<pre>
[username]
secret = password
deny=0.0.0.0/0.0.0.0
permit=1.2.3.4/255.255.255.255
read = command
write = command
</pre>
<p>The next version may include support for BRI and Zap FXO ports also. I also plan on a Cacti plug in to show the channels on each PRI (up &#8211; on a call, down, etc). In any case, updates will be posted here.</p>
<p>The plug in can be download from: <a href="http://www.opensolutions.ie/misc/check_asterisk_pri.php.txt">http://www.opensolutions.ie/misc/check_asterisk_pri.php.txt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2007/11/02/asterisk-pri-nagios/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

