<?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; OSS</title>
	<atom:link href="http://www.barryodonovan.com/index.php/category/oss/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>Asterisk with SS7 via Wanpipe, Dahdi and libss7 – with ISUP SAM support</title>
		<link>http://www.barryodonovan.com/index.php/2012/01/12/asterisk-ss7-sam-support</link>
		<comments>http://www.barryodonovan.com/index.php/2012/01/12/asterisk-ss7-sam-support#comments</comments>
		<pubDate>Thu, 12 Jan 2012 08:05:08 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[My Links]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Recipes]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[asterisk chan_ss7]]></category>
		<category><![CDATA[chan_ss7]]></category>
		<category><![CDATA[dahdi ss7]]></category>
		<category><![CDATA[isup sam]]></category>
		<category><![CDATA[libss7]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[sam]]></category>
		<category><![CDATA[sangoma]]></category>
		<category><![CDATA[sangoma ss7]]></category>
		<category><![CDATA[ss7]]></category>
		<category><![CDATA[ss7 sam]]></category>
		<category><![CDATA[subsequent address message]]></category>
		<category><![CDATA[zaptel ss7]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=385</guid>
		<description><![CDATA[A howto on installing Asterisk with SS7 supported via libss7 on Sangoma hardware along with support for ISUP SAM messages. <a href="http://www.barryodonovan.com/index.php/2012/01/12/asterisk-ss7-sam-support">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After much head banging in bringing up an SS7 link with SAM support, I am documented what worked here.</p>
<p>Firstly, what is <em>SAM support</em>? One end of an SS7 link initialises a new call by sending an <em>Initial Address Message (IAM)</em>. All SS7 software stacks support this and usually it&#8217;s enough. One case where it&#8217;s not enough is when one wants to address a phone number with more than the E.164 standard max length of 16  (usually to pass additional information tacked on the start, end of or even replacing an A or B number). In this scenario, SS7 uses a <em>Subsequent Address Message (SAM)</em> to send the additional digits. Most / all mainstream Asterisk SS7 software stacks do not support this.</p>
<p>The platform and software used is as follows:</p>
<ul>
<li>Ubuntu 10.04 LTS standard CLI install;</li>
<li>dahdi-linux-complete-2.4.0 from the archives (<a title="dahdi-linux-complete-2.4.0" href="http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.4.0+2.4.0.tar.gz">direct link</a>);</li>
<li>a patched version of libss7 supporting SAM via SVN (see below);</li>
<li>a patched version of chan-dahdi via SVN (see below);</li>
<li>Asterisk 1.6.0.28 from the archives (<a href="http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-1.6.0.28.tar.gz">direct link</a>);</li>
<li>Asterisk Addons 1.6.0.6 from the archives (<a href="http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-addons-1.6.0.6.tar.gz">direct link</a>);</li>
<li>Sangoma Wanpipe 3.5.24 (<a href="ftp://ftp.sangoma.com/linux/current_wanpipe/wanpipe-3.5.24.tgz">direct link</a>).</li>
</ul>
<p><strong>Yes, I know some of the above are obsolete. Unfortunately it&#8217;s what&#8217;s required for everything to play nicely together. And, guess what, it works!</strong></p>
<h3>Before You Start</h3>
<p>Ensure you have all the necessary packages for building the packages:</p>
<pre>apt-get install build-essential libnewt-dev subversion    \
   libsqlite3-dev libsnmp-dev bison libtool flex          \
   autoconf2.13 libmysqlclient-dev</pre>
<p>You can assume the working directory is <em>/usr/local/src</em> in the following.</p>
<h3>Installing dahdi-linux-complete</h3>
<p>Download and extract dahdi-linux-complete into /usr/local/src. Then, in the same directory, create some symbolic links:</p>
<pre>ln -s dahdi-linux-complete-2.4.0+2.4.0/linux dahdi-linux
ln -s dahdi-linux-complete-2.4.0+2.4.0/tools dahdi-tools</pre>
<p>Now build dahdi-linux:</p>
<pre>cd dahdi-linux
make
make install</pre>
<p>Now move onto dahdi-tools:</p>
<pre>cd dahdi-tools
./configure
make menuconfig # (and select tools or accept defaults)
make
make install
make config</pre>
<h3>Installing libss7</h3>
<p>There is a patched version of Digium&#8217;s libss7 referred to as <em>Attila&#8217;s libss7 </em>available via SVN. Download and install it:</p>
<pre>svn co https://observer.router.hu/repos_pub/libss7/trunk alibss7
cd alibss7
make
make install</pre>
<h3>Installing Asterisk</h3>
<p>Download and extract the Asterisk 1.6.0.28 package reference above.</p>
<pre>cd asterisk-1.6.0.28</pre>
<p>Now this next bit <strong>is very important and easy to miss</strong> - you also need a patched version of chan_dahdi.c that is compatible with the patched version of libss7. This is also available from SVN:</p>
<pre>svn co https://observer.router.hu/repos_pub/chan_dahdi/trunk achan_dahdi</pre>
<p>Then copy it to your Asterisk source:</p>
<pre>cp achan_dahdi/chan_dahdi.c asterisk-1.6.0.28/channels/chan_dahdi.c</pre>
<p>Now continue with the Asterisk installation:</p>
<pre>./configure
make menuconfig
make
make install
make samples
make config</pre>
<h3>Install Asterisk Addons (optional)</h3>
<p>Download and unpack the above referenced add ons package and build and install:</p>
<pre>cd asterisk-addons-1.6.0.6
./configure
make menuconfig
make
make install
make samples</pre>
<h3>Sangoma Wanpipe</h3>
<p>I&#8217;m using one of Sangoma&#8217;s E1 / T1 interface cards and so I need Wanpipe also. I&#8217;m using version 3.5.24 and preceed as follows after unpacking:</p>
<pre>cd wanpipe-3.5.24./Setup install</pre>
<p>During the install, follow these prompts:</p>
<ul>
<li>select option 2 =&gt; Asterisk/Dahdi Support;</li>
<li>enter path /usr/local/src/dahdi-linux (for Zaptel path prompt);</li>
<li>select defaults for everything else;</li>
<li>you DO want to install start-up scripts;</li>
<li>you DO to configure wanpipe devices for DAHDI;</li>
<li>you DO want to generate /etc/asterisk/chan_dahdi.conf and:
<ul>
<li>select E1 / T1 as appropriate;</li>
<li>select line framing and encoding;</li>
<li>choose clock source;</li>
<li>select <em>Zaptel/Dahdi &#8211; PRI CPE</em> as signalling;</li>
<li>select <em>National ISDN 2</em> as switch type;</li>
<li>do not enable hardware DTMF detection;</li>
<li>use all channels;</li>
<li>select dial plan context as appropriate;</li>
</ul>
</li>
<li>and continue for other ports as necessary;</li>
<li>finally, choose Save cfg: Stop Asterisk &amp; Wanpipe now</li>
<li>you would like wanrouter to start on system boot;</li>
<li>and you would like to execute &#8216;dahdi_cfg&#8217; each time wanrouter starts.</li>
</ul>
<h3>Configuration Steps</h3>
<p>We now need to set various options in Wanpipe, Dahdi and Asterisk for SS7 as it&#8217;s PRI/ISDN by default.</p>
<p>Edit all <em>/etc/wanpipe/wanpipeX.conf</em> files as necessary and change:</p>
<pre> TDMV_DCHAN              = 16</pre>
<p>to</p>
<pre>TDMV_DCHAN              = 0</pre>
<p>Now edit <em>/etc/dahdi/system.conf</em> and change (for example):</p>
<pre>span=1,1,0,ccs,hdb3,crc4
bchan=1-15,17-31
echocanceller=mg2,1-15,17-31
hardhdlc=16</pre>
<p>to</p>
<pre>span=1,1,0,ccs,hdb3,crc4
bchan=2-31
echocanceller=mg2,2-31
mtp2=1</pre>
<p>which of course assumes signalling is on channel 1. If you have voice only links, you might need something like:</p>
<pre>span=1,0,0,ccs,hdb3,crc4bchan=1-31
echocanceller=mg2,2-31</pre>
<p>Lastly, we need to configure Asterisk. Replace lines such as:</p>
<pre>;Sangoma A102 port 1 [slot:4 bus:5 span:1]
switchtype=national
context=from-pstn
group=0
echocancel=yes
signalling=pri_cpe
channel =&gt;1-15,17-31</pre>
<p>with an appropriate configuration. Mine follows below with some edits and <strong>some important notes at the end</strong>:</p>
<pre>;Sangoma A102 port 1 [slot:4 bus:5 span:1]
switchtype=national
context=from-pstn
group=0
echocancel=yes

signaling=ss7
ss7type=itu
ss7_called_nai=dynamic
ss7_calling_nai=dynamic
ss7_internationalprefix=00
ss7_nationalprefix=0
ss7_subscriberprefix=
ss7_unknownprefix=
linkset=1
pointcode=1
adjpointcode=2
defaultdpc=3
networkindicator=national_spare
cicbeginswith=2
channel=2-31
sigchan=1</pre>
<ul>
<li>Set <em>pointcode, adjpointcode and defaultdpc</em> as appropriate;</li>
<li>set <em>networkindicator</em> as appropriate and ensure it matches the other end (you can see what you’re being sent and what you’re sending via <em>ss7 debug</em>;</li>
<li><em>cicsbeginwith</em> is normally 1 but the telco on my end are starting at 2 – this was <em>groping in the dark</em> diagnostics and issues such as no audio, CICs not in service when both sides claim they are, etc may point to misaligned CICs;</li>
<li>make sure you have configured <em>from-pstn</em> or the appropriate context in your<em>extensions.conf</em>.</li>
</ul>
<h3>Confirming Your Link Is Up</h3>
<p>Now start wanrouter <em>(/etc/init.d/wanrouter start)</em>; dahdi <em>(/etc/init.d/dahdi start);</em> and Asterisk <em>(/etc/init.d/asterisk start)</em>. You should see your link come up via logs available with the <em>dmesg</em> command. Launch the Asterisk console and check the status of your links:</p>
<pre>ast-deg1-1*CLI&gt; ss7 show cics 1
  CIC   DPC  DAHDI        STATE   BLOCKING
    2    3      2         Idle
    3    3      3         Idle
    4    3      4         Idle
    5    3      5         Idle
    6    3      6         Idle
    7    3      7         Idle
    8    3      8         Idle
    9    3      9         Idle
   10    3     10         Idle
   11    3     11         Idle
   12    3     12         Idle
   13    3     13         Idle
   14    3     14         Idle
   15    3     15         Idle
   16    3     16         Idle
   17    3     17         Idle
   18    3     18         Idle
   19    3     19         Idle
   20    3     20         Idle
   21    3     21         Idle
   22    3     22         Idle
   23    3     23         Idle
   24    3     24         Idle
   25    3     25         Idle
   26    3     26         Idle
   27    3     27         Idle
   28    3     28         Idle
   29    3     29         Idle
   30    3     30         Idle
   31    3     31         Idle</pre>
<p>You should now be okay to make test calls.</p>
<h3>Do You Need Professional Support / Consultancy?</h3>
<p>While I will try to respond to comments and questions on this blog, I don’t have the time to provide one on one assistance pro-bono. Professional consultancy on Asterisk and SS7 is available worldwide through my company, <a href="http://www.opensolutions.ie/">Open Solutions</a> with <a href="http://www.opensolutions.ie/about-us/contact">contact details here</a>.</p>
<h3>References</h3>
<p>For posterity, I have added Domjan Attila patched libss7 and chan_dahdi to GitHub:</p>
<ul>
<li><a href="https://github.com/barryo/attila-libss7">https://github.com/barryo/attila-libss7</a></li>
<li><a href="https://github.com/barryo/attila-libss7-chan_dahdi">https://github.com/barryo/attila-libss7-chan_dahdi</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2012/01/12/asterisk-ss7-sam-support/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Useful RANCID Debugging Tips</title>
		<link>http://www.barryodonovan.com/index.php/2011/02/05/useful-rancid-debugging-tips</link>
		<comments>http://www.barryodonovan.com/index.php/2011/02/05/useful-rancid-debugging-tips#comments</comments>
		<pubDate>Sat, 05 Feb 2011 16:32:39 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[rancid]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=260</guid>
		<description><![CDATA[I always find it difficult to find a good reference for RANCID debugging strategies and, after spending the afternoon on doing same on one installation, put together my own list. Head over to my article on the company blog for the &#8230; <a href="http://www.barryodonovan.com/index.php/2011/02/05/useful-rancid-debugging-tips">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I always find it difficult to find a good reference for <a href="http://www.shrubbery.net/rancid/">RANCID</a> debugging strategies and, after spending the afternoon on doing same on one installation, put together my own list.</p>
<p>Head over <a href="http://www.opensolutions.ie/blog/2011/02/useful-rancid-debugging-tips/">to my article on the company blog</a> for the tips.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2011/02/05/useful-rancid-debugging-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix for Silly Annoying FreeBSD PHP Ports Errors</title>
		<link>http://www.barryodonovan.com/index.php/2010/11/26/fix-for-silly-annoying-freebsd-php-ports-errors</link>
		<comments>http://www.barryodonovan.com/index.php/2010/11/26/fix-for-silly-annoying-freebsd-php-ports-errors#comments</comments>
		<pubDate>Fri, 26 Nov 2010 14:05:18 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ports]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=240</guid>
		<description><![CDATA[The following occurs quite regularly on FreeBSD: Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. and when fixed, it&#8217;s followed up by: Cannot find autoheader. Please check your autoconf installation and &#8230; <a href="http://www.barryodonovan.com/index.php/2010/11/26/fix-for-silly-annoying-freebsd-php-ports-errors">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The following occurs quite regularly on FreeBSD:</p>
<pre>Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.</pre>
<p>and when fixed, it&#8217;s followed up by:</p>
<pre>Cannot find autoheader. Please check your autoconf installation and the
$PHP_AUTOHEADER environment variable. Then, rerun this script.</pre>
<p>The fix is to set those environment variables <strong><em>(as appropriate for the autoconf and autoheader version numbers &#8211; the below is my example on FreeBSD 8.1)</em></strong>:</p>
<pre>export PHP_AUTOCONF=/usr/local/bin/autoconf-2.68
export PHP_AUTOHEADER=/usr/local/bin/autoheader-2.68</pre>
<p>
in bash of the following in tcsh:
</p>
<pre>
setenv PHP_AUTOCONF autoconf-2.68
setenv PHP_AUTOHEADER autoheader-2.68
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2010/11/26/fix-for-silly-annoying-freebsd-php-ports-errors/feed</wfw:commentRss>
		<slash:comments>1</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>Kubuntu 8.10 and Mobile Broadband (and KDE 4.1)</title>
		<link>http://www.barryodonovan.com/index.php/2008/10/31/kubuntu-mobile</link>
		<comments>http://www.barryodonovan.com/index.php/2008/10/31/kubuntu-mobile#comments</comments>
		<pubDate>Fri, 31 Oct 2008 11:18:44 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=76</guid>
		<description><![CDATA[Kubuntu 8.10 and mobile broadband - the KNetworkManager has come a long way! <a href="http://www.barryodonovan.com/index.php/2008/10/31/kubuntu-mobile">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I updated my laptop from <a href="http://www.kubuntu.com/">Kubuntu 8.04</a> to 8.10 (<a href="http://www.kubuntu.org/news/8.10-release">just released</a>) yesterday. I do 90% of my work on my desktop which needs to <em>just work</em> and, as such, it&#8217;s running Kubuntu 7.10. My laptop, however, I play around with. </p>
<p>Most people&#8217;s first impression of 8.10 will be based on the upgrade process and post install issues. To date, I&#8217;ve always had to fix a lot of problems with the system after an upgrade to make it work. Not this time &#8211; it was absolutely seamless. </p>
<p>I was also apprehensive about KDE 4.1 and, to be honest, I was really worried that in a crunch I&#8217;d have to fall back to Gnome before degrading back to 8.04. I just don&#8217;t have the time these days to follow KDE development as much as I used to and I briefly installed KDE 4 a few months ago and thought it was far from finished. </p>
<p>I&#8217;m delighted to report KDE 4.1 is very slick and very polished. I&#8217;ve only had it for just over 24 but I have no complaints yet.</p>
<p>However, my main motivation for the upgrade was mobile broadband. Like most people, I use my laptop when on the move and my desktop when in the office. My laptop has an Ethernet port and a wi-fi card which both worked great with <a href="http://en.opensuse.org/Projects/KNetworkManager">KNetworkManager</a> but not mobile broadband. I got O2&#8242;s broadband dongle (the small USB stick) about four months ago and rely on it heavily. </p>
<p>I&#8217;ve been using Vodafone&#8217;s Mobile Connect Client to great effect but there were some issues:</p>
<ul>
<li> setting up the connection was a manual process (change X window access control; su to root; export the <code>DISPLAY</code> setting; and start the application); </li>
<li> if I suspended the laptop then I needed to reboot the system to use the dongle again.
</ul>
<p>While both of the above could be solved, it&#8217;s just not plug and play. 8.10 is. With the dongle plugged into the USB port, KNetworkManager discovered the <code>tty</code> port. Configuring it was as easy as right clicking on the KNetworkManager icon and selecting <em>New Connection&#8230;</em> icon for the <code>tty</code> port.</p>
<p>The next step requires knowledge of the O2 / provider settings but this is readily available online. For O2:</p>
<div id="attachment_80" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.barryodonovan.com/wp-content/uploads/2008/11/knetworkmanager-o21.png"><img src="http://www.barryodonovan.com/wp-content/uploads/2008/11/knetworkmanager-o21-300x161.png" alt="KNetworkManager - Settings for O2 Ireland" title="knetworkmanager-o2" width="300" height="161" class="size-medium wp-image-80" /></a><p class="wp-caption-text">KNetworkManager - Settings for O2 Ireland</p></div>
<p>After the above, I just accepted the defaults for the rest of the options. And &#8211; to my delight &#8211; it just worked. And it worked after suspended the laptop. And after popping the USB dongle in and out for the heck of it. By clicking the Auto Connect option as part of the process, it also just works when I pop the dongle in.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2008/10/31/kubuntu-mobile/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>chan_ss7, pcap files and 64bit machines</title>
		<link>http://www.barryodonovan.com/index.php/2008/04/28/chan_ss7-pcap-files-and-64bit-machines</link>
		<comments>http://www.barryodonovan.com/index.php/2008/04/28/chan_ss7-pcap-files-and-64bit-machines#comments</comments>
		<pubDate>Mon, 28 Apr 2008 19:01:32 +0000</pubDate>
		<dc:creator>Barry O'Donovan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[asterisk chan_ss7 linkedin ss7]]></category>

		<guid isPermaLink="false">http://www.barryodonovan.com/?p=75</guid>
		<description><![CDATA[UPDATE: April 29th 2008 Anders Baekgaard of Dicea ApS (current chan_ss7 maintainers) recommends the following alternative patch. Please note that mtp3d.c will also need to be patched in the same way: --- chan_ss7.c~ 2008-04-03 09:23:56.000000000 +0200 +++ chan_ss7.c 2008-04-29 08:29:20.000000000 &#8230; <a href="http://www.barryodonovan.com/index.php/2008/04/28/chan_ss7-pcap-files-and-64bit-machines">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE: April 29th 2008</strong></p>
<p>Anders Baekgaard of <a href="dicea.dk">Dicea ApS</a> (current chan_ss7 maintainers) recommends the following alternative patch. Please note that <code>mtp3d.c</code> will also need to be patched in the same way:</p>
<pre>
--- chan_ss7.c~ 2008-04-03 09:23:56.000000000 +0200
+++ chan_ss7.c  2008-04-29 08:29:20.000000000 +0200
@@ -249,11 +249,12 @@

 static void dump_pcap(FILE *f, struct mtp_event *event)
 {
+  unsigned int sec  = event->dump.stamp.tv_sec;
   unsigned int usec  = event->dump.stamp.tv_usec -
     (event->dump.stamp.tv_usec % 1000) +
     event->dump.slinkno*2 + /* encode link number in usecs */
     event->dump.out /* encode direction in/out */;

-  fwrite(&#038;event->dump.stamp.tv_sec, sizeof(event->dump.stamp.tv_sec), 1, f);
+  fwrite(&#038;sec, sizeof(sec), 1, f);
   fwrite(&#038;usec, sizeof(usec), 1, f);
   fwrite(&#038;event->len, sizeof(event->len), 1, f); /* number of bytes of packet in file */
   fwrite(&#038;event->len, sizeof(event->len), 1, f); /* actual length of packet */
</pre>
<p><strong>END UPDATE: April 29th 2008</strong></p>
<p>A quickie for the Google trolls:</p>
<p>While trying to debug some SS7 Nature of Address (NAI) indication issues, I needed to use chan_ss7&#8242;s &#8216;dump&#8217; feature from the Asterisk CLI. It worked fine but the resultant pcap files always failed with messages like:</p>
<pre>
# tshark -r /tmp/now
tshark: "/tmp/now" appears to be damaged or corrupt.
(pcap: File has 409000-byte packet, bigger than maximum of 65535)
</pre>
<p>After much digging about and head-against-wall banging, I discovered the issue<br />
is with the packet header in the pcap file. It&#8217;s defined by its spec to be:</p>
<pre>
typedef struct pcaprec_hdr_s {
        guint32 ts_sec;         /* timestamp seconds */
        guint32 ts_usec;        /* timestamp microseconds */
        guint32 incl_len;       /* number of octets of packet saved in file */
        guint32 orig_len;       /* actual length of packet */
} pcaprec_hdr_t;
</pre>
<p>chan_ss7 uses the <code>timeval</code> struct defined by system headers to represent ts_sec and ts_usec. But, on 64bit machines (certainly mine), these values are defined as <code>unsigned long</code> rather than <code>unsigned int</code> (presumably as a step to get over the &#8216;year 2038 bug&#8217;). Hence the packet header is all wrong.</p>
<p>An easy solution is the following patch in <code>mtp.h</code>:</p>
<pre>
77a78,90
> /*
>  * The packet header in the pcap file (used for the CLI command 'dump') is
defined so has to
>  * have the two time components as unsigned ints. However, on 64bit
machines, the system
>  * timeval struct may use unsigned long. As such, we use a custom version
here:
>  */
> struct _32bit_timeval
> {
>   unsigned int tv_sec;            /* Seconds.  */
>   unsigned int tv_usec;      /* Microseconds.  */
> };
>
>
>
125c138
<       struct timeval stamp;        /* Timestamp */
---
>       struct _32bit_timeval stamp;        /* Timestamp */
</pre>
<p>There may be a better way &#8211; but this works.</p>
<p>This relates to chan_ss7-1.0.0 from <a href="http://www.dicea.dk/company/downloads">http://www.dicea.dk/company/downloads</a> and I have let them know also. It&#8217;s also a known issue for the Wireshark developers (although I did not investigate in detail to see what their resolution was for the future). See the following thread from 1999:</p>
<ul>
<li> <a href="http://www.ethereal.com/lists/ethereal-dev/199908/msg00065.html">http://www.ethereal.com/lists/ethereal-dev/199908/msg00065.html</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.barryodonovan.com/index.php/2008/04/28/chan_ss7-pcap-files-and-64bit-machines/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

