<?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>Eyelock</title>
	<atom:link href="http://www.eyelock.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.eyelock.net/blog</link>
	<description>An involuntary dilation of the iris</description>
	<lastBuildDate>Tue, 07 Feb 2012 12:16:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Enable Debug Statements when using Data Services iOS SDK</title>
		<link>http://www.eyelock.net/blog/archives/480?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=enable-debug-statements-when-using-data-services-ios-sdk</link>
		<comments>http://www.eyelock.net/blog/archives/480#comments</comments>
		<pubDate>Mon, 16 Jan 2012 15:30:43 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[data services]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/?p=480</guid>
		<description><![CDATA[To enable debug statements for the iOS SDK, add the following to your project code as the first line before any component of the iOS SDK is initialized. [[DSLog log] setLogLevel:DSLogLevelDebug]; You should then get a more verbose output in your logs from the iOS SDK, much like you get from turning on Flex logging [...]]]></description>
			<content:encoded><![CDATA[<p>To enable debug statements for the iOS SDK, add the following to your project code as the first line before any component of the iOS SDK is initialized.</p>
<p>[[DSLog log] setLogLevel:DSLogLevelDebug];</p>
<p>You should then get a more verbose output in your logs from the iOS SDK, much like you get from turning on Flex logging with TraceTarget.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/480/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Services Historical Build Numbers</title>
		<link>http://www.eyelock.net/blog/archives/475?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=data-services-historical-build-numbers</link>
		<comments>http://www.eyelock.net/blog/archives/475#comments</comments>
		<pubDate>Tue, 13 Dec 2011 10:21:27 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[data services]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[LCDS]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/?p=475</guid>
		<description><![CDATA[I&#8217;ve been asked about the build numbers for the various Golden Master release versions of Data Services before. You can find out the version you are running by looking at your start up logs of your Data Services web app. FDS 2.0 = 143451 FDS 2.0.1 = 155539 LCDS 2.5 = 166921 LCDS 2.5.1 = [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been asked about the build numbers for the various Golden Master release versions of Data Services before. You can find out the version you are running by looking at your start up logs of your Data Services web app.</p>
<ul>
<li>FDS 2.0 = 143451</li>
<li>FDS 2.0.1 = 155539</li>
<li>LCDS 2.5 = 166921</li>
<li>LCDS 2.5.1 = 173666</li>
<li>LCDS 2.6 = 201390</li>
<li>LCDS 3.0 = 254255</li>
<li>LCDS 3.1 = 273934</li>
<li>ADEP DS 4.5 = 315019</li>
<li>ADEP DS 4.6 = 329202</li>
</ul>
<div>If your Data Services Web App reports a build that is in between one of these, the likelihood is you are running a hotfix version.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/475/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Simple Cross-Origin Resource Sharing Example Explained</title>
		<link>http://www.eyelock.net/blog/archives/430?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-simple-cross-origin-resource-sharing-example-explained</link>
		<comments>http://www.eyelock.net/blog/archives/430#comments</comments>
		<pubDate>Thu, 08 Dec 2011 14:39:56 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[cfml]]></category>
		<category><![CDATA[cors]]></category>
		<category><![CDATA[cross origin]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[same origin]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/?p=430</guid>
		<description><![CDATA[I was working on a problem where there was a requirement to log in from a Ajax enabled application to a third party application running on a different host.   Authentication functionality on this third party application was only available via the POST mechanism and I hit the well known (for others) Same Origin policy. [...]]]></description>
			<content:encoded><![CDATA[<p>I was working on a problem where there was a requirement to log in from a Ajax enabled application to a third party application running on a different host.   Authentication functionality on this third party application was only available via the POST mechanism and I hit the well known (for others) <a href="http://en.wikipedia.org/wiki/Same_origin_policy">Same Origin</a> policy.</p>
<p>I&#8217;m in the middle of rediscovering JavaScript again after several years in the Flex world, so I decided to take some time out and figure out what can be done here. In short, nothing can really be done in the Ajax application side.   The browser implementation will in general block access to any response from the third party server not letting the JavaScript anywhere near the information you might need ( in this case the authentication token).</p>
<p>The browser also won&#8217;t allow you to set the <a title="W3C Specification on HTTP Headers" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">Authorization </a>header on an outgoing Ajax request by default either, so using that as authentication (along with SSL) was also a non starter. That is totally understandable from a security viewpoint, and while their are <a title="iFrame based cross domain workaround" href="http://softwareas.com/cross-domain-communication-with-iframes">hacks </a>and <a title="Flash Based Cross Domain Workaround" href="http://flxhr.flensed.com/">workarounds</a>, I wasn&#8217;t comfortable with recommending them.</p>
<p>First, let&#8217;s have a look at the request/response flow when trying to access a cross domain script via POST and Ajax.   The client and server scripts don&#8217;t really change in what I am trying to show <a href="http://www.w3.org/TR/cors/">Cross-Origin Resource Sharing</a> (CORS) so I&#8217;ll list them here (download at the end of the post).</p>
<p><span class="Apple-style-span" style="font-size: 20px; font-weight: bold;">Step 1: Without CORS</span></p>
<p>Firstly, I want to demonstrate the request/response flow without CORS implemented.   I&#8217;ve dropped the code listed below in a folder, and I have both localhost, and a VirtualHost (called &#8216;cf901&#8242;) pointing to the same htdocs folder.   This allows me to make cross domain requests without leaving my development machine. The basic flow of events is:</p>
<ol>
<li>Call http://localhost/tests/accesscontrol/cors-step01/client.html</li>
<li>Click on a button, which uses the code listed above to make an Ajax POST request to http://cf901/tests/accesscontrol/cors-step01/post.cfm</li>
<li>If successful, the client.html will get a simple JSON return from post.cfm</li>
</ol>
<h3>Step 1.1: Call the client.html</h3>
<p>I&#8217;m utilising JQuery to make the Ajax calls easier, and the code is pretty simple, Base64 is a utility function found <a href="http://www.webtoolkit.info/">here</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//LOGIN</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#callMe&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>		
&nbsp;
		$.<span style="color: #660066;">ajax</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
			url<span style="color: #339933;">:</span> <span style="color: #3366CC;">'http://cf901/tests/accesscontrol/post.cfm'</span><span style="color: #339933;">,</span>
			type<span style="color: #339933;">:</span> <span style="color: #3366CC;">'POST'</span><span style="color: #339933;">,</span>
			success<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'success'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
			error<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'error'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
			beforeSend<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>req<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #003366; font-weight: bold;">var</span> headerValue <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Basic '</span> <span style="color: #339933;">+</span> Base64.<span style="color: #660066;">encode</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#username&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">':'</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#password&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				req.<span style="color: #660066;">withCredentials</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'true'</span><span style="color: #339933;">;</span>
				req.<span style="color: #660066;">setRequestHeader</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Authorization'</span><span style="color: #339933;">,</span> headerValue<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The important points to note from the code above are:</p>
<ul>
<li>Setting the &#8216;withCredentials&#8217; on the <a title="jQuery Ajax Method Documentation" href="http://api.jquery.com/jQuery.ajax/">jQuery Ajax</a> request.</li>
<li>We add our HTTP Basic Authorization header to the outgoing request (more later)</li>
</ul>
<p>Here are the headers of the request, there is nothing abnormal and the response is just to return the HTML page:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">GET <span style="color: #339933;">/</span>tests<span style="color: #339933;">/</span>accesscontrol<span style="color: #339933;">/</span>cors<span style="color: #339933;">-</span>step01<span style="color: #339933;">/</span>client.<span style="color: #660066;">html</span> HTTP<span style="color: #339933;">/</span><span style="color: #CC0000;">1.1</span>
Host<span style="color: #339933;">:</span> localhost
Cache<span style="color: #339933;">-</span>Control<span style="color: #339933;">:</span> no<span style="color: #339933;">-</span>cache
Pragma<span style="color: #339933;">:</span> no<span style="color: #339933;">-</span>cache
User<span style="color: #339933;">-</span>Agent<span style="color: #339933;">:</span> Mozilla<span style="color: #339933;">/</span><span style="color: #CC0000;">5.0</span> <span style="color: #009900;">&#40;</span>Windows NT <span style="color: #CC0000;">6.1</span><span style="color: #339933;">;</span> WOW64<span style="color: #009900;">&#41;</span> AppleWebKit<span style="color: #339933;">/</span><span style="color: #CC0000;">535.2</span> <span style="color: #009900;">&#40;</span>KHTML<span style="color: #339933;">,</span> like Gecko<span style="color: #009900;">&#41;</span> Chrome<span style="color: #339933;">/</span>15.0.874.121 Safari<span style="color: #339933;">/</span><span style="color: #CC0000;">535.2</span>
Accept<span style="color: #339933;">:</span> text<span style="color: #339933;">/</span>html<span style="color: #339933;">,</span>application<span style="color: #339933;">/</span>xhtml<span style="color: #339933;">+</span>xml<span style="color: #339933;">,</span>application<span style="color: #339933;">/</span>xml<span style="color: #339933;">;</span>q<span style="color: #339933;">=</span><span style="color: #CC0000;">0.9</span><span style="color: #339933;">,*</span><span style="color: #006600; font-style: italic;">/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3</span></pre></div></div>

<h3>Step 1.2: Do a post to the different origin post.cfm</h3>
<p>For ease of use, the server side target script is just a CFML page which echoes back some JSON.   Since I only want this data to be available to POST requests, I am doing a quick and dirty check in the script for simplicity:</p>

<div class="wp_syntax"><div class="code"><pre class="coldfusion" style="font-family:monospace;">&amp;lt;!--- I only want to return when this is POSTed to ---&amp;gt;
&amp;lt;cfset httpRequestData = getHTTPRequestData()/&amp;gt;
&amp;lt;cfif listFindNoCase(&quot;POST&quot;, httpRequestData.method) eq 1&amp;gt;
	&amp;lt;cfset returnStruct = {}/&amp;gt;
    &amp;lt;cfset returnStruct.form = form/&amp;gt;
    &amp;lt;cfset returnStruct.date = now()/&amp;gt;
    &amp;lt;cfcontent reset=&quot;true&quot;/&amp;gt;&amp;lt;cfoutput&amp;gt;#serializeJSON(returnStruct)#&amp;lt;/cfoutput&amp;gt;
&amp;lt;/cfif&amp;gt;</pre></div></div>

<p>Since we haven&#8217;t actually configured the Cross-Origin Resource sharing yet, and there is currently no HTTP Basic Auth protection, this should be a straightforward request and response if we were carrying out the action from HTML with a POST operation. As we are making a Ajax request and I&#8217;m using Chrome, it does a pre-flight OPTIONS check.   You can see the request headers below:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">OPTIONS <span style="color: #339933;">/</span>tests<span style="color: #339933;">/</span>accesscontrol<span style="color: #339933;">/</span>cors<span style="color: #339933;">-</span>step01<span style="color: #339933;">/</span>post.<span style="color: #660066;">cfm</span> HTTP<span style="color: #339933;">/</span><span style="color: #CC0000;">1.1</span>
Host<span style="color: #339933;">:</span> cf901
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Request<span style="color: #339933;">-</span>Method<span style="color: #339933;">:</span> POST
Origin<span style="color: #339933;">:</span> http<span style="color: #339933;">:</span><span style="color: #006600; font-style: italic;">//localhost</span>
User<span style="color: #339933;">-</span>Agent<span style="color: #339933;">:</span> Mozilla<span style="color: #339933;">/</span><span style="color: #CC0000;">5.0</span> <span style="color: #009900;">&#40;</span>Windows NT <span style="color: #CC0000;">6.1</span><span style="color: #339933;">;</span> WOW64<span style="color: #009900;">&#41;</span> AppleWebKit<span style="color: #339933;">/</span><span style="color: #CC0000;">535.2</span> <span style="color: #009900;">&#40;</span>KHTML<span style="color: #339933;">,</span> like Gecko<span style="color: #009900;">&#41;</span> Chrome<span style="color: #339933;">/</span>15.0.874.121 Safari<span style="color: #339933;">/</span><span style="color: #CC0000;">535.2</span>
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Request<span style="color: #339933;">-</span>Headers<span style="color: #339933;">:</span> Origin<span style="color: #339933;">,</span> Authorization<span style="color: #339933;">,</span> Accept
Accept<span style="color: #339933;">:</span> <span style="color: #339933;">*</span><span style="color: #006600; font-style: italic;">/*
Referer: http://localhost/tests/accesscontrol/cors-step01/client.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3</span></pre></div></div>

<p>The important points to note from the above request are:</p>
<ul>
<li>We didn&#8217;t get a POST request, instead we got a Pre-flight OPTIONS request.</li>
<li>There are extra headers in the request, which wouldn&#8217;t be in a normal POST from an HTML page (Access-Control-* and Origin).</li>
<li>These headers give the server a chance to respond and tell the browser if it will allow the request (more on these later in Step 2)</li>
<li>Note that there is no Authorization header, even though we asked for one to be added.</li>
</ul>
<h3>Step 1.3: Response to the client.html Ajax call</h3>
<p>So what does the response look like? See below:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">HTTP<span style="color: #339933;">/</span><span style="color: #CC0000;">1.1</span> <span style="color: #CC0000;">200</span> OK
Date<span style="color: #339933;">:</span> Thu<span style="color: #339933;">,</span> 08 Dec <span style="color: #CC0000;">2011</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">:</span><span style="color: #CC0000;">24</span><span style="color: #339933;">:</span>00 GMT
Server<span style="color: #339933;">:</span> Apache<span style="color: #339933;">/</span>2.2.13 <span style="color: #009900;">&#40;</span>Win32<span style="color: #009900;">&#41;</span> Communique<span style="color: #339933;">/</span>4.0.11 JRun<span style="color: #339933;">/</span><span style="color: #CC0000;">4.0</span>
Transfer<span style="color: #339933;">-</span>Encoding<span style="color: #339933;">:</span> chunked
Content<span style="color: #339933;">-</span>Type<span style="color: #339933;">:</span> text<span style="color: #339933;">/</span>html<span style="color: #339933;">;</span> charset<span style="color: #339933;">=</span>UTF<span style="color: #339933;">-</span><span style="color: #CC0000;">8</span></pre></div></div>

<p>The response looks good, an HTTP 200 but no JSON struct is returned as this wasn&#8217;t a POST request, but referring to our client it made the error callback, not the success? Lets have a look at the JavaScript console:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">XMLHttpRequest cannot load http<span style="color: #339933;">:</span><span style="color: #006600; font-style: italic;">//cf901/tests/accesscontrol/cors-step01/post.cfm.</span>
        Origin http<span style="color: #339933;">:</span><span style="color: #006600; font-style: italic;">//localhost is not allowed by Access-Control-Allow-Origin.</span></pre></div></div>

<p>So basically, even though the HTTP POST from Ajax completed successfully, the browser denied the JavaScript access to the return request, as well as us denying access to the data since it didn&#8217;t come from a POST request (in reality, our web application is not responding to the OPTIONS request properly, but that is a whole different topic). With access denied to the returned information from the server to the Ajax application, we cannot do any real functionality on the web application, since by W3C specs, the only allowed HTTP methods in this configuration are by definition idempotent and cannot make any changes to the resources being accessed. So what can we do to solve this?   <a href="http://www.w3.org/TR/cors/">Cross-Origin Resource Sharing</a> (CORS) is our friend.</p>
<h2>Step 2: With Cross-Origin Resource Sharing</h2>
<p>For the 2<sup>nd</sup> step of this excercise, I&#8217;m going to introduce HTTP Basic Authentication to the sample. This was the original intent of my testing, but in the 1<sup>st</sup> step I wanted to keep it as simple as possible.</p>
<p>Thankfully we stand on the shoulders of giants, and one of the ColdFusion community has kindly shared a snippet on how to implement a psudeo Basic Authentication via the Application.cfc. You can get the original code from <a title="Nathan Mische's example of HTTP Basic Auth in an Application.cfc" href="http://www.mischefamily.com/nathan/index.cfm/2008/8/13/Basic-Authentication-With-ColdFusion">Nathan Mische’s example</a>.  The client.html and post.cfm are the same as in Step 1.</p>
<p>The flow should be fairly similar, although this time we are going to implement CORS at the Apache level.   Implementing CORS means adding some extra headers to the original response to the Ajax call.   The flow this time will look slightly different when we have it configured successfully:</p>
<ol>
<li>Call http://localhost/tests/accesscontrol/cors-step02/client.html</li>
<li>Click on a button, which uses the code listed above to make an Ajax POST request to http://cf901/tests/accesscontrol/cors-step02/post.cfm and browser makes an OPTIONS request to the web server.</li>
<li>The Web Server responds with the appropriate CORS enabled response.</li>
<li>The browser then makes a 2nd POST request if it checks the CORS response and determines that the Ajax script is allowed to access the server side resource.</li>
<li>Browser passes the POST response back to the JavaScript execution.</li>
</ol>
<h3>Step 2.1: Call the client.html</h3>
<div>This step yields a similar result to Step 1.1, there is no different in the GET request and response.</div>
<h3>Step 2.2: Client makes Ajax POST Request</h3>
<p>The server side post.cfm is the still the same, and we get the same OPTIONS HTTP request:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">OPTIONS <span style="color: #339933;">/</span>tests<span style="color: #339933;">/</span>accesscontrol<span style="color: #339933;">/</span>cors<span style="color: #339933;">-</span>step02<span style="color: #339933;">/</span>post.<span style="color: #660066;">cfm</span> HTTP<span style="color: #339933;">/</span><span style="color: #CC0000;">1.1</span>
Host<span style="color: #339933;">:</span> cf901
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Request<span style="color: #339933;">-</span>Method<span style="color: #339933;">:</span> POST
Origin<span style="color: #339933;">:</span> http<span style="color: #339933;">:</span><span style="color: #006600; font-style: italic;">//localhost</span>
User<span style="color: #339933;">-</span>Agent<span style="color: #339933;">:</span> Mozilla<span style="color: #339933;">/</span><span style="color: #CC0000;">5.0</span> <span style="color: #009900;">&#40;</span>Windows NT <span style="color: #CC0000;">6.1</span><span style="color: #339933;">;</span> WOW64<span style="color: #009900;">&#41;</span> AppleWebKit<span style="color: #339933;">/</span><span style="color: #CC0000;">535.2</span> <span style="color: #009900;">&#40;</span>KHTML<span style="color: #339933;">,</span> like Gecko<span style="color: #009900;">&#41;</span> Chrome<span style="color: #339933;">/</span>15.0.874.121 Safari<span style="color: #339933;">/</span><span style="color: #CC0000;">535.2</span>
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Request<span style="color: #339933;">-</span>Headers<span style="color: #339933;">:</span> Origin<span style="color: #339933;">,</span> Authorization<span style="color: #339933;">,</span> Accept
Accept<span style="color: #339933;">:</span> <span style="color: #339933;">*</span><span style="color: #006600; font-style: italic;">/*
Referer: http://localhost/tests/accesscontrol/cors-step02/client.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3</span></pre></div></div>

<div>
<p>This time, we will go into more detail on the extra headers being added:</p>
<ul>
<li>Since this is a Ajax request from the browser, the browser makes a pre-flight OPTIONS request.</li>
<li>This gives the server a chance to respond and tell the browser if it will allow the request.</li>
<ul>
<li>The &#8216;Access-Control-Request-Method&#8217; tells the responding server which HTTP method is being used.</li>
<li>The &#8216;Origin&#8217; header tells the server where the request is coming from</li>
<li>The &#8216;Access-Control-Request-Headers&#8217; tells the server which headers it can expect from the next request if allowed</li>
</ul>
<li>This information can then be used by the Web Application, to decide whether it will respond to the request.</li>
<li>Note that there is still no Authorization header, even though we asked for one to be added, but this isn&#8217;t the actual request for the resource yet, this is only the pre-flight check to see if the original request can be made.</li>
</ul>
<h3>Step 2.3: Web Server responds to the OPTIONS request with CORS enabled response.</h3>
</div>
<div>To enable CORS to the response in simplest fashion, I&#8217;m going to add the headers at the Apache level to all outgoing responses.   This could be implemented in the web application to apply more fine grained security and logic, but for the purposes of this demonstration, adding the following Apache directives to the &#8216;cf901&#8242; VirtualHost I am using, will enable CORS for requests:</div>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>Location <span style="color: #339933;">/&amp;</span>gt<span style="color: #339933;">;</span>
	Options FollowSymLinks
	Order allow<span style="color: #339933;">,</span>deny
	Allow from all
&nbsp;
	Header always set Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Methods <span style="color: #3366CC;">&quot;GET, POST, DELETE, OPTIONS, PUT&quot;</span>
	Header always set Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Headers <span style="color: #3366CC;">&quot;Content-Type, X-Requested-With, X-HTTP-Method-Override, Origin, Accept, Authorization&quot;</span>
	Header always set Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Credentials <span style="color: #3366CC;">&quot;true&quot;</span>
	Header always set Cache<span style="color: #339933;">-</span>Control <span style="color: #3366CC;">&quot;max-age=0&quot;</span>
	Header always set Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Origin <span style="color: #339933;">*</span>
<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;/</span>Location<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span></pre></div></div>

<p>If you want more detail on what these headers do, read the <a href="http://www.w3.org/TR/cors/">W3C specification</a> as well as the <a href="https://developer.mozilla.org/En/HTTP_Access_Control">Mozilla Developer Network article</a>. I&#8217;ll give a brief description here:</p>
<ul>
<li>Access-Control-Allow-Methods &#8211; fairly clear, the methods that the Web Application will accept</li>
<li>Access-Control-Allow-Headers &#8211; An instruction to the browser about what headers it will allow</li>
<li>Access-Control-Allow-Credentials &#8211; If the browser should sent HTTP Basic Auth  or Cookie credentials in the request</li>
<li>Access-Control-Allow-Origin &#8211; What origin it will allow from  (there are reports IE needs this to be set to the actual origin that the request is coming from, and that a wild card doesn&#8217;t work).</li>
</ul>
<p>The effect of these headers (which remember can be set by the web application!) is the following response:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">HTTP<span style="color: #339933;">/</span><span style="color: #CC0000;">1.1</span> <span style="color: #CC0000;">200</span> OK
Date<span style="color: #339933;">:</span> Thu<span style="color: #339933;">,</span> 08 Dec <span style="color: #CC0000;">2011</span> <span style="color: #CC0000;">13</span><span style="color: #339933;">:</span><span style="color: #CC0000;">54</span><span style="color: #339933;">:</span><span style="color: #CC0000;">41</span> GMT
Server<span style="color: #339933;">:</span> Apache<span style="color: #339933;">/</span>2.2.13 <span style="color: #009900;">&#40;</span>Win32<span style="color: #009900;">&#41;</span> Communique<span style="color: #339933;">/</span>4.0.11 JRun<span style="color: #339933;">/</span><span style="color: #CC0000;">4.0</span>
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Methods<span style="color: #339933;">:</span> GET<span style="color: #339933;">,</span> POST<span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">DELETE</span><span style="color: #339933;">,</span> OPTIONS<span style="color: #339933;">,</span> PUT
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Headers<span style="color: #339933;">:</span> Content<span style="color: #339933;">-</span>Type<span style="color: #339933;">,</span> X<span style="color: #339933;">-</span>Requested<span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">With</span><span style="color: #339933;">,</span> X<span style="color: #339933;">-</span>HTTP<span style="color: #339933;">-</span>Method<span style="color: #339933;">-</span>Override<span style="color: #339933;">,</span> Origin<span style="color: #339933;">,</span> Accept<span style="color: #339933;">,</span> Authorization
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Credentials<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span>
Cache<span style="color: #339933;">-</span>Control<span style="color: #339933;">:</span> max<span style="color: #339933;">-</span>age<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span>
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Origin<span style="color: #339933;">:</span> <span style="color: #339933;">*</span>
Transfer<span style="color: #339933;">-</span>Encoding<span style="color: #339933;">:</span> chunked
Content<span style="color: #339933;">-</span>Type<span style="color: #339933;">:</span> text<span style="color: #339933;">/</span>html<span style="color: #339933;">;</span> charset<span style="color: #339933;">=</span>UTF<span style="color: #339933;">-</span><span style="color: #CC0000;">8</span></pre></div></div>

<p>NOTE: Since this is the response to an OPTIONS request, I had to modify the Application.cfc to not apply Basic Authentication to that OPTIONS request, more details on why that was necessary <a href="http://stackoverflow.com/questions/6446592/not-able-to-access-authorization-required-resource-with-jquerys-ajax">here</a>.</p>
<h3>Step 2.4: Successful CORS request, perform original POST</h3>
<p>The browser can then see that the server will allow the following, it can reconcile them with the Ajax call from the client.html:</p>
<ul>
<li>Allow a POST (from Access-Control-Allow-Methods)</li>
<li>Will allo an Authorization header (from Access-Control-Allow-Headers)</li>
<li>Instructs the browser to send credentials if it has them (Access-Control-Allow-Credentials)</li>
<li>And is allowed form any other host (from Access-Control-Allow-Origin)</li>
</ul>
<p>The browser then allows the original request from  the JavaScript to them execute:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">POST <span style="color: #339933;">/</span>tests<span style="color: #339933;">/</span>accesscontrol<span style="color: #339933;">/</span>cors<span style="color: #339933;">-</span>step02<span style="color: #339933;">/</span>post.<span style="color: #660066;">cfm</span> HTTP<span style="color: #339933;">/</span><span style="color: #CC0000;">1.1</span>
Host<span style="color: #339933;">:</span> cf901
Content<span style="color: #339933;">-</span>Length<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span>
Origin<span style="color: #339933;">:</span> http<span style="color: #339933;">:</span><span style="color: #006600; font-style: italic;">//localhost</span>
Authorization<span style="color: #339933;">:</span> Basic dXNlcm5hbWU6cGFzc3dvcmQ<span style="color: #339933;">=</span>
User<span style="color: #339933;">-</span>Agent<span style="color: #339933;">:</span> Mozilla<span style="color: #339933;">/</span><span style="color: #CC0000;">5.0</span> <span style="color: #009900;">&#40;</span>Windows NT <span style="color: #CC0000;">6.1</span><span style="color: #339933;">;</span> WOW64<span style="color: #009900;">&#41;</span> AppleWebKit<span style="color: #339933;">/</span><span style="color: #CC0000;">535.2</span> <span style="color: #009900;">&#40;</span>KHTML<span style="color: #339933;">,</span> like Gecko<span style="color: #009900;">&#41;</span> Chrome<span style="color: #339933;">/</span>15.0.874.121 Safari<span style="color: #339933;">/</span><span style="color: #CC0000;">535.2</span>
Accept<span style="color: #339933;">:</span> <span style="color: #339933;">*</span><span style="color: #006600; font-style: italic;">/*
Referer: http://localhost/tests/accesscontrol/cors-step02/client.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3</span></pre></div></div>

<p>And the server happily responds with the response, which the browser passes back to the JavaScript execution:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">HTTP<span style="color: #339933;">/</span><span style="color: #CC0000;">1.1</span> <span style="color: #CC0000;">200</span> OK
Date<span style="color: #339933;">:</span> Thu<span style="color: #339933;">,</span> 08 Dec <span style="color: #CC0000;">2011</span> <span style="color: #CC0000;">13</span><span style="color: #339933;">:</span><span style="color: #CC0000;">54</span><span style="color: #339933;">:</span><span style="color: #CC0000;">41</span> GMT
Server<span style="color: #339933;">:</span> Apache<span style="color: #339933;">/</span>2.2.13 <span style="color: #009900;">&#40;</span>Win32<span style="color: #009900;">&#41;</span> Communique<span style="color: #339933;">/</span>4.0.11 JRun<span style="color: #339933;">/</span><span style="color: #CC0000;">4.0</span>
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Methods<span style="color: #339933;">:</span> GET<span style="color: #339933;">,</span> POST<span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">DELETE</span><span style="color: #339933;">,</span> OPTIONS<span style="color: #339933;">,</span> PUT
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Headers<span style="color: #339933;">:</span> Content<span style="color: #339933;">-</span>Type<span style="color: #339933;">,</span> X<span style="color: #339933;">-</span>Requested<span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">With</span><span style="color: #339933;">,</span> X<span style="color: #339933;">-</span>HTTP<span style="color: #339933;">-</span>Method<span style="color: #339933;">-</span>Override<span style="color: #339933;">,</span> Origin<span style="color: #339933;">,</span> Accept<span style="color: #339933;">,</span> Authorization
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Credentials<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span>
Cache<span style="color: #339933;">-</span>Control<span style="color: #339933;">:</span> max<span style="color: #339933;">-</span>age<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span>
Access<span style="color: #339933;">-</span>Control<span style="color: #339933;">-</span>Allow<span style="color: #339933;">-</span>Origin<span style="color: #339933;">:</span> <span style="color: #339933;">*</span>
Transfer<span style="color: #339933;">-</span>Encoding<span style="color: #339933;">:</span> chunked
Content<span style="color: #339933;">-</span>Type<span style="color: #339933;">:</span> text<span style="color: #339933;">/</span>html<span style="color: #339933;">;</span> charset<span style="color: #339933;">=</span>UTF<span style="color: #339933;">-</span><span style="color: #CC0000;">8</span>
&nbsp;
<span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;FORM&quot;</span><span style="color: #339933;">:</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;DATE&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;December, 08 2011 13:54:41&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<h3>Step 2.5: Browser passes through server response to JavaScript execution</h3>
<p>Looking at the JavaScript console, there should be no errors, and the $.ajax call&#8217;s success handler fires!</p>
<h2>In Conclusion</h2>
<p>CORS works on all modern browsers, I couldn&#8217;t find a definitive list at the time of writing <a href="http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/">nczonline.net</a> has them listed as:</p>
<ul>
<li>Internet Explorer 8+</li>
<li>Firefox 3.5+</li>
<li>Safari 4+</li>
<li>Chrome</li>
</ul>
<div>This is only a simple walkthrough, showing how it works when using Chrome, so further good research would be know it&#8217;s effect on the mobile browsers.   One thing CORS does introduce, is that double call to the server from the client, one for the OPTIONS preflight followed by the actual request.</div>
<div>It&#8217;s not the crossdomain.xml from the world of Flash, but there appears to be many further options that you can read up on in the W3C specifications, as well as various locations around the interwebs.</div>
<h2>Sample Code</h2>
<p>Basic configuration steps to get the samples above running are:</p>
<p>For Step 1</p>
<ul>
<li>Have CF901 and Apache installed on your system.</li>
<li>Add a HOSTS entry to 127.0.0.1</li>
<li>Place code from &#8216;download/cors-step01&#8242; into web root, and change the script variable to point to the post.cfm location</li>
</ul>
<div>Additional for Step 2</div>
<ul>
<li>Add a VirtualHost into your Apache configuration, and add the directives in Step 2.3</li>
<li>Place code from &#8216;download/cors-step02&#8242; into web root, and change the script variable to point to the post.cfm location</li>
<li>You can play about with the username/password value to show Basic Auth working/failing.</li>
</ul>
<p>Sample code is here - <a href="http://www.eyelock.net/blog/archives/430/accesscontrol" rel="attachment wp-att-452">accesscontrol</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/430/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Music Mix</title>
		<link>http://www.eyelock.net/blog/archives/424?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-music-mix</link>
		<comments>http://www.eyelock.net/blog/archives/424#comments</comments>
		<pubDate>Tue, 11 Oct 2011 13:27:06 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/?p=424</guid>
		<description><![CDATA[Posted a new mix over at http://www.eyelock.net/blog/about/playing, as well as links to some old ones. Enjoy, if you like that sort of stuff.   If not, feel free to moan below]]></description>
			<content:encoded><![CDATA[<p>Posted a new mix over at <a href="http://www.eyelock.net/blog/about/playing">http://www.eyelock.net/blog/about/playing</a>, as well as links to some old ones.</p>
<p>Enjoy, if you like that sort of stuff.   If not, feel free to moan below <img src='http://www.eyelock.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/424/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Builder 4.5 and Deploying to Tomcat 6</title>
		<link>http://www.eyelock.net/blog/archives/417?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flash-builder-4-5-and-deploying-to-tomcat-6</link>
		<comments>http://www.eyelock.net/blog/archives/417#comments</comments>
		<pubDate>Fri, 30 Sep 2011 10:09:30 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[data services]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/?p=417</guid>
		<description><![CDATA[When using Flash Builder 4.5.x with Eclipse Helios, if you try and deploy your integrated Flex and Data Services project to Tomcat 6, you get the following error being reported: The quickest and easiest way to allow for deloyment onto Tomcat, is to: Find your Project folder on the file system Open up &#8220;project_loc/.settings/org.eclipse.wst.common.project.facet.core.xml&#8221; Change [...]]]></description>
			<content:encoded><![CDATA[<p>When using Flash Builder 4.5.x with Eclipse Helios, if you try and deploy your integrated Flex and Data Services project to Tomcat 6, you get the following error being reported:</p>
<div class="scl_quote">The server does not support version 3.0 of the J2EE Module</div>
<p><a href="http://www.eyelock.net/blog/archives/417/eclipse-j2ee-web-module-support" rel="attachment wp-att-418"><img class="alignnone size-medium wp-image-418" title="eclipse-j2ee-web-module-support" src="http://eyelock-cdn-blog.eyelock.net.s3.amazonaws.com/blog/wp-content/uploads/2011/09/eclipse-j2ee-web-module-support-300x295.jpg" alt="" width="300" height="295" /></a></p>
<p>The quickest and easiest way to allow for deloyment onto Tomcat, is to:</p>
<ol>
<li>Find your Project folder on the file system</li>
<li>Open up &#8220;project_loc/.settings/org.eclipse.wst.common.project.facet.core.xml&#8221;</li>
<li>Change the value for &lt;installed facet=&#8221;jst.web&#8221; version=&#8221;3.0&#8243;/&gt;, to &lt;installed facet=&#8221;jst.web&#8221; version=&#8221;2.5&#8243;/&gt;</li>
<li>Save the file, refresh your Eclipse project, and you are good to go.</li>
</ol>
<p>You can then deploy your project onto Tomcat 6</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/417/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing location of WebContent folder of Flash Builder/WTP Project</title>
		<link>http://www.eyelock.net/blog/archives/413?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=changing-location-of-webcontent-folder-of-flash-builderwtp-project</link>
		<comments>http://www.eyelock.net/blog/archives/413#comments</comments>
		<pubDate>Fri, 30 Sep 2011 08:59:58 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/?p=413</guid>
		<description><![CDATA[You can change the location of the default Web Application folder from &#60;project&#62;/WebContent to (i.e.) /src/main/webapp by making the following changes in Eclipse Project Properties. Change the Web Deployment Assembly Update build paths for: Flex SWCs Paths linked in Project Properties &#62; Flex Build Path  (Class libraries and Locale Bundles) Any compiler paths that might [...]]]></description>
			<content:encoded><![CDATA[<p>You can change the location of the default Web Application folder from &lt;project&gt;/WebContent to (i.e.) /src/main/webapp by making the following changes in Eclipse Project Properties.</p>
<p>Change the Web Deployment Assembly</p>
<p><a href="http://www.eyelock.net/blog/archives/413/eclipse-web-deployment-assembly" rel="attachment wp-att-414"><img class="size-medium wp-image-414 alignnone" title="eclipse-web-deployment-assembly" src="http://eyelock-cdn-blog.eyelock.net.s3.amazonaws.com/blog/wp-content/uploads/2011/09/eclipse-web-deployment-assembly-300x221.jpg" alt="" width="300" height="221" /></a></p>
<p>Update build paths for:</p>
<ul>
<li>Flex SWCs Paths linked in Project Properties &gt; Flex Build Path  (Class libraries and Locale Bundles)</li>
<li>Any compiler paths that might have referenced the old WebContent (ie services-config.xml)</li>
</ul>
<div>Eclipse took care of the rest.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/413/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enable Verity Debug Logging</title>
		<link>http://www.eyelock.net/blog/archives/130?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=enable-verity-debug-logging-3</link>
		<comments>http://www.eyelock.net/blog/archives/130#comments</comments>
		<pubDate>Tue, 09 Aug 2011 09:02:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Verity]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/enable-verity-debug-logging</guid>
		<description><![CDATA[Here is some steps to get some extra information out of Verity when using with ColdFusion, and something strange is happening. The debug info goes into the Verity logs, not the ColdFusion ones. Info from an old email! ---------------- Create environment variables for the user that Verity is running under: VERITY_DIAG_ENABLE=1 VERITY_DIAG_DEBUG=1 VERITY_DIAG_COMP=k2idx,k2odk,locuni ------------------------------------------------------------ C\\:opt\\jrun4\\verity\\k2\\_nti40\\bin&#62;rcadmin [...]]]></description>
			<content:encoded><![CDATA[<p>Here is some steps to get some extra information out of Verity when using with ColdFusion, and something strange is happening. The debug info goes into the Verity logs, not the ColdFusion ones.</p>
<p>Info from an old email!</p>
<pre>----------------
Create environment variables for
the user that Verity is running under:
VERITY_DIAG_ENABLE=1
VERITY_DIAG_DEBUG=1
VERITY_DIAG_COMP=k2idx,k2odk,locuni
------------------------------------------------------------
C\\:opt\\jrun4\\verity\\k2\\_nti40\\bin&gt;rcadmin
-log C:rcadmin.log

K2Admin Server: localhost:9950
connected. Type ? for help.

RCADMIN - Verity, Inc. Version 5.5.0
rcadmin&gt; hierarchyview
Service Type
[(a)dmin|(b)roker|(s)erver|(t)icket|(i)ndexServer|press enter for all]:
Hierarchy Info:
Admin Services:
Admin(1/1):

Alias : ColdFusionK2

ServerSpec : localhost:9950
 Description :
ColdFusion MX 7 Search Server

Type : Master Administration Server
------------------------------------------------------------
Server Services:
Server(1/1):
 Server level:
0

Alias : ColdFusionK2_server1

ServerSpec : localhost:9920
 Description :
ColdFusion K2Server
 Configured
State: Online

Collection(1/1):

Alias : testcollection

Description :

Access : Public

Configured State: Online
------------------------------------------------------------
Indexing Services:
Service(1/1):

Alias : ColdFusionK2_indexserver1
 ServerSpec :
localhost:9960
 Description: ColdFusion
K2 Index Server
 Configured
Service State: Online
rcadmin&gt; statuslogset
Service
Alias:ColdFusionK2_indexserver1
Service Type For
"ColdFusionK2_indexserver1" [(a)dmin|(b)roker|(s)erver|(t)icket
|(i)ndexServer]:i
Nominal size (KB, 0 = default
300K)(300):
Verboseness (Fatal=0, Error=1,
Warning=2, Status=3 Verbose=4)(4):4
Save changes? [y|n]:y
&lt;&gt; SUCCESS
rcadmin&gt;
----------------</pre>
<p>Log files are in similar locations to following (last time I looked!)</p>
<ul>
<li>cf_root/verity/Data/host/log/status.log</li>
<li>cf_root/verity/Data/host/diag/ColdFusionK2_indexserver1_5973/dump.log</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/130/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LCDS and Cipher Suites</title>
		<link>http://www.eyelock.net/blog/archives/131?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lcds-and-cipher-suites-3</link>
		<comments>http://www.eyelock.net/blog/archives/131#comments</comments>
		<pubDate>Mon, 28 Mar 2011 15:39:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[LCDS]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/lcds-and-cipher-suites</guid>
		<description><![CDATA[LCDS has the ability to specify the Cipher Suites that you want to use when creating SSL connections. You can do it in the services-config.xml, although currently the sample ones don&#8217;t show you where to put it: &#60;servers&#62; &#60;server ...&#62; &#60;properties&#62; &#60;enabled-cipher-suites&#62; &#60;cipher-suite&#62;XXX&#60;/cipher-suite&#62; &#60;cipher-suite&#62;YYY&#60;/cipher-suite&#62; &#60;cipher-suite&#62;ZZZ&#60;/cipher-suite&#62; &#60;enabled-cipher-suites&#62; Now what cipher suites does LCDS support? Well, none, [...]]]></description>
			<content:encoded><![CDATA[<p>LCDS has the ability to specify the Cipher Suites that you want to use when creating SSL connections. You can do it in the services-config.xml, although currently the sample ones don&#8217;t show you where to put it:</p>
<pre>&lt;servers&gt;
	&lt;server ...&gt;
		&lt;properties&gt;
			&lt;enabled-cipher-suites&gt;
				&lt;cipher-suite&gt;XXX&lt;/cipher-suite&gt;
				&lt;cipher-suite&gt;YYY&lt;/cipher-suite&gt;
				&lt;cipher-suite&gt;ZZZ&lt;/cipher-suite&gt;
			&lt;enabled-cipher-suites&gt;</pre>
<p>Now what cipher suites does LCDS support? Well, none, but all. Its theJRE that supports cipher suites and you can get a list of the ones supported in your application from the <a href="http://download.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/SSLEngine.html">SSLEngine</a> class:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>There are two groups of cipher suites which you will need to know about when managing cipher suites:</p>
<ul>
<li>Supported cipher suites: all the suites which are supported by the SSL implementation. This list is reported using getSupportedCipherSuites().</li>
<li>Enabled cipher suites, which may be fewer than the full set of supported suites. This group is set using the setEnabledCipherSuites(String []) method, and queried using the getEnabledCipherSuites() method. Initially, a default set of cipher suites will be enabled on a new engine that represents the minimum suggested configuration.</li>
</ul>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>So if you need to use cipher suites on LCDS, there ya go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/131/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RTMP and NIO HTTP sharing the same Port using a shared NIO server configuration</title>
		<link>http://www.eyelock.net/blog/archives/132?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rtmp-and-nio-http-sharing-the-same-port-using-a-shared-nio-server-configuration-3</link>
		<comments>http://www.eyelock.net/blog/archives/132#comments</comments>
		<pubDate>Mon, 28 Mar 2011 13:16:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[LCDS]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/rtmp-and-nio-http-sharing-the-same-port-using-a-shared-nio-server-configuration</guid>
		<description><![CDATA[I got a great tip today about using a shared NIO server in LCDS. When using a shared NIO server, you can define common properties for individual RTMP/NIO based channels once in the shared server tag. I&#8217;ve used this before for SSL configuration, since it then meant not having to define your SSL details in [...]]]></description>
			<content:encoded><![CDATA[<p>I got a great tip today about using a shared NIO server in LCDS.   When using a shared NIO server, you can define common properties for individual RTMP/NIO based channels once in the shared server tag.   I&#8217;ve used this before for SSL configuration, since it then meant not having to define your SSL details in many places.  For example:</p>
<p><pre>    <servers>        <server id="my-nio-server" class="flex.messaging.socketserver.SocketServer"> 
<properties>
<span style="white-space: pre;">		</span>....</pre>
<p>Then you can just refer to this in your individual channels as such:</p>
<pre>        <channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
            <endpoint url="rtmp://{server.name}:2038" class="flex.messaging.endpoints.RTMPEndpoint"/>
	     <server ref="my-nio-server"/>
<properties>
<span style="white-space: pre;">		</span>....</pre>
<p>As ever, see the sample <a href="http://www.eyelock.net/docs/lcds/3.1/config/services-config.xml">services-config.xml</a> file in the LCDS install for full details on all the properties.</p>
<p>All good and well, but something I didn&#8217;t realise until I was informed about it, is that t<strong>he NIO channels can share the same port as the RTMP channels when using a shared nio server configuration</strong>.</p>
<p>That is very cool, and means only opening up one port, so for instance I have RTMP, NIOStreamingAMF, NIOLongPollingAMF, NIOPollingAMF all responding on port 2038.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/132/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Video Platform using ColdFusion, Dynamic HTTP Streaming and OSMF</title>
		<link>http://www.eyelock.net/blog/archives/135?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-a-video-platform-using-coldfusion-dynamic-http-streaming-and-osmf-3</link>
		<comments>http://www.eyelock.net/blog/archives/135#comments</comments>
		<pubDate>Sun, 27 Mar 2011 22:56:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[OSMF]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/creating-a-video-platform-using-coldfusion-dynamic-http-streaming-and-osmf</guid>
		<description><![CDATA[After kindly getting invited to speak at Scotch on the Rocks 2011 (Europe&#8217;s Premier ColdFusion conference) by Andy Allan of Fuzzy Orange, myself and Andy Wallace gave a presentation on building a simple video platform using ColdFusion, the new Dynamic HTTP Streaming Module for Apache and the Open Source Media Framework (OSMF). In the presentation, [...]]]></description>
			<content:encoded><![CDATA[<p>After kindly getting invited to speak at <a href="http://www.scotch-on-the-rocks.co.uk/">Scotch on the Rocks</a> 2011 (Europe&#8217;s Premier ColdFusion conference) by Andy Allan of <a href="http://www.fuzzyorange.co.uk/">Fuzzy Orange</a>, myself and Andy Wallace gave a presentation on building a simple video platform using <a href="http://www.adobe.com/products/coldfusion/">ColdFusion</a>, the new<a href="http://www.eyelock.net/blog/httpdynamicstreaming"> Dynamic HTTP Streaming Module for Apache</a> and the <a href="http://www.opensourcemediaframework.com/">Open Source Media Framework</a> (OSMF).</p>
<p>In the presentation, we showed how you could easily build a simple video sharing platform, including the ability to show advert videos before and after each feature video. Using the OSMF framework, Andy showed how to build a Video Player that controlled the User Experience by forcing them to view the Advert videos, whilst allowing them to seek through the Feature video, allowing the developer to (hopefully!) monetize their service.</p>
<p>ColdFusion made it easy to create a simple back end to upload the videos and generate the Playlists for the videos, whilst Flex gave a nice admin interface to allow users to upload the videos and make playlists. Download the demo code and follow the configuration instructions contained within.</p>
<ul>
<li><a href="http://www.eyelock.net/blog/?attachment_id=268" rel="attachment wp-att-268">Presentation PDF</a></li>
<li><a href="http://www.eyelock.net/blog/?attachment_id=269" rel="attachment wp-att-269">SOTR2011 &#8211; Video Platform Source Code</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/135/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reference &#8211; Best Day in Detroit</title>
		<link>http://www.eyelock.net/blog/archives/133?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reference-best-day-in-detroit-3</link>
		<comments>http://www.eyelock.net/blog/archives/133#comments</comments>
		<pubDate>Sun, 27 Mar 2011 22:31:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/reference-best-day-in-detroit</guid>
		<description><![CDATA[Came across the tune from the Modular Music Vol. 2 compilation from Planet-E.   All round a good comp that gathers up some old stuff I hadn&#8217;t heard.   This is by far the standout track on it.   It meanders along for 4 mins, then it really kicks in.  Astonishing.  ]]></description>
			<content:encoded><![CDATA[<p>Came across the tune from the <a href="http://bleep.com/index.php?page=release_details&amp;releaseid=28245">Modular Music Vol. 2</a> compilation from Planet-E.   All round a good comp that gathers up some old stuff I hadn&#8217;t heard.   This is by far the standout track on it.   It meanders along for 4 mins, then it really kicks in.  Astonishing.</p>
<p> </p>
<p>
<iframe src="http://www.youtube.com/embed/fCbUmxkLgAI" width="480" height="390" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/133/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilities for testing/logging Messaging Functionality</title>
		<link>http://www.eyelock.net/blog/archives/134?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=utilities-for-testinglogging-messaging-functionality-3</link>
		<comments>http://www.eyelock.net/blog/archives/134#comments</comments>
		<pubDate>Sun, 27 Mar 2011 22:14:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[LCDS]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/utilities-for-testing-logging-messaging-functionality</guid>
		<description><![CDATA[I do a lot of work around Messaging in LCDS, and find myself writing the same code again and again to log all the Events that come from Producers and Consumers, and also in outputting these log messages in a nice format.   I&#8217;ve used these two ActionScript classes for a few months now, but [...]]]></description>
			<content:encoded><![CDATA[<p>I do a lot of work around Messaging in LCDS, and find myself writing the same code again and again to log all the Events that come from Producers and Consumers, and also in outputting these log messages in a nice format.   I&#8217;ve used these two ActionScript classes for a few months now, but find myself constantly searching for them, so this is here for me, and if it helps anyone else that is a bonus.</p>
<p>There isn&#8217;t documentation, but they are simple components that should be fairly clear when reading the AS code.</p>
<h2>LoggingTextArea</h2>
<p>This is a subclass of the mx:TextArea and includes a &#8216;logger&#8217; property of type Logger.   It includes various helper methods to tie together the concepts of the Logging Framework of the Flex SDK into one class that I can just drop into a project to leverage all the categories/level etc and get my log info in a familar format.</p>
<p>Download <a href="http://www.eyelock.net/blog/?attachment_id=246" rel="attachment wp-att-246">LoggingTextArea.as</a></p>
<h3>Sample Code</h3>
<pre><span style="white-space: pre;"><span style="white-space: pre;"> &lt;mx:FormItem label="Log Level" direction="horizontal"&gt; </span></span></pre>
<pre><span style="white-space: pre;"><span style="white-space: pre;"> &lt;mx:ComboBox id="logLevel" </span></span></pre>
<pre><span style="white-space: pre;"><span style="white-space: pre;"> dataProvider="{LoggingTextArea.LEVEL_STRINGS}" </span></span></pre>
<pre><span style="white-space: pre;"><span style="white-space: pre;"> change="logs.levelString = logLevel.selectedLabel" </span></span></pre>
<pre><span style="white-space: pre;"><span style="white-space: pre;"> selectedIndex="{LoggingTextArea.LEVEL_STRINGS.getItemIndex(logs.levelString)}"/&gt; </span></span></pre>
<pre><span style="white-space: pre;"><span style="white-space: pre;"> &lt;mx:Button label="Clear Logs" click="logs.clearLogs()"/&gt; </span></span></pre>
<pre><span style="white-space: pre;"><span style="white-space: pre;"> &lt;/mx:FormItem&gt; </span></span></pre>
<pre><span style="white-space: pre;">.</span>....</pre>
<pre>&lt;local:LoggingTextArea id="logs"</pre>
<pre>                       levelString="{LoggingTextArea.LEVEL_INFO}"</pre>
<pre>                       width="100%" height="100%"/&gt;</pre>
<p>You can then use (i.e.) logs.logger.debug(&#8220;My Log Id: {0}&#8221;, clientId) to add messages to the LoggingTextArea.</p>
<h2>LoggingMessageAgentDecorator</h2>
<p>This utility you can just wrap around a Producer or a Consumer and give it a LoggingTextArea and it will configure all the Events that I normally want to listen for.  There are a few other utility methods to send a text based message via a producer and also to change the defined channel that the message agent should use.   The decorator also exposes some properties from the MessageAgent.channelSet that aren&#8217;t by definition bindable, but are via the decorator.</p>
<p>Download <a href="http://www.eyelock.net/blog/?attachment_id=246" rel="attachment wp-att-246">LoggingTextArea.as</a></p>
<h3>Sample Code</h3>
<pre><span style="white-space: pre;"> &lt;mx:FormItem label="Producer Channel" direction="horizontal"&gt; </span></pre>
<pre><span style="white-space: pre;"> &lt;mx:ComboBox id="producerChannel" </span></pre>
<pre><span style="white-space: pre;"> dataProvider="{producerDecorator.channelIds}" </span></pre>
<pre><span style="white-space: pre;"> selectedIndex="{producerDecorator.channelIds.getItemIndex(producerDecorator.currentChannelId)}"/&gt; </span></pre>
<pre><span style="white-space: pre;"> &lt;mx:Button label="Change" click="producerDecorator.changeChannel(producerChannel.selectedLabel)"/&gt; </span></pre>
<pre><span style="white-space: pre;"> &lt;/mx:FormItem&gt;</span></pre>
<pre><span style="white-space: pre;">.</span>...</pre>
<pre>&lt;local:LoggingMessageAgentDecorator id="producerDecorator"  loggingTextArea="{logs}"&gt;</pre>
<pre>        &lt;mx:Producer id="producer" destination="chat" /&gt;</pre>
<pre>&lt;/local:LoggingMessageAgentDecorator&gt;</pre>
<p>&nbsp;</p>
<h2>Tying it together</h2>
<p>I also have a simple test MXML Applicatoin that shows how currently I tie them together.  I tend to make this up as each time I am testing the actual implementation needs to be a little different each time, so just posting to show it being used.</p>
<p>Download <a href="http://www.eyelock.net/blog/?attachment_id=247" rel="attachment wp-att-247">TestChannels.mxml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/134/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Database-less Sample Using LiveCycle Data Services Data Management and Destinations with Associations</title>
		<link>http://www.eyelock.net/blog/archives/136?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=database-less-sample-using-livecycle-data-services-data-management-and-destinations-with-associations-3</link>
		<comments>http://www.eyelock.net/blog/archives/136#comments</comments>
		<pubDate>Thu, 16 Sep 2010 15:11:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[LCDS]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/database-less-sample-using-livecycle-data-services-data-management-and-destinations-with-associations</guid>
		<description><![CDATA[I always strive for the simplest reproduction all the time, having too much code sometimes is needed, but often not.   Why give a 40Mb file when all it really needed was a single XML file?  Anyways, in one of the strives for perfection, I decided to take the database out the picture and created a [...]]]></description>
			<content:encoded><![CDATA[<p>I always strive for the simplest reproduction all the time, having too much code sometimes is needed, but often not.   Why give a 40Mb file when all it really needed was a single XML file?  Anyways, in one of the strives for perfection, I decided to take the database out the picture and created a simple DataStore that held a Documents-&gt;Chapters-&gt;Parts Object Graph that I could then use with the lovely LiveCycle Data Services Data Management features.</p>
<p>You can get the sample as a Flash Builder 4 project, sans the LCDS jars <span style="text-decoration: line-through;">from clicking on this link  </span>(remember when they<br />
always scolded you for putting a link on &#8216;click here&#8217; text <img src='http://www.eyelock.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )  <a href="http://www.eyelock.net/blog/?attachment_id=239" rel="attachment wp-att-239">MultipleRelationshipsSample</a></p>
<p>In it&#8217;s format linked here, it&#8217;s very simple and shows one-to-many, but will most likely form the basis of a few of my LCDS related samples as it&#8217;s easy to transport and configure without any database, allowing for quick demo and additions to it&#8217;s current state.   As always, check out the lcds-samples that ships with LCDS for sample code, it contains some great examples of LCDS in action.</p>
<p>Don&#8217;t forget my simple <a title="Ant File to Export WAR from Flash Builder Project" href="http://www.eyelock.net/blog/?p=137">Ant Script</a> if you need to compile and don&#8217;t have Flash Builder.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/136/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ant File to Export WAR from Flash Builder Project</title>
		<link>http://www.eyelock.net/blog/archives/137?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ant-file-to-export-war-from-flash-builder-project-3</link>
		<comments>http://www.eyelock.net/blog/archives/137#comments</comments>
		<pubDate>Thu, 16 Sep 2010 15:02:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Ant]]></category>
		<category><![CDATA[Flash Builder]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/ant-file-to-export-war-from-flash-builder-project</guid>
		<description><![CDATA[I heavily use Eclipse/WTP for my J2EE integration, it works for what i need with all the major application servers, and is a boon when debugging Flex and LiveCycle Data Services applications.   Sometimes though, I have to give the project to someone who doesn&#8217;t use the Eclipse/Flash Builder/Web Tools Platform stack, and here is a [...]]]></description>
			<content:encoded><![CDATA[<p>I heavily use Eclipse/WTP for my J2EE integration, it works for what i need with all the major application servers, and is a boon when debugging Flex and LiveCycle Data Services applications.   Sometimes though, I have to give the project to someone who doesn&#8217;t use the Eclipse/Flash Builder/Web Tools Platform stack, and here is a simple little ANT script that can output the necessary WAR from the folder structure used in a WTP project without needing Eclipse.<br />
<a title="Ant Script for Simple Export to WAR from Flash Builder File" href="http://www.eyelock.net/blog/assets/content/Samples/Ant/FlashBuilderToWAR/build.xml"><br />
</a><a href="http://www.eyelock.net/blog/?attachment_id=263" rel="attachment wp-att-263">Ant script for Eclipse/Flash Builder/WTP Export to WAR</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/137/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lusine &#8211; Two Dots</title>
		<link>http://www.eyelock.net/blog/archives/138?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lusine-two-dots-3</link>
		<comments>http://www.eyelock.net/blog/archives/138#comments</comments>
		<pubDate>Fri, 20 Aug 2010 15:35:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.eyelock.net/blog/post.cfm/lusine-two-dots</guid>
		<description><![CDATA[The album this comes from is well worth checking out, A Certain Distance, but for me this is the standout track and a lovely soundtrack to a sunny summer&#8217;s day night.   Can&#8217;t beat tracks like this and been following up on some of the back catalogue and remixes of Lusine&#8217;s since.  Enjoy and as always, [...]]]></description>
			<content:encoded><![CDATA[<p>The album this comes from is well worth checking out, <a href="http://ghostly.com/releases/a-certain-distance">A Certain Distance</a>, but for me this is the standout track and a lovely soundtrack to a sunny summer&#8217;s day night.   Can&#8217;t beat tracks like this and been following up on some of the back catalogue and remixes of Lusine&#8217;s since.  Enjoy and as always, play it loud.</p>
<p><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/4iIvRXCV9lk?fs=1&amp;hl=en_GB" allowfullscreen="true" allowscriptaccess="always"></embed> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.eyelock.net/blog/archives/138/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

