Hvernig greina skal íslenskar IP tölur
Það getur verið mikilvægt og gagnlegt fyrir íslenska kerfisstjóra að geta greint íslenskar IP tölur frá þeim erlendu. Þetta nýtist vel í aðstæðum þar sem menn vilja takmarka ákveðnar tölvuþjónustur við íslenska notendur, af öryggisástæðum eða vegna kostnaðar við utanlandsbandvídd.
Notkun á landgreiningarpökkum á borð við GeoIP kostar annað hvort fullt af peningum, eða býður einungis upp á IP-tölu-grunna sem eru úreltir eða of gamlir til þess að tryggja 100% áreiðanleika. Fyrir vikið er best að gera hlutina sjálfur.
Fyrsta skrefið í áttina að því að setja sjálfur upp ofantalda greiningu felst því í að útvega sér nýjasta listann af þeim IP tölum sem Íslendingar hafa til ráðstöfunar. Textaskjal með slíkum lista má finna á eftirfarandi slóð hjá RIX:
Með þennan lista í höndunum má nota forritunarmál á borð við Perl til þess að greina hvort IP tala sé íslensk eða ekki. Hér fyrir neðan er lítið Perl skeljarforrit sem segir manni hvort IP tala sé íslensk. Forritið notar Perl módúlinn Net::IP::Match. Þetta er auðvitað einungis sýnishorn -- listinn er sóttur frá RIX í hvert skipti sem forritið keyrir, og þ.a.l. er þetta e.t.v. ekki viðeigandi sem heildarlausn. Með smávegis breytingum mætti hins vegar beita svipuðum kóða til þess að fá þær niðurstöður og frammistöðu sem óskast:
use strict;
use Net::IP::Match::Regexp qw(create_iprange_regexp match_ip);
use LWP::Simple;
my $ip = $ARGV[0];
if (IsIPIcelandic($ip))
{
print "You're Icelandic\n";
}
else
{
print "You're non-Icelandic\n";
}
sub IsIPIcelandic
{
my ($ip) = @_;
use Net::IP::Match::Regexp qw(create_iprange_regexp match_ip);
use LWP::Simple;
my $rixfile = get("http://www.rix.is/is-net.txt");
my (@ranges) = split(/\n/, $rixfile);
my $regexp = create_iprange_regexp(\@ranges);
if (match_ip($ip, $regexp))
{
return 1;
}
return 0;
}