<?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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"><channel><title>Disruptive Library Technology Jester &#187; perl</title> <atom:link href="http://dltj.org/tag/perl/feed/" rel="self" type="application/rss+xml" /><link>http://dltj.org</link> <description>We&#039;re Disrupted, We&#039;re Librarians, and We&#039;re Not Going to Take It Anymore</description> <lastBuildDate>Mon, 06 Feb 2012 20:04:22 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <cloud domain='dltj.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' /> <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/us/</creativeCommons:license> <item><title>The PERL Way to Add OmniFocus Inbox Entries from Twitter</title><link>http://dltj.org/article/twitter-to-omnifocus/</link> <comments>http://dltj.org/article/twitter-to-omnifocus/#comments</comments> <pubDate>Wed, 20 Oct 2010 02:09:16 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[applescript]]></category> <category><![CDATA[Getting Things Done]]></category> <category><![CDATA[howto]]></category> <category><![CDATA[OmniFocus]]></category> <category><![CDATA[perl]]></category> <category><![CDATA[Twitter]]></category> <category><![CDATA[twitter-to-omnifocus]]></category><guid isPermaLink="false">http://dltj.org/?p=1734</guid> <description><![CDATA[Over the weekend I got the bright idea of asking OmniGroup to ask an iPhone voice recognition application (like Dragon Dictation) to add a link to the OmniFocus iPhone application. That way I could simply dictate new inbox items on &#8230; <a href="http://dltj.org/article/twitter-to-omnifocus/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/?p=1734"></abbr><p>Over the weekend I got the bright idea of asking <a href="http://www.omnigroup.com/" title="The Omni Group">OmniGroup</a> to ask an iPhone voice recognition application (like <a href="http://itunes.apple.com/us/app/dragon-dictation/id341446764?mt=8" title="Dragon Dictation for iPhone, iPod touch, and iPad on the iTunes App Store">Dragon Dictation</a>) to add a link to the <a href="http://www.omnigroup.com/products/omnifocus_for_iphone/" title="OmniFocus for iPhone - Products - The Omni Group">OmniFocus iPhone</a> application.  That way I could simply dictate new inbox items on the iPhone rather than laboriously typing them with the on-screen keyboard.  Before making the suggestion, I <a href="http://forums.omnigroup.com/search.php?do=process&amp;quicksearch=1&amp;childforums=1&amp;exactname=1&amp;s=&amp;securitytoken=guest&amp;query=voice+recognition&amp;showposts=0" title="The Omni Group Forums - Search Forums">searched the OmniFocus User Forum for &#8220;voice recognition&#8221;</a> to see if anyone else had suggested the same thing.  As it turns out, there were <a href="http://forums.omnigroup.com/showthread.php?t=5871" title="Ubiqutious task entry -- anywhere, anytime - The Omni Group Forums">a</a> <a href="http://forums.omnigroup.com/showthread.php?t=11543&amp;highlight=voice+recognition" title="Voice -&gt; OmniFocus - The Omni Group Forums">few</a> <a href="http://forums.omnigroup.com/showthread.php?t=11544&amp;highlight=voice+recognition" title="new solution to speak new inbox tasks - The Omni Group Forums">posts</a> that had instructions from people using Twitter as an intermediary.  Unfortunately, they either required a desktop Twitter client to be running all of the time or <a href="http://ptone.com/dablog/2009/03/voice-to-omnifocus-revisited/" title="Voice to OmniFocus, revisited">used</a> the now deprecated BasicAuth-based Twitter authentication scheme.  So I created my own.<br /><span id="more-1734"></span><br /><h2>The Script</h2><br />I&#8217;m a UNIX command line geek at heart, and an old one at that, so my preferred language is Perl. This program runs as a background command line application using a couple of Perl modules: <a href="http://search.cpan.org/dist/Net-Twitter-Lite/" title="Marc Mims / Net-Twitter-Lite - search.cpan.org">Net::Twitter::Lite</a> to interact with Twitter and <a href="http://search.cpan.org/~dsugal/Mac-AppleScript/" title="Dan Sugalski / Mac-AppleScript - search.cpan.org">Mac::AppleScript</a> to interact with OmniFocus.  Install those two modules and their depencencies on your Mac if you don&#8217;t already have them (e.g. <code>cpan install Net::Twitter::Lite</code> and <code>cpan install Mac::AppleScript</code>), then copy <a href="http://github.com/dltj/twitter-to-omnifocus/raw/master/twitter-to-omnifocus" title="twitter-to-omnifocus script">this script</a> and a configuration file based on <a href="http://github.com/dltj/twitter-to-omnifocus/raw/master/tweettoOmniFocus.cfg.example" title="tweettoOmniFocus.cfg example">this sample</a> in a directory off your home directory.  The <a href="http://github.com/dltj/twitter-to-omnifocus" title="dltj's twitter-to-omnifocus at master - GitHub">source code</a> is available on GitHub if you want to fork it and improve it.</p><p><h2>Registering your Application with Twitter</h2><br /><div id="attachment_1735" class="wp-caption alignright" style="width: 310px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="http://cdn.dltj.org/wp-content/uploads/2010/10/Tweet-Privacy.png"><img src="http://cdn.dltj.org/wp-content/uploads/2010/10/Tweet-Privacy-300x71.png" alt="" title="Tweet Privacy" width="300" height="71" class="size-medium wp-image-1735" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Tweet Privacy Checkbox</p></div>To put Twitter in the middle between my iPhone voice recognition app and OmniFocus, I set up a new Twitter account just for the purpose of pushing entries into the OmniFocus Inbox.  I marked this new account as <a href="http://support.twitter.com/groups/31-twitter-basics/topics/107-my-profile-account-settings/articles/14016-about-public-and-protected-accounts" title="Twitter Help Center">private in the account settings</a> because I don&#8217;t want anyone subscribing to the tweets sent through this account.</p><p>Because I marked it as private, the script can&#8217;t read the home timeline of tweets without authentication.  In order to authenticate with Twitter, I need to <a href="http://dev.twitter.com/apps" title="http://dev.twitter.com/apps" class="broken_link" rel="nofollow">register the script</a> with the Twitter API service to get a &#8220;Consumer Key&#8221; and a &#8220;Consumer Secret&#8221;.  The registration page looks similar to below, but you&#8217;ll need to pick a different name.  (Application names must be unique across Twitter.)<br /><div id="attachment_1737" class="wp-caption aligncenter" style="width: 805px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://cdn.dltj.org/wp-content/uploads/2010/10/New-Twitter-Application-dev.twitter.com_1287524992428.png"><img src="http://cdn.dltj.org/wp-content/uploads/2010/10/New-Twitter-Application-dev.twitter.com_1287524992428-795x1024.png" alt="" title="New Twitter Application screen for twitter-to-omnifocus" width="795" height="1024" class="size-large wp-image-1737" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">New Twitter Application screen for twitter-to-omnifocus</p></div></p><p>After submitting that form, you&#8217;ll see a page that will have your key information.  Replace the sample keys in the tweettoOmniFocus.cfg file with the ones from this page.</p><p>You&#8217;ll need to run the twitter-to-omnifocus application once interactively on the command line in order to complete the process of registering the script with Twitter.  First, change the mode of the script so that you can execute it, then run the script:</p><pre>  chmod u+x twitter-to-omnifocus</pre><pre>  ./twitter-to-omnifocus</pre><p>You&#8217;ll be promted to go to a website to get a PIN:</p><pre>  Authorize this app at http://twitter.com/oauth/authorize?oauth_token=nnn and enter the PIN#</pre><p>When you get the PIN, paste it into the terminal window and hit return.  Two new security tokens will be added to the configuration file.</p><p><h2>Getting the Script to Run Periodically on the Mac</h2><br />The last step is to get the script to run periodically on the Mac.  If one were to stick to UNIX traditions, you would run `crontab -e` to create a cron entry.  I think that would work, but the Mac-way of doing it is to create a launchd entry.  You can create one of these by hand, but I find using <a href="http://sourceforge.net/projects/lingon/" title="Lingon | SourceForge.net">Lingon</a> to be a much more palatable way of doing it.  (Okay &#8212; so I&#8217;m not a pure command-line junkie.)<br /><div id="attachment_1738" class="wp-caption aligncenter" style="width: 724px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://cdn.dltj.org/wp-content/uploads/2010/10/Lingon-configuration-for-twitter-to-omnifocus.jpg"><img src="http://cdn.dltj.org/wp-content/uploads/2010/10/Lingon-configuration-for-twitter-to-omnifocus.jpg" alt="" title="Lingon configuration for twitter-to-omnifocus" width="714" height="732" class="size-full wp-image-1738" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Lingon configuration for twitter-to-omnifocus</p></div></p><p><h2>All Done!</h2><br /><div id="attachment_1742" class="wp-caption alignright" style="width: 210px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><img src="http://cdn.dltj.org/wp-content/uploads/2010/10/IMG_0054-200x300.png" alt="" title="Dragon Dictation Screen" width="200" height="300" class="size-medium wp-image-1742" /><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">iPhone Dragon Dictation screen</p></div>With that set, you can now simply send a tweet to your private Twitter account from any mechanism you might have.  What got me started on this path was using <a href="http://itunes.apple.com/us/app/dragon-dictation/id341446764?mt=8" title="Dragon Dictation for iPhone, iPod touch, and iPad on the iTunes App Store">Dragon Dictation</a> on the iPhone to dictate inbox items.  One person suggested using <a href="http://jott.com/default.aspx" title="Jott.com | Voice-to-Text Notes, To Dos &amp; Reminders.  Voicemail-to-Email and Text Message">Jott</a> for phone-to-Twitter transcribing and another suggested an <a href="http://tweetymail.com/" title="Twitter over Email">e-mail path</a>.</p><p>In the end, this is quite an effort and a moderately fragile setup for doing what I want.  In particular, the dictated entries don&#8217;t immediately appear in my iPhone OmniFocus app database. I&#8217;d like some tighter integration between the applications, but I&#8217;ll settle for this for now.<br /><br style="clear: both" /></p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/twitter-to-omnifocus/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Update to &#8216;Embedded Web Video in a Standards-Compliant, Accessible, and Successful Way&#8217;</title><link>http://dltj.org/article/update-to-embedded-web-video/</link> <comments>http://dltj.org/article/update-to-embedded-web-video/#comments</comments> <pubDate>Wed, 21 Feb 2007 20:41:09 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[accessibility]]></category> <category><![CDATA[digital libraries]]></category> <category><![CDATA[perl]]></category> <category><![CDATA[section508]]></category> <category><![CDATA[video]]></category> <category><![CDATA[web standards]]></category><guid isPermaLink="false">http://dltj.org/2007/02/update-to-embedded-web-video/</guid> <description><![CDATA[With the release of Microsoft&#8217;s Windows Media Player version 11, the Microsoft Media Server (MMS) protocol is officially no longer supported. (Except, of course, for the confusing/amusing footnote on that page that says &#8216;mms://&#8217; URIs are &#8220;highly recommended&#8221; as a &#8230; <a href="http://dltj.org/article/update-to-embedded-web-video/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2007/02/update-to-embedded-web-video/"></abbr><p>With the release of Microsoft&#8217;s <a href="http://www.microsoft.com/windows/windowsmedia/player/11/default.aspx" title="Windows Media Player 11">Windows Media Player version 11</a>, the Microsoft Media Server (MMS) protocol is <a href="http://www.microsoft.com/windows/windowsmedia/licensing/netprokit.aspx#WindowsMediaNetworkingProtocolsCompatibility" title="Windows Media Porting Kits: Other Windows Media Technologies">officially no longer supported</a>.  (Except, of course, for the confusing/amusing footnote on that page that says &#8216;mms://&#8217; URIs are &#8220;highly recommended&#8221; as a <a href="http://msdn2.microsoft.com/en-gb/library/aa390673.aspx" title="Protocol Rollover">protocol rollover URL</a> &mdash; only Microsoft can at the same time make something deprecated and highly recommended.)  As <span class="removed_link" title="http://blog.ryaneby.com/archives/windows-media-player-11-and-mms/">Ryan Eby noted earlier this year</span>, those generating ASX files for Windows Media Player need to adjust their scripts.</p><p>Last year I published an entry called <a href="http://dltj.org/2006/09/standards-compliant-web-video/">Embedded Web Video in a Standards-Compliant, Accessible, and Successful Way</a> on how to embed (without using the non-standard &lt;EMBED&gt; tag) video on an HTML page.  It has been one of the most widely read articles on <i>DLTJ.org</i>, and so I wanted to publish an updated version of the script from that article to take into account this new wrinkle from Microsoft.  The change is at line #41 below:</p><div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl -w</span>
<span style="color: #666666; font-style: italic;"># Copyright (C) 2006-2007 OhioLINK</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This file is part of the OhioLINK Digital Resource Commons (DRC) Project.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># The OhioLINK DRC is free software; you can redistribute it and/or</span>
<span style="color: #666666; font-style: italic;"># modify it under the terms of the Affero General Public License as</span>
<span style="color: #666666; font-style: italic;"># published by Affero, Inc. -- either version 1 of the License, or</span>
<span style="color: #666666; font-style: italic;"># (at your option) any later version.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># The OhioLINK DRC Project is distributed in the hope that it will be</span>
<span style="color: #666666; font-style: italic;"># useful, but WITHOUT ANY WARRANTY -- without even the implied warranty</span>
<span style="color: #666666; font-style: italic;"># of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span style="color: #666666; font-style: italic;"># Affero General Public License for more details.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># You should have received a copy of the Affero General Public</span>
<span style="color: #666666; font-style: italic;"># License in the LICENSE.txt file that comes with the DRC project;</span>
<span style="color: #666666; font-style: italic;"># if not, write to DRC Development Team, OhioLINK, 2455 North Star Rd,</span>
<span style="color: #666666; font-style: italic;"># Suite 300, Columbus, OH 43221, USA.</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$ENV</span><span style="color: #009900;">&#123;</span>PATH_INFO<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Location: http://no-path-info-given/<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$format</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$id</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ENV</span><span style="color: #009900;">&#123;</span>PATH_INFO<span style="color: #009900;">&#125;</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">q</span><span style="color: #666666; font-style: italic;">#^/+(.*?)/(.*)$#;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$format</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/Quicktime/i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Location: http://video.ohiolink.edu/blah/Quicktime/$id<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$format</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/Real/i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Location: http://video.ohiolink.edu:8080/ramgen/blah/Real/$id<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$format</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/Windows/i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$winType</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$winFile</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$id</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">q</span><span style="color: #666666; font-style: italic;">#^(.*?)/(.*)$#;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$winType</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/asx/i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #0000ff;">$winFile</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">s/\\..*$//</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">print</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #ff0000;">&quot;EoMarkup&quot;</span><span style="color: #339933;">;</span>
Content<span style="color: #339933;">-</span>type<span style="color: #339933;">:</span> video<span style="color: #339933;">/</span>x<span style="color: #339933;">-</span>ms<span style="color: #339933;">-</span>asf
&nbsp;
<span style="color: #339933;">&lt;</span>asx version<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;3.0&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #009999;">&lt;copyright&gt;</span><span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span> <span style="color: #cc66cc;">2005</span> <span style="color: #339933;">-</span> xxx<span style="color: #339933;">&lt;/</span>copyright<span style="color: #339933;">&gt;</span>
<span style="color: #009999;">&lt;entry&gt;</span>
<span style="color: #339933;">&lt;</span>ref href<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;mms://video.ohiolink.edu/blah/Windows/$winFile.wmv?SAMI=http://rave.ohiolink.edu/dmc/blah/windows/smi/$winFile.smi&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>ref href<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;http://video.ohiolink.edu/blah/Windows/$winFile.wmv?SAMI=http://rave.ohiolink.edu/dmc/blah/windows/smi/$winFile.smi&quot;</span><span style="color: #339933;">/&gt;</span>
<span style="color: #009999;">&lt;copyright&gt;</span><span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span> <span style="color: #cc66cc;">2005</span> <span style="color: #339933;">-</span> xxx<span style="color: #339933;">&lt;/</span>copyright<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>ref<span style="color: #339933;">&gt;&lt;/</span>entry<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>asx<span style="color: #339933;">&gt;</span>
EoMarkup
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$winType</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/wmv/i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Location: mms://video.ohiolink.edu/blah/Windows/$winFile<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$winType</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/smi/i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">use</span> LWP<span style="color: #339933;">::</span><span style="color: #006600;">UserAgent</span><span style="color: #339933;">;</span>
      <span style="color: #0000ff;">$ua</span> <span style="color: #339933;">=</span> LWP<span style="color: #339933;">::</span><span style="color: #006600;">UserAgent</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #339933;">;</span>
      <span style="color: #0000ff;">$ua</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">agent</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$0-lwp/0.1 &quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$ua</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">agent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #0000ff;">$req</span> <span style="color: #339933;">=</span> HTTP<span style="color: #339933;">::</span><span style="color: #006600;">Request</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>GET <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;http://video.ohiolink.edu:8080/blah/Windows/$winFile&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #666666; font-style: italic;"># send request</span>
      <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ua</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">request</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$req</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #666666; font-style: italic;"># check the outcome</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$res</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">is_success</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Content-type: application/smil<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">print</span> <span style="color: #0000ff;">$res</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">decoded_content</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Location: http://error-from-remote-server/$winType/$winFile/&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">$res</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">code</span><span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;/&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">$res</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">message</span><span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Location: http://invalid-Windows-format-given/$winType/$winFile<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Location: http://invalid-format-given/$format/$id<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n<span style="color: #000099; font-weight: bold;">\\</span>r<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Thanks to Neil Bennett at the University of Southern Maine for contacting OhioLINK about the problem, providing some very helpful diagnostics, and pointing us to the URL to the protocol table mentioned above.  It is also worth noting that the A List Apart website posted a new article about <a href="http://alistapart.com/articles/flashembedcagematch" title="A List Apart: Articles: Flash Embedding Cage Match">sane ways of embedding Flash content</a> that builds upon the same work in the original &#8216;Embedded Web Video&#8230;&#8217; article.  It might be time to update some of the techniques used in the original article, but that&#8217;ll need to wait for another time.<p style="padding:0;margin:0;font-style:italic;" class="removed_link">The text was modified to remove a link to http://blog.ryaneby.com/archives/windows-media-player-11-and-mms/ on January 19th, 2011.</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/update-to-embedded-web-video/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Script for Testing HTTP Referer Headers</title><link>http://dltj.org/article/referer-script/</link> <comments>http://dltj.org/article/referer-script/#comments</comments> <pubDate>Tue, 05 Sep 2006 21:12:59 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[libraries]]></category> <category><![CDATA[perl]]></category> <category><![CDATA[referer]]></category><guid isPermaLink="false">http://dltj.org/2006/09/referer-script/</guid> <description><![CDATA[I&#8217;ve just had the third occasion where in support of a user I suspect that user has a piece of software which is blocking or modifying the HTTP &#8220;referrer&#8221; header that comes normally with most interactions between a web browser &#8230; <a href="http://dltj.org/article/referer-script/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2006/09/referer-script/"></abbr><p>I&#8217;ve just had the third occasion where in support of a user I suspect that user has a piece of software which is blocking or modifying the HTTP &#8220;referrer&#8221; header that comes normally with most interactions between a web browser and a web server.  Rather than asking that user to run a complicated test I found elsewhere on the web, I whipped up a little ditty that tests for this with (hopefully) non-technical words and advice.  At the bottom of this post is the source code for the script; feel free to take it and modify it for your own circumstances.</p><p>The URL to start the test is <a href="http://www.ohiolink.edu/cgi-bin/check-refer.pl" title="Check Your Referrer Field">http://www.ohiolink.edu/cgi-bin/check-refer.pl</a>.</p><p>I suspect most everyone will see the &#8220;correct behavior&#8221; as a result of the test.  For the sake of describing the problem completely, there are two possible &#8220;error&#8221; messages that one might see, though, if something is wrong.  First, if there was not a &#8220;Referrer&#8221; field received at the web server:</p><blockquote><p>Either your browser did not return a &#8216;Referrer&#8217; URL as a result of following the link on the previous page or an intermediary has stripped the referrer URL from your browser&#8217;s request before it reached this server. (This symptom can also happen if you typed the results URL, http://www.ohiolink.edu/cgi-bin/check-refer.pl/test, directly in the browser address window rather beginning from the start page.)</p></blockquote><p>Second, if what was received was not what was expected:</p><blockquote><p>As a result of following the link on the previous page, your browser returned this as the &#8216;Referrer&#8217; field:<br /><span style="font-family:monospace; margin-left: 5em; margin-top: 1em;">[... something else ...]</span></p><p>This was not what was expected, and as a result you may have problems using some OhioLINK services.<br />This value should be <em>http://www.ohiolink.edu/cgi-bin/check-refer.pl</em> instead.<br />(Make sure you start from <a href="http://www.ohiolink.edu/cgi-bin/check-refer.pl" title="Check Your Referrer Field">http://www.ohiolink.edu/cgi-bin/check-refer.pl</a> when performing this test.)</p><p>For assistance with correcting this problem, please see <a href="http://karmak.org/2004/reftest/fix" title="HTTP_REFERER Fix">this support page from karmak.org</a>.</p></blockquote><p>This &#8216;referrer problem&#8217; seems to be happening more as a result of personal firewall software and other &#8220;helpful&#8221; agents.  Setting aside for the moment the question of whether relying on the HTTP Referer <sup><a href="http://dltj.org/article/referer-script/#footnote_0_111" id="identifier_0_111" class="footnote-link footnote-identifier-link" title="By the way, &amp;#8220;Referer&amp;#8221; is not a typo here &amp;mdash; it is arguably a typo in the original HTTP specification">1</a></sup> URL is an acceptable or wise programming choice, if one of your standard troubleshooting tactics doesn&#8217;t work you may want to try this one.</p><div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">###########################################################################</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##  Program:  check-refer.pl</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##  Purpose:  Test the referrer header from the user's browser</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##  Version:  1.0  5-Sep-2006</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##  Author:   Peter Murray</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##  Legalities:</span>
