#!/bin/sed -nf # trim an FQDN to just the appropriate registered domain. Useful in # filing, say, complaints to postmaster@domain and abuse@domain # addresses. # # For top-level TLD information, see: # http://www.iana.org/cctld/cctld-whois.htm # # ---------------------------------------------------------------------- # Copyright (c) 2003 Karsten M. Self # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # ---------------------------------------------------------------------- # Already a domain: /^[^.]\{1,\}\.[^.]\{2,\}$/b output # Geographic codes -- by nation # Generally, see: http://www.iana.org/cctld/cctld-whois.htm # State/province + country # Argentina: http://www.nic.ar/ /\.\(com\|gov\|int\|mil\|net\|org\)\.\(ar\)$/b output # Australia: http://www.aunic.net/ /\.\(asn\|com\|csiro\|edu\|gov\|id\|net\|org\)\.\(au\)$/b output # ...geocode /\.\(nsw\|nt\|qld\|tas\|vic\|wa\)\.\(au\)$/b output # Austria: http://www.nic.at/ /\.\(ac\|co\|gv\|or\)\.\(at\)$/b output # Brazil: http://registro.br/ /\.\(adm\|adv\|agr\|am\|arq\|art\|ato\|bio\|bmd\|cim\|cng\|cnt\|com\|coop\|ecn\|edu\|eng\|esp\|etc\|eti\|far\|fm\|fnd\|fot\|fst\|g12\|ggf\|gov\|imb\|ind\|inf\|jor\|lel\|mat\|med\|mil\|mus\|net\|not\|ntr\|odo\|org\|ppg\|pro\|psc\|psi\|qsl\|rec\|slg\|srv\|tmp\|trd\|tur\|tv\|vet\|zlg\)\.\(br\)$/b output # Also: nom # Burundi: http://www.nic.bi/ /\.\(co\|gov\|org\)\.\(bi\)$/b output # Canada: http://www.cira.ca/ /\.\(ab\|bc\|mb\|nb\|nl\|ns\|nt\|nu\|on\|pe\|qc\|sk\|yt\)\.\(ca\)$/b output # Also: city ville town village hamlet hameau # China: http://www.cnnic.net.cn /\.\(ac\|com\|edu\|gov\|net\|org\)\.\(cn\)$/b output /\.\(ah\|bj\|cq\|fj\|gd\|gs\|gx\|gz\|ha\|hb\|he\|hi\|hk\|hl\|hn\|jl\|js\|jx\|ln\|mo\|nm\|nx\|qh\|sc\|sd\|sh\|sn\|sx\|tj\|tw\|xj\|xz\|yn\|zj\)\.\(cn\)$/b output # Columbia: http://www.nic.co/ /\.\(com\|org\|edu\|gov\|net\|mil\|nom\)\.\(co\)$/b output # Costa Rica: http://www.nic.cr/ /\.\(co\|or\|fi\|ac\|ed\|go\|sa\)\.\(cr\)$/b output # Croatia: http://www.dns.hr /\.\(com\|from\|iz\|name\)\.\(hr\)$/b output # Cuba: No info: http://www.iana.org/root-whois/cu.htm # Imputed: /\.\(com\|edu\|gov\|mil\|net\|org\)\.\(cu\)$/b output # Cyprus: http://www.nic.cy/ /\.\(ac\|biz\|com\|ekloges\|gov\|ltd\|name\|net\|org\|parliament\|pro\|press\|tm\)\.\(cy\)$/b output # Equador: http://www.nic.ec/nicec.htm /\.\(com\|info\|net\|fin\|med\|pro\|org\|edu\|gov\\mil\)\.\(ec\)$/b output # Estonia: http://www.eenet.ee/services/subdomains.html /\.\(com\|edu\|org\|pri\)\.\(ee\)$/b output # Ethiopia: *** IMPUTED *** /\.\(com\|edu\|gov\|mil\|net\|org\)\.\(et\)$/b output # Egypt: http://www.euc.eg /\.\(com\|edu\|gov\|net\|org\|sci\)\.\(eg\)$/b output # Fiji: http://domains.fj/public/index.php /\.\(biz\|com\|info\|name\|net\|org\|pro\|ac\|gov\|mil\|school\)\.\(fj\)$/b output # France: http://www.nic.fr/ /\.\(aeroport\|assedic\|asso\|avocat\|avoues\|barreau\|caf\|caisse-epargne\|canam\|cci\|ch-dentiste\|chambagri\|chirurgiens-dentistes\|com\|crpf\|educagri\|experts-comptables\|fnclcc\|geometre-expert\|gouv\|greta\|huissier-justice\|iufm\|medecin\|nom\|notaires\|pharmacien\|port\|prd\|presse\|tm\|unaf\|veterinaire\|reunion\)\.\(fr\)$/b output # Ghana: http://www.ghana.com.gh/domain.html /\.\(com\|edu\|gov\|org\)\.\(gh\)$/b output # Greece: http://www.gr/ /\.\(com\|edu\|gov\|net\|org\)\.\(gr\)$/b output # Guatemala: http://www.gt/ /\.\(com\|org\|net\|edu\|gob\|mil\|ind\)\.\(gt\)$/b output # Guinea: *** IMPUTED *** /\.\(com\|edu\|gov\|net\|org\)\.\(gn\)$/b output # Hong Kong: http://www.hknic.net.hk /\.\(com\|edu\|gov\|net\|org\)\.\(hk\)$/b output # Hungary: http://www.nic.hu/ /\.\(2000\|agrar\|bolt\|casino\|city\|co\|eroti[ck]a\|film\|forum\|games\|gov\|hotel\|info\|ingatlan\|jogasz\|konyvelo\|lakes\|media\|news\|org\|priv\|reklam\|sex\|shop\|sport\|suli\|szex\|tm\|tozsde\|utazas\|video\)\.\(hu\)$/b output # Indonesia: http://www.idnic.net.id /\.\(ac\|co\|go\|mil\|net\|or\|sch\|web\)\.\(id\)$/b output # Also: net web # India: http://http://domain.ncst.ernet.in /\.\(ac\|co\|firm\|gen\|gov\|ind\|mil\|net\|org\|res\)\.\(in\)$/b output # Israel: http://www.isoc.org.il/ /\.\(ac\|co\|org\|net\|k12\|gov\|muni\|idf\)\.\(il\)$/b output # Kenya: http://www.psg.com/dns/ke/ /\.\(ac\|co\|go\|gr\|ne\|or\)\.\(ke\)$/b output # Japan: http://jprs.jp/en/stat/ /\.\(ac\|ad\|co\|ed\|go\|gr\|ne\|or\|geo\)\.\(jp\)$/b output # Korea, Republic of: http://www.nic.or.kr/ /\.\(ac\|co\|es\|go\|hs\|kg\|ms\|ne\|or\|pe\|re\|sc\)\.\(kr\)$/b output # Morocco: http://www.anrt.net.ma/ . Presumed: /\.\(net\|com\|edu\|mil\|gov\)\.ma$/b output # Malawi: http://www.registrar.mw/ /\.\(ac\|com?\|coop\|edu\|gov\|int\|museum\|met\|org\)\.\(mw\)$/b output # Mexico: http://www.nic.mx/ /\.\(com\|edu\|gob\|net\|org\)\.\(mx\)$/b output # Malaysia: http://www.mynic.net/ /\.\([A-Za-z][A-Za-z][A-Za-z]\)\.\(my\)$/b output # Nambia: http://www.na-nic.com.na/ /\.\(alt\|com\|cul\|edu\|gov\|org\|telecom\|un\|unam\)\.\(na\)$/b output # Norway: http://www.norid.no /\.\(fhs\|vgs\|fylkesbibl\|folkebibl\|museum\|idrett\)\.\(no\)$/b output /\.\(mil\|stat\|kommune\|priv\)\.\(no\)$/b output # New Zealand: http://www.domainz.net.nz /\.\(ac\|co\|cri\|gen\|govt\|iwi\|mil\|net\|org\|school\)\.\(nz\)$/b output # Nigeria: http://psg.com/dns/ng/ng.txt /\.\(ac\|edu\|sch\|com\|gov\|org\|net\)\.\(ng\)$/b output # Peru: *** IMPUTTED *** /\.\(com\|edu\|gov\|mil\|net\|org\)\.\(pe\)$/b output # Philippines: http://www.domreg.org.ph /\.\(com\|edu\|gov\|mil\|ngo\|net\|org\)\.\(ph\)$/b output # Poland: http://www.dns.pl /\.\(aid\|agro\|atm\|auto\|biz\|com\|edu\|gmina\|gsm\|info\|mail\|miasta\|media\|mil\|net\|nieruchomosci\|nom\|org\|pc\|priv\|realestate\|rel\|sex\|shop\|sklep\|sos\|targi\|tm\|tourism\|travel\|turystyka\)\.\(pl\)$/b output # ...geocode /\.\(augustow\|babia-gora\|bedzin\|beskidy\|bialowieza\|bialystok\|bielawa\|bieszczady\|boleslawiec\|busko\|bydgoszcz\|bytom\|chelm\|cieszyn\|czeladz\|czest\|czestochowa\|deblin\|dlugoleka\|dzierzoniow\|elblag\|elk\|gdansk\|glogow\|gniezno\|gorlice\|grajewo\|ilawa\|jaworzno\|jelenia-gora\|jgora\|kalisz\|kazimierz-dolny\|karpacz\|kartuzy\|kaszuby\|katowice\|kepno\|ketrzyn\|klodzko\|kluczbork\|kobierzyce\|kolobrzeg\|konin\|konskowola\|koronowo\|kutno\|kurpie\|lapy\|lebork\|legionowo\|legnica\|lezajsk\|limanowa\|lomza\|lowicz\|lubin\|lukow\|malbork\|malopolska\|mazowsze\|mazury\|mielec\|mielno\|mikolow\|morag\|mragowo\|naklo\|nidzica\|nowaruda\|nysa\|olawa\|olecko\|olkusz\|olsztyn\|opoczno\|opole\|ostroda\|ostroleka\|ostrowiec\|ostrowwlkp\|pila\|pisz\|podhale\|podlasie\|polkowice\|pomorze\|pomorskie\|prochowice\|pruszkow\|przeworsk\|pulawy\|pultusk\|radom\|rawa-maz\|rybnik\|rzeszow\|sanok\|sejny\|siedlce\|sierpc\|slask\|slupca\|slupsk\|sosnowiec\|stalowa-wola\|skoczow\|starachowice\|stargard\|suwalki\|swidnica\|swiebodzin\|swinoujscie\|szamotuly\|szczyrk\|szczecin\|szczytno\|tarnobrzeg\|tczew\|tgory\|trzebnica\|turek\|tychy\|ustka\|walbrzych\|warmia\|warszawa\|waw\|wegrow\|wielun\|wlocl\|wloclawek\|wodzislaw\|wolomin\|wroclaw\|wlodawa\|zachpomor\|zagan\|zarow\|zgora\|zgorzelec\)\.\(pl\)$/b output # Puerto Rico: *** IMPUTED *** /\.\(com\|edu\|gov\|mil\|net\|org\)\.\(pr\)$/b output # Russia # Geographical domains # http://geonic.net/index.php?section=terms&subsection=GEO-RU # Russia -- com/net/org/pp/geo /\.\(com\|net\|org\|pp\|geo\)\.\(ru\)$/b output # ...geocode /\.\(adygeya\|altai\|amur\|arkhangelsk\|astrakhan\|bashkiria\|belgorod\|bir\|bryansk\|buryatia\|cbg\|chel\|chelyabinsk\|chita\|chukotka\|chuvashia\|dagestan\|dudinka\|e-burg\|grozny\|irkutsk\|ivanovo\|izhevsk\|jar\|joshkar-ola\|kalmykia\|kaluga\|kamchatka\|karelia\|kazan\|kchr\|kemerovo\|khabarovsk\|khakassia\|khv\|kirov\|koenig\|komi\|kostroma\|krasnoyarsk\|kuban\|kurgan\|kursk\|lipetsk\|magadan\|mari-el\|marine\|mari\|mordovia\|mosreg\|msk\|murmansk\|nalchik\|nnov\|novosibirsk\|nov\|nsk\|omsk\|orenburg\|oryol\|palana\|penza\|perm\|pskov\|ptz\|rnd\|ryazan\|sakhalin\|samara\|saratov\|simbirsk\|smolensk\|spb\|stavropol\|stv\|surgut\|tambov\|tatarstan\|tom\|tomsk\|tsaritsyn\|tsk\|tula\|tuva\|tver\|tyumen\|udm\|udmurtia\|ulan-ude\|vladikavkaz\|vladimir\|vladivostok\|volgograd\|vologda\|voronezh\|vrn\|vyatka\|yakutia\|yamal\|yaroslavl\|yekaterinburg\|yuzhno-sakhalinsk\)\.\(ru\)$/b output # Russia -- add'l geocoding /\.\(amursk\|baikal\|cmw\|fareast\|jamal\|kms\|k-uralsk\|kustanai\|kuzbass\|magnitka\|mytis\|nakhodka\|nkz\|norilsk\|snz\|oskol\|pyatigorsk\|rubtsovsk\|syzran\|vdonsk\|zgrad\)\.\(ru\)$/b output # Saudi Arabia: http://www.saudinic.net.sa/db/whoishelp.html. /\.\(com\|med\|sch\|org\|gov\|edu\|net\|pub\)\.\(sa\)$/b output # Thailand: http://www.thnic.net /\.\(ac\|co\|go\|in\|mi\|net\|or\)\.\(th\)$/b output # Taiwain: http://www.twnic.net /\.\(edu\|gov\|com\|net\|org\|mil\|idv\)\.\(tw\)$/b output # Ukraine: http://nic.net.ua/ /\.\(com\|edu\|gov\|net\|org\)\.\(ua\)$/b output # ...Ukraine geocode /\.\(cherkassy\|chernigov\|chernovtsy\|ck\|cn\|crimea\|cv\|dn\|dnepropetrovsk\|donetsk\|dp\|if\|ivano-frankivsk\|kh\|kharkov\|kherson\|kiev\|kirovograd\|km\|kr\|ks\|lg\|lugansk\|lutsk\|lviv\|mk\|nikolaev\|od\|odessa\|pl\|poltava\|rovno\|rv\|sebastopol\|sumy\|te\|ternopil\|vinnica\|vn\|zaporizhzhe\|zp\|uz\|uzhgorod\|zhitomir\|zt\)\.\(ua\)$/b output # United Kingdom: http://www.nic.uk /\.\(ac\|co\|gov\|ltd\|me\|mod\|net\|nic\|nhs\|org\|plc\|police\|sch\)\.\(uk\)$/b output # United States of America -- geocode /\.\(ak\|al\|ar\|as\|az\|ca\|co\|ct\|dc\|de\|fl\|ga\|gu\|hi\|ia\|id\|il\|in\|ks\|ky\|la\|ma\|md\|me\|mi\|mn\|mo\|mp\|ms\|mt\|nc\|nd\|ne\|nh\|nj\|nm\|nv\|ny\|oh\|ok\|or\|pa\|pr\|ri\|sc\|sd\|tn\|tx\|um\|ut\|va\|vi\|vt\|wa\|wi\|wv\|wy\)\.\(us\)$/b output # Uruguay: ?? /\.\(edu\|gov\|com\|net\|org\|mil\)\.\(uy\)$/b output # Zimbabwe: *** IMPUTED *** /\.\(ac\|co\|ne\|or\)\.\(zw\)$/b output # ---------------------------------------------------------------------- # These are catch-alls, may not be accurate. # ---------------------------------------------------------------------- # "Standard - nationalized": net|com|edu|gov. style: /\.\(net\|com\|edu\|gov\)\.\(ae\|ar\|au\|br\|cn\|do\|il\|mx\|my\|np\|nz\|ph\|pk\|pl\|sg\|tr\|tw\|ua\)$/b output # "Commonweath" (ac|co|ne). style: /\.\(ac\|co\|ne\)\.\(nz\|th\|uk\|za\)$/b output # "Mil" -- three level? /\.\([a-z][a-z]*\)\.\([a-z][a-z]*\)\.\(mil\)$/b output # Other/default (usually: com|org|edu|mil|gov /^.*\.\([^.]\{1,\}\.[^.]\{1,\}\)$/s//\1/p # ---------------------------------------------------------------------- # Terminate normal processing /./d :output # ---------------------------------------------------------------------- :2part /^[^.]\{1,\}\.[^.]\{2,\}$/ { p d } :3part # Other -- country knocked down to three-part name /^[^.]\{2,\}\.[^.]\{2,\}\.[^.]\{2,\}$/ { p d } :npart /^.*\.\([^.]\{1,\}\.[^.]\{1,\}\.[^.]\{1,\}\)$/ { /^.*\.\([^.]\{2,\}\.[^.]\{2,\}\.[^.]\{2,\}\)$/s//\1/p d } /./p