<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Plop in the Ocean</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://pgregg.com/blog/atom.xml" />
    <id>tag:pgregg.com,2009-02-01:/blog//2</id>
    <updated>2012-03-27T22:49:29Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.34-en</generator>

<entry>
    <title>My OnLive Experience</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2012/03/my-onlive-experience.html" />
    <id>tag:pgregg.com,2012:/blog//2.350</id>

    <published>2012-03-27T20:48:58Z</published>
    <updated>2012-03-27T22:49:29Z</updated>

    <summary>In February BT posted an offer (no longer on the BT web site) allowing customers in Northern Ireland to buy an OnLive Gaming Console (MicroConsole) for £9.99 (normal price £70) plus £6 shipping. Seemed like a good deal - and so I signed up (2 Feb 2012). Remember these prices - they are important as they come up later.Executive Summary:I bought a MicroConsole device from OnLive, that is faulty.OnLive is failing to uphold consumer&apos;s Statutory rights in the UK. And even goes to far as to explicitly deny those rights to consumers, itself a criminal offense in the UK. I...</summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
    <category term="consumer" label="consumer" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="onlive" label="onlive" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[In February BT posted an <a href="http://www.hotukdeals.com/deals/onlive-console-for-9-99-p-p-for-bt-bb-customers-ni-plus-3-months-playpack-bundle-1120954">offer</a>
 (no longer on the BT web site) allowing customers in Northern Ireland 
to buy an OnLive Gaming Console (MicroConsole) for £9.99 (normal price 
£70) plus £6 shipping. Seemed like a good deal - and so I signed up (2 
Feb 2012). Remember these prices - they are important as they come up 
later.<br /><br />Executive Summary:<br />I bought a MicroConsole device from OnLive, that is faulty.<br />OnLive
 is failing to uphold consumer's Statutory rights in the UK. And even 
goes to far as to explicitly deny those rights to consumers, itself a 
criminal offense in the UK. I have been denied a refund of a defective 
unit on the grounds that the unit was free and all I paid was postage 
(which is incorrect).<br />OnLive's website states "No refunds" - a criminal offense in the UK.<br />Onlive
 have stated that my MicroConsole was free, and I only paid shipping 
costs. And shipping costs will not be refunded. *wrong*<br />OnLive are 
also denying Sale of Goods Act by saying that I only have 7 days to 
cancel and that I agreed to this in the Terms of Service. This relates to the Distance Selling Regulations and not to faulty goods under the Sale of Goods Act.<br /><br />I am of the 
opinion that I acted reasonably and gave OnLive sufficient time to 
rectify the problem. I also believe, given the time lines showing that 
the hardware never worked, that I can not, in law, be deemed to have 
accepted the goods, and so have a lawful right to fully reject them, and
 obtain a full refund for all monies paid.<br /><br />I don't want to criticise OnLive Technical Support, just their Customer Service policies. <br /><br />Timeline: I will update the timeline below as things develop.<br /><br />I
 received the MicroConsole the week of February 18 (not sure exactly 
what date) and attempted to use it, however it was nothing like the 
experience received when playing on the PC.&nbsp; The PC was reasonably quick
 and responsive and I would estimate ran at maybe 15fps which was 
reasonable for streaming videogame over the internet.&nbsp; The MicroConsole 
on the otherhand was laggy, and I achieved maybe 3 to 4 fps. In short, 
the game (Dirt 3) was unplayable.<br /><br />I opened a Support ticket February 18. And so the saga begins.<br /><br />My original support request: <span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            02/18/2012 05:18 PM (timestamps from OnLive support portal)</span><br /><br /><blockquote>I have attempted to set up my MicroConsole and am able to connect to the service.<br />However any time I attempt to play/start HomeFront game, the MC crashes and reboots.<br />Attempting to play Dirt3 results in a game running at approx 4 frames per second.<br />Playing Homefront on my PC is fine.<br /></blockquote><blockquote>The
 MC constantly pops a message in the top right complaining of network 
problems - but the fact my PC works fine, shows the network is fine.<br /><a href="http://www.speedtest.net/result/1782184455.png" target="_blank">http://www.speedtest.net/result/1782184455.png</a><br />My home is wired for Gbit ethernet, and the MC is plugged into that. I've tried an alternative ethernet cable - no difference.<br /></blockquote><blockquote>Even the intro screen/animation on the MC is blocky and just looks wrong.<br /></blockquote><blockquote>I'm beginning to think I got a bad MC as I have never been able to play a game on it.<br /></blockquote><blockquote>Thanks,<br />PG.    <br /></blockquote>Within an 80 minutes I had a reply, excellent. Except it is a standardised get-more-info affair. Fair enough I suppose: <span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            02/18/2012 06:40 PM</span><br /><br /><blockquote>Greetings PG,<br /></blockquote><blockquote>Thank you for contacting OnLive. To help our team troubleshoot the issue, please provide the following information:<br /></blockquote><blockquote>- In what country are you located?<br />- What is the name of your Internet Service Provider?<br />- Is an error message displayed when you connect? If so, what is the message?<br />- What are the results of the broadband quality test from <a href="http://www.pingtest.net/" target="_blank">http://www.pingtest.net</a>? *<br />- What are the results of the Internet connection test from <a href="http://www.speedtest.net/" target="_blank">http://www.speedtest.net</a>? *<br />- What is the brand and model of the cable or DSL modem used in your home network?<br />- What (if any) is the brand and model of the router used in your home network? <br />- Are you behind a firewall and/or are any antivirus applications running? <br />-  Are you using a Wireless (Wi-Fi) or Wired router? <br />If Wi-Fi, please check for interference:<br />-
 Are you the only person currently on network (using the Internet), or 
are other members of your household sharing the connection? <br />- If you have a smartphone, is it configured to share your Wi-Fi network?<br /></blockquote><blockquote>* For best results, choose the server closest to your location:<br />US<br />-- East Coast --&gt; Washington D.C.<br />-- West Coast --&gt; San Francisco, CA<br />-- Midwest --&gt; Dallas, TX<br />UK <br />-- London<br /></blockquote><blockquote>Best regards,<br /></blockquote><blockquote>Realiana<br />Customer Service Representative<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com/</a><br /></blockquote><br />So I respond to each of the questions: <span class="rn_ThreadTime">02/19/2012 06:13 AM</span><br /><br /><blockquote>In what country are you located?<br /></blockquote><blockquote>UK<br /></blockquote><blockquote>- What is the name of your Internet Service Provider?<br /></blockquote><blockquote>BT<br /></blockquote><blockquote>- Is an error message displayed when you connect? If so, what is the message?<br /></blockquote><blockquote>No error message.<br /></blockquote><blockquote>- What are the results of the broadband quality test from <a href="http://www.pingtest.net/" target="_blank">http://www.pingtest.net</a>? *<br /></blockquote><blockquote><a href="http://www.pingtest.net/result/57209759.png" target="_blank">http://www.pingtest.net/result/57209759.png</a><br /></blockquote><blockquote>- What are the results of the Internet connection test from <a href="http://www.speedtest.net/" target="_blank">http://www.speedtest.net</a>? *<br /></blockquote><blockquote><a href="http://www.speedtest.net/result/1782184455.png" target="_blank">http://www.speedtest.net/result/1782184455.png</a><br /></blockquote><blockquote>- What is the brand and model of the cable or DSL modem used in your home network?<br /></blockquote><blockquote>BT Supplied HomeHub3 (I believe) - supplied with the BT Infinity service.<br /></blockquote><blockquote>- What (if any) is the brand and model of the router used in your home network?<br /></blockquote><blockquote>Same device as the BT HomeHub3<br /></blockquote><blockquote>- Are you behind a firewall and/or are any antivirus applications running?<br /></blockquote><blockquote>No - just the BT HomeHub.<br /></blockquote><blockquote>- Are you using a Wireless (Wi-Fi) or Wired router?<br /></blockquote><blockquote>BT HomeHub does Wifi - but I am not using Wifi. I have Gbit Cat5e wired ethernet connections to all devices, including the MC.<br /></blockquote><blockquote>If Wi-Fi, please check for interference:<br /></blockquote><blockquote>No
 interference.  The BT HomeHub3 is supposed to scan and pick the best 
channel with no interferences. However, the issue is moot - my nearest 
neighbour is 100m away and using my phone's (android app) Wifi Analyser,
 I am the only wifi network it can see.<br /></blockquote><blockquote>- Are you the only person
 currently on network (using the Internet), or are other members of your
 household sharing the connection?<br /></blockquote><blockquote>At the times of testing, I am the only one using the network.<br /></blockquote><blockquote>- If you have a smartphone, is it configured to share your Wi-Fi network?<br /></blockquote><blockquote>No.<br /></blockquote><blockquote>Thanks,<br />PG    <br /></blockquote>The following Wednesday I get a holding email: <span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            02/22/2012 12:09 PM<br /><br /></span><blockquote>Hello,<br /></blockquote><blockquote>Thank you for the information. I will forward your inquiry
 to our Technical Team for further assistance, They will contact you via
 email as soon as they are able.<br /></blockquote><blockquote>Thank you for your patience. Have a lovely day!<br /></blockquote><blockquote>Best regards,<br /></blockquote><blockquote>Realiana<br />Customer Service Representative<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com/</a><br /></blockquote>And so I wait another 2 days to receive: <span class="rn_ThreadTime">02/24/2012 02:23 PM<br /><br /></span><blockquote>Hello,<br /><br />Your issues may have to do with a couple of things. I saw 
that you had run a speed test, but we would like it if you could run the
 test to London. <br /><br />Can you please run a test for me at 
www.speedtest.net and find the white dot that represents London. Click 
on that dot and start the test. When the test finishes, please click on 
Share This Result, then click Copy and paste the results here.<br /><br />Best regards,<br /><br />Berret<br />OnLive Technical Support<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com</a><br /></blockquote><br />2 days later, I reply: <span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            02/26/2012 04:41 PM<br /><br /></span><blockquote>Hi, <br /><br />Here are some results from London based speedtests that I ran just now. <br /><br /><a href="http://www.speedtest.net/result/1798764992.png" target="_blank">http://www.speedtest.net/result/1798764992.png</a><br /><br /><a href="http://www.speedtest.net/result/1798810091.png" target="_blank">http://www.speedtest.net/result/1798810091.png</a><br /><br /><a href="http://www.speedtest.net/result/1798812080.png" target="_blank">http://www.speedtest.net/result/1798812080.png</a><br /><br /><a href="http://www.speedtest.net/result/1798812973.png" target="_blank">http://www.speedtest.net/result/1798812973.png</a><br /><br />Thanks, <br />PG <br /></blockquote>    <span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            02/28/2012 04:22 PM:<br /><br /></span><blockquote>Hello,<br /><br />Thank you very much for providing those links for me. Is 
this issue only on your MicroConsole, or do you notice issues on you 
computer as well?<br /><br />Best regards,<br /><br />Berret<br />OnLive Technical Support<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com</a><br /></blockquote><br /><span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            02/28/2012 06:26 PM<br /><br /></span><blockquote>Hi, <br /><br />No. PC play seems to be working well. <br /><br />Thanks, <br />PG <br />-- <br />Sent from my Android phone with K-9 Mail. Please excuse my brevity. <br /></blockquote><span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            03/01/2012 10:26 AM<br /><br /></span><blockquote>Hey PG,<br /><br />I am trying to do some research into why you are having 
this experience on your MicroConsole only. Can you try and run a few 
more sessions on the device, so we can get some details? When I look up 
your previous sessions, they are understandably computer ones for the 
most part. <br /><br />I appreciate the help in figuring out your issue.<br /><br />Best regards,<br /><br />Berret<br />OnLive Technical Support<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com</a><br /></blockquote><br />Now,
 somehow I did not get this email :( but on Monday 5th I got a 
notification that the ticket was closed because I did not reply.<br /><br />







<blockquote><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;
mso-fareast-font-family:&quot;Times New Roman&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:
&quot;Times New Roman&quot;"> OnLive Support [mailto:support@onlive.com] <br />
<b>Sent:</b> 05 March 2012 08:22<br />
<b>Subject:</b> MC blocky and crashes. [Incident: 120218-000143]</span>&nbsp;<span style="font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:
&quot;Times New Roman&quot;"> <br /></span></p><span style="font-size: 12pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">This ticket has been closed because we have not heard
back from you in 3 days. This is an automated message, but you can re-open the
ticket at any time by replying to this email.</span><br style="mso-special-character:
line-break" /><span style="font-size: 12pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"></span></blockquote>

<span style="font-size:12.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:
&quot;Times New Roman&quot;;mso-ansi-language:EN-US;mso-fareast-language:EN-US;
mso-bidi-language:AR-SA">
<br /></span>I replied saying I didn't get the earlier message, assuming it would reopen the ticket.<br />It
 didn't, but I was not aware of that and several days later I logged 
into the web site to find the ticket still closed :(&nbsp; So I open another 
ticket.<br />&nbsp;<br /><span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            03/20/2012 05:33 PM<br /><br /></span><blockquote>Unfortunately you did not solve 120218-000143.<br /><br />I did not receive the message just before you closed the ticket and so was surprised when the ticket was closed.<br /><br />In your message about closing it you state:<br />"This
 ticket has been closed because we have not heard back from you in 3 
days. This is an automated message, but you can re-open the ticket at 
any time by replying to this email."<br /><br />Unfortunately this is not 
true because I did reply to this email with further information but this
 did not reopen the ticket. Now when I look at the ticket online, it 
says I can not reopen the ticket.<br /><br />So with that complaint out of the way...<br /><br />I wish to request a refund for this MC because it simply does not perform the function to which it is supposed to do.<br />Please advise as to the correct process to follow to achieve this.<br /><br />Thank you<br />Paul Gregg<br /></blockquote><br />It was then I spotted on their web site the message "No refunds" and so sent a followup:<br /><br /><span class="rn_ThreadTime">03/20/2012 06:14 PM<br /><br /></span><blockquote>Oh - I just saw this:<br /><br />  What if I change my mind, and want to return the OnLive Game System or an accessory?<br /><br />    All purchases are final. No refunds.<br />    Find comprehensive support information at: OnLive Game System. <br /><br />FYI - Not only is this term unlawful -  OnLive is *committing* a criminal offense in the UK.<br /><br />Under
 the Consumer Protection from Unfair Trading Regulations 2008 it is also
 a criminal offence to mislead a consumer about his/her legal rights. 
Examples might include stating 'no refunds' or 'sold as seen'.    <br /></blockquote><br />The picked it up again: <span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            03/21/2012 04:02 PM<br /><br /></span><blockquote>Hello,<br /><br />Thank you for contacting us again, I apologize you had not
 seen my previous message. I would happy to continue to troubleshoot 
your issue with you if you are still having a bad experience. If you 
would like to pursue a refund, you are correct that our policy is that 
all sales are final, but we can escalate you to our billing department 
to review your request. <br /><br />Please let us know how you would like to proceed.<br /><br />Best regards,<br /><br />Berret<br />OnLive Technical Support<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com</a><br /></blockquote><br />&nbsp;<span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            03/21/2012 05:26 PM<br /><br /></span><blockquote>Hi Berret, <br /><br />Thank you for your reply. <br />I am at the point where I believe the MC is faulty because it crashes and reboots when I start a game. <br /><br />I
 understand that you state all sales are final - however this is 
contrary to UK law as I noted - and by even displaying this notice you 
are committing a criminal offense in UK law. I trust you will rectify 
this. Further, under the Sale of Goods Act, goods must be of 
merchantable quality and fit for purpose. You've had over a month to try
 and make the MC<br />I bought work, without success, and I am within my legal right to demand a full refund. This is what I am invoking now. <br /><br /> 1.  You will provide a full refund for the faulty MC. <br /> 2.  You will provide return postage, or collection service to return the faulty MC to you. <br /><br />Thank you, <br />Paul Gregg <br /></blockquote><br /><span class="rn_ThreadTime">03/24/2012 06:58 PM<br /><br /></span><blockquote>Hello,<br /><br />I will escalate your request to the billing department, 
and they will explain the next steps to you. They will be in on Monday 
and will address your issue as quickly as they can.<br /><br />Best regards,<br /><br />Berret<br />OnLive Technical Support<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com</a><br /></blockquote><br /><span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            03/26/2012 11:13 AM<br /><br /></span><blockquote>Greetings,<br /><br />Thank you for contacting OnLive. <br /><br />We understand that you are requesting a refund for your OnLive Game System purchase..  <br />In order to credit your account, please return the OnLive Gaming System to following address:<br /><br />ATTN: OnLive Department<br />LGI Logistics Group International UK LTD <br />4 Clarendon Drive <br />Wymbush <br />Milton Keynes <br />MK8 8DA <br /><br />After
 we receive the OnLive Game System, we will apply a refund to your 
account. If we do not receive the device within 10 days from this email 
date, you will not receive the refund.<br /><br />If you have any other questions please feel free to ask.<br /><br />Joseph<br />Warranty Department<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com/</a></blockquote><br /><br /><span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            03/27/2012 08:32 AM<br /><br /></span><blockquote>Hi Joseph,<br /><br />Thank you for your message.  However, I would request 
that you pick the returned item up from me as is my right under Sale of 
Goods Act for faulty goods.<br /><br />To be clear - I am requesting a full refund (again under law) and NOT a "credit to my account".<br /><br />The device is faulty and has never performed as advertised. As is evidenced by support tickets you can see in my account.<br /><br />Quote:<br /><a href="http://www.oft.gov.uk/business-advice/treating-customers-fairly/sogahome/sogaexplained/" target="_blank">http://www.oft.gov.uk/business-advice/treating-customers-fairly/sogahome/sogaexplained/</a><br />"In
 the case of faulty goods being returned because they are not fit for 
purpose do not match their description or are not of a satisfactory 
quality , the customer is entitled to claim the cost of postage from you
 or to request that you arrange collection of the item."<br /><br />I will have the goods packaged in the original box available from my shipping address from Wednesday 28th March.<br /><br />Thank you.<br /><br />Paul Gregg    <br /></blockquote><br /><span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            03/27/2012 11:31 AM<br /><br /></span><blockquote>Greetings,<br /><br />As mentioned in the terms of service that you agreed 
upon when you created your account it states that "All hardware sales 
subject to a 7-day right to cancel." <br /><br />You are past the 7-day right to cancel.<br /><br />The
 OnLive Game System you ordered was free and only the shipping cost was 
charged to your account. That cost was to pay to have the unit sent to 
you which it was. Shipping costs will not be refunded.<br /><br />If the 
unit is defective, we have no problem exchanging the unit for you at no 
cost to you. Would you like for me to process an exchange for a brand 
new unit for you? I can even provide you with a free 5-day PlayPass to 
use on a game of your choice to try out the new system.<br /><br />If you have any other questions please feel free to ask.<br /><br />Joseph<br />Warranty Department<br /><a href="http://support.onlive.com/" target="_blank">http://support.onlive.com/</a><br /></blockquote><br /><span class="rn_ThreadAuthor"></span>
        <span class="rn_ThreadTime">
            03/27/2012 03:40 PM<br /><br /></span><blockquote>Hi Joseph,<br /><br />Thank you for your reply.<br /><br />I would like to address each of your points in turn.<br /><br />1. 7 day right to cancel:<br />
 "Notwithstanding the above, the purchase of an OGS or any other 
hardware will constitute the supply of goods, and you will have seven 
days (beginning the day after you receive the goods) in which you may 
choose to cancel the contract."<br /><br />This quote relates to the 
Distance Selling Regulations within which I would have a legal right to 
return the goods, without reason, for a full refund.<br /><br />This is NOT a
 DSR issue. I am attempting to return the Goods under the Sale of Goods 
Act as faulty. Not as described, not fit for purpose and not of 
satisfactory quality. Given the dates of my support tickets, it should 
be obvious that the MicroConsole was faulty when delivered. I also filed
 my first ticket with the 7 days of delivery which, again, signals to 
you that I have not "accepted" the Good in law.<br /><br />2. "You are past the 7-day right to cancel."<br /><br />Irrelevant for reasons stated in 1.<br /><br />3.
 "The OnLive Game System you ordered was free and only the shipping cost
 was charged to your account. That cost was to pay to have the unit sent
 to you which it was. Shipping costs will not be refunded."<br /><br />Incorrect. The offer was a discounted MicroConsole @ £9.99 and £ 6.00 shipping.<br /><br />4. "If the unit is defective, we have no problem exchanging the unit for you at no cost to you"<br /><br />Thank
 you for your offer. However, since the original contract in in breech 
under Sale of Goods Act - I am legally entitled to reject the good and 
request a full refund, including postage. In essence, I should not be 
out of pocket since the contract is void.<br /><br />Further, since you appear to be relying on DSR "7 day" notice period - <br />Your
 attention is drawn to the Consumer Protection (Distance Selling) 
Regulations 2000, specifically to regulation 14 which states that you 
may not make any charge in relation to the supply of goods under a 
contract whereby the cancellation of the contract is due to the breach 
of implied terms of the contract (specifically implied terms in relation
 to section 14 of the Sale of Goods Act).<br /><br />I therefore request that you reimburse both goods and postage fees in accordance with these regulations.<br /><br />Regards,<br />PG    <br /></blockquote><br /><br />&nbsp;<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>OnLive UK Terms of Service and Terms of Use, copy</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2012/03/onlive-uk-terms-of-service-copy.html" />
    <id>tag:pgregg.com,2012:/blog//2.349</id>

    <published>2012-03-27T20:02:33Z</published>
    <updated>2012-03-27T21:57:26Z</updated>

    <summary> Copy taken from http://www.onlive.co.uk/legal/termsofservice and http://www.onlive.co.uk/legal/index on March 27, 2012. TERMS OF SERVICE OnLive EMEA S.à r.l TERMS OF SERVICE Last Updated 7 December 2011 Welcome to the OnLive® Game Service (the &quot;Service&quot; or &quot;SERVICE&quot;), a service of OnLive EMEA s.à r.l (collectively, &quot;OnLive&quot; or &quot;ONLIVE&quot; or &quot;we&quot; or &quot;us&quot;). The OnLive Terms of Service (the &quot;Terms&quot;) govern our relationship with anyone who accesses the Service by any method or means, including but not limited to access of the Service through the OnLive Game System (&quot;OGS&quot;), which includes the MicroConsole™ TV adapter (the &quot;MicroConsole TV adapter&quot;) and the Gamepad...</summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[<div style="padding:0px 15px 0px 5px">
				    
				    <h4 class="txt_or" style="padding: 24px 0px 10px;">Copy taken from <a href="http://www.onlive.co.uk/legal/termsofservice">http://www.onlive.co.uk/legal/termsofservice</a> and<a href="http://www.onlive.co.uk/legal/index"> http://www.onlive.co.uk/legal/index</a> on March 27, 2012.</h4><div style="padding:0px 15px 0px 5px">
			    <h4 class="txt_or" style="padding:24px 0px 10px 0px">TERMS OF SERVICE</h4>
			    

                <div id="c_terms_of_service">OnLive EMEA S.à r.l
                            TERMS OF SERVICE

                            Last Updated 7 December 2011
                            Welcome to the OnLive® Game Service (the 
"Service" or "SERVICE"), a service of OnLive EMEA s.à r.l (collectively,
 "OnLive" or "ONLIVE" or "we" or "us"). The OnLive Terms of Service (the
 "Terms") govern our relationship with anyone who accesses the Service 
by any method or means, including but not limited to access of the 
Service through the OnLive Game System ("OGS"), which includes the 
MicroConsole™ TV adapter (the "MicroConsole TV adapter") and the Gamepad
 Controller ("Controller").

                            Please read the Terms, the Privacy Policy 
and the OnLive Community Guidelines carefully. By clicking "I Agree," 
you agree to be bound by the Terms, the OnLive Privacy Policy, and the 
OnLive Community Guidelines.  

                            Your use of the Service is only for purposes
 that are permitted by these Terms. Any use or access of the Service by 
any means other than those authorised by these Terms is prohibited 
unless specifically agreed with OnLive. 

                            On an ongoing basis, OnLive makes changes 
and additions to the Service including but not limited to: new games, 
features, and functionality. OnLive will provide reasonable notice of 
all material changes and additions to the Service. Your continued use of
 the Service after such notification will indicate your acceptance of 
any such changes and additions and your continued acceptance of the 
Terms, the OnLive Privacy Policy, and the OnLive Community Guidelines.

                            You may not use the Service if you do not 
agree to be, or are unable to be, bound by the Terms, the OnLive Privacy
 Policy, and the OnLive Community Guidelines. 

                            1. Privacy

                            The OnLive Privacy Policy tells you about 
the way we handle and protect your Personal Information (as defined in 
the OnLive Privacy Policy) when you use the Service. We ask that you 
review and agree to the OnLive Privacy Policy before sharing Personal 
Information on the Service.

                            2. Community Guidelines

                            In order to provide a safe and welcoming 
environment for all of our users, we have established certain ground 
rules regarding your behavior on the Service that are specified in the 
OnLive Community Guidelines. The OnLive Community Guidelines apply to 
your use of the Service and any and all User Generated Content (as 
defined in Section 9 below) that you contribute to the Service. OnLive 
reserves the right to terminate or suspend your OnLive Service Account 
("Account") if you breach the OnLive Community Guidelines.

                            3. Eligibility

                            In order to register for an Account on the 
Service, you must be at least 18 years of age, be an emancipated minor 
or have reached the age of majority in your country of residence, and be
 a current resident of the United Kingdom ("Account Holder"). As an 
Account Holder, you represent and warrant to OnLive that you meet the 
eligibility criteria in the preceding sentence. 

                            4. Accepting and Changing the Terms 

                            You become bound by the Terms by (a) 
clicking to agree to the Terms; (b) downloading to a desktop, laptop, 
mobile device or obtaining through any other means on any other device 
or medium, the OnLive Application Software without the authorization of 
OnLive; (c) installing the OnLive Application Software without the 
authorization of OnLive; or (d) otherwise accessing the Service without 
the authorization of OnLive. 

                            We may change the Terms at any time in our 
sole discretion. We will provide you with reasonable notice of any 
changes to the Terms.  Continued use of the Service after the notice 
period will constitute acceptance of the Terms.

                            5. Third Party Terms

                            Buying or accessing certain third party 
content on the Service may require you to review, and accept or decline 
certain third party disclosures, policies, and agreements including but 
not limited to third party end user license agreements, privacy 
policies, and terms of service ("Third Party Terms").  

                            You may be presented with Third Party Terms 
prior to your purchase or use of third party content, or wherever 
OnLive, in its sole discretion, deems presentation of Third Party Terms 
is reasonably necessary or legally required to provide proper notice to 
you. You can accept Third Party Terms by (a) entering your password to 
purchase access to or to use the third party content on the Service or 
(b) accessing the purchased or selected third party content through the 
Service having been given reasonable notice of the Third Party Terms.  
If you do not accept Third Party Terms in the manner described but you 
nevertheless gain unauthorized access to the Service, you will be deemed
 to have accepted Third Party Terms upon such access of the third party 
content. If you choose to decline any Third Party Terms, you may do so 
by not purchasing the third party content referenced by the Third Party 
Terms or otherwise declining the Third Party Terms as provided by OnLive
 or the third party providing the Terms. 

                            Please be advised that some Third Party 
Terms may state or imply you have certain rights to a physical product, 
rights to download, or install third party content to a local machine, 
and/or other rights associated with physical possession or control of 
third party content. Such statements within Third Party Terms may not be
 applicable to use of the third party content on the Service. 

                            In all Third Party Terms, the user agreeing 
to, and/or the user presented with Third Party Terms, will in all cases 
continue to be the consumer end user of the third party content. Unless 
expressly agreed by OnLive, OnLive shall not be the intended or actual 
licensee, user, or recipient of any Third Party Terms.   

                            6. Accounts

                            You do not have the right to share your 
Account with any third party, except as you provide pursuant to the 
Parental Controls features.  You are solely responsible for all activity
 on your Account, including violations of the Terms by any third party 
that accesses the Service through your Account, and for the security of 
your Account. You also agree to the following:

                            • You agree to provide and maintain an 
active email address through which you can be reached for the duration 
of your Account. You agree to provide accurate and up-to-date email 
address, contact and billing information to OnLive. 
                            • You agree to use the Service only for 
purposes that are permitted by (a) the Terms and (b) any applicable law,
 regulation, or generally accepted practices or guidelines in the 
relevant jurisdictions.
                            • You agree to notify OnLive of any 
unauthorized use of your Account, any impending or threatened event that
 may negatively impact the Service, security of the Service, or any 
other violation of the Terms known to you, including by third parties 
that have accessed the Service through your Account.
                            • You agree to not make any attempt to 
access the Service via any means or interface other than those which 
have been provided to you by OnLive, unless you have been granted 
explicit written permission by an authorized representative of OnLive to
 do otherwise. 
                            • You agree to not engage in any activity 
that interferes with or disrupts, degrades, harms or threatens to harm 
the Service, security of the Service, our servers, or the use of the 
Service by any of our users.
                            • You agree to not represent to any third 
party that you are an OnLive employee or authorized representative of 
OnLive.
                            • You agree to not register a Player Tag 
(i.e. OnLive user name) that is vulgar, offensive, libelous, slanderous,
 discriminatory or obscene or that violates any law, or otherwise 
breaches the Terms or Community Guidelines. 
                            • You agree to not transfer or share your 
Account with any other party except as permitted by the Parental 
Controls features as explained below. 
                            • You agree not to transfer or share your 
OnLive Service login information with any other party. 
                            • You agree to not tamper with in any 
manner, disassemble, reverse engineer, or otherwise modify any hardware 
or software of the Service made available to you.
                            • The Service includes parental controls 
features ("Parental Controls") which restrict access to certain content 
and features which may be deemed inappropriate for Minors (youth between
 13 and up to 18).  The Parental Controls can only be accessed with a 
parental control passcode, and you agree not to share this parental 
control passcode with any third parties (including the Minor for whom 
the Parental Controls are activated).


                            You may provide access to your Account to 
any member of your household (each an "Authorised User"), provided the 
following conditions are met:

                            • You do not allow access to your Account to
 any person under the age of 13 years old;
                            • You do not provide the details of your 
parental control passcode to any third party, including any Authorised 
User;
                            • You expressly bring the OnLive Privacy 
Policy to the attention of each Authorised User; and expressly inform 
each Authorised User that their personal data, which may be disclosed 
through OnLive Friends and Voice Chat features, may be collected by 
OnLive and disclosed to other users while on the Service.

                            You, as the Account Holder, assume 
responsibility for all activity on the Account from Authorised Users, 
including Authorised User activity when Parental Controls are enabled.  
Account Holders who set up Parental Controls and allow Minors to use an 
Account are liable for all activities of such Minor and all public 
disclosures of information made by such Minor. 

                            OnLive reserves the right to terminate or 
suspend your Account for breach of the account guidelines set out in 
this Section 6. 

                            7. OnLive Application Software

                            The OnLive Application Software and other 
related materials (collectively, the "Materials") made accessible to you
 in connection with the Service will be licensed under, and subject to, 
the terms and conditions of the OnLive End User License Agreement 
("OnLive EULA"). 

                            8. Our Content

                            With the exception of User Generated Content
 (as defined in Section 9 below), as between you and OnLive or its 
affiliates, subsidiaries, licensors, or suppliers retain title to and 
ownership of everything on or used in connection with the Service, 
including, but not limited to, text; images; graphics; logos; audio and 
video content; visual, auditory, tactile, and motion user interfaces, 
and any OnLive hardware, software, or computer code (collectively, 
"Content"). This also includes, without limitation, the structure, 
design, animation, video, effects, overall "look and feel" and 
arrangement of Content on the Service. With regard to any gaming 
statistics like scores, rankings, log in/log out times, length of 
gameplay, and your presence on the Service, OnLive owns that content 
exclusively and/or shares ownership of that content with third party 
content providers and may grant any of our affiliates, subsidiaries, 
licensors, partners, or suppliers permission to use such content, 
including the use and display of such content publicly for the purposes 
of leaderboards, enhancing multiplayer gameplay, tournaments, and 
marketing and promotion efforts. Subject to license restrictions and 
these Terms, certain Content on the Service may not be available to 
users accessing the Service through specific client devices (e.g. 
Macintosh, Windows PC, MicroConsole™ TV adapter, cell phones, tablet 
computers, Internet TVs, and set-top boxes). Such limitations will be 
specified in the Content descriptions provided prior to your purchase of
 any such Content, during the purchase process and/or in the EULA for 
any particular piece of Content which has such restrictions.

                            OnLive owns patents, copyrights, trademarks,
 service marks, trade names, trade secrets, domain names and other 
intellectual property, and proprietary rights throughout the world in, 
or to, or associated with the Content and/or the Service (the "IP 
Rights"), and the Content and the Service are protected by the IP Rights
 and all other applicable intellectual property rights and laws. Subject
 to your compliance with the Terms, the OnLive Privacy Policy and the 
OnLive Community Guidelines, OnLive grants you a limited, personal, 
non-exclusive, non-transferable, non-sublicensable, revocable license 
under the IP Rights to use the Service in accordance with the Terms, for
 the duration of your membership and/or access to the Service, solely 
for your personal and non-commercial use.

                            You may not modify, reproduce, distribute, 
create derivative works or adaptations of, publish, perform, display, 
transmit or in any way exploit any of the Content in whole or in part 
except as expressly authorized by OnLive. You may not, in whole or in 
part, reverse engineer, derive (or attempt to derive) any source code, 
modify, disassemble, decompile, or remove any proprietary notices or 
labels from the Service or any hardware or software associated or used 
in connection with the Service. Except as expressly and unambiguously 
provided herein, OnLive does not grant you any express or implied rights
 in or to the Service, any Content or any software associated or used in
 connection with the Service. Except as expressly provided herein (or in
 the Privacy Policy) you may not transfer, publish, display, disclose or
 make available any reproductions of the Service or the Content to any 
other parties in any way, including, without limitation, by uploading 
videos or images to file sharing sites, sharing or making available 
screen captures of the Service or any Content, or sharing or making 
available any source code or executable code of any software associated 
or used in connection with the Service. You may not rent, lease, license
 or sublicense the Service to others, or use the Service in any manner 
for the benefit of any third party.   

                            9. User Generated Content

                            Any time you post a message or communication
 on an OnLive sponsored forum, or create, post, upload, submit, share or
 distribute any content through the use of the Service, including the 
OnLive User Community Forums, or play a game on the Service, including 
any user name, tag, handle, motto, avatar video or still, and including 
contributions via video, voice and text chat, text messaging, forums, 
message boards, whether within or outside a game (any such message, 
communication, content or play, collectively, "User Generated Content" 
or "UGC"), you grant OnLive a non-exclusive, worldwide, perpetual, 
irrevocable, unrestricted, royalty-free, fully paid-up license (with the
 right to sublicense) to use, reproduce, distribute, display, perform, 
transmit, modify, edit, create derivative works from, and otherwise 
exploit such UGC, in any form, format, or medium now known or later 
developed. You represent and warrant that you have the right to grant 
these rights to OnLive and that you will not post any content or links, 
user-generated or otherwise, that infringe, misappropriate or violate 
any privacy, intellectual property, or any other rights of any party, or
 which violates our Community Guidelines, or that is vulgar, offensive, 
libelous, slanderous, discriminatory or obscene or that violates any 
law. You hereby waive all "moral rights" with respect to all UGC and all
 copyrights therein to the extent such moral rights can be waived under 
the existing law of any jurisdiction, and, to the extent such moral 
rights cannot be waived, you warrant that you will not seek to enforce 
such moral rights against OnLive.

                            UGC specifically excludes any gaming and 
Service usage statistics like scores, rankings, log in/log out times, 
length of gameplay, and your presence on the Service. OnLive owns gaming
 and Service usage statistics exclusively and/or shares ownership of 
that content with third party content providers and may grant any of our
 affiliates, subsidiaries, licensors, partners, or supplier's permission
 to use such content, including the use and display of such content 
publicly for the purposes of leaderboards, enhancing multiplayer 
gameplay, tournaments, and marketing and promotion efforts.

                            OnLive reserves the right to pre-screen, 
monitor, moderate, and delete any UGC that you or other OnLive users 
submit to the Service, including, but not limited to, posts made to 
public forums. However, we have no obligation to do so, and you may be 
exposed to content you find vulgar, offensive, libelous, slanderous, 
discriminatory, obscene or is in violation of a law. 

                            You acknowledge that OnLive is not an 
author, publisher or editor of any UGC posted on the Service or of any 
information provided by another content provider on the Service.

                            10. Voice Chat

                            Voice chat communications within the Service
 should not be considered private.  Voice chat communications may be 
heard by others as part of gameplay or in other contexts, for example, 
as part of Spectating. OnLive is under no obligation to monitor user 
communications but reserves the right to act on reports of misconduct or
 abuse of such privileges at OnLive's sole discretion. Because voice 
chat and other communications may be viewed and/or heard, users should 
avoid revealing any personally identifiable information.

                            11. OnLive Purchases and Billing

                            Offers are only valid within the United 
Kingdom. Offers cannot be combined unless expressly stated. Some game 
purchases may not be available for all platforms and different prices 
may be charged for different platforms (e.g., PC, Mac, and MicroConsole 
TV adapter). Promotion codes and coupons have no cash value.

                            Subject to any OnLive promotional offers you
 may accept, OnLive may require payment of fees for the Service 
membership offer you select (the "Membership Plan"), third party 
content, and any additional items and services that may be available 
through the Service. You may have to register for an Account and sign up
 for a Membership Plan in order to access the various features of the 
Service and pay for any third party content. All purchases are charged 
in GBP.

                            By registering for an Account on the 
Service, you represent that you are at least 18 years of age and have 
reached the age of majority in your country of residence. A credit card 
is not required to sign up for the Service. However, if you select a 
Membership Plan that requires a credit card, you represent that you are 
authorized to use that credit card. You must also be authorized to use 
any subsequent credit card in the event you change or update the credit 
card you used to register. By signing up for a Membership Plan, you 
expressly authorize OnLive to charge you for services and products 
purchased under your Account including but not limited to required or 
optional fees associated with maintaining an active Membership Plan in 
good standing (the "Membership Fees"), third party content, and any 
additional items and services that may be available through the Service.
 Membership Plans may require one-time or recurring Membership Fees.  If
 so, OnLive will bill you in accordance with the terms of your 
Membership Plan.

                            You acknowledge that the Service (including 
the sale of a right to play games through it) is a supply of services to
 you by OnLive, which commences once you register for the Service and 
pay the Membership Fees or once you purchase the right to play a 
particular game. OnLive will have commenced the supply of services to 
you by granting you access to the Service or the relevant game, and you 
will lose your right to cancel the purchase under Directive 97/7/EC as 
implemented in your country of residence. Notwithstanding the above, the
 purchase of an OGS or any other hardware will constitute the supply of 
goods, and you will have seven days (beginning the day after you receive
 the goods) in which you may choose to cancel the contract. If you 
provide notice of such cancellation to OnLive, and return the 
merchandise and we will provide you with a full refund for the purchase.

                            Prices for any third party content are 
subject to change at any time without notice. OnLive reserves the right 
to change the pricing, billing, Membership Plans and Membership Fees for
 the Service at any time. In the event OnLive makes any such changes to 
the Service, we will provide you with at least thirty (30) calendar days
 notice via the email address you have provided in your Account. If you 
do not consent to these changes, you must stop using the Service and may
 close your Account. 

                            In the event your Account is closed or 
suspended for any reason, including because you do not consent to the 
changes to the changes to the pricing, billing, Membership Plans and 
Membership Fees for the Service, OnLive reserves the right to charge you
 for any costs, surcharges, or debts still pending on your Account. You 
may not register a new OnLive Account until all costs, surcharges, and 
debts are settled for any prior OnLive Account that you have used, or 
have been used with the same credit card or email address.

                            12. OnLive Game System: MicroConsole TV 
Adapter and OnLive Gamepad Controller

                            The Terms also apply to use of the OnLive 
Game System, which includes the MicroConsole TV adapter and OnLive 
Gamepad Controller ("Controller") to access the Service. Use of the 
MicroConsole TV adapter or Controller confirms your agreement to: 

                            • Accept any software updates and upgrades 
sent to the MicroConsole TV adapter and/or Controller.
                            • Accept any different or additional terms 
applicable to the third party components included with the MicroConsole 
TV adapter and/or Controller.
                            • Not tamper with in any manner, 
disassemble, reverse engineer, or otherwise modify the MicroConsole TV 
adapter and/or Controller.
                            • Save as permitted by law, not derive (or 
attempt to derive), modify, decompile, or remove any software code from 
the MicroConsole TV adapter and/or Controller.
                            • Not remove any proprietary notices or 
labels from the MicroConsole TV adapter and/or Controller.
                            • Save as permitted by law, use any software
 in the MicroConsole TV adapter only in executable form and solely in 
conjunction with the MicroConsole TV adapter.

                            Basic information relating to setup, 
installation and support is shipped with the MicroConsole TV adapter and
 Controller, and further details are found in the Support section of the
 OnLive website.

                            13. Suspending Your Account

                            You may suspend (i.e. temporarily 
deactivate) your Account at any time, for any or no reason, for up to 
twelve (12) months by contacting OnLive CS from the Support section of 
the OnLive website. Also, OnLive may suspend an Account, or resume a 
suspended Account, under certain conditions specified in the Terms, 
including, for example, the expiration or renewal of your Service 
membership term. OnLive may suspend your Account if it is inactive (i.e.
 you have not successfully logged in to the Service using your Account, 
or you have not made any transactions associated with your Account) for 
twelve (12) months. You or OnLive may resume (i.e. reactivate) a 
suspended Account, if the Account is in good standing and any 
outstanding concerns have been addressed, at any time during the 
suspension.

                            Suspending your Account will temporarily 
disable your access to the Service using the suspended Account, and 
temporarily disable your access to all content or services on the 
Service that the Account would otherwise have access to, if any, whether
 purchased or not. Resuming your Account will restore your access to the
 suspended Account, and restore your access to content and services that
 are still available to you after the time that has elapsed during the 
suspension period or provide access to content and services that became 
available to you during the suspension. During this time, OnLive will 
retain all of your information, including your Personal Information, 
just as if the Account is in active use so as to enable OnLive to (a) 
keep track of any content or service expirations or activations during 
the suspension period, and (b) reactivate your Account if it is resumed 
during that twelve (12) month period. During the suspension period you, 
or OnLive under certain conditions specified in the Terms of Service, 
may close your Account per the terms described below in Closing Your 
Account. OnLive will close your Account if it not resumed within twelve 
(12) months of the last suspension. If you decide to suspend your 
Account, please contact OnLive CS from the Support section of the OnLive
 website.

                            The Terms will continue to apply to you in 
full from the time you accept the Terms, as set forth in the "Accepting 
and Changing the Terms" section herein, throughout your Account 
suspension and until your Account is closed by either you or OnLive. 

                            14. Closing Your Account

                            CLOSING YOUR ACCOUNT WILL RESULT IN 
PERMANENT LOSS OF ACCESS, CONTENT, SERVICES AND VALUE ON THE ONLIVE 
SERVICE. ONLIVE URGES YOU TO CONSIDER SUSPENDING YOUR ACCOUNT, PER THE 
"SUSPENDING YOUR ACCOUNT" SECTION ABOVE. RATHER THAN CLOSING YOUR 
ACCOUNT, PLEASE READ THIS "CLOSING YOUR ACCOUNT" SECTION CAREFULLY 
BEFORE PROCEEDING WITH CLOSURE.

                            You may close your Account at any time, 
however, OnLive may close an Account if the Account is suspended and not
 resumed within the twelve (12) month maximum suspension period, as 
detailed in the "Suspending Your Account" section, above, or under 
certain conditions specified in the Terms of Service. Closing your 
Account will immediately and permanently terminate your access to the 
Service using the closed Account; immediately and permanently terminate 
your access to all content, messages, services on the Service that the 
closed Account would otherwise have access to or could derive value 
from; and result in your immediate and permanent forfeiture of any 
coupons, access passes, credits, or anything that may be of value 
directly or indirectly associated with the Account, if any, whether 
purchased or not. Any remaining payments due on the Account will remain 
due and collectable after the Account is closed until they are paid. If 
you decide to close your Account, please contact OnLive CS from the 
Support section of the OnLive website.  Within six (6) months after 
closing your Account or after any payments due on the Account are paid, 
whichever is later, we will either delete or securely encrypt your 
Personal Information except your email address, which we will keep in 
order to determine whether to send further marketing-related emails. We 
will also keep all financial and transactional records that are required
 for accounting, revenue-reporting and tax-reporting purposes. Your 
non-Personal Information, such as your Player Tag and password, will not
 be deleted. We will also keep information about your use of the 
Services or Websites including, but not limited to, data about your 
gameplay, session times and durations, and use of the Service, though we
 will disassociate such information from your Personal Information. 
Please note that even after you remove information from your Account or 
delete your Account entirely, information that was shared with other 
users may continue to exist on the Service.

                            If you engage in any repeated or 
objectionable misconduct, to be determined in accordance with these 
Terms and the OnLive Community Guidelines, OnLive reserves the right to 
either suspend or close your Account, in OnLive's sole discretion, 
immediately and without notice as set forth in the "Suspending Your 
Account" and "Closing Your Account" sections herein. Please refer to the
 OnLive Community Guidelines for examples of objectionable conduct. 

                            The Terms will continue to apply to you in 
full from the time you accept the Terms, as set forth in the "Accepting 
and Changing the Terms" section herein, until your Account is closed by 
either you or OnLive. 

                            15. Survival

                            Sections 8, 9, 10, 11, 12, 13, 14, 15, 16, 
17, 18, 19, 20, 21, 22, 23, and 24 of the Terms shall survive any 
expiration or termination of the Terms, or your Account. Expiration or 
termination of the Terms or your Account will not affect any accrued 
rights or liabilities under these Terms. The Privacy Policy will survive
 termination of the Terms, or your Account in accordance with its terms.

                            16. Copyright Policy

                            OnLive respects the intellectual property of
 others and we expect our users to do the same. If you are a copyright 
owner or authorized to act on behalf of a copyright owner and believe 
that any content or material provided through or in connection with the 
Service infringes any copyright you own or for which you are authorized 
to act on behalf of the copyright owner, please provide OnLive's Agent 
for Notice with written or electronic notice containing the following: 

                                   Notice of Alleged Infringement 
("Notice")

                            1. A description of the copyrighted work(s) 
you claim has been infringed. 
                            2. A description of the allegedly infringing
 content or material, including the location on the Service of the 
allegedly infringing content or material with sufficient detail to 
enable us to locate it on the Service. 
                            3. Your address, telephone number, and email
 address. 
                            4. Both of the following statements outlined
 in the Notice:
                            a. "I hereby state that I have a good faith 
belief that the disputed use of the copyrighted material is not 
authorized by the copyright owner, its agent, or the law."
                            b. "I hereby state that the information in 
this Notice is accurate and that I am the owner of, or authorized to act
 on behalf of the owner of, an exclusive right that is allegedly 
infringed."
                            5. Your full legal name and your electronic 
or physical signature.

                            Please send all of the above to:

                            Copyright Agent
                            c/o OnLive, Inc.
                            181 Lytton Ave.
                            Palo Alto, CA 94301
                            Main:  (650) 543-5500
                            Fax:  (650) 543-5595

                            Or by email to:

                            copyrightenforcement@onlive.com

                            Any Personal Information provided to OnLive 
pursuant to this section 16 shall be held and processed by OnLive in 
accordance with the OnLive Privacy Policy. 

                            17. Disputes and Governing Law and 
Jurisdiction

                            You agree to handle any disputes between you
 and OnLive in accordance with the policy outlined below, the OnLive 
Privacy Policy or as otherwise agreed in writing between you and OnLive.
 As an alternative to litigation, we will consider reasonable requests 
to resolve any dispute through dispute resolution procedures such as 
arbitration or mediation.

                            The construction, validity and performance 
of these Terms and all non-contractual obligations arising from or 
connected with these Terms, the OnLive Privacy Policy, the OnLive 
Community Guidelines or the Service shall be governed by English law.  
Any action or proceeding brought to adjudicate any dispute related to 
the Terms, OnLive Privacy Policy, OnLive Community Guidelines, or the 
Service shall be subject to the non-exclusive jurisdiction of the 
English courts, except as otherwise agreed by the parties in writing.

                            18. Injunctive Relief

                            If you breach or indicate your intention to 
breach the Terms (including, without limitation, in a manner that 
infringes, misappropriates or violates any intellectual property or 
privacy rights or may cause irreparable or continuing harm), OnLive may 
seek injunctive relief against you, or any other remedy available under 
applicable law.

                            19. Representations and Warranties

                            You represent and warrant that (i) you have 
the full power and authority to enter and perform under the Terms, (ii) 
the execution and performance of your obligations under the Terms does 
not constitute a breach of or conflict with any other agreement or 
arrangement by which you are bound, and (iii) the Terms are a legal, 
valid, and binding obligation of you, enforceable in accordance with its
 terms and conditions. 

                            20. Indemnification

                            You agree to defend, indemnify and hold 
OnLive, its directors, officers, employees, contractors,  affiliates, 
suppliers, and licensors (collectively "OnLive Indemnified Parties") 
harmless from any liability, damage, settlement, loss, or expense 
(including, without limitation, attorneys' fees and costs) incurred in 
connection with any third-party claim, demand or action ("Claim") 
brought or made against any of the OnLive Indemnified Parties arising 
out of or relating to any actions by you that infringes any copyright, 
trademark, trade secret, patent or other intellectual property right of 
any person or defames any person or violates their rights of publicity 
or privacy. If you have to indemnify any of the OnLive Indemnified 
Parties under this Section, OnLive and/or the relevant OnLive 
Indemnified Parties will have the right to control the defense, 
settlement, and resolution of any Claim at your sole expense. You may 
not settle or otherwise resolve any Claim without OnLive's prior express
 written permission. 

                            21. INFORMATION NOTICE 

                            OnLive provides the Service on an "as is" 
and "as available" basis, though OnLive will provide the Service to you 
with reasonable skill and due care. 

                            OnLive does not represent or warrant that 
the Service or its use (i) will be uninterrupted; or (ii) will be free 
of inaccuracies or errors. OnLive utilizes the internet, which by its 
very nature can be unreliable and unpredictable. Internet connection and
 reliability problems may reduce service quality and in some cases make 
the service unavailable. In addition to an internet connection, the 
service also requires suitable, capable, reliable, and fully operational
 devices and software, which are all outside of OnLive's control.

                            OnLive is not responsible for any internet, 
telephone, wireless, or other fees associated with your use or access of
 any service, product, or content through the OnLive Service, including 
your use or access of any free service, product, or content through the 
OnLive Service. 

                            22. LIMITATION OF LIABILITY

                            TO THE EXTENT NOT PROHIBITED BY LAW, IN NO 
EVENT SHALL ONLIVE (OR ANY OF ITS AFFILIATES OR LICENSORS) NOR ANY OF 
THE OFFICERS, DIRECTORS, EMPLOYEES, SHAREHOLDERS, LICENSORS, CUSTOMERS, 
AGENTS OR REPRESENTATIVES OF ONLIVE HAVE ANY LIABILITY OF ANY KIND OR 
NATURE TO YOU OR ANY THIRD PARTY FOR ANY INDIRECT, INCIDENTAL, 
CONSEQUENTIAL, SPECIAL, OR PUNITIVE DAMAGES WHATSOEVER (INCLUDING, BUT 
NOT LIMITED TO, DAMAGES FOR ANY LOSS OF PROFITS OR LOSS OF ANY 
CONFIDENTIAL OR OTHER INFORMATION OR FOR BUSINESS INTERRUPTION) ARISING 
OUT OF OR IN ANY WAY RELATING TO YOUR USE OF OR INABILITY TO USE THE 
MATERIALS OR THE SERVICE OR OTHERWISE WITH RESPECT TO THIS AGREEMENT, 
WHETHER ARISING IN TORT (INCLUDING NEGLIGENCE), CONTRACT, STRICT 
LIABILITY OR OTHERWISE, WHETHER OR NOT YOU HAVE ADVISED OF THE 
POSSIBILITY OF ANY SUCH LOSS OR DAMAGE.

                            OnLive will not be liable for any liability 
associated with provision of the service or failure to provide the 
Service associated with infrastructure (including, without limitation, 
the internet), devices and software outside of OnLive's control such as 
computers, displays, televisions, input devices, switches, routers, 
firewalls, operating systems, and browsers.

                            Nothing in these Terms will exclude or limit
 either party's liability for (i) fraud or fraudulent misrepresentation;
 (ii) death or personal injury caused by its negligence (iii) under the 
indemnity in section 19; or (iv) any other liability which cannot be 
excluded by law.

                            23. Severability

                            If any provision of the Terms is held 
invalid or unenforceable, in whole or in part, such provision shall be 
modified to the minimum extent necessary to make it valid and 
enforceable. This shall, in no way, affect the validity and 
enforceability of all other provisions in the Terms. 

                            24. Miscellaneous

                            You and OnLive are independent parties, and 
nothing in the Terms constitutes a partnership or joint venture between 
you and OnLive or makes either party the agent of the other. Unless 
otherwise specified herein, the Terms, the OnLive Privacy Policy, and 
the OnLive Community Guidelines constitute the entire agreement between 
you and OnLive with respect to the subject matter hereof and supersede 
all prior or contemporaneous communications, negotiations and proposals 
with respect to such subject matter. You may not assign or transfer the 
Terms or any of your rights or obligations under the Terms (whether by 
operation of law or otherwise) without the prior written consent of 
OnLive.

                            25. Beta Program

                            OnLive may from time-to-time establish a 
Beta program ("Beta") to give certain users an opportunity to test and 
experience additional new features of the Service, pay for and use third
 party content, and gather feedback on the new features and content on 
the Service. Any and all information made available to you by virtue of 
your participation in a Beta, whether furnished to you directly by 
OnLive or learned by you through your access to a Beta, is confidential 
to OnLive. For example, you may not do any Tweets, Facebook posts, or 
other online posting of details, and you may not post or otherwise 
communicate screenshots, or videos, or any other content whatsoever 
about your participation in a Beta. You may disclose that you are a 
participant in a Beta, but you may not discuss with or disclose to any 
third party any information you learn through a Beta including your 
opinions regarding a Beta. If you are chosen to participate in a Beta, 
you will:

                            • Carry out the testing in connection with a
 Beta personally. You will not display or provide access to the Service 
to any other person. 
                            • Use your best efforts to secure your 
system and the Beta against unauthorized access or disclosure.
                            • Never disclose any information about a 
Beta, including, without limitation, any information about the Service 
provided or made available by OnLive or any hardware, software, 
screenshots, video, or other code or scripts to any third party.  
                            • Never discuss gameplay, quality of 
service, or bugs encountered while using a Beta anywhere outside of 
OnLive's provided in-site forums and customer support.
                            • Delete and destroy all information related
 to a Beta in your possession or control immediately upon the request of
 OnLive, and confirm deletion and destruction of such information if 
requested to do so by OnLive.

                            OnLive notes that any breach by you of this 
confidentiality provision will cause irreparable harm to OnLive, and 
OnLive may seek injunctive relief to prevent the breach or threatened 
breach of your obligations.

                            As a Beta user, you agree to:	

                            • Test and evaluate a Beta and/or devices to
 be used with the Beta, including, but not limited to, audiovisual 
content, features, functionality, capabilities, operation, Service 
performance and device performance. 
                            • Inform OnLive of any bugs or other defects
 you encounter in connection with the Service.
                            • Receive all software updates and upgrades,
 if any that OnLive sends to the MicroConsole TV adapter, to your 
computer, or to any hardware or software associated or used in 
connection with the Service, including the OnLive Gamepad Controller.
                            • Comply with reasonable requests and 
instructions from OnLive in connection with Beta, which may be provided 
from time to time during a Beta, including, but not limited to, requests
 and instructions to test or evaluate specific aspects of the Service. 
                            • Provide OnLive with your comments, 
feedback, evaluations, analyses, suggestions and recommendations 
regarding a Beta ("Feedback"), all as voluntarily provided by you or as 
may otherwise be requested by OnLive.

                            Your participation in a Beta is strictly 
voluntary and for your enjoyment. While your participation in a Beta is 
helpful, you understand that it is not a vital part of the development 
of the Service so as to give you any right to compensation or payment. 
Participation in one phase of a Beta does not entitle you to 
participation in any other phase of a Beta, if any, or to any 
compensation or payment with respect to the Service. You acknowledge and
 agree that your participation in a Beta (or any phase of a Beta) does 
not give you any claim of ownership to any part of the Service.

                            All Feedback that you provide or make 
available to OnLive during a Beta, however communicated by you and 
whether at OnLive's request or not, shall be the sole and exclusive 
property of OnLive, and you hereby irrevocably assign to OnLive all of 
your right, title and interest in and to such Feedback, including, 
without limitation, any and all intellectual property rights in or to 
any such Feedback. Without limiting the generality of the preceding 
sentence, you agree that OnLive and its successors, assigns and 
licensees shall have the perpetual and irrevocable right to reproduce, 
modify and otherwise use and exploit all of the Feedback (and any and 
all portions and derivatives thereof) in any manner now known or 
hereafter devised for any purposes, including, but not limited to, in 
connection with the development and exploitation of the Service or any 
other product or service, without any compensation or the provision of 
any credit to you. You hereby waive all moral rights with respect to all
 Feedback and all copyrights therein to and, the extent such moral 
rights cannot be waived, you warrant that you will not enforce such 
moral rights against OnLive.

                            All other terms in the OnLive Terms of 
Service continue to apply to your participation in a Beta.              
  </div>
            
				</div><p><br /></p><h4 class="txt_or" style="padding:24px 0px 10px 0px">TERMS OF USE</h4>

                    <div id="c_terms_of_use">
                                    <p>ONLIVE, INC. TERMS OF USE AGREEMENT</p>
                                    <p class="hard_return"><i>As of September 22, 2011</i></p>
                                    <h5 class="soft_return">Acceptance of Terms</h5>
        						<p class="hard_return">This Terms of Use Agreement (the "<b>Agreement</b>") applies to certain websites of OnLive EMEA S.à r.l and its group of companies (collectively, "<b>OnLive</b>", "we", "our", or "us" or the "<b>OnLive Websites</b>").
 By visiting, accessing, or using the OnLive Websites or any portion 
thereof , you agree that you have read, understood, and agree to be 
bound by this Agreement, whether or not you are a registered user of any
 of the OnLive Websites or any portion thereof.</p>
        						<p class="soft_return">We reserve the right to amend this 
Agreement at any time and without notice. If we do this, we will post 
the amended Agreement on this page and indicate at the top of the page 
the date the Agreement was last revised. Your continued use of the 
OnLive Websites after any such changes constitutes your acceptance of 
the new Terms of Use. If you do not agree to any of these terms or any 
future Terms of Use, do not visit, use or access (or continue to access)
 the OnLive Websites. This Agreement applies to all visitors, users, and
 others who access the OnLive Websites ("<b>Users</b>"). The Agreement incorporates by reference our <a href="http://www.onlive.co.uk/legal/%3C?php%20echo%20base_url%28%29;?%3Elegal/privacypolicy" class="txt_or">Privacy Statement</a>,
 or any supplemental terms, schedules, exhibits and related materials 
that are attached or referenced herein. It is your responsibility to 
review this Agreement from time to time for any changes as it creates a 
binding legal agreement between you and us. You do not have to register 
in order to visit the OnLive Websites. In the future, though, we may 
allow you to register with the OnLive Websites and create a "User" 
account.</p>

        						<h5 class="soft_return">Permission to Use the Site</h5>
        						<p class="hard_return">Subject to all of the terms and 
conditions of this Agreement, you are hereby granted a non-exclusive, 
limited, personal licence to access the OnLive Websites and view our 
Content (as defined below). We reserve all rights not expressly granted 
herein in the OnLive Websites and the Content (as defined below). We may
 terminate this licence for convenience at any time at our sole 
discretion.</p>
        						<p class="hard_return">You agree not to engage in any of 
the following prohibited activities: (i) copying, distributing, or 
disclosing any part of the OnLive Websites in any medium, including 
without limitation by any automated or non-automated "scraping"; (ii) 
using any automated system, including without limitation "robots", 
"spiders", or "offline readers", to access the OnLive Websites in a 
manner that sends more request messages to our servers than a human can 
reasonably produce in the same period of time by using a conventional 
on-line web browser; (iii) transmitting spam, chain letters, or other 
unsolicited email; (iv) using any "bot", spider, site search/retrieval 
tool or utility, or any other manual or automated technique, to collect,
 extract, index, mine, or otherwise seek to obtain any data or 
information from OnLive, OnLive Websites, or any User, or in any manner 
compromise, degrade or circumvent the navigational structure or the 
presentation of the OnLive Websites, or the display or performance of 
the Content (as defined below) of the OnLive Websites; (v) attempting to
 interfere with, compromise the system integrity or security or decipher
 any transmissions to or from the servers running the OnLive Websites; 
(vi) taking any action that imposes, or may impose an unreasonable or 
disproportionately large load on our infrastructure (as determined at 
our sole discretion); (vii) uploading invalid data, viruses, worms, or 
other software agents through the OnLive Websites; (viii) collecting or 
harvesting any personally identifiable information from the OnLive 
Websites; (ix) using the OnLive Websites for any commercial solicitation
 purposes; (x) using the OnLive Websites or any Content or products 
obtained through the OnLive Websites for any resale or commercial use; 
(xi) collecting or using any product listings, descriptions, or prices 
on the OnLive Websites; (xii) impersonating another person or otherwise 
misrepresenting your affiliation with a person or entity, conducting 
fraud, hiding or attempting to hide your identity; (xiii) interfering 
with the proper working of the OnLive Websites; (xiv) bypassing the 
measures we may use to prevent or restrict access to the OnLive 
Websites; or (xv) disseminating any abusive, harmful, offensive or 
illegal content. We may permanently or temporarily terminate, suspend, 
or otherwise refuse to permit your access to the OnLive Websites without
 notice and liability for any reason, including if in our sole 
determination you violate any provision of this Agreement, or for no 
reason. You further understand and agree that OnLive has the right, but 
not the obligation, to remove in whole or in part any Content related to
 the OnLive Websites, including without limitation all data and Content 
residing on our servers, at any time at our sole discretion, with or 
without notice and with no liability to us of any kind.</p>
        						<p class="soft_return">The OnLive Websites or portions 
thereof are subject to scheduled and unscheduled site interruptions. All
 aspects of the OnLive Websites are subject to change or elimination at 
our sole discretion. We reserve the right to interrupt the OnLive 
Websites with or without prior notice for any reason or no reason. You 
agree that OnLive is not liable to you for any interruption of the 
OnLive Websites or any portion thereof, or any delay or failure to 
provide the OnLive Websites or any portion thereof.</p>

        						<h5 class="soft_return">Our Proprietary Rights</h5>
        						<p class="hard_return">The OnLive Websites and all 
materials therein or transferred thereby, including, without limitation,
 software, images, text, graphics, illustrations, logos, trademarks, 
trade names, photographs, audio, videos, and music (the "<b>Content</b>"), and all Intellectual Property Rights related thereto, are the exclusive property of OnLive and our licensors.</p>
        						<p class="hard_return">Except as explicitly provided 
herein, nothing in this Agreement shall be deemed to create a licence in
 or under any such Intellectual Property Rights, and you agree not to 
sell, licence, rent, modify, distribute, copy, reproduce, transmit, 
publicly display, publicly perform, publish, adapt, edit or create 
derivative works from any materials or Content accessible on the OnLive 
Websites. Use of the Content or materials on the OnLive Websites for any
 purpose not expressly permitted by this Agreement is strictly 
prohibited.</p>
        						<p class="soft_return">For the purposes of this Agreement, "<b>Intellectual Property Rights</b>"
 means all patent rights, copyright rights, mask work rights, moral 
rights, rights of publicity, trademark, trade dress and trade name 
rights, service mark rights, goodwill, trade secret rights and other 
intellectual property rights as may now exist or hereafter come into 
existence, and all applications therefore and registrations, renewals 
and extensions thereof, under the laws of any state, country, territory 
or other jurisdiction worldwide.</p>

        						<h5 class="soft_return">Eligibility/Representations and Warranties</h5>
        						<p class="hard_return">You shall be solely responsible for
 your use of the OnLive Websites and all activity undertaken by you 
while visiting the OnLive Websites.</p>
        						<p class="hard_return">This OnLive Websites are intended 
solely for Users who are thirteen (13) years of age or older, and any 
use or access to the OnLive Websites by anyone under thirteen (13) is 
unauthorized, unlicensed, and in violation of this Agreement. In 
connection with your use of the OnLive Websites, you affirm, represent 
and warrant, in addition to the other representations and warranties in 
this Agreement, the following: You are at least thirteen (13) years of 
age.</p>
        						<p class="soft_return">You must be at least eighteen (18) 
years of age to register for an account on the OnLive Service. In 
connection with registering for an OnLive account, you affirm, represent
 and warrant, in addition to the other representations and warranties in
 this Agreement, the following: You are at least eighteen (18) years of 
age, or if you are under 18 years of age you are an emancipated minor 
and are fully able and competent to enter into the terms, conditions, 
obligations, affirmations, representations, and warranties set forth in 
this Agreement, and to abide by and comply with this Agreement.</p>

        						<h5 class="soft_return">Privacy</h5>
        						<p class="hard_return">We care about the privacy of our Users. Click <a href="http://www.onlive.co.uk/legal/%3C?php%20echo%20base_url%28%29;?%3Elegal/privacypolicy" class="txt_or">here</a>
 to view our Privacy Statement, which is incorporated by reference in 
this Agreement as if it is fully set forth herein. By using the OnLive 
Websites, you are consenting to have your personal data transferred to 
and processed in the United States.</p>
        						<p class="hard_return">Your use of the Site may be subject
 to use by us of "cookies", which are text files placed on your computer
 to temporarily store information. Our use of cookies is subject to the 
Privacy Statement.</p>
        						<p class="hard_return">Third-Party Websites, Advertisers 
or Sites: As set forth in our Privacy Statement, the OnLive Websites may
 contain links to third-party websites, advertisers, or sites that are 
not owned or controlled by us. We have no control over, and assume no 
responsibility for, the content, privacy policies, or practices of any 
third party websites. If you access a third party website from the 
OnLive Websites, you do so at your own risk, and you understand that 
this Agreement and our Privacy Statement do not apply to your use of 
such sites. To the fullest extent permissible by law, you expressly 
relieve us from any and all liability arising from your use of any 
third-party website or third party owned content. Additionally, your 
dealings with or participation in promotions of advertisers that may be 
found on the OnLive Websites, including payment and delivery of goods, 
and any other terms (such as warranties) are solely between you and such
 advertisers. You agree that we are not responsible for any loss or 
damage of any sort relating to your dealings with such advertisers.</p>
        						<p class="soft_return">We encourage you to be aware of 
when you leave the OnLive Websites, and to read the terms and conditions
 and privacy policy of any third-party website that you visit.</p>

        						<h5 class="soft_return">Indemnity</h5>
        						<p class="soft_return">You agree to defend, indemnify and 
hold harmless OnLive, and its subsidiaries, agents, managers, partners, 
suppliers, advertisers, product and OnLive Website providers, and other 
affiliated companies, and their employees, contractors, agents, officers
 and directors, from and against any and all claims, damages, 
obligations, losses, liabilities, costs or debt, and expenses (including
 but not limited to attorneys' and experts' fees) arising from: (i) any 
infringement of OnLive's Intellectual Property Rights by you; (ii) your 
violation of any third-party right, including without limitation any 
right of privacy, publicity rights or Intellectual Property Rights; and 
(iii) your violation of any law, rule or regulation of the UK or any 
other country.</p>

        						<h5 class="soft_return">No Warranty</h5>
        						<p class="hard_return">The OnLive Websites are provided on
 an "as is" and "as available" basis. Use of the OnLive Websites is at 
your own risk. To the extent permitted by law, OnLive Websites are 
provided without warranties of any kind, whether express or implied. 
Without limiting the foregoing, OnLive, its subsidiaries, and its 
licensors do not warrant that the operation of the OnLive Websites or 
the information, content, materials, or products included on the OnLive 
Websites is accurate, reliable or correct; that the OnLive Websites will
 meet your requirements; that the OnLive Websites will be available at 
any particular time or location, uninterrupted or secure; that any 
defects or errors will be corrected; or that the OnLive Websites are 
free of viruses or other harmful components. Any information, content, 
materials, or products downloaded or otherwise obtained through the use 
of the OnLive Websites is obtained at your own risk and you will be 
solely responsible for any damages or losses, including damage to your 
computer system or loss of data, that result from such procurement.</p>
        						<p class="soft_return">OnLive does not warrant, endorse, 
guarantee, or assume responsibility for any product or websites 
advertised or offered by a third party through the Onlive Websites or 
any hyperlinked website or site, or featured in any banner or other 
advertising, and OnLive will not be a party to or in any way monitor any
 transaction between you and third-party providers of products or sites.</p>

        						<h5 class="soft_return">Limitation of Liability</h5>
        						<p class="hard_return">OnLive will not be responsible for 
any damage, loss or expense resulting from hacking, tampering or other 
unauthorized access or use of the Onlive Websites or your account or the
 information contained therein.</p>
        						<p class="hard_return">To the extent permitted by law, in 
no event shall Onlive (or any of its affiliates or licensors) nor any of
 the officers, directors, employees, shareholders, licensors, customers,
 agents or representatives of Onlive have any liability of any kind or 
nature to you or any third party for any indirect, incidental, 
consequential, special, or punitive damages whatsoever (including, but 
not limited to, damages for any loss of profits or loss of any 
confidential or other information or for business interruption) arising 
out of or in any way relating to your use of the OnLive Websites 
(including an inability to access or use the OnLive Websites) or 
otherwise with respect to this Agreement, whether arising in tort 
(including negligence), contract, strict liability or otherwise, whether
 or not you have advised of the possibility of any such loss or damage.</p>
        						<p class="hard_return">OnLive will not be liable for any 
liability associated with infrastructure (including, without limitation,
 the internet), devices and software outside of OnLive's control such as
 computers, displays, televisions, input devices, switches, routers, 
firewalls, operating systems, and browsers.</p>
        						<p class="soft_return">Nothing in this Agreement will 
exclude or limit either party's liability for (i) fraud or fraudulent 
misrepresentation; (ii) death or personal injury caused by its 
negligence (iii) under the indemnity in clause 6 above; or (iv) any 
other liability which cannot be excluded by law.</p>

        						<h5 class="soft_return">Export Control</h5>
        						<p class="soft_return">You may not use, export or 
re-export any Content or any copy or adaptation of such Content, or any 
product or service offered on the OnLive Websites, in violation of any 
applicable laws or regulations, including, without limitation, UK export
 laws and regulations. The OnLive Websites are controlled and operated 
from facilities in the UK. We make no representations that the OnLive 
Websites or any portions thereof are appropriate or available for use in
 other locations. Those who access or use the OnLive Websites from other
 jurisdictions do so of their own volition and are entirely responsible 
for compliance with all applicable UK and local laws and regulations, 
including but not limited to export and import regulations. You may not 
use the OnLive Websites if you are a resident of a country embargoed by 
the UK, or are a foreign person or entity blocked or denied by the UK 
government.</p>

        						<h5 class="soft_return">Assignment</h5>
        						<p class="soft_return">This Agreement, and any rights and 
licenses granted hereunder, may not be transferred or assigned by you, 
but may be assigned by us without restriction.</p>

        						<h5 class="soft_return">General</h5>
        						<ul class="tos_alpha"><li>
        								<p class="hard_return">Governing Law and Legal Actions. 
You agree to handle any disputes between you and OnLive in accordance 
with the policy outlined below, the OnLive Privacy Policy or as 
otherwise agreed in writing between you and OnLive. As an alternative to
 litigation, OnLive will consider reasonable requests to resolve any 
dispute through dispute resolution procedures such as arbitration or 
mediation.</p>
        								<p class="hard_return">The construction, validity and 
performance of this Agreement and all non-contractual obligations 
arising from or connected with this Agreement, the OnLive Privacy 
Statement, the OnLive Community Guidelines or the service shall be 
governed by English law.  Any action or proceeding brought to adjudicate
 any dispute related to this Agreement, the OnLive Privacy Statement, 
OnLive Community Guidelines, or the service shall be subject to the 
non-exclusive jurisdiction of the English courts, except as otherwise 
agreed by the parties in writing.</p>
        								<p class="soft_return">If you breach or indicate your 
intention to breach this Agreement (including, without limitation, in a 
manner that infringes, misappropriates or violates any Intellectual 
Property Rights or privacy rights or may cause irreparable or continuing
 harm), OnLive may seek injunctive relief against you, or any other 
remedy available under applicable law</p>
        							</li><li>
        								<p class="soft_return">Notification Procedures. We may 
provide notifications, whether such notifications are required by law or
 are for marketing or other business related purposes, to you via email 
notice, written or hard copy notice, or through conspicuous posting of 
such notice on our website, as determined by us in our sole discretion. 
We reserve the right to determine the form and means of providing 
notifications to our Users.</p>
        							</li><li>
        								<p class="soft_return">Entire Agreement/Severability. 
This Agreement, together with our Privacy Statement and any other legal 
notices and agreements published by us via the OnLive Websites, shall 
constitute the entire agreement between you and OnLive concerning the 
OnLive Websites. If any provision of this Agreement is deemed invalid by
 a court of competent jurisdiction, the invalidity of such provision 
shall not affect the validity of the remaining provisions of this 
Agreement, which shall remain in full force and effect.</p>
        							</li><li>
        								<p class="soft_return">No Waiver. No waiver of any term 
of this Agreement shall be deemed a further or continuing waiver of such
 term or any other term, and OnLive's failure to assert any right or 
provision under this Agreement shall not constitute a waiver of such 
right or provision.</p>
        							</li></ul>                    </div>
                    

				</div> ]]>
        
    </content>
</entry>

<entry>
    <title>Amusing, True Near Death Experience.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2011/08/amusing-true-near-death-experience.html" />
    <id>tag:pgregg.com,2011:/blog//2.347</id>

    <published>2011-08-25T22:49:59Z</published>
    <updated>2011-08-25T23:02:50Z</updated>

    <summary>Those who know me will know that there have been two important events occurring in my life this week. 1) Tiling my kitchen, and 2) Trying to buy a HP TouchPad.As part of tiling the kitchen, significant other wanted to replace all the standard white wall sockets with Stainless Steel ones to match the rest of the kitchen colour scheme. I was safely over half way through this task, having disconnected the socket mains supply, when a van pulled up bearing HP TouchPad goodness. Thus the next 30 minutes of my life was accounted for.Upon returning to the kitchen tasks...</summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[Those who know me will know that there have been two important events occurring in my life this week. 1) Tiling my kitchen, and 2) Trying to buy a HP TouchPad.<br /><br />As part of tiling the kitchen, significant other wanted to replace all the standard white wall sockets with Stainless Steel ones to match the rest of the kitchen colour scheme. I was safely over half way through this task, having disconnected the socket mains supply, when a van pulled up bearing HP TouchPad goodness. Thus the next 30 minutes of my life was accounted for.<br /><br />Upon returning to the kitchen tasks I came to the Cooker 40A switch. I disconnected the ring main from the switch and proceeded to move the wires so that I kept the supply and load pairs apart when BUZZZZZZ and 240 Volts of high energy goodness shot through my hand and up my arm.<br /><br />Yes folks, TouchPad caused me to forget to flip the cooker ring circuit in the fuse box.<br /><br />Cue me jumping back, dropping tools and collapsing to the floor in a bout of Arrrrgh.<br /><br />Wife said "Stop it, you'll scare the kids.".<br /><br />Kids run in asking what happened and wife explains that Daddy electrocuted himself.<br /><br />Six year old Lauren asked "Could you see his bones?".<br /><br />
     ]]>
        
    </content>