<span style="color: #666666; font-style: italic;">##            Copyright 2006 by OhioLINK</span>
<span style="color: #666666; font-style: italic;">## This file is part of the OhioLINK Digital Resource Commons (DRC) Project.</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## The OhioLINK DRC is free software; you can redistribute it and/or</span>
<span style="color: #666666; font-style: italic;">## modify it under the terms of the Affero General Public License as</span>
<span style="color: #666666; font-style: italic;">## published by Affero, Inc. -- either version 1 of the License, or</span>
<span style="color: #666666; font-style: italic;">## (at your option) any later version.</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## The OhioLINK DRC Project is distributed in the hope that it will be</span>
<span style="color: #666666; font-style: italic;">## useful, but WITHOUT ANY WARRANTY -- without even the implied warranty</span>
<span style="color: #666666; font-style: italic;">## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span style="color: #666666; font-style: italic;">## Affero General Public License for more details.</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## You should have received a copy of the Affero General Public</span>
<span style="color: #666666; font-style: italic;">## License in the LICENSE.txt file that comes with the DRC project;</span>
<span style="color: #666666; font-style: italic;">## if not, write to DRC Development Team, OhioLINK, 2455 North Star Rd, </span>
<span style="color: #666666; font-style: italic;">## Suite 300, Columbus, OH 43221, USA.</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##  Revision History:</span>
<span style="color: #666666; font-style: italic;">##    1.0   5-Sep-2006  peter  Initial Version</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> CGI <span style="color: #000066;">qw</span><span style="color: #009900;">&#40;</span>escapeHTML url http<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> CGI<span style="color: #339933;">::</span><span style="color: #006600;">Carp</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">BEGIN</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #0000ff;">$SIG</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'__DIE__'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">sub</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Content-type: text/html<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;COMPILE TIME ERROR.&lt;/title&gt;&lt;/head&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;body&gt;&lt;h1&gt;COMPILE TIME ERROR.&lt;/h1&gt;&lt;p&gt;This should never happen.  Further details:&lt;/p&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #000066;">join</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&lt;br /&gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;/body&gt;&lt;/html&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">exit</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">$SIG</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'__DIE__'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'handle_die'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">eval</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;main&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$@</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Content-type: text/plain<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>
              <span style="color: #ff0000;">&quot;The script failed because the error<span style="color: #000099; font-weight: bold;">\n</span>$@<span style="color: #000099; font-weight: bold;">\n</span>occurred.&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> main <span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;"># @output will be used in each one of these cases below to store the</span>
