CUFP
tomhukins
<p>
During an idle moment recently, I wondered if any IP addresses I use might have potentially valid hostnames matching their address. Does that make sense?
</p>
<p>
Here's an example: the IP address 1.2.3.4 might have the hostname i.ii.iii.iv, but unfortunately the top level domain name .iv doesn't exist.
</p>
<p>
So, I wrote a script that grabs the list of country-specific TLDs and checks IP addresses you specify to see if any might have hostnames in roman numerals:
</p>
<readmore>
<code>
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple qw(mirror);
use Roman qw(roman);
use Fatal qw(open close mirror);
my %ip_to_roman = do {
my @ip = <DATA>;
chomp @ip;
map { $_ => roman_ip($_) } @ip;
};
{
mirror('http://www.iana.org/cctld/cctld-whois.htm', 'cctld-whois.htm');
open(my $fh, 'cctld-whois.htm');
my $page = do { local $/ = undef; <$fh> };
close $fh;
while ($page =~ m{>\.(\w\w)(?: |–)*([^<]+)}gms) {
my ($tld, $country) = ($1, $2);
$country =~ s/\s+/ /ms;
IP: foreach my $address (keys %ip_to_roman) {
next IP unless $ip_to_roman{$address} =~ m/\.$tld\z/ms;
print "$address is $ip_to_roman{$address} in $country\n";
}
}
}
sub roman_ip {
my $ip = shift;
return join '.', map { roman $_ } split(/\./, $ip);
}
# Put your IP addresses here
__DATA__
1.2.3.4
5.6.7.8
</code>
<p>
This script has limitations: it reports some domain names that you can't register. Many TLDs, such as .uk do not allow arbitrary registrations such as foo.uk. Instead, you have to register foo.co.uk, foo.org.uk, etc.
</p>
<p>
So, what did I find out about my own addresses? I now know I want to register a .ci domain name, but apparently I need to get someone in the Ivory Coast to register this for me and I suspect this may not work as they might only allow .co.ci or .com.ci.
</p>
<p>
Anyway, it was still a fun experiment.
</p>
</readmore>