#!/usr/bin/perl -w # # whois.pl version 0.01 - a wrapper for stock whois # Copyright (c) hanawa # # see: # http://savannah.gnu.org/cgi-bin/viewcvs/jwhois/jwhois/example/jwhois.conf # %whois_server = ( ".br.com" => "whois.centralnic.net", ".cn.com" => "whois.centralnic.net", ".de.com" => "whois.centralnic.net", ".eu.com" => "whois.centralnic.net", ".eu.org" => "whois.eu.org", ".gb.com" => "whois.centralnic.net", ".gb.net" => "whois.centralnic.net", ".hu.com" => "whois.centralnic.net", ".no.com" => "whois.centralnic.net", ".qc.com" => "whois.centralnic.net", ".ru.com" => "whois.centralnic.net", ".sa.com" => "whois.centralnic.net", ".se.com" => "whois.centralnic.net", ".se.net" => "whois.centralnic.net", ".uk.com" => "whois.centralnic.net", ".uk.net" => "whois.centralnic.net", ".us.com" => "whois.centralnic.net", ".uy.com" => "whois.centralnic.net", ".za.com" => "whois.centralnic.net", ".ac" => "whois.nic.ac", ".ae" => "whois.uaenic.ae", ".ag" => "whois.nic.ag", ".ai" => "HTTP/whois.offshore.ai", ".al" => "whois.ripe.net", ".am" => "whois.amnic.net", ".as" => "whois.nic.as", ".at" => "whois.nic.at", ".asn.au" => "whois.ausregistry.net.au", ".com.au" => "whois.ausregistry.net.au", ".id.au" => "whois.ausregistry.net.au", ".net.au" => "whois.ausregistry.net.au", ".org.au" => "whois.ausregistry.net.au", ".au" => "whois.aunic.net", ".az" => "whois.ripe.net", ".be" => "whois.dns.be", ".bg" => "whois.ripe.net", ".bi" => "HTTP/www.nic.bi", ".biz" => "whois.neulevel.biz", ".bm" => "rwhois.ibl.bm 4321", ".br" => "whois.nic.br", ".bv" => "whois.ripe.net", ".by" => "whois.ripe.net", ".bz" => "whois.belizenic.bz", ".ca" => "whois.cira.ca", ".cc" => "whois.nic.cc", ".cd" => "whois.nic.cd", ".cg" => "HTTP/www.nic.cg", ".ch" => "whois.nic.ch", ".ck" => "whois.nic.ck", ".cl" => "whois.nic.cl", ".edu.cn" => "whois.edu.cn", ".cn" => "whois.cnnic.net.cn", ".com" => "whois.internic.net", ".coop" => "whois.nic.coop", ".cx" => "whois.nic.cx", ".cy" => "whois.ripe.net", ".cz" => "whois.nic.cz", ".de" => "whois.denic.net", ".dk" => "whois.dk-hostmaster.dk", ".do" => "whois.nic.do", ".dz" => "whois.ripe.net", ".ec" => "HTTP/www.nic.ec", ".edu" => "whois.educause.net", ".ee" => "whois.eenet.ee", ".eg" => "whois.ripe.net", ".es" => "HTTP/www.nic.es", ".fi" => "HTTP/cgi.ficora.fi", ".fj" => "whois.usp.ac.fj", ".fm" => "www.dot.fm", ".fo" => "whois.ripe.net", ".fr" => "whois.nic.fr", ".gi" => "HTTP/whois.gibnet.gi", ".gov" => "whois.nic.gov", ".gg" => "whois.isles.net", ".gm" => "whois.ripe.net", ".gr" => "whois.ripe.net", ".gs" => "whois.adamsnames.tc", ".gt" => "HTTP/www.gt", ".hk" => "whois.hkdnr.net.hk", ".hm" => "whois.registry.hm", ".hr" => "HTTP/www.dns.hr", ".hu" => "whois.nic.hu", ".id" => "whois.idnic.net.id", ".ie" => "whois.domainregistry.ie", ".il" => "whois.isoc.org.il", ".in" => "whois.ncst.ernet.in", ".info" => "whois.afilias.info", ".int" => "whois.iana.org", ".io" => "HTTP/www.io.io", ".ir" => "whois.nic.ir", ".im" => "HTTP/www.nic.im", ".is" => "whois.isnic.is", ".it" => "whois.nic.it", ".je" => "whois.isles.net", ".jp" => "whois.nic.ad.jp", ".kg" => "whois.domain.kg", ".kr" => "whois.krnic.net", ".kz" => "HTTP/whois.nic.kz", ".la" => "whois.nic.la", ".lb" => "HTTP/cgi.aub.edu.lb", ".li" => "whois.nic.li", ".lk" => "whois.nic.lk", ".lt" => "whois.domreg.lt", ".lu" => "whois.dns.lu", ".lv" => "whois.nic.lv", ".ma" => "whois.ripe.net", ".mil" => "whois.nic.mil", ".mm" => "whois.nic.mm", ".ms" => "whois.adamsnames.tc", ".mt" => "HTTP/www.um.edu.mt", ".museum" => "whois.museum", ".mw" => "HTTP/www.tarsus.net", ".mx" => "whois.nic.mx", ".my" => "whois.mynic.net", ".na" => "whois.na-nic.com.na", ".name" => "whois.nic.name", ".net" => "whois.internic.net", ".ng" => "whois.rg.net", ".nl" => "whois.domain-registry.nl", ".no" => "whois.norid.no", ".nu" => "whois.nic.nu", ".nz" => "whois.srs.net.nz", ".org" => "whois.publicinterestregistry.net", ".pe" => "whois.nic.pe", ".pk" => "HTTP/pknic.net.pk", ".pl" => "whois.dns.pl", ".pro" => "whois.nic.pro", ".pt" => "whois.dns.pt", ".pw" => "whois.nic.pw", ".ro" => "whois.rotld.ro", ".ru" => "whois.ripn.net", ".rw" => "HTTP/www.nic.rw", ".sa" => "saudinic.net.sa", # ".se" => "HTTP/www.nic-se.se", # "whois.nic-se.se", ".se" => "whois.nic-se.se", ".sg" => "whois.nic.net.sg", ".sh" => "whois.nic.sh", ".si" => "whois.arnes.si", ".sj" => "whois.ripe.net", ".sk" => "whois.ripe.net", ".sm" => "whois.ripe.net", ".sr" => "whois.register.sr", ".st" => "whois.nic.st", ".su" => "whois.ripe.net", ".tc" => "whois.adamsnames.tc", ".tf" => "whois.adamsnames.tc", ".tg" => "HTTP/www.nic.tg", ".th" => "whois.thnic.net", ".tj" => "whois.nic.tj", ".tk" => "whois.dot.tk", ".tm" => "whois.nic.tm", ".tn" => "whois.ripe.net", ".to" => "whois.tonic.to", ".tr" => "whois.metu.edu.tr", ".tt" => "HTTP/www.nic.tt", ".tv" => "whois.tv", ".tw" => "whois.twnic.net", ".ua" => "whois.com.ua", ".ug" => "whois.co.ug", ".ac.uk" => "whois.ja.net", ".gov.uk" => "whois.ja.net", ".uk" => "whois.nic.uk", ".fed.us" => "whois.nic.gov", ".us" => "whois.nic.us", ".com.uy" => "HTTP/dns.antel.net.uy", ".uy" => "www.rau.edu.uy", # is a whois server ".uz" => "HTTP/www.noc.uz", ".va" => "whois.ripe.net", ".ve" => "rwhois.nic.ve 4321", ".vi" => "HTTP/www.nic.vi", ".vg" => "whois.adamsnames.tc", ".vn" => "HTTP/www.vnnic.net.vn", ".vu" => "HTTP/www.vunic.vu", ".ws" => "whois.worldsite.ws", ".yu" => "whois.ripe.net", ".ac.za" => "whois.ac.za", ".org.za" => "rwhois.org.za 4321", ".co.za" => "HTTP/whois.co.za", #".aero" => "whois.nic.aero", #".biz" => "whois.nic.biz", #".de" => "whois.denic.de", #".gf" => "whois.nplus.gf", #".is" => "whois.isnet.is", #".kz" => "whois.domain.kz", #".lu" => "whois.restena.lu", #".nc" => "whois.cctld.nc", #".nz" => "whois.domainz.net.nz", # ".ba" => "whois.ripe.net" # ".md" => "whois.ripe.net" # ".mk" => "whois.ripe.net" ); my ($never_change_argv, $area); while (@ARGV) { $argv = shift; $never_change_argv = 1 if ($argv eq "-h"); push(@argv, $argv); } $query = pop(@argv); $query =~ tr/A-Z/a-z/; $server = ""; if ($query =~ /^([-\.a-z0-9]*)/) { $hostname = $1; if ($hostname =~ /((\.[a-z]+)?(\.[a-z]+))$/) { $area = $1; if ($whois_server{$area}) { $server = $whois_server{$area}; } else { $area = $3; if ($whois_server{$area}) { $server = $whois_server{$area}; } } } } push(@argv, $query); die "This TLD has no whois server.\n" if ($server =~ m|^HTTP/|); if ($server =~ s/\s+(\d+)$//) { $port = $1; } else { $port = ""; } if (!$server) { $server = "whois.crsnic.net"; # $server = "whois.internic.net"; # new server??? } if ($area eq ".com" || $area eq ".net" || $area eq ".org") { $never_change_argv = 1; } @whois = ("/usr/bin/whois"); foreach $whois (@whois) { if (-f $whois) { if ($never_change_argv) { # do nothing } else { unshift(@argv, "-h", $server); if ($port) { unshift(@argv, "-p", $port); } } unshift(@argv, $whois); # print join(" ", @argv, "\n"); exec(@argv); } }