<span style="color: #666666; font-style: italic;"># temporary array of HTML while we check for an error returning from the</span>
<span style="color: #666666; font-style: italic;"># subroutine.</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">## Now start doing some real work.</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Initialize the CGI module, and get any form variables into FORM::</span>
<span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CGI<span style="color: #339933;">;</span>
<span style="color: #0000ff;">$query</span><span style="color: #339933;">-</span><span style="color: #0000ff;">&amp;gt</span><span style="color: #339933;">;</span>import_names<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'FORM'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Split the parameters from the URL line by the slash character (after removing</span>
<span style="color: #666666; font-style: italic;"># the leading slash).  We will cycle through each one of these below.</span>
<span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$path_info</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$path_info</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ENV</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'PATH_INFO'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">s/^\///</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@params</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\//</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$path_info</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Now we start cycling through the @params array looking for specific keywords.</span>
<span style="color: #0000ff;">$_</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span> <span style="color: #0000ff;">@params</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000066;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$_</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$_</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'start'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;"># If there is nothing following the script file name (e.g., no PATH_INFO) or if the</span>
 <span style="color: #666666; font-style: italic;"># contents of the first parameter is 'start', then generate the introdution page</span>
  <span style="color: #0000ff;">@output</span> <span style="color: #339933;">=</span> initial_page<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$_</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'test'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;"># If the first parameter is 'test' then run the tests on the referrer header</span>
  <span style="color: #0000ff;">@output</span> <span style="color: #339933;">=</span> test_results<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;"># The command was unknown -- either an error in coding or someone trying to hack</span>
 <span style="color: #666666; font-style: italic;"># the script.  Return an error.</span>
  <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> HTMLheader<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Sorry -- I don't understand.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #ff0000;">&quot;EoHTML&quot;</span><span style="color: #339933;">,</span> HTMLfooter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009999;">&lt;p&gt;</span>I<span style="color: #ff0000;">'m sorry, but I don'</span>t understand the <span style="color: #0000ff;">$_</span> command<span style="color: #339933;">.</span>  Try starting from <span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;./&quot;</span><span style="color: #339933;">&gt;</span>the beginning<span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;.&lt;/</span>p<span style="color: #339933;">&gt;</span>
EoHTML
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Write out the HTML that has been gathered in @output</span>
outputHTML <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@output</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># And we're done!</span>
<span style="color: #000066;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>  <span style="color: #666666; font-style: italic;">## End of sub main()</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> initial_page <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$url</span> <span style="color: #339933;">=</span> url<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> HTMLheader<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Check Your Referrer Field&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> EoHTML<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009999;">&lt;p&gt;</span>
To begin a test of how OhioLINK receives the <span style="color: #ff0000;">&quot;Referrer&quot;</span> field from your web browser<span style="color: #339933;">,</span> click on the following <span style="color: #000066;">link</span><span style="color: #339933;">:</span>
<span style="color: #339933;">&lt;/</span>p<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>p style<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;font-size: 120%; width: 100%; text-align: center; border: 1px solid gray;&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;$url/test&quot;</span><span style="color: #339933;">&gt;</span>Start Referrer Test<span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>p<span style="color: #339933;">&gt;</span>
&nbsp;
EoHTML
  <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> HTMLfooter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">return</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> test_results <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$referrer</span> <span style="color: #339933;">=</span> http<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'HTTP_REFERER'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$trueReferrer</span> <span style="color: #339933;">=</span> url<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>full<span style="color: #339933;">=</span><span style="color: #0000ff;">&amp;gt</span><span style="color: #339933;">;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> HTMLheader<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Results of Test for Referrer Field&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000066;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$referrer</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$referrer</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  	<span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&lt;p&gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;Either your browser did not return a 'Referrer' URL as a result of following the link on the previous page or an intermediary has stripped the referrer URL from your browser's request before it reached this server.  (This symptom can also happen if you typed the results URL, &lt;em&gt;$trueReferrer/test&lt;/em&gt;, directly in the browser address window rather beginning from the &lt;a href=&quot;</span><span style="color: #0000ff;">\&amp;quot</span><span style="color: #339933;">;</span><span style="color: #0000ff;">$trueReferrer</span>\<span style="color: #ff0000;">&quot;&gt;start page&lt;/a&gt;.)&quot;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;&lt;/p&gt;&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&lt;p&gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;As a result of following the link on the previous page, your browser returned this as the 'Referrer' field:&lt;br /&gt;&lt;span style=&quot;</span><span style="color: #0000ff;">\&amp;quot</span><span style="color: #339933;">;</span>font<span style="color: #339933;">-</span>family<span style="color: #339933;">:</span>monospace<span style="color: #339933;">;</span> margin<span style="color: #339933;">-</span>left<span style="color: #339933;">:</span> 5em<span style="color: #339933;">;</span> margin<span style="color: #339933;">-</span>top<span style="color: #339933;">:</span> 1em<span style="color: #339933;">;</span>\<span style="color: #ff0000;">&quot;&gt;$referrer&lt;/span&gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;&lt;/p&gt;&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$referrer</span> <span style="color: #b1b100;">eq</span> <span style="color: #0000ff;">$trueReferrer</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&lt;p&gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;This is what was expected.&quot;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;&lt;/p&gt;&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #ff0000;">&quot;EoHTML&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009999;">&lt;p&gt;</span>
This was <span style="color: #b1b100;">not</span> what was expected<span style="color: #339933;">,</span> <span style="color: #b1b100;">and</span> as a result you may have problems using some OhioLINK services<span style="color: #339933;">.</span>  
This value should be <span style="color: #009999;">&lt;em&gt;</span><span style="color: #0000ff;">$trueReferrer</span><span style="color: #339933;">&lt;/</span>em<span style="color: #339933;">&gt;</span> instead<span style="color: #339933;">.</span>  
<span style="color: #009900;">&#40;</span>Make sure you start from <span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;$trueReferrer&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #0000ff;">$trueReferrer</span><span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span> when performing this test<span style="color: #339933;">.</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">&lt;/</span>p<span style="color: #339933;">&gt;</span>
<span style="color: #009999;">&lt;p&gt;</span>
For assistance with correcting this problem<span style="color: #339933;">,</span> please see <span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;http://karmak.org/2004/reftest/fix&quot;</span> title<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;HTTP_REFERER Fix&quot;</span><span style="color: #339933;">&gt;</span>this support page from karmak<span style="color: #339933;">.</span>org<span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;.</span>
<span style="color: #339933;">&lt;/</span>p<span style="color: #339933;">&gt;</span>
EoHTML
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066;">push</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">,</span> HTMLfooter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">return</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> outputHTML<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@output</span><span style="color: #339933;">=</span><span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Content-type: text/html<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">print</span> <span style="color: #000066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">@output</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> HTMLheader<span style="color: #009900;">&#40;</span><span style="color: #339933;">@</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$title</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$h1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$style</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #0000ff;">$h1</span><span style="color: #339933;">=</span><span style="color: #0000ff;">$title</span> <span style="color: #b1b100;">if</span> <span style="color: #339933;">!</span><span style="color: #000066;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$h1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #0000ff;">$style</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #b1b100;">if</span> <span style="color: #339933;">!</span><span style="color: #000066;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$style</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000066;">return</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #ff0000;">&quot;EoHTML&quot;</span>
<span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #339933;">!</span>doctype html PUBLIC <span style="color: #ff0000;">&quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</span> <span style="color: #ff0000;">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;</span><span style="color: #0000ff;">&amp;gt</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;</span>html xml<span style="color: #339933;">:</span>lang<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;en&quot;</span> xmlns<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #009999;">&lt;head&gt;</span>
	<span style="color: #339933;">&lt;</span>meta http<span style="color: #339933;">-</span>equiv<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;Content-Type&quot;</span> content<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;text/html; charset=UTF-8&quot;</span><span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;/</span>meta<span style="color: #339933;">&gt;&lt;</span>meta name<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;robots&quot;</span> content<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;none&quot;</span><span style="color: #339933;">&gt;</span>
	<span style="color: #009999;">&lt;title&gt;</span><span style="color: #0000ff;">$title</span><span style="color: #339933;">&lt;/</span>title<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>link rel<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;/style/ohiolink.css&quot;</span><span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>style type<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span><span style="color: #339933;">&gt;&lt;!--/*--&gt;</span><span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#91;</span>cdata<span style="color: #009900;">&#91;</span><span style="color: #339933;">/*</span><span style="color: #0000ff;">&amp;gt</span><span style="color: #339933;">;&lt;!--*/</span>
       <span style="color: #0000ff;">$style</span>
	<span style="color: #339933;">/*</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&gt;*/--</span><span style="color: #0000ff;">&amp;gt</span><span style="color: #339933;">;&lt;/</span>style<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>link<span style="color: #339933;">&gt;&lt;/</span>meta<span style="color: #339933;">&gt;&lt;/</span>head<span style="color: #339933;">&gt;</span>
<span style="color: #009999;">&lt;body&gt;</span>
<span style="color: #339933;">&lt;</span>p align<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;right&quot;</span><span style="color: #339933;">&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;/images/bar-header.jpg&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #339933;">/&gt;&lt;/</span>p<span style="color: #339933;">&gt;</span>
<span style="color: #009999;">&lt;h1&gt;</span><span style="color: #0000ff;">$h1</span><span style="color: #339933;">&lt;/</span>h1<span style="color: #339933;">&gt;</span>
EoHTML
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> HTMLfooter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066;">return</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">&amp;lt</span><span style="color: #339933;">;</span> EoHTML
<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>html<span style="color: #339933;">&gt;</span>
EoHTML
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## SUBROUTINE handle_die</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##   Get an error key for the program, open up the error text file, find and</span>
<span style="color: #666666; font-style: italic;">##   print the text specific for that error, make the user feel special with</span>
<span style="color: #666666; font-style: italic;">##   a message, then EXIT THE SCRIPT.</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">##   Parameters: Text key of the error message, plus additional parameters</span>
<span style="color: #666666; font-style: italic;">##   Returns:    --none--  handle_die WILL EXIT THE SCRIPT</span>
<span style="color: #000000; font-weight: bold;">sub</span> handle_die <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@addl_info</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span> <span style="color: #009966; font-style: italic;">/\|/</span><span style="color: #339933;">,</span><span style="color: #0000ff;">@_</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$error_key</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span> <span style="color: #0000ff;">@addl_info</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$package</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$filename</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$line</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$subroutine</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">caller</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">my</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$progName</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$paramURL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Content-type: text/html<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">print</span> HTMLheader<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'Program Error'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;p&gt;This program encountered an error in the &lt;b&gt;$subroutine&lt;/b&gt; routine at line &lt;b&gt;$line&lt;/b&gt; of &lt;b&gt;$progName&lt;/b&gt;.&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;The error key is &lt;b&gt;$error_key&lt;/b&gt;.  The parameter URL is &lt;b&gt;$paramURL&lt;/b&gt;.&lt;/p&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">scalar</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@addl_info</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&amp;gt</span><span style="color: #339933;">;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;p&gt;Some additional info:<span style="color: #000099; font-weight: bold;">\n</span>&lt;/p&gt;&lt;ul&gt;&lt;li&gt;<span style="color: #000099; font-weight: bold;">\n</span> &lt;/li&gt;&lt;li&gt;&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #000066;">join</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span> &lt;/li&gt;&lt;li&gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">@addl_info</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&lt;/li&gt;&lt;/ul&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066;">print</span> HTMLfooter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><h2>Footnotes</h2><ol class="footnotes"><li id="footnote_0_111" class="footnote">By the way, &#8220;Referer&#8221; is not a typo here &mdash; it is arguably a typo in the original HTTP specification</li></ol>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/referer-script/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Served from: dltj.org @ 2012-02-11 09:07:27 by W3 Total Cache -->
