<?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>Sam Moffatt @ Pasamio.com &#187; integration</title>
	<atom:link href="http://pasamio.com/category/integration/feed/" rel="self" type="application/rss+xml" />
	<link>http://pasamio.com</link>
	<description>Sam Moffatt's Tech Blog: Writings on Technology</description>
	<lastBuildDate>Fri, 20 Jan 2012 08:40:27 +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>Month in review: January</title>
		<link>http://pasamio.com/2011/02/01/month-in-review-january/</link>
		<comments>http://pasamio.com/2011/02/01/month-in-review-january/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 07:25:26 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[accesscontrol]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[eprints]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[university]]></category>
		<category><![CDATA[vufind]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=778</guid>
		<description><![CDATA[January for me was an interesting and varied month. Here is a quick look back at what I got up to in the month. Joomla! integration for the Access All Databases Access All Databases is a USQ system that really screams to be embedded in a CCK style app. It is a set of custom [...]]]></description>
			<content:encoded><![CDATA[<p>January for me was an interesting and varied month. Here is a quick look back at what I got up to in the month.<br />
<span id="more-778"></span><br />
<strong>Joomla! integration for the Access All Databases</strong><br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/aad-joomla-research.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/aad-joomla-research-150x150.png" alt="" title="Access All Databases in Joomla!" width="150" height="150" class="alignleft size-thumbnail wp-image-795" align="left" valign="top" /></a><a href="http://resguide.usq.edu.au">Access All Databases</a> is a USQ system that really screams to be embedded in a CCK style app. It is a set of custom fields, some search and a bit of link tracking. Beyond versioning and approval of edits there is no significant functionality beyond CRUD in this application. At the moment it is a hand built system written in PHP and badly needing redevelopment into a more modular nature. The approach I&#8217;ve taken is to experiment with using Joomla! and Flexicontent to rebuild the application from scratch. So far I&#8217;m doing well and I&#8217;ve managed to recreate the basic look and feel of the site. I&#8217;ve got one custom menu module to integrate Flexicontent&#8217;s nested categories to emulate the behaviour of another primitive CMS USQ uses called &#8220;<a href="http://libtute.usq.edu.au">Finding Information Tutorial</a>.&#8221; I&#8217;ve done a custom module override for the menu as well to get it using the current USQ look and feel by default. The great thing is that there is a mobile friendly version very easily with standard Joomla! tools. I don&#8217;t think I&#8217;ll get more time to play with this soon however it is already a good start.</p>
<p><strong>VuFind UConnect SSO</strong><br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/vufind-geany.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/vufind-geany-150x150.png" alt="" title="VuFind UConnect SSO in Geany" width="150" height="150" class="alignleft size-thumbnail wp-image-796" align="left" valign="top" /></a>VuFind is the library catalogue system and UConnect is USQ&#8217;s custom SSO system that was developed. I&#8217;ve gone through and built an integration between the two which looks like the following:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/vufind-sso.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/vufind-sso-300x207.png" alt="" title="VuFind with UConnect SSO" width="300" height="207" class="alignnone size-medium wp-image-794" valign="none" /></a><br />
I talk a bit more about <a href="http://pasamio.com/?p=762">VuFind, SSO and authentication</a> in an earlier blog post.</p>
<p><strong>Book Finder</strong><br />
This is primarily the work of Ken MacAlpine who is working on mobile technologies at USQ. Ken developed an SVG powered map of the top floor of the library to aide in the location of books. He put together a database of roughly where the catalogue numbers stop and start for each shelf on each side. It has been integrated into the catalogue and shows up as a &#8220;Show on Map&#8221; link for Toowoomba Main Collection items.<br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/bookfinder-1.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/bookfinder-1-300x207.png" alt="" title="USQ Book Finder in Library catalogue" width="300" height="207" class="alignnone size-medium wp-image-793" /></a><br />
 At some point in the future we will work to expand it to all campuses and collections. When it is clicked it appears in a new window like this:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/bookfinder-2.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/bookfinder-2-192x300.png" alt="" title="USQ BookFinder display" width="192" height="300" class="alignnone size-medium wp-image-792" /></a><br />
It is aimed to be the same size as an iPhone display so that it fits neatly there. It also works in all browsers that support SVG. Fallback support is provided for IE since it doesn&#8217;t support SVG yet.</p>
<p><strong>ePrints, RPCS and data conversion!</strong><br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/rpcs-webmatrix.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/rpcs-webmatrix-150x150.png" alt="" title="RPCS modifications in Web Matrix" width="150" height="150" class="alignleft size-thumbnail wp-image-788"  align="left" valign="top" /></a>As an interesting exercise I also spent some time converting data from an internal reporting system, RPCS, into our open access repository &#8211; ePrints. This was a fun project which required connecting to RPCS&#8217; MSSQL database and outputting an XML file for ePrints to eat. To do this I figured I&#8217;d pull out <a href="http://www.microsoft.com/web/">Web Matrix</a>, Microsoft&#8217;s cut down editor for web developers. It feels on par with Geany though it has a built in web server, request tracking and a database explorer. It also integrates with the Web Platform Installer product which means I can easily install other applications. I used Web Matrix to kick start the Joomla! install for the Access All Databases research project as well.</p>
<p><a href="http://pasamio.com/wp-content/uploads/2011/01/eprints-eclipse.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/eprints-eclipse-150x150.png" alt="" title="ePrints Author ID XML file in Eclipse" width="150" height="150" class="alignright size-thumbnail wp-image-791"  align="right" valign="top" /></a>The RPCS data is loaded into our ePrints system along side the <a href="http://pasamio.com/2009/08/28/eprints-author-id/">Author ID</a> project that existed there. We&#8217;re also pulling across the data from their system which is going to result in duplicate authors until we merge them down to uniques however doing so in an automated manner isn&#8217;t easily possible. There is a whole heap of work to get things together but all in all we&#8217;re doing well.</p>
<p><strong>EQUELLA Moodle module</strong><br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/moodle-equella-1.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/moodle-equella-1-150x150.png" alt="" title="Screenshot of EQUELLA Moodle module 1" width="150" height="150" class="alignleft size-thumbnail wp-image-790" align="left" valign="top" /></a>Last but not least I&#8217;ve been playing with the EQUELLA Moodle module. It adds an extra option to the Moodle resource drop down and enables access to select items from the EQUELLA repository software. </p>
<p><a href="http://pasamio.com/wp-content/uploads/2011/01/moodle-equella-2.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/moodle-equella-2-150x150.png" alt="" title="Screenshot of EQUELLA Moodle module 2" width="150" height="150" class="alignright size-thumbnail wp-image-789"  align="right" valign="top" /></a>I&#8217;ve used Web Matrix here to deploy out a quick Moodle site utilising the same Web Platform Installer technology and managed to get up and running quickly with everything. The deployment of the module to our main Moodle environment would enable lecturers to directly select course readings to embed in relevant modules on their Moodle course pages &#8211; exciting!</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/02/01/month-in-review-january/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Putting Token Login to work</title>
		<link>http://pasamio.com/2009/02/22/putting-token-login-to-work/</link>
		<comments>http://pasamio.com/2009/02/22/putting-token-login-to-work/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 09:07:00 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[authentication]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[jauthtools]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=272</guid>
		<description><![CDATA[So a few weeks ago I released JAuthTools 1.5.4 which features Token Login. Token Login was created to solve the need to generate a secure token that you can use for automatic login, for example with stuff like newsletters. Today I&#8217;m going to show you how you can write something simple with Token Login to [...]]]></description>
			<content:encoded><![CDATA[<p>So a few weeks ago I released JAuthTools 1.5.4 which features Token Login. Token Login was created to solve the need to generate a secure token that you can use for automatic login, for example with stuff like newsletters. Today I&#8217;m going to show you how you can write something simple with Token Login to handle automatic login with tokens in a unique problem case.<br />
<span id="more-272"></span><br />
The other day on the JAuthTools mailing list there was an email of a weird case where the user&#8217;s session was being created initially with the SSO system but as soon as they clicked around it appeared like they logged out. With a bit of work we managed to work out the initial hit was proxied and the session was being created for the proxy not for the actual user. So initially the user was being successfully authenticated which gave me an idea.</p>
<p>My solution was to use token login to handle the actual request. The process is a tad convoluted, but the diagram should explain how the system works:<br />
<a href="http://pasamio.com/wp-content/uploads/2009/02/tokenlogin-sample.png"><img src="http://pasamio.com/wp-content/uploads/2009/02/tokenlogin-sample-143x300.png" alt="" title="Workflow Diagram" width="143" height="300" class="alignnone size-medium wp-image-273" /></a><br />
So the user logs into a remote service, which proxies a username to the Joomla! which is picked up by SSO HTTP in a custom component which generates a token using the detected username, redirects the user to the token login component (not through the proxy) which then lets the user log in and continue through the site.</p>
<p>So what we need to create is a new component to handle detecting the user, creating the token and them redirecting them. We can use the SSO HTTP plugin to handle detecting the remote user perfectly fine (this has already been tested) and the Token Login component can handle validating tokens and redirecting users.</p>
<p><strong>Step 1: Prerequisites</strong><br />
I&#8217;m going to use the JAuthTools packages available from Joomla!Code. To install these, you will need to install the <a href="http://sammoffatt.com.au/os/index.php/joomla-15-products/10-advanced-tools">Advanced Tools</a> package first before you get started. The latest version is <a href="http://joomlacode.org/gf/download/frsrelease/6797/22390/com_advancedtools.tgz">Advanced Tools 1.5.1</a> available from JoomlaCode.</p>
<p>Once we&#8217;ve got the Advanced Tools installed, we&#8217;re going to need the <a href="http://joomlacode.org/gf/download/frsrelease/9530/36171/pkg_jauthtools_core.tgz">JAuthTools 1.5.4 Core package</a>. This will give us the SSO library that we&#8217;re going to use later on. We will also need the <a href="http://joomlacode.org/gf/download/frsrelease/9530/36175/pkg_jauthtools_ssoplugins.tgz">SSO plugins</a> package (for the SSO HTTP plugin in our case) and the <a href="http://joomlacode.org/gf/download/frsrelease/9530/36176/pkg_jauthtools_tokenlogin.tgz">Token Login package</a>. As we&#8217;re not using the user source plugins for this case (both LDAP and Session are provided by default) we don&#8217;t need to install them and since we&#8217;re going to write our own SSO detection component we don&#8217;t need to use the options offered by the SSO package.</p>
<p>Once we&#8217;ve got all of the prerequisites installed we can start building the component</p>
<p><strong>Step 2: Building the component</strong><br />
So we&#8217;ll start building our component with the basic few lines all components require:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;?php<br />
defined('_JEXEC') or die();</div></div>
<p>This basic check ensures that we&#8217;re within Joomla!&#8217;s confines or kills the execution if we&#8217;re not. From here, lets set up some basic variables:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$landingpage = 'index.php';<br />
$autocreate = false;</div></div>
<p>These are two variables we&#8217;re going to use later. The landing page is used for token login to redirect the user to a page once they&#8217;ve been authenticated successfully. The autocreate option is utilised by the SSO system to determine if it should automatically create the user. Keep these in mind as we&#8217;ll use them later on.</p>
<p>In this next phase we&#8217;re going to take a copy of the current user and then use the SSO system to attempt to do the login. If its successful, the user&#8217;s ID will change and we can then create a token for them and redirect so they can login, if not we&#8217;ll redirect them with an error message:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$user =&amp; JFactory::getUser();<br />
$oldid = $user-&gt;id;<br />
jimport('jauthtools.sso');<br />
jimport('jauthtools.usersource');<br />
$sso = new JAuthSSOAuthentication();<br />
$sso-&gt;doSSOAuth($autocreate);</div></div>
<p>So we get a reference to the user object, get a copy of the user ID, import the SSO library, create a new SSO authentication object and handle authentication. We see the $autocreate variable we initialised before used here. We could load the plugins ourselves and handle everything but the doSSOAuth call will handle this for us, create the users session and if requested attempt to create the user if they don&#8217;t exist. We can then check if the user ID&#8217;s are different and then create a token to direct the user back:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">if($oldid != $user-&gt;id) {<br />
&nbsp; &nbsp; &nbsp; &nbsp;jimport('jauthtools.token');<br />
&nbsp; &nbsp; &nbsp; &nbsp;$dbo =&amp; JFactory::getDBO();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token = new JAuthToolsToken($dbo);</div></div>
<p>A sizable chunk of code. So we check if the user ID has changed (typically from unauthenticated to authenticated, we could also just check if the user ID != 0 as well). We then import the token login library, grab a copy of the database object and then create a new token.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;set('username', $user-&gt;username);<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;set('expiry', time() + 3600); // now + 1 hr (60 * 60)<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;set('logins', 1);<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;set('landingpage', $landingpage);<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;store();</div></div>
<p>So with the token, we set the username to be that of the currently authenticated user (which we know is correct), set the expiry to be the present time plus an hour. Since this data is only &#8216;temporary&#8217; we don&#8217;t bother with JDate and just use the server time. If the server transitions to or from daylight savings there could be an issue but since the user should be redirected rather quickly that seems like an unlikely possibility. We set the number of logins that the token is valid for, which for this case is only one and then we set the token&#8217;s landing page to be the value of $landingpage that we set before. Once we&#8217;ve set all of the data we call the &#8216;store&#8217; function to save all of this to the database which will also trigger the generation of the login token.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp;$session =&amp; JFactory::getSession();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$session-&gt;destroy();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$app =&amp; JFactory::getApplication();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$app-&gt;redirect($token-&gt;generateLoginUrl());</div></div>
<p>Since the session we&#8217;re currently in is invalid, we destroy it for a bit of extra security and then we redirect the user to the token login component. Since this request will get proxied as a redirect to the real site (hopefully the proxy doesn&#8217;t rewrite the redirect header coming back otherwise this will fail), token login can then authenticate the user (again) and create a session for them without the proxies&#8217; interference. There is however one last part of our component, which is the else case for if the user doesn&#8217;t get detected:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">} else {<br />
&nbsp; &nbsp; &nbsp; &nbsp;$app =&amp; JFactory::getApplication();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$app-&gt;redirect('index.php', JText::_('Invalid SSO Request'));<br />
}</div></div>
<p>So if we don&#8217;t detect anything, redirect the user to index.php with the message &#8216;Invalid SSO Request&#8217;. Too easy almost!</p>
<p>So for reference below is the final completed component file, don&#8217;t forget to update the values of $landingpage and $autocreate:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;?php<br />
defined('_JEXEC') or die('nachos libre!');<br />
$landingpage = 'http://www.google.com';<br />
$autocreate = false;<br />
$user =&amp; JFactory::getUser();<br />
$oldid = $user-&gt;id;<br />
jimport('jauthtools.sso');<br />
jimport('jauthtools.usersource');<br />
$sso = new JAuthSSOAuthentication();<br />
$sso-&gt;doSSOAuth($autocreate);<br />
if($oldid != $user-&gt;id) {<br />
&nbsp; &nbsp; &nbsp; &nbsp;jimport('jauthtools.token');<br />
&nbsp; &nbsp; &nbsp; &nbsp;$dbo =&amp; JFactory::getDBO();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token = new JAuthToolsToken($dbo);<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;set('username', $user-&gt;username);<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;set('expiry', time() + 3600); // now + 1 hr (60 * 60)<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;set('logins', 1);<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;set('landingpage', $landingpage);<br />
&nbsp; &nbsp; &nbsp; &nbsp;$token-&gt;store();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$session =&amp; JFactory::getSession();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$session-&gt;destroy();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$app =&amp; JFactory::getApplication();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$app-&gt;redirect($token-&gt;generateLoginUrl());<br />
} else {<br />
&nbsp; &nbsp; &nbsp; &nbsp;$app =&amp; JFactory::getApplication();<br />
&nbsp; &nbsp; &nbsp; &nbsp;$app-&gt;redirect('index.php', JText::_('Invalid SSO Request'));<br />
}</div></div>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2009/02/22/putting-token-login-to-work/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Today: 6-Nov-2008: Barcodes and Backups!</title>
		<link>http://pasamio.com/2008/11/06/today-6-nov-2008-barcodes-and-backups/</link>
		<comments>http://pasamio.com/2008/11/06/today-6-nov-2008-barcodes-and-backups/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 11:33:19 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=58</guid>
		<description><![CDATA[As it seems a few of my mornings are starting I played a quick albeit one sided game of Dawn of War with my house mate to test that the network play was working between my Mac (using CrossOver Games) and his PC (Windows XP). Suffice to say everything worked fine network wise, my Mac [...]]]></description>
			<content:encoded><![CDATA[<p>As it seems a few of my mornings are starting I played a quick albeit one sided game of Dawn of War with my house mate to test that the network play was working between my Mac (using CrossOver Games) and his PC (Windows XP). Suffice to say everything worked fine network wise, my Mac stil has some visual issues but I&#8217;m not too phased about that at the moment. So that was an interesting start to the day and when he returns from work it&#8217;ll be an interesting end as well.</p>
<p>Work again is fun as always. We&#8217;re working on solving various election problems and getting envelopes. Our printers came back stating that they didn&#8217;t want to do Code 128 for the barcodes because its too hard preferring Code 39 instead. As the day progressed it turned out that we&#8217;re going to use Code 128 more for space issues because we&#8217;ve got that much junk going out on the envelopes. This saga has been occurring over a few days, I really want to get a few proofs done before we actually get the batch done from them first to ensure that everything is good but we&#8217;ll see. Testing on the system we&#8217;re going to be using to track the election on has also begun to ensure that the system can in fact handle items properly, we had a word of warning from one of the newer guys from the regions that it had issues and that was with nowhere near the same workload. So we&#8217;re hoping we can test the system out with a few VM&#8217;s emulating the system for multiple data entry. There have been issues with the system in question in the past (in fact the system is being replaced)  so hopefully this won&#8217;t be a time when it does have issues otherwise we&#8217;re going to have large numbers of problems.</p>
<p>The bulk of my day was spent working on the restore framework for Joomla! 1.6, or more accurately the new JDataLoad system and the JLoaderSql adapter. The data load system, as its name suggests, loads data into the Joomla! database from a data source. In this case I&#8217;m looking at the SQL files which in my sample data is actually one of the 1.5 sites that I&#8217;m an administrator over at work. Its relatively small in the grand scheme of things with only a few meg and around 9000 queries. So far its been sufficient to find a few issues, one being dropping a table before a task yield which caused a missing table error from J! (put in a simple patch for that, if the last query was a drop, go to the next query in the hope that its a create) and another was a minor typo error which caused some multiline strings to be processed incorrectly when they were on a yield boundary again as well. But all in all its working well even importing data faster than MySQL Query Browser was (to its fairness it highlights each query as it goes) in my test runs. Its now committed to trunk and when I get a chance I&#8217;ll write up something about it and put it somewhere</p>
<p>Extra fun today came from trying to write up business cases for the projects I want to work on in the next year or so until I have to write it up again (fun, yeah!). Initially my boss (who is great) thought of me and tried to convert the files from Excel into a more Open format so that I can get at it on my Mac and Linux box. Somewhere during the conversion however the fields got trimmed and data lost, so I offered to edit the document in Excel directly using our Windows only document management system logging in via our Citrix services. The system, OpenText&#8217;s DM, isn&#8217;t too bad for the most part and does the job well and today I found no fault with it. Today was the day when Microsoft&#8217;s tools decided they wanted to misbehave.</p>
<p>Earlier in the week my boss had emailed me a doclink to the document stored in DM. A doclink is a small text file with the document number in it which basically triggers the system to load the specified document, something that usually works quite well. However Outlook, due to various configuration changes, decided that it didn&#8217;t want to start for some reason even though earlier in the week it was working perfectly fine. After Outlook repeatedly informing me it wanted to recreate my profile and then informing me that it couldn&#8217;t contact my Exchange server and offering to allow me to work offline which consequently failed due to a lack of a profile, I ended up using Mac OS X&#8217;s built in &#8220;Mail&#8221; application (yes, the email application is called &#8220;Mail&#8221;) to get at my email to find the document number and open it. Usefully enough this is done through the IMAP interface on Exchange and worked well and doesn&#8217;t suffer from some of the other issues that the Outlook clients have, such as the address book caching which caches the old Lotus Notes addresses instead of their newer Exchange ones resulting in emails going to the wrong place. Yay Outlook! Suffice to say I found the file and made the changes that I needed to before accosting our Exchange administrator who had returned to see if he could fix the issue &#8211; which he did mind you after some trial and error.</p>
<p>The last little item I looked into was building a system to version the content from Joomla! back into our document management system. The new document management officer assures me that we can do it and has even proposed a nifty way of importing the data into the system. It looks like one of the products we have, KoFax, will help us by allow us to generate XML files which specify the documents that we&#8217;re creating and the different versions. If we can get this to work it will be really awesome as it&#8217;ll mean that our website is in part integrating back into our document management system without hacking into the database! I&#8217;ve still got to build it and work out where we want to target the extension, but suffice to say its on my project list for next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2008/11/06/today-6-nov-2008-barcodes-and-backups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today, 14-Jan-08: Query languages, LDAP, business intelligence and filesystems</title>
		<link>http://pasamio.com/2008/01/14/today-14-jan-08-query-languages-ldap-business-intelligence-and-filesystems/</link>
		<comments>http://pasamio.com/2008/01/14/today-14-jan-08-query-languages-ldap-business-intelligence-and-filesystems/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 07:10:53 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[authentication]]></category>
		<category><![CDATA[businessintelligence]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[edirectory]]></category>
		<category><![CDATA[endoftheday]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[filesystems]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[lca2008]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[linux.conf.au]]></category>
		<category><![CDATA[mdfs]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[pentaho]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=34</guid>
		<description><![CDATA[I&#8217;m going to start regularly writing daily posts about what I did today and the things I found interesting, I&#8217;ll at least try anyway. First up for today is a personal thing, I completed a rather largish Uni assignment today which reminded me of all of the pains that come with C++, but to follow [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to start regularly writing daily posts about what I did today and the things I found interesting, I&#8217;ll at least try anyway.</p>
<p>First up for today is a personal thing, I completed a rather largish Uni assignment today which reminded me of all of the pains that come with C++, but to follow that I returned to working on my filesystem in C, which is just more pain. I got a quick response back, and almost full marks (96%) so I&#8217;m happy for all of the time I put in to get it done and how its probably far more complicated than anything else that will be submitted (it used Boost Signals and a whole heap of other things that I don&#8217;t think will ever be taught in the subject for a long time). But hey, thats just Uni!</p>
<p>Today I finally managed to get Pentaho, some business intelligence (BI) software, to play nicely with Novell eDirectory&#8217;s LDAP interface. I must have missed the option, but Pentaho doesn&#8217;t seem to accept anonymous binding to the LDAP server, which means I need to bind as a user. By default our users funnily enough have less access than the anonymous account (which is actually a proxy account with full browse permissions). The solution was simple enough: we shunted our dummy Pentaho user into the same group as the anonymous proxy account and everything worked. So I&#8217;ve now got Pentaho using LDAP for authentication (yay!) and a MySQL database to get its role/group permissions. Funnily enough when its all said and done the documentation is pretty close to the mark.</p>
<p>But once I had that I don&#8217;t have an ability to manage the groups/roles within Pentaho, so I end up having to write some small PHP to manage that. Luckily I worked on a project a while back that I called &#8220;Joomla! Central Management for Users&#8221; which basically connected directly to MySQL databases of Joomla! installs and altered the users. I had originally built it with a plugin infrastructure in mind so that I could plug other stuff into it later. Starting this morning it only had a &#8216;connector&#8217; for Joomla! 1.0 via MySQL and LDAP, now it has one for the Pentaho security tables. This means I can easily copy users from LDAP or Joomla! into Pentaho without too much issues and has a debugged user interface already. But wait theres more!</p>
<p>When I was originally developing the tool I wrote a query language for it. See, SQL is a great language for databases, but its a bit hard to apply in situations where you don&#8217;t quite need all of that power. So I wrote my own query language. Its quite simple it can validate simple attributes and allows for set operations within &#8220;Sites&#8221; (a site is a container for users and groups). So for example I want to see all of the users who are on our web site but not in our LDAP directory:<br />
existsin &#8220;Web Sites&#8221; and not existsin &#8220;LDAP&#8221;</p>
<p>Primitive sure, but it because writing a large SQL expression for something simple. I hope to expand on it, but it already does what it needs to do for the time being.</p>
<p>So I&#8217;ve covered query languages, LDAP and BI! All I need now is the filesystem news. Today there was a whole heap of fan fare on Slashdot about the ZFS news from Apple, whilst thats cool and all (especially since I don&#8217;t mind Apple&#8217;s UI), I personally have my own filesystem that I&#8217;ve gotten back into to do some work on. It also happens to be a Uni assignment due on Friday! So I&#8217;ll be back to working on that and hopefully I&#8217;ll have it to a nice stage that I can do some lightening talks at linux.conf.au!</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2008/01/14/today-14-jan-08-query-languages-ldap-business-intelligence-and-filesystems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A look at Google Apps for Your Domain</title>
		<link>http://pasamio.com/2007/10/08/a-look-at-google-apps-for-your-domain/</link>
		<comments>http://pasamio.com/2007/10/08/a-look-at-google-apps-for-your-domain/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 04:37:07 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=13</guid>
		<description><![CDATA[With Toowoomba in the middle of an amalgamation with 7 different local government authorities who share our boundaries (or in the case of some not even that!) life is looking mighty interesting on various fronts. One of these fronts involve the IT issue of merging multiple disparate systems into one single system.Like any medium sized [...]]]></description>
			<content:encoded><![CDATA[<p>With Toowoomba in the middle of an amalgamation with 7 different local government authorities who share our boundaries (or in the case of some not even that!) life is looking mighty interesting on various fronts. One of these fronts involve the IT issue of merging multiple disparate systems into one single system.Like any medium sized organisation (Toowoomba City Council currently employs around 900 people) we have a few systems in place to handle things. We&#8217;re using Pathway for our LIS data (who lives where and if they have a dog or not style stuff), JD Edwards for financials and assets (e.g. controlling pay roll), ESRI&#8217;s suite of GIS products (e.g. ArcMap and ArcSDE; working out where things are in the City) and Hummingbird&#8217;s Document Management solution to maintain our corporate documents. The challenge is to take these products and try and merge the information stored in seven different organisations who in some places won&#8217;t share any applications and integrate it into one.To make matters worse the organisations are spread in some cases hours away from where we are. So the problem I&#8217;m looking at is how do we integrate email, contacts and documents for all of these people together. They&#8217;re not going to have any of our standard software beyond Office which is a problem as we use Notes and like to think that one day we&#8217;ll move to open source.So Google Apps becomes an option for this transitional period while we try to work out what we&#8217;re going to deploy and how we&#8217;re going to deploy it. It works within a web browser and an internet connection, its relatively lightweight compared to other distributed solutions (large file transfers weak network connections, Citrix deployments) and offers a far more responsive nature than either of these because technically they are native to the desktop application (e.g. the web browser).Setting it up is an interesting situation as part of it requires &#8216;verification&#8217;.  There are a few options to get verified:
<ol id="null">
<li>Put a HTML file on some web space (this didn&#8217;t work for me)</li>
<li>Set up a new DNS pointer for Google to find (this also didn&#8217;t work)</li>
<li>Just set up the DNS the way it needs to be (e.g. pointing things to ghs.google.com)</li>
</ol>
<p> The last one ended up being the solution for me even though it isn&#8217;t obvious when you first start off that things will work this way. Thankfully you can get things up and running without having to verify that you own the domain, just end up setting up your DNS to point to the right place solves things anyway. So what does Google give you?
<ul id="null">
<li>Mail &#8211; Their Google Mail product available on your domain, the main reason a lot of people will be deploying this solution.</li>
<li>Calendar &#8211; Their calendar solution is integrated into the mail address book. Interestingly enough they don&#8217;t have the address book feature as another application which for building corporate address books might be handy, or linking into a website.</li>
<li>Pages &#8211; Google Pages is perhaps one of the lesser known products in Google&#8217;s application stable, is a product similar to the old Homesite and Geocities products of old (before they sold out and had lots of ads, then people realised that doing everything manually most of the time was too much effort and they just wanted a template and WordPress did all they needed, or Joomla! did what they wanted better). I&#8217;ve used it since the early beta and this, like its brothers is stand alone as well.</li>
<li>Docs and Spreadsheets &#8211; Again, the boon here is the integration with Mail&#8217;s address book application which means that you have the ability to share documents (and document control) with different people within your organisation. As an administrator you can also restrict documents to within the domain or allow users to share it externally, so this doesn&#8217;t make it less secure than other solutions for document sharing (still doesn&#8217;t stop users exporting it to another format and emailing it manually anyway).</li>
<li>Chat &#8211; The final major application is Google&#8217;s XMPP powered IM solution, which again integrates into Mail&#8217;s address book to provide contact list management integrated with your contact list. This is available via the web browser standalone interfaces, your start page, within the Mail application or using a dedicted IM client such as Adium on the Mac, Google&#8217;s Talk application on Windows or the Gajim Jabber client or Pidgin on Linux. These chats can also be logged and are available in the Mail application as well.</li>
<li>Start &#8211; Like the customised Google home page (iGoogle), this is provided as an option for your domain as well. Again it integrates with the rest of the products like Mail, Calendar, Talk and Docs to allow for a very functional first page to go to (more functional than most options I&#8217;ve seen around the place). Its heavy integration in a small way puts it at the functionality level of something like Microsoft&#8217;s Sharepoint style solution, however the Google solution is not customisable (unlike Sharepoint) however out of the box it enables users to see more information about their data (such as the Docs integration)</li>
</ul>
<p>This was just a review of the standard edition, the premier edition (at $50/user/year) offers a few more interesting features such as optional ads, policy and message recovery, resource scheduling, single sign on and other user services (including a 10 GB mail box). As an option to a Microsoft powered world, some of the tools are better integrated and easier to use (collaboration and versioning is awesome in Google&#8217;s Docs product) however the simple problem is that when the network link goes down, so does your entire office productivity.Something to dwell on.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2007/10/08/a-look-at-google-apps-for-your-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

