<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hinnerup Net &#187; IP redirect</title>
	<atom:link href="http://www.hinnerup.net/permanent/tag/ip-redirect/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hinnerup.net</link>
	<description></description>
	<lastBuildDate>Thu, 19 Jan 2012 12:35:57 +0000</lastBuildDate>
	<language>da</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Geo IP redirigering</title>
		<link>http://www.hinnerup.net/permanent/2009/09/30/geo-ip-redirigering/</link>
		<comments>http://www.hinnerup.net/permanent/2009/09/30/geo-ip-redirigering/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 18:51:47 +0000</pubDate>
		<dc:creator>Søren Ulrikkeholm</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Geo IP]]></category>
		<category><![CDATA[Google maps]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[IP redirect]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=476</guid>
		<description><![CDATA[GeoLite City er et praktisk lille Open Source-værktøj fra firmaet MaxMind, som kan være til stor hjælp ved IP redirigering. Applikationen består i al sin enkelthed af en database-fil, samt en række C# klasser, som bruges til at tilgå databasen. Databasen kan bruges til at finde oplysninger om bl.a. land, landekode, region, by, postnummer, længde- [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.maxmind.com/app/geolitecity" target="new">GeoLite City</a> er et praktisk lille Open Source-værktøj fra firmaet <a href="http://www.maxmind.com">MaxMind</a>, som kan være til stor hjælp ved IP redirigering. Applikationen består i al sin enkelthed af en database-fil, samt en række C# klasser, som bruges til at tilgå databasen. Databasen kan bruges til at finde oplysninger om bl.a. land, landekode, region, by, postnummer, længde- og breddegrader og meget andet for en given IP-adresse.</p>
<p>Det <a href="http://www.maxmind.com/app/city#api">Open Source API fra MaxMind</a> som vi har anvendt består af seks C# klasser, hvoraf kun to skal instantieres for at benytte applikationen til fulde (der er API til yderligere programmeringssprog også, se forrige link). Det drejer sig om klasserne: LookupService og Location.</p>
<p>LookupService instantieres med en sti til databasen, samt (optionelt) en int, der fortæller om databasen skal læses direkte fra filen, eller gemmes i en buffer. Som standard læses der direkte fra filen, men i hastighedskritiske sammenhænge, kunne man muligvis ønske at cache databasen. Dernæst bruges LookupService objektet til at instantiere Location.</p>
<p>Location instantieres ved at kalde getLocation() på LookupService med den ønskede IP-adresse som parameter. Når det er gjort, er man klar til at udnytte de mange muligheder GeoLite City tilbyder. Dette gøres i første omgang ved at tilgå de public attributter der ligger i Location.</p>
<p>Dette eksempel udskriver land og breddegrad for IP-adressen, 208.77.188.166:<br />
<em>Bemærk at der kastes en exception hvis IP&#8217;en ikke findes, og koden bør derfor sættes i en try-catch blok.</em><br />
<code><br />
LookupService ls = new LookupService(@"C:\...\...\GeoLiteCity.dat", GEOIP_STANDARD);<br />
Location l = ls.getLocation("208.77.188.166");<br />
Console.WriteLine("Land: " + l.countryName);<br />
Console.WriteLine("Breddegrad: " + l.longitude.ToString());<br />
</code><br />
Oplysninger om land ville i praksis f.eks. kunne bruges til, at redirigere en hjemmesidebruger hen til en version af siden i det pågældende lands sprog.</p>
<p>Man kunne også forestille sig, at en hjemmeside ønskede at vise mindre ressourcekrævende udgaver af siden til langsomme forbindelser. Her ville man også kunne benytte sig af GeoLite City. I dette tilfælde kunne koden se nogenlunde sådan her ud:<br />
<em>Bemærk at man her benytter LookupService og ikke Location.</em><br />
<code><br />
int i = ls.getID("208.77.188.166");<br />
if (i == LookupService.GEOIP_UNKNOWN_SPEED)<br />
{<br />
&nbsp;&nbsp;&nbsp;Response.Redirect("http://example.net/standard.asp");<br />
}<br />
else if (i == LookupService.GEOIP_CABLEDSL_SPEED)<br />
{<br />
&nbsp;&nbsp;&nbsp;Response.Redirect("http://example.net/fast.asp");<br />
}<br />
else if(i == LookupService.GEOIP_DIALUP_SPEED)<br />
{<br />
&nbsp;&nbsp;&nbsp;Response.Redirect("http://example.net/slow.asp");<br />
}<br />
</code></p>
<p>Her er et eksempel på en lille webapplikation, der oplyser land, by og koordinater for angivne IP adresser. Eksemplet vælger som standard www.hinnerup.net serverens globale IP. Der kan indtastes såvel <a href="http://da.wikipedia.org/wiki/IPv4">IPv4</a> som <a href="http://da.wikipedia.org/wiki/IPv6">IPv6</a> adresser i IP-adressefeltet.</p>
<div id="stuff42">
<a href="http://www.hinnerup.net/2009/09/geoip/Default.aspx">For at se demo klik her.</a>
</div>
<div id="stuff43">
</div>
<p><script type="text/javascript">
try {
var div43 = document.getElementById("stuff43");
var iframe = document.createElement("iframe");
iframe.src = "http://www.hinnerup.net/2009/09/geoip/Default.aspx" ;
try { iframe.style.width = "100%"; } catch(e1) {}
try { iframe.style.height = "220px"; } catch(e2) {}
try { iframe.style.textAlign = "center"; } catch(e3) {}
try { iframe.style.overflow = "hide"; } catch(e4) {}
div43.appendChild(iframe);
document.getElementById("stuff42").style.display = "none";
} catch(ex) {}
</script></p>
<p>GeoLite City kan hentes <a href="http://www.maxmind.com/app/geolitecity" target="new">her</a> og opdateres en gang om måneden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2009/09/30/geo-ip-redirigering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