</entry>

<entry>
    <title>What 16TB raw space looks like at home</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2011/04/what-16tb-raw-space-looks-like.html" />
    <id>tag:pgregg.com,2011:/blog//2.345</id>

    <published>2011-04-11T16:40:07Z</published>
    <updated>2011-04-11T18:44:39Z</updated>

    <summary>I&apos;ve been looking for some home backup solutions over the past couple of months. This has led me down both the do-it-yourself route and buying a ready-made solution.One of my requirements was that I wanted the solution to be more than just storage - otherwise I would have purchased a straight NAS box from the likes of Qnap, Netgear or if feeling rich Drobo. Most of these dedicated NAS boxes can be &quot;rooted&quot; to allow ssh access , however their CPUs are generally underpowered for general purpose use.Other requirements were that I wanted a reasonably small form factor and to...</summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="Systems" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="f4eg" label="F4EG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hpmicroserver" label="HP Microserver" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nas" label="NAS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="networkattachedstorage" label="Network-attached storage" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="raid" label="RAID" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sandiskcruzer" label="Sandisk Cruzer" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="serialata" label="Serial ATA" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tb" label="TB" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[I've been looking for some home backup solutions over the past couple of months. This has led me down both the do-it-yourself route and buying a ready-made solution.<br /><br />One of my requirements was that I wanted the solution to be more than just storage - otherwise I would have purchased a straight NAS box from the likes of Qnap, Netgear or if feeling rich Drobo. Most of these dedicated NAS boxes can be "rooted" to allow ssh access , however their CPUs are generally underpowered for general purpose use.<br /><br />Other requirements were that I wanted a reasonably small form factor and to be able to use at least 4 SATA hard drives, preferably with hot swap ability. Hardware raid was not a requirement because I intended on using a Linux distribution with mdadm software raid.<br /><br />In the end, I ended up building two boxes.<br />The first, a home build, based on the <a href="http://linitx.com/viewproduct.php?prodid=12789&amp;sr=ts">CFI A7879 chassis</a> <a href="http://pgregg.com/blog/assets_c/2011/04/CFI_A7879_1-15.html" onclick="window.open('http://pgregg.com/blog/assets_c/2011/04/CFI_A7879_1-15.html','popup','width=550,height=380,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://pgregg.com/blog/assets_c/2011/04/CFI_A7879_1-thumb-250x172-15.jpg" alt="CFI_A7879_1.jpg" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" height="172" width="250" /></a>with a <a href="http://www.mini-itx.com/store/?c=71#ga-d525tud">Gigabyte GA-D525TUD Dual Core Atom Mini-ITX Board</a>. <br /><a href="http://pgregg.com/blog/assets_c/2011/04/GA-D525TUD-18.html" onclick="window.open('http://pgregg.com/blog/assets_c/2011/04/GA-D525TUD-18.html','popup','width=200,height=150,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://pgregg.com/blog/assets_c/2011/04/GA-D525TUD-thumb-200x150-18.jpg" alt="GA-D525TUD.jpg" class="mt-image-none" style="" height="150" width="200" /></a><br /><br /><div>The second was a off-the-shelf <a href="http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/15351-15351-4237916-4237918-4237917-4248009.html">HP ProLiant Microserver</a> which, to be brutally honest, was because HP were offering <a href="http://h41112.www4.hp.com/promo/proliantmicroserver/pdf/PA0023-%C2%A350_off_Microserver_Offer_Apr_2011.pdf">£100 cashback</a> deal on it. This made the server much cheaper than you could possibly build yourself from components.<br /><a href="http://pgregg.com/blog/assets_c/2011/04/HP_Microserver-21.html" onclick="window.open('http://pgregg.com/blog/assets_c/2011/04/HP_Microserver-21.html','popup','width=500,height=414,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://pgregg.com/blog/assets_c/2011/04/HP_Microserver-thumb-250x207-21.jpg" alt="HP_Microserver.jpg" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" height="207" width="250" /></a><br /></div><div>I added 4GB ram to each box (total 5GB in the HP box because it comes with 1GB).<br /><br />The CFI boot drive is a 8GB (30MB/sec) CompactFlash card mounted as an 
IDE drive. The HP boot drive is a 16GB Sandisk Cruzer USB stick.<br />
<br />Finally added 4 x 2TB Samsung F4EG HD204UI drives to each box.<br /><br />The CFI box has 8TB in RAID5 providing 5.4TB usable. The HP has 8TB in RAID6 providing 3.6TB usable space.<br /><br />If there is more interest, I'll write up the build process is more detail with pictures.<br /><br />For now - here are some shots of my utility shelf.<br /><br /><a href="http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173250-24.html" onclick="window.open('http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173250-24.html','popup','width=1920,height=2560,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173250-thumb-240x320-24.jpg" alt="IMG_20110411_173250.jpg" class="mt-image-none" style="" height="320" width="240" /></a><a href="http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173740-27.html" onclick="window.open('http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173740-27.html','popup','width=1920,height=2560,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173740-thumb-250x333-27.jpg" alt="IMG_20110411_173740.jpg" class="mt-image-none" style="" height="333" width="250" /></a><br /><br /><br /></div>

]]>
        
    </content>
</entry>

<entry>
    <title>Experts Exchange, Google, AllFAQ.org and misappropriation of copyright.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2011/01/experts-exchange-google-allfaqorg-dmca.html" />
    <id>tag:pgregg.com,2011:/blog//2.344</id>

    <published>2011-01-19T21:50:45Z</published>
    <updated>2011-01-20T14:50:00Z</updated>

    <summary>Opinion PieceI was googling (as a verb) and came across a rather peculiar message at the bottom of Google&apos;s search results:In response to a complaint we received under the US Digital Millennium Copyright Act, we have removed 1 result(s) from this page. If you wish, you may read the DMCA complaint that caused the removal(s) at ChillingEffects.org.Interesting - never saw that before!Following the link to Chilling Effects shows a copy of the complaint which has some interesting text in it.Experts-Exchange makes a detailed itemisation of their registered Copyrights, none of which I find objectionable, however, the complaint then goes on...</summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="allfaqorg" label="allfaq.org" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="copyright" label="copyright" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dmca" label="DMCA" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="expertsexchange" label="experts-exchange" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="google" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[Opinion Piece<br /><br />I was googling (as a verb) and came across a rather peculiar message at the bottom of Google's search results:<br /><br /><blockquote><span style="visibility: visible;" id="xjs"><i>In response to a complaint we received under the <a href="http://www.google.co.uk/intl/en/dmca.html">US Digital Millennium Copyright Act</a>, we have removed 1 result(s) from this page. If you wish, you may <a href="http://www.chillingeffects.org/notice.cgi?sID=30399">read the DMCA complaint</a> that caused the removal(s) at ChillingEffects.org.</i></span><br /><span style="visibility: visible;" id="xjs"></span></blockquote><span style="visibility: visible;" id="xjs"><i><br /></i></span>Interesting - never saw that before!<br /><br />Following the link to <a href="http://www.chillingeffects.org/notice.cgi?sID=30399">Chilling Effects</a> shows a copy of the complaint which has some interesting text in it.<br /><br />Experts-Exchange makes a detailed itemisation of their registered Copyrights, none of which I find objectionable, however, the complaint then goes on to list several issues against the Defendant, the first and most egregious of which is:<br /><br /><blockquote><i>a direct "copy and paste job" lifting the content of Plaintiff's question and answer forums and inserting them onto AllFAQ's website. AllFAQ's question and "Solutions" are verbatim to Experts-Exchange's questions and "Accepted Solutions;" </i><br /></blockquote><br />From this <a href="http://experts-exchange.com/">Experts Exchange</a> is accusing <a href="http://allfaq.org/">allfaq.org</a> of Copyright infringement against Experts Exchange owned Copyright.<br /><br />At first glance, this might seem fully justified - but look at what they are claiming copyright on.&nbsp; Experts Exchange are assuming copyright ownership of content that you, and I, and all their users create by asking and answering questions on their web site.<br /><br />I looked at Experts Exchange's <a href="http://www.experts-exchange.com/termsOfUse.jsp">Terms of Use</a> and could not find any agreement that users were assigning their rights and copyrights to Experts Exchange. The relevant paragraph is:<br /><br /><blockquote>"5. Content License<dl><dd>
         <p>
         EXPERTS EXCHANGE enables Members to post problems or questions, 
         proposed solutions or answers, information, comments and other content 
         ("Your Content") to its Site.  When you post Your Content to the Site, 
         you understand and agree that Your Content can be viewed and used by 
         other Members who visit the Site with or without attribution.
         </p>
         
         <p>
         You represent and warrant that you own or otherwise control all of the 
         rights to Your Content and that use of Your Content by EXPERTS 
         EXCHANGE and its affiliates will not infringe upon or violate the 
         rights of any third party. Before you use EXPERTS EXCHANGE Services to 
         post any information or content that is protected by intellectual 
         property laws, you shall have acquired the legal right to do so from 
         the owner or authorized licensee of such information or content.
         </p>
         
         <p>
         By registering with EXPERTS EXCHANGE and posting Your Content on the 
         Site, you hereby: (i) grant EXPERTS EXCHANGE a non-exclusive,
         perpetual, irrevocable, unrestricted, transferable, fully
         sub-licensable, worldwide, royalty-free license to use, distribute,
         display, reproduce, perform, modify, adapt, publish, translate and
         create derivative works from Your Content in any form, media or
         technology, whether now-known or hereafter developed; (ii) grant
         EXPERTS EXCHANGE and its affiliates and sub-licensees the right to use
         the Member Name that you submit with Your Content for purposes of
         attribution; (iii) authorize EXPERTS EXCHANGE to assert and prosecute
         claims against any third-party making any unauthorized use of Your
         Content, including any use that violates this User Agreement
         ("Third-Party Claims"); and (iv) appoint EXPERTS EXCHANGE as your
         attorney-in-fact for the purpose of asserting and prosecuting
         Third-Party Claims. If you do not wish to have Your Content attributed
         to you, then you must notify EXPERTS EXCHANGE at
            <a href="mailto:customer_service@experts-exchange.com">
            customer_service@experts-exchange.com</a>.
         </p>
      </dd></dl></blockquote><br />Experts Exchange acknowledges that the copyright belongs to the author as "Your Content" and that by posting you are granting them extensive <b>licenses</b> to use that content. You are not assigning your copyright to Experts Exchange.<br /><br />Now I am glad that their ToU does not attempt to wrest copyright ownership from its rightful owner, that is right and proper.<br /><br />allfaq.org is demonstrably guilty of screen-scraping the Experts 
Exchange web site and I do not condone those actions at all. However, looking at what 
they copied - it was the Title, Question and Accepted Solution text - 
the copyright of 100% of that is with the original authors, and not 
Experts Exchange.<br />
<br />Thus, in my opinion, this complaint against allfaq.org is without merit and should be dismissed.<br /><br />It would also appear that Experts Exchange has also abused the provisions of the DMCA in forcing Google to remove the content. Google should restore the links.<br /><br />And finally, Experts Exchange should implement some technical measures to prevent automated scraping. Find better ways to improve your search ranking, and if your competition beats you don't <a href="http://www.experts-exchange.com/Web_Development/Internet_Marketing/Search_Engine_Optimization_SEO/Q_26271117.html">ask your own members how to do better SEO</a>; be told by them that you have no Copyright Claims on the content; and then proceed to file DMCA take down notices when you know you have no (copy)right.<br /><br /><br /><br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>Stage 2: http:BL with Apache2 mod_perl</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2010/12/stage-2-httpbl-with-apache2-mod-perl.html" />
    <id>tag:pgregg.com,2010:/blog//2.343</id>

    <published>2010-12-02T11:19:45Z</published>
    <updated>2010-12-02T12:31:11Z</updated>

    <summary><![CDATA[After my earlier post Referrer and Comment spammers are a PITA I came up with two mod_perl plugins to Apache and an "apache level" firewall.The reason for the apache-level firewall is two-fold.&nbsp; There is no direct way for the Apache user to manipulate an iptables chain (as it doesn't run as root), and second; I was not happy with suid root access or other forms of message passing to a daemon which would manipulate the firewall for me.Architecture is thus, in httpd.conf place the following two lines:PerlPreConnectionHandler PGREGG::httpBLBlockPerlLogHandler PGREGG::httpBLLogThe first tells apache to run the handler in my httpBLBlock.pm module...]]></summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="apache" label="apache" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="firewall" label="firewall" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mod_perl" label="mod_perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[After my earlier post <a href="http://pgregg.com/blog/2010/11/referrer-and-comment-spammers-are-a-pita.html">Referrer and Comment spammers are a PITA</a> I came up with two mod_perl plugins to Apache and an "apache level" firewall.<br /><br />The reason for the apache-level firewall is two-fold.&nbsp; There is no direct way for the Apache user to manipulate an iptables chain (as it doesn't run as root), and second; I was not happy with suid root access or other forms of message passing to a daemon which would manipulate the firewall for me.<br /><br />Architecture is thus, in httpd.conf place the following two lines:<br /><blockquote>PerlPreConnectionHandler PGREGG::httpBLBlock<br />PerlLogHandler PGREGG::httpBLLog<br /></blockquote>The first tells apache to run the handler in my httpBLBlock.pm module when a connection is received (before the request has been sent by the client).&nbsp; In this handler, I am simply looking for a filename matching that IP in a directory that is writable by the apache user.&nbsp; The contents of the file are a SCORE:httpBL_answer:[LIST].&nbsp; Based on this, the module checks the mtime of the filename is in the last SCORE days, then the firewall is in effect. If so, we simply tell apache to drop the connection.&nbsp; If the file has expired, we delete the file.<br /><br />The second line is more interesting, and what creates the firewall filenames. In order to not impede the general speed of request handling, processing is performed in the Logging section of the Apache process. Our module is called by apache after the response has been sent, but before the access_log entry has been written.&nbsp; In our module we perform the <a href="http://www.projecthoneypot.org/httpbl_api.php">http:BL</a> API call and compute the above SCORE based upon the Threat* level and Age* of the API response. (* both Threat and Age are octets in the DNS lookup).&nbsp; We merely discount the Threat down to zero based on the Age (0-255) where an entry 255 days old reduces the SCORE to zero.<br />If the SCORE is larger than our trigger level (3) then we create the firewall filename, log the entry in our own httpbl.log and return Apache2::Const::FORBIDDEN.&nbsp; This causes Apache to not log the entry in the normal access_log.&nbsp; Otherwise, if all is ok, we return Apache2::Const::OK and Apache logs the hit as normal.<br /><br />I have a bit of code tidy up, restructure the config/firewall directory and pull some common code out to a shared module before I can release to the world.<br /><br />An interesting side effect to publishing the last story out through <a href="http://www.planet-php.net/">Planet PHP</a> and other news sources <i>along with the Project Honey Pot image</i> is that when browsers viewed those sources, they all asked for the image off my server. In several cases, these were known spammer, Comment spammer, and other abusers. My server then created the firewall entry blocking them before they were able to follow the links back to my server.<br />&nbsp;<br />I have been reading up more on <a href="http://perl.apache.org/docs/2.0/api/Apache2/Filter.html">Apache Bucket Brigades</a> in an attempt to allow the firewall filter to be placed immediately after the request has been received and allow a custom response to the browser. This may help an otherwise unsuspecting user if their machine had been trojaned. I don't mind admitting I'm thoroughly confused right now :)<br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>Referrer and Comment spammers are a PITA.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2010/11/referrer-and-comment-spammers-are-a-pita.html" />
    <id>tag:pgregg.com,2010:/blog//2.342</id>

    <published>2010-11-28T23:18:54Z</published>
    <updated>2010-11-28T23:45:53Z</updated>

    <summary><![CDATA[This shouldn't be news to anyone - but Referrer and Comment spammers are a real pain in the a*se.&nbsp; Polluting my web logs and making any meaningful log analysis problematic.So, I now have an itch to scratch and I'm going to do something about it. I would encourage you, the reader, to do something about it too.Firstly, get yourself over to Project Honey Pot and read up on the project.&nbsp; If you can, set up a Honey Pot or two yourself. Also be sure to read about the http:BL - this works along similar lines to the DNS blacklists used...]]></summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="httpbl" label="http:BL" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="spam" label="spam" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[This shouldn't be news to anyone - but Referrer and Comment spammers are a real pain in the a*se.&nbsp; Polluting my web logs and making any meaningful log analysis problematic.<br /><br />So, I now have an itch to scratch and I'm going to do something about it. I would encourage you, the reader, to do something about it too.<br /><br />Firstly, get yourself over to <a href="http://www.projecthoneypot.org/?rf=73568">Project Honey Pot</a> and read up on the project.&nbsp; If you can, set up a Honey Pot or two yourself. Also be sure to read about the <a href="http://www.projecthoneypot.org/faq.php#g">http:BL</a> - this works along similar lines to the DNS blacklists used for Email spammers.<br /><br />Next, I'm going to write a general Apache mod_perl module which will provide integration (lookup) to the http:BL and allow the user to "action"* the abusers.&nbsp; Minimally, it will prevent the normal apache log files from being polluted by diverting the log entries to a httpbl logfile.<br /><br />* "action" - To provide flexibility, I'm thinking of running an external script with the IP of the abuser.&nbsp; The script can then perform any action you wish. The one I'm going for is an iptables firewall block.<br /><br />Comments and suggestions welcome.<br /><br />Project Honey Pot has implementations for several languages, including <a href="http://www.php.net/">PHP</a> and <a href="http://www.perl.org/">Perl</a> (the languages that mean most to me).&nbsp; There may be an implementation for your <a href="http://www.projecthoneypot.org/httpbl_implementations.php">Web application </a> so you might not be interested in what I'm doing at all :)<br /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="projhoneypot_banner.jpg" src="http://pgregg.com/blog/images/projhoneypot_banner.jpg" class="mt-image-none" style="" height="60" width="468" /></span><br /><br /><br /><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>Vodafone UK + HTC Desire + Android 2.2 FroYo = Fail.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2010/08/vodafone-uk-htc-desire-android-22-froyo-fail.html" />
    <id>tag:pgregg.com,2010:/blog//2.341</id>

    <published>2010-08-04T17:59:03Z</published>
    <updated>2010-08-06T12:40:32Z</updated>

    <summary><![CDATA[Well, it looks like Vodafone UK royally messed up the timing of the HTC Desire OTA Update yesterday.&nbsp; While most owners were eagerly expecting the announced Android 2.2 (FroYo) update that HTC have been pushing out, Vodafone decided to push out a 2.1-update1 which only provides Vodafone branding, apps, a few bugs, and even a couple of "adult" related bookmarks to everyone - and leaving them on Android 2.1 (Eclair).Needless to say - Users are not happy at all. *Vodafone appears to have moved the thread here. [2010/08/06] Moved again to here (is Vodafone trying to hide the complaints?).In work,...]]></summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="android" label="android" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="froyo" label="froyo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="htcdesire" label="htc desire" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vodafone" label="vodafone" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[Well, it looks like Vodafone UK royally messed up the timing of the HTC Desire OTA Update yesterday.&nbsp; While most owners were eagerly expecting the announced Android 2.2 (FroYo) update that HTC have been pushing out, Vodafone decided to push out a 2.1-update1 which only provides Vodafone branding, apps, a few bugs, and even a couple of "adult" related bookmarks to everyone - and leaving them on Android 2.1 (Eclair).<br /><br />Needless to say - Users are <strike><a href="http://forum.vodafone.co.uk/topic/70196-htc-desire-new-firmware-update-but-not-22/">not happy</a></strike> at all. *Vodafone appears to have moved the thread <strike><a href="http://forum.vodafone.co.uk/topic/70507-htc-desire-new-firmware-but-not-22/">here</a></strike>. [2010/08/06] Moved again to <a href="http://forum.vodafone.co.uk/topic/70551-htc-desire-new-firmware-but-not-22/">here</a> (is Vodafone trying to hide the complaints?).<br /><br />In work, we (coworkers and I) now have a total of 8 HTC Desires (out of 16 people) - even two iPhone users have converted! A few have been espousing the wonders of FroYo on their phone (some had rooted, and did it themselves, others had bought unbranded phones and got the stock HTC FroYo upgrade). I was jealous(ish) and wanted it myself.<br /><br />Given Vodafone's actions yesterday, it was likely that the FroYo update from Vodafone was minimum several weeks away, if not 3 months (as was intimated on the Vodafone forum - end of October) - it was also noted that the Vodafone FroYo update would include the Vodafone 360 branding and software.<br /><br />Thus, last night it was time to embark on the adventure of flashing my HTC Desire to a stock image direct from HTC. I reasoned that my goal should be to flash HTC's Android 2.1 (Eclair) image to the phone, and once there, the normal software update process should take me to 2.2.<br /><br />And so it began...<br /><br />I knew that I needed to create a gold card because the Vodafone image doesn't let you install non-Vodafone images. This I discovered as I tried to simply apply a stock 2.2 download and using boot recovery update.zip - all attempts met with a complaint of a "Fingerprint error".<br /><br />I ended up at this page:<br />&nbsp; <a href="http://forum.xda-developers.com/showthread.php?t=696189">[TUT]Complete upgrading guide(root, unroot, flashing ROM &amp; updates)</a><br /><br />and followed <a href="http://forum.xda-developers.com/showpost.php?p=6710085&amp;postcount=3">Post #3</a> which details a) How to make a Gold Card* . Ignore the rest of #3<br />and then <a href="http://forum.xda-developers.com/showpost.php?p=6710092&amp;postcount=4">Post #4</a> - the "unrooting" guide.<br /><br />You then need to find a download of the correct stock HTC Bravo WWE image ROM - I chose the second WWE ROM from this link (140MB download):<br />&nbsp; <a href="http://forum.xda-developers.com/showthread.php?t=695667">[ROM] Official HTC Desire RUU ROMS and OTA Update URLs</a><br />&nbsp; RUU_Bravo_HTC_WWE_1.21.405.2_Radio_32.36.00.28U_4.06.00.02_2_release_126984_signed.exe<br /><br />Proceed through the rest of Post #4 "How to Flash ROM" with the Goldcard inside your Desire, and plugged into your PC.<br /><br />The phone will take 5-10 minutes to complete upgrading (or downgrading) to HTC Stock 2.1 image. When it reboots you will have to go through all the original setup sequences you did when you first unboxed your phone.<br /><br />You can then perform a Software Update Check and you should find you have a Android 2.2 FroYo update (90Mb) waiting for you.&nbsp; Proceed and let it do its thing.<br /><br />Once done, welcome to FroYo.<br /><br />All future updates will come direct from HTC - not from Vodafone, and you won't ever have the Vodafone 360 branding rubbish foisted upon you.<br /><br /><br />* My GoldCard creation had a bit of a hiccup, in that it turns out that the 4GB Samsung card which came with my Desire does not work as a Goldcard despite formatting and following the instructions to the letter.&nbsp; Trying an old 1GB Sandisk I had resulted in a good goldcard.<br /><br />Aside from the goldcard hiccup - this all went surprisingly smoothly and painlessly.<br /><br />Good luck.<br /><br />Disclaimer: If you try any of the above - it is all your responsibility. I take no responsibility should you brick or damage your phone.<br /><br /><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>The O2 Joggler - A first hack.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2010/04/the-o2-joggler---a-first-hack.html" />
    <id>tag:pgregg.com,2010:/blog//2.340</id>

    <published>2010-04-14T22:06:47Z</published>
    <updated>2011-04-16T16:05:25Z</updated>

    <summary><![CDATA[If you were not aware - O2 last week reduced the price of the O2 Joggler from £149.99 to £99.99 to £49.99.&nbsp; Nothing remarkable in price reductions, however what is remarkable is what you actually get for your money.The O2 Joggler is a silent 7" touchscreen device with Intel Atom Z520 running at 1.3Ghz, 512Mb ram, 1GB internal flash storage with additional storage available via an external USB port. What makes the device really exciting is that it also has a 1GB ethernet (Realtec 8168) and Wifi.Looking at that - I know you're all thinking "linux box" - but conveniently,...]]></summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="Joggler" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="joggler" label="joggler" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="o2joggler" label="o2 joggler" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rtorrent" label="rtorrent" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://pgregg.com/blog/assets_c/2010/04/devicev2-11.html" onclick="window.open('http://pgregg.com/blog/assets_c/2010/04/devicev2-11.html','popup','width=308,height=149,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://pgregg.com/blog/assets_c/2010/04/devicev2-thumb-308x149-11.jpg" alt="devicev2.JPG" class="mt-image-right" style="float: right; margin: 0pt 0pt 20px 20px;" height="149" width="308" /></a></span><br />If you were not aware - O2 last week reduced the price of the O2 Joggler from <strike>£149.99 </strike>to <strike>£99.99</strike> to £49.99.&nbsp; Nothing remarkable in price reductions, however what is remarkable is what you actually get for your money.<br /><br />The O2 Joggler is a silent 7" touchscreen device with Intel Atom Z520 running at 1.3Ghz, 512Mb ram, 1GB internal flash storage with additional storage available via an external USB port. What makes the device really exciting is that it also has a 1GB ethernet (Realtec 8168) and Wifi.<br /><br />Looking at that - I know you're all thinking "linux box" - but conveniently, the default operating system on it is based on Ubuntu 8.04 and busybox, The frontend is a custom flash driven UI developed by OpenPeak (makers of the Jogger which is rebadged by O2).<br /><br />There are plenty of clever individuals over at <a href="http://hackthejoggler.freeforums.org/">http://hackthejoggler.freeforums.org/</a>and in the #mer channel on freenode who are working to allow the Joggler to run other Operating Systems such as Android, Ubuntu Netbook Edition, MID, even Windows and OSX.<br /><br />However, the standard OS supplied is also pretty powerful and allows significant customisation.&nbsp; You can <a href="http://jogglerwiki.info/index.php?title=Installing_Telnet">enable telnet</a> just by turning it on with a custom USB stick plugged in. To do some of the things I'll be describing here you will need to have started with that.<br /><br />Once you can telnet in, the world opens up and you can do lots of things that you would expect* to be able to do in a linux system. (<i>* except run a web browser.... at this time - we don't have web access 
with the stock OS due to the custom flash GUI interface.</i>)<br /><br />Lets install some useful utilities, how about perl, terminfo, irc clients, bit torrent, rsync, ssh/scp ?&nbsp;&nbsp; Yes, I know what you're thinking - overnight silent downloads - no need to leave PC on... nice...<br /><br />I've built several of these utilities with installation instructions and uploaded them over here:&nbsp; <br />&nbsp; <a href="http://pgregg.com/projects/joggler/">http://pgregg.com/projects/joggler/</a><br /><br />Feel free to download, examine, install etc.&nbsp; Read the README on the download page - it explains how to do it. Most of the packs include an install.sh script that will provide an installation safety net - it won't overwrite existing files or libraries.<br /><br />Usual disclaimers apply - you try these applications at your own risk. I accept no responsibility if you manage to brick, fry or otherwise trash your joggler.<br /><br />Comments, suggestions for other applications are always welcome.<br /><br /><b>Update</b>: Thanks to NP - seems I was a little too brutal with the library stripping to keep the download sizes small and I missed some required libraries (that I mistakenly thought were in the standard Joggler distro).&nbsp;&nbsp; I have rebuilt the following packages as they were missing some libs: rtorrent, rsync, sudo,ssh<br />The screen package has been rebuilt too to add one final tweak (to the installer script) so it can be used by non-root users - the only difference you need to do is run the command: chmod 666 /dev/ptmp /dev/tty<br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>Is BT still collecting usage data?</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2010/03/is-bt-still-collecting-usage-data.html" />
    <id>tag:pgregg.com,2010:/blog//2.339</id>

    <published>2010-03-31T07:30:00Z</published>
    <updated>2010-03-31T13:28:17Z</updated>

    <summary><![CDATA[After the recent scandal over BT using Phorm (see here and here) is it still possible that BT is still covertly collecting data profiling its user's internet usage?I have, as part of my home BT Total Broadband package, a HUAWEI Mobile Connect 3G Modem.&nbsp; This is a USB dongle that provides internet service.&nbsp;&nbsp; I rarely use it, but because of the storms last night my internet connection has been very unstable, therefore I plugged it in today.When I started the "BT Connection Manager" software, it informed me that there was an update to the service and would I like to...]]></summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bt" label="BT" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="btconnectionmanager" label="BT Connection Manager" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="privacy" label="privacy" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[After the recent scandal over <a href="http://www.bt.com/">BT</a> using <a href="http://en.wikipedia.org/wiki/Phorm">Phorm</a> (see <a href="http://www.theregister.co.uk/2010/02/25/bt_cps/">here</a> and <a href="http://www.theinquirer.net/inquirer/news/1051760/eu-slaps-uk-phorm-fiasco">here</a>) is it still possible that BT is still covertly collecting data profiling its user's internet usage?<br /><br />I have, as part of my home BT Total Broadband package, a <a href="http://www.productsandservices.bt.com/consumerProducts/displayCategory.do?categoryId=CON-MOBILE-R1">HUAWEI Mobile Connect 3G Modem</a>.&nbsp; This is a USB dongle that provides internet service.&nbsp;&nbsp; I rarely use it, but because of the storms last night my internet connection has been very unstable, therefore I plugged it in today.<br /><br />When I started the "BT Connection Manager" software, it informed me that there was an update to the service and would I like to download it? Yes, ok, and a couple of minutes later it began to install itself.&nbsp; Then popped up the obligatory <a href="http://en.wikipedia.org/wiki/Software_license_agreement">EULA</a> which contained the paragraphs:<br /><br /><blockquote>"<i>Installation of this Software will automatically apply a unique identifier to the Software, this identifying feature will only be used in accordance with the BT privacy policy which can be found at www.bt.com.</i><br /><br /><i>This software automatically collects session and client parameter Information for all connections made via this Software. This information is automatically transmitted to BT at the start of each session where Internet access is available. This session information will only be used in accordance with the BT privacy policy which can be found at www.bt.com."</i><br /><br /><span class="mt-enclosure mt-enclosure-file" style="display: inline;"><a href="http://pgregg.com/blog/images/BTConnectionManagerEULA.txt">BTConnectionManagerEULA.txt</a></span><br /></blockquote><div>I also note that the software package uses the Open Source packages libCurl, openssl and sqlite.&nbsp; Combined they enable the package to record "session and client parameter Information for all connections" in the database (sqlite) and to encrypt (openssl) and transmit the data via a web request (libcurl) back to BT.<br /><br />At this point I am unable to confirm if such a transmission is taking place as I declined the EULA, but would welcome feedback or comments from others that are able to investigate this more fully.<br /><br />Update: Even though I clicked "Cancel" to reject the EULA - it did update the application and actually started it up before I exited the installer.&nbsp; Guess I have this privacy invading feature now.<br /><br /><br /><br /></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>Amazon 1 - 0 Waterstones, aka this morning&apos;s rant.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2009/09/amazon-1---0-waterstones-aka-this-mornings-rant.html" />
    <id>tag:pgregg.com,2009:/blog//2.338</id>

    <published>2009-09-29T10:02:59Z</published>
    <updated>2009-09-29T10:24:10Z</updated>

    <summary><![CDATA[SWMBO asked me to order a book for her this morning, so being the tightwad that I am, I go hunting for the ISBN and the cheapest place to buy it.Amazon has it for £17.24 and Waterstone's for £18.49 (but if I order through quidco, then I receive another 8% cashback, making Waterstone's cheaper).Waterstone's need me to create an account, fair enough and state "Also, please be aware that passwords are case sensitive, and must be a minimum of seven characters long and at least one character must be numeric."&nbsp; Again, all fairly standard.So each time I try to enter...]]></summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazon" label="amazon" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rant" label="rant" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="waterstones" label="waterstones" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[SWMBO asked me to order a book for her this morning, so being the tightwad that I am, I go hunting for the ISBN and the cheapest place to buy it.<br />Amazon has it for £17.24 and Waterstone's for £18.49 (but if I order through <a href="http://www.quidco.com/">quidco</a>, then I receive another 8% cashback, making Waterstone's cheaper).<br /><br />Waterstone's need me to create an account, fair enough and state "Also, please be aware that passwords are case sensitive, and must be a
minimum of seven characters long and at least one character must be
numeric."&nbsp; Again, all fairly standard.<br /><br />So each time I try to enter a password which meets this criteria I'm hit with a javascript popup that claims: "Your new password must be at least 7 characters long and contain at least one digit."<br /><br />"But it is!", I yell in frustration.<br /><br />Using the Firefox "Web Developer" plugin I unhide the password boxes and see that my password doesn't have digits... wtf!&nbsp;&nbsp; I enter the digits again and find there is another hidden rule:<br /><pre id="line696">&lt;<span class="start-tag">input</span><span class="attribute-name"> name</span>=<span class="attribute-value">"newPassword" </span><span class="attribute-name">type</span>=<span class="attribute-value">"password"<br /></span><span class="attribute-name">id</span>=<span class="attribute-value">"fPassword" </span><span class="attribute-name">size</span>=<span class="attribute-value">"40" </span><span class="attribute-name">maxlength</span>=<span class="attribute-value">"16" </span><span class="attribute-name">value</span>=<span class="attribute-value">"" </span><span class="error"><span class="attribute-name">/</span></span>&gt;<br /></pre>Yes, an upper limit of 16 characters on the password.<br /><br />Right ok, make a password of 16 chars or under and move on...<br /><br />Add name, postcode to the next form and it finds my address ok - click continue to (I presume) proceed to the CC entry form and voila!<br /><br />Well not quite.<br /><br />"There has been a problem processing this request
<br />Please use the refresh button on your browser to try again.<br /><br />Thank you."<br /><br />A few refreshes later, it is apparent that Waterstone's has no intention of working, sod it, for 20p more I can have less hassle at Amazon.<br /><br /><br /><br /><br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>Getty Images / BBC Math Fail.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2009/06/getty-images-bbc-math-fail.html" />
    <id>tag:pgregg.com,2009:/blog//2.336</id>

    <published>2009-06-03T19:50:50Z</published>
    <updated>2009-06-03T20:13:07Z</updated>

    <summary>From the BBC Magazine today is an article 7 questions on GCSE maths.Can you spot the fail? Yes, epic....</summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bbc" label="bbc" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fail" label="fail" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="funny" label="funny" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="math" label="math" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[From the <a href="http://news.bbc.co.uk/1/hi/magazine/">BBC Magazine</a> today is an article <a href="http://news.bbc.co.uk/1/hi/magazine/8081043.stm">7 questions on GCSE maths</a>.<br /><br />Can you spot the fail?<br /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="bbc_math_fail1.png" src="http://pgregg.com/blog/images/bbc_math_fail1.png" class="mt-image-none" style="" width="431" height="419" /></span><br /><img src="file:///C:/DOCUME%7E1/pgregg/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /><img src="file:///C:/DOCUME%7E1/pgregg/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /><br /><br /> <div>Yes, epic.<br /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="bbc_math_fail2.png" src="http://pgregg.com/blog/images/bbc_math_fail2.png" class="mt-image-none" style="" width="216" height="182" /></span><br /></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>Register your broadband not-spot now</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2009/05/register-your-broadband-not-spot-now.html" />
    <id>tag:pgregg.com,2009:/blog//2.335</id>

    <published>2009-05-28T08:00:00Z</published>
    <updated>2009-05-28T13:34:47Z</updated>

    <summary>thinkbroadband, formerly ADSLGuide.org.uk, have setup a community site where UK sufferers of the lack of universal broadband can register their inability to obtain broadband (a not-spot) or where you are unable to obtain up to 2Mbps service (slow-spot).The Northern Ireland map is here - if you currently suffer from a lack of, or poor broadband coverage (including satellite) please register your details on the site - by adding your postcode it will appear on the map and we can begin to get a true picture of the poor state of broadband in Northern Ireland.Thanks....</summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="broadband" label="broadband" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="detini" label="detini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ni" label="ni" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="northernireland" label="northern ireland" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[<a href="http://www.thinkbroadband.com/">thinkbroadband</a>, formerly ADSLGuide.org.uk, have setup a community site where UK sufferers of the lack of universal broadband can register their inability to obtain broadband (a not-spot) or where you are unable to obtain up to 2Mbps service (slow-spot).<br /><br />The <a href="http://www.broadband-notspot.org.uk/coverage-map.html#9,54.61820741719788,-6.4654541015625,">Northern Ireland</a> map is here - if you currently suffer from a lack of, or poor broadband coverage (including satellite) please register your details on the site - by adding your postcode it will appear on the map and we can begin to get a true picture of the poor state of broadband in Northern Ireland.<br /><br />Thanks.<br /><div><br /></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>Borland, Farewell my sweet.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2009/05/borland-farewell-my-sweet.html" />
    <id>tag:pgregg.com,2009:/blog//2.334</id>

    <published>2009-05-06T14:31:36Z</published>
    <updated>2009-05-06T17:34:46Z</updated>

    <summary>Today, May 6 2009, marks the day that Borland, that once great master of all software development has finally recognised there was no other recourse but to up and sell itself off in order to survive.Back when I was a teenager, in the early 80s and personal computing was coming to the fore - I, and many others, aspired to work for that great company Borland. It was the pinnacle of language development and development tools and we wanted to work there. However, based in Ireland it was never to be.Also, once upon a time I happened to be working...</summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="acquisitions" label="acquisitions" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="borland" label="Borland" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="delphi" label="delphi" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jbuilder" label="jbuilder" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ma" label="M&amp;A" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="software" label="software" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[Today, May 6 2009, marks the day that Borland, that once great master of all software development has finally recognised there was no other recourse but to up and sell itself off in order to survive.<br /><br />Back when I was a teenager, in the early 80s and personal computing was coming to the fore - I, and many others, aspired to work for that great company Borland. It was the pinnacle of language development and development tools and we wanted to work there. However, based in Ireland it was never to be.<br /><br />Also, once upon a time I happened to be working for a very promising young company with a fantastic product line called Segue Software, based in Boston, MA.&nbsp; Segue also had its troubles but a new CEO saw its fortunes turn and it was climbing to success. This success was noticed by the aforementioned Borland as it tried to re-invent itself as an Application Lifecycle Management (ALM) company.&nbsp; The same day it was announced that Borland was acquiring Segue, it also announced it was selling its developer tools division (that's Delphi, JBuilder, and later Delphi for PHP, 3rd Rail line of products).<br /><br />This was such a bitter-sweet time for many.&nbsp; I was overjoyed that I was going to work for Borland (childhood dream) - it didn't matter I wasn't going to work with the developer tools, working for "Borland" would just be cool.&nbsp; Sadness also because our little 200-man company was being consumed by a 1200-man behemoth (relatively) and no-matter which way you looked at it, people were going to lose their jobs.&nbsp; Pretty much the entire US East Coast staff (Segue Head Office) lost their jobs and the office was closed.&nbsp; Product development labs and Technical Support survived, simply by virtue that it was the product and product skills that were purchased, not the G&amp;A functions - they could go.<br /><br />I 'lived the dream' for the next 2.5 years in the IT department. Despite being remote, I loved working with the rest of the Borland teams as I was intimately involved in the merging/migration of Segue's systems into Borland's. I also had the pleasure of working with several departments to architect and deploy several new platforms (such as product downloads and licensing via Intraware, and the companies Salesforce.com, SFDC, deployment).&nbsp; I'll treasure the time I spent at Borland.<br /><br />Of course there were several WTF moments. Most significantly, for me, was the company "hanging its hat" on BMS (Business Management Solutions) which ultimately proved to be a hatstand made of jello. Very few, outside of management and that product team, believed in it.&nbsp; Another significant WTF for Borland was, If you plan to be the Application LIFECYCLE Management company - why divest yourself (for a paltry $27m) of two of the world's major AppDev toolsets (Delphi and JBuilder). You've just removed the feeder market and upsell opportunity into your ALM business. Finally, and internal WTF to get off my chest, on what planet does the IT department belong as a subdivision of the HR department?<br /><br />Borland will live on in the hearts of many of us who knew what she used to be. I think I left Borland a better place than I found it (as long as you don't look at the stock price ;), and I made some good friends. At the end of the day, there isn't much more you can ask from your tenure.<br />It is sad that today if you ask a typical Software Engineer if they know who Borland is, they'll respond "Who?" which typifies the company's slide into obscurity.<br /><br />I wish the best of luck to my former colleagues, who I'm sure, will be wondering what is to happen next. I also hope that the new owners, Micro Focus International (who?), have good fortune with their ALM drive. Perhaps the Borland name might live on as a brand for a suite of ALM products - who knows what they'll do.<br /><br />In the immortal words of Dr. Seuss "Don't cry because it's over. Smile because it happened."<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>PHP algorithms: Determining if an IP is within a specific range.</title>
    <link rel="alternate" type="text/html" href="http://pgregg.com/blog/2009/04/php-algorithms-determining-if-an-ip-is-within-a-specific-range.html" />
    <id>tag:pgregg.com,2009:/blog//2.333</id>

    <published>2009-04-27T22:48:15Z</published>
    <updated>2009-06-03T20:27:31Z</updated>

    <summary><![CDATA[I spend a lot of time lurking in the #PHP channel (efnet and freenode, please - no flamewars) and this topic is a commonly asked one that usually gets a simplified answer in the form of using strpos(), or at best an ip2long() in a greater than and less than answer. Unfortunately although people usually understand that an IP address is simply an unsigned 32 bit integer, and is easily determined, usually with $_SERVER['REMOTE_ADDR'], where the real challenge is - is in specifying the range within which they wish to check that IP address.&nbsp; IP ranges are usually specified in...]]></summary>
    <author>
        <name>Paul Gregg</name>
        <uri>http://pgregg.com</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="algorithms" label="algorithms" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cidr" label="CIDR" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ipaddress" label="IP address" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://pgregg.com/blog/">
        <![CDATA[I spend a lot of time lurking in the #PHP channel (efnet and freenode, please - no flamewars) and this topic is a commonly asked one that usually gets a simplified answer in the form of using strpos(), or at best an ip2long() in a greater than and less than answer.
<br />
<br />Unfortunately although people usually understand that an IP address is simply an unsigned 32 bit integer, and is easily determined, usually with $_SERVER['REMOTE_ADDR'], where the real challenge is - is in specifying the range within which they wish to check that IP address.&nbsp; IP ranges are usually specified in three common ways (in increasing complexity):
<br />
<br />
<blockquote>
  <ol>
    <li>Wildcard: 192.168.10.*</li>
    <li>Start-End range: 10.1.0.0-10.1.255.255</li>
    <li>CIDR*: 172.16.1.0/24</li>
  </ol>
</blockquote>
<blockquote>* Classless Inter-Domain Routing
  <br />
</blockquote>
<p>The Wildcard method, or "classy", allows you to work at Class A (10.*.*.*), Class B (172.16.*.*) or Class C (192.168.10.*) levels of granularity which is how we used to do things in the old days (before the Web decided to make the Internet popular).&nbsp; But, increasingly, this just isn't granular enough for practical purposes.
  <br />
  <br />Thus was born CIDR (yes, I'm skipping talking about Start-End ranges for now).&nbsp; CIDR brought about the concept that we really didn't need to break networks on 8, 16, 24 bit boundaries and we could be more granular by allowing the use of any number (from 2-30) to specify a range of networks.&nbsp; Details on why you can't use "31" is beyond the scope of this article.
  <br />
  <br />CIDR renamed the former Class A, B and C networks as /8, /16 and /24 respectively and reflects the left-most significant bits of the 32-bit IP address.&nbsp; Thus was born the ability to specify very specific IP ranges in the form a.b.c.d/xx.&nbsp;&nbsp; However, part of the problem with this is that although it concisely describes the network start and end, most normal mortal humans couldn't decipher it. CIDR addressing can also be specified in the form of a longer netmask, e.g. a.b.c.d/255.255.255.224
  <br />
  <br />Thus, the simplified form of Start IP - End IP was put in place for mere mortals and is typically used by those without a networking background.&nbsp; It also features heavily in consumer broadband routers and notably in Microsoft Windows DHCP server.
  <br />
  <br />So having explained how a range, and by inference, that a netmask is, how can we use this knowledge to help us in determining if an IP is within a range?
  <br />
  <br />What this article will attempt to do is guide you though the construction of algorithms to make the checking of IPs simpler.
  <br />
  <br />Logically, Method 1 (the Wildcard), can be easily converted to Method 2 (Start-End range) by using setting Start and End to the Wildcard string and replacing the "*" character with 0 for the Start and 255 for the End, thus for example, "192.168.10.*" becomes "192.168.10.0-192.168.10.255" which should (I hope) be obvious to everyone.
  <br />
  <br />We can then proceed to evaluate both Method1 and Method2 in the same way.&nbsp; In this we're simply going to use the PHP built in function ip2long() on all 3 values and perform a mathematical check for Start &lt;= IP &lt;= End.
  <br />
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(255, 128, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: rgb(0, 119, 0);">list(</span><span style="color: rgb(0, 0, 187);">$lower</span><span style="color: rgb(0, 119, 0);">,&nbsp;</span><span style="color: rgb(0, 0, 187);">$upper</span><span style="color: rgb(0, 119, 0);">)&nbsp;=&nbsp;</span><span style="color: rgb(0, 0, 187);">explode</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">'-'</span><span style="color: rgb(0, 119, 0);">,&nbsp;</span><span style="color: rgb(0, 0, 187);">$range</span><span style="color: rgb(0, 119, 0);">,&nbsp;</span><span style="color: rgb(0, 0, 187);">2</span><span style="color: rgb(0, 119, 0);">);
  <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 187);">$lower_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">ip2long</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$lower</span><span style="color: rgb(0, 119, 0);">);
  <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 187);">$upper_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">ip2long</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$upper</span><span style="color: rgb(0, 119, 0);">);
  <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 187);">$ip_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">ip2long</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$ip</span><span style="color: rgb(0, 119, 0);">);
  <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(&nbsp;(</span><span style="color: rgb(0, 0, 187);">$ip_dec</span><span style="color: rgb(0, 119, 0);">&gt;=</span><span style="color: rgb(0, 0, 187);">$lower_dec</span><span style="color: rgb(0, 119, 0);">)&nbsp;&amp;&amp;&nbsp;(</span><span style="color: rgb(0, 0, 187);">$ip_dec</span><span style="color: rgb(0, 119, 0);">&lt;=</span><span style="color: rgb(0, 0, 187);">$upper_dec</span><span style="color: rgb(0, 119, 0);">)&nbsp;);</span></span></code>
  <br />
</p>
<p>We have, however, a complicating factor here - PHP does not do unsigned integers (32 bit) - which would be necessary for this math to work properly.&nbsp; We can negate this by switing to floating point data types.&nbsp; PHP stores&nbsp; floating types as 64 bit and so will have no problem with IPv4 address space (note - this obviously isn't granular enough for 128bit IPv6 addressing). Therefore the simplest way to solve the Start &lt;= IP &lt;= End problem with IPs and floating point numers is the following piece of code:
</p>
<p><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: rgb(0, 0, 187);">$lower_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;(float)</span><span style="color: rgb(0, 0, 187);">sprintf</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">"%u"</span><span style="color: rgb(0, 119, 0);">,</span><span style="color: rgb(0, 0, 187);">ip2long</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$lower</span><span style="color: rgb(0, 119, 0);">));
  <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 187);">$upper_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;(float)</span><span style="color: rgb(0, 0, 187);">sprintf</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">"%u"</span><span style="color: rgb(0, 119, 0);">,</span><span style="color: rgb(0, 0, 187);">ip2long</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$upper</span><span style="color: rgb(0, 119, 0);">));
  <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 187);">$ip_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;(float)</span><span style="color: rgb(0, 0, 187);">sprintf</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">"%u"</span><span style="color: rgb(0, 119, 0);">,</span><span style="color: rgb(0, 0, 187);">ip2long</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$ip</span><span style="color: rgb(0, 119, 0);">));
  <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(&nbsp;(</span><span style="color: rgb(0, 0, 187);">$ip_dec</span><span style="color: rgb(0, 119, 0);">&gt;=</span><span style="color: rgb(0, 0, 187);">$lower_dec</span><span style="color: rgb(0, 119, 0);">)&nbsp;&amp;&amp;&nbsp;(</span><span style="color: rgb(0, 0, 187);">$ip_dec</span><span style="color: rgb(0, 119, 0);">&lt;=</span><span style="color: rgb(0, 0, 187);">$upper_dec</span><span style="color: rgb(0, 119, 0);">)&nbsp;);
  <br /></span></span></code>
</p>
<p>Next we have the challenge of handing the CIDR netmasks. What we could do is to take a CIDR format IPaddress/netmask and calculate the Start and End IPs of that block and proceed as before - but that would be no fun - and would mean I haven't really taught anything through this article.&nbsp;
  <br />
  <br />The method we're going to use here is how all the world's Internet routers determine if a destination IP is in a specific CIDR address space. And we're going to get down and dirty with bitmasks and logical bitwise operators.
  <br />
  <br />So using a real world example, my webserver IP 80.76.201.37 and the netblock within which it resides is 80.76.201.32/27, how does this all work?
  <br />
  <br />Well the /27 indicates that the first 27 bits of the IP address are the same network and IP address in that network (range) will have those same identical first 27 bits.&nbsp; Bits 28-32 are variable and allow 5 bits of variation.&nbsp; If you know your binary, then this means 32 possible IPs. (However with routing, you can't use the bottom and top IP from any range as these are special and mean the network and broadcast addresses respectively. [This is also why a /31 isn't much use (except for PPP links) as you can't use the 2 addresses that space gives you]).
  <br />
  <br />So thinking logically, bitwise, if I take my IP address and the CIDR spec, then all I have to do is check that the first 27 bits all match and I'm good. Correct.&nbsp; So how would we do this in PHP? Sound's simple, lets just use PHP's bitwise logical AND operator: &amp;
  <br />Again, correct.&nbsp;
  <br />
  <br />In order to do this we need to convert 27 into what 27 really means - a 32 bit number of 27 ones and 5 zeros in binary (which is what 255.255.255.224 really looks like).
  <br />
  <br />In pseudo-code you could then do if (IP &amp; BITMASK) == (RANGE &amp; BITMASK) then all is good and you know that the IP is within the range.
  <br />
  <br />Visualising this using our real IP address (using the very handy unix tool ipcalc):
  <br />
</p>
<blockquote>
  <pre><font face="courier new,courier,monospace"><small>Address:   <strong>80.76.201.37</strong>    <strong>01010000.01001100.11001001.001</strong>00101
Netmask:   255.255.255.224 11111111.11111111.11111111.11100000
Wildcard:  0.0.0.31        00000000.00000000.00000000.000<strong>11111</strong>

Network:   <strong>80.76.201.32/27</strong> <strong>01010000.01001100.11001001.001</strong>00000
HostMin:   80.76.201.33    01010000.01001100.11001001.00100001
HostMax:   80.76.201.62    01010000.01001100.11001001.00111110
Broadcast: <strong>80.76.201.63</strong>    <strong>01010000.01001100.11001001.00111111</strong>
Hosts/Net: 30</small></font></pre>
</blockquote>You can see this in the Wildcard line of 0.0.0.31, and the Network ORed with Wildcard results in the Broadcast address: 80.76.201.63.
<br />
<br />Knowing this, then the IP address ANDed with the Network address will result in the same value as the Range ANDed with the Network address and so can be used as a comparison for an IP residing within that broadcast range.
<br />
<br />How can we work out this Network address in PHP, again we have two strategies, one is to so a simple substr() and take the left most significant bits of the range and then simply pad out to the right with 0s.&nbsp; Or we can do some math with "NOT of 2 to the power of (32-range) - 1". Thus for our value /27 this gives us the decimal value 31, NOTed results in (65536-31)&nbsp; (representational in the bit form - PHP will see it as a negative integer, but we don't need to worry about that).
<br />
<br />I'm sure by now, your screaming for some code (and if you stuck around this long, you really deserve it).
<br />
<br />Code to manipulate a range/netmask into a broadcast address, using math, assuming:
<br />
<blockquote><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);">$ip&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(221, 0, 0);">"80.76.201.37"</span><span style="color: rgb(0, 119, 0);">;</span></span></code>
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span><span style="color: rgb(0, 0, 187);">$range&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(221, 0, 0);">"80.76.201.32"</span><span style="color: rgb(0, 119, 0);">;</span></span></code>
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span><span style="color: rgb(0, 0, 187);">$netmask&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">27</span><span style="color: rgb(0, 119, 0);">;</span></span></code>
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span></span></code>
</blockquote> We can convert the IPs to long integers using ip2long (denoted by variable_dec - dec being short for decimal):
<br />
<blockquote><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span><span style="color: rgb(0, 0, 187);">$range_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">ip2long</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$range</span><span style="color: rgb(0, 119, 0);">);</span></span></code>
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span><span style="color: rgb(0, 0, 187);">$ip_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">ip2long</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$ip</span><span style="color: rgb(0, 119, 0);">);</span></span></code>
  <br />
</blockquote>This gives us the basis of our math, we now just need to work out the broadcast address.
<br />
<br />Strategy 1 using str_pad to create a string by padding with 1s and 0s.
<br />
<blockquote><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span></span></code><code><span style="color: rgb(0, 0, 0);"></span></code><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(255, 128, 0);"></span><span style="color: rgb(0, 0, 187);">$netmask_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">= </span></span></code><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span><span style="color: rgb(0, 0, 187);">bindec( str_pad</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">''</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(0, 0, 187);"></span><span style="color: rgb(0, 119, 0);"></span><span style="color: rgb(0, 0, 187);">$netmask</span><span style="color: rgb(0, 119, 0);">,&nbsp;</span><span style="color: rgb(221, 0, 0);">'1'</span><span style="color: rgb(0, 119, 0);">)</span></span></code>
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; . </span><span style="color: rgb(0, 0, 187);">str_pad</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">''</span><span style="color: rgb(0, 119, 0);">,&nbsp;</span><span style="color: rgb(0, 0, 187);">32</span><span style="color: rgb(0, 119, 0);">-</span><span style="color: rgb(0, 0, 187);">$netmask</span><span style="color: rgb(0, 119, 0);">,&nbsp;</span><span style="color: rgb(221, 0, 0);">'0'</span><span style="color: rgb(0, 119, 0);">) );</span></span></code>
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span></span></code>
</blockquote>We can achieve the same result though mathematics by NOTtin the wildcard value. This is our Strategy 2:
<br />
<blockquote><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(255, 128, 0);"></span><span style="color: rgb(0, 0, 187);">$wildcard_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">pow</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">2</span><span style="color: rgb(0, 119, 0);">,&nbsp;(</span><span style="color: rgb(0, 0, 187);">32</span><span style="color: rgb(0, 119, 0);">-</span><span style="color: rgb(0, 0, 187);">$netmask</span><span style="color: rgb(0, 119, 0);">))&nbsp;-&nbsp;</span><span style="color: rgb(0, 0, 187);">1</span><span style="color: rgb(0, 119, 0);">;</span></span></code>
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);">$netmask_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;~&nbsp;</span><span style="color: rgb(0, 0, 187);">$wildcard_dec</span><span style="color: rgb(0, 119, 0);">;</span></span></code>
  <br />
</blockquote>Once we know the netmask address (in decimal) as we have here, we can know that, if by ANDing this with the original IP to check results against the Range ANDed with the Netmask, then the IP is within the range defined by the range/mask.
<br />
<br />This can be checked easily with:
<br />
<blockquote><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);">return&nbsp;((</span><span style="color: rgb(0, 0, 187);">$ip_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">&amp;&nbsp;</span><span style="color: rgb(0, 0, 187);">$netmask_dec</span><span style="color: rgb(0, 119, 0);">)&nbsp;==&nbsp;(</span><span style="color: rgb(0, 0, 187);">$range_dec&nbsp;</span><span style="color: rgb(0, 119, 0);">&amp;&nbsp;</span><span style="color: rgb(0, 0, 187);">$netmask_dec</span><span style="color: rgb(0, 119, 0);">));</span></span></code>
  <br /><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span></span></code>
</blockquote><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 119, 0);"></span></span></code>I have pulled all of this logic together in a easily included file to provide a single function called ip_in_range($ip, $range) in which $ip is the IP address you want to validate and $range is a any of the above formats, Wildcard, Start-End addressing or CIDR.&nbsp; The function will return a simple TRUE or FALSE if the IP is in that range.
<br />
<br />The source code to the all-in function is available here:
<br />
<blockquote><a href="http://pgregg.com/projects/php/ip_in_range/ip_in_range.phps">http://pgregg.com/projects/php/ip_in_range/ip_in_range.phps</a>
  <br />
</blockquote>With an example run (and source code):
<br />
<blockquote><a href="http://pgregg.com/projects/php/ip_in_range/test.php">http://pgregg.com/projects/php/ip_in_range/test.php</a>
  <br />
</blockquote>
<p>I hope this article has been educational, please feel free to leave comments or feedback.
  <br />
</p>
<p>Update: There have been questions about PHP's signed integers and my use of bit operations in the code.&nbsp;&nbsp; It is important to recognise that when dealing with signed or unsigned 32 bit integers purely as bit patterns for masking with a netmask or broadcast address pattern - the fact that a number (128.0.0.0 or above) really is negative, doesn't have any impact on the validity of the result.&nbsp; The only impact to not having signed 32 bit integers is in the Start-End range check (example 2 above: 10.1.0.0-10.1.255.255) where a range spanning the switch from positive to negative would be catastrophic to the check.&nbsp; We can safely work around that problem by using floating point numbers as we are only doing &lt;= and &gt;= comparisons and not attempting any bitwise operators (which don't work on floats).
</p>]]>
        
    </content>
</entry>

</feed>

