879 lines · 60.7 KB · Java
RawDownload
                "xn--moreke-jua", "midsund", "midtre-gauldal", "modalen", "modum",                "molde", "moskenes", "moss", "mosvik", "malselv", "xn--mlselv-iua",                "malatvuopmi", "xn--mlatvuopmi-s4a", "namdalseid", "aejrie", "namsos",                "namsskogan", "naamesjevuemie", "xn--nmesjevuemie-tcba",                "laakesvuemie", "nannestad", "narvik", "narviika", "naustdal", "nedre-eiker",                "nesna", "nesodden", "nesseby", "unjarga", "xn--unjrga-rta", "nesset",                "nissedal", "nittedal", "nord-aurdal", "nord-fron", "nord-odal", "norddal",                "nordkapp", "davvenjarga", "xn--davvenjrga-y4a", "nordre-land",                "nordreisa", "raisa", "xn--risa-5na", "nore-og-uvdal", "notodden", "naroy",                "xn--nry-yla5g", "notteroy", "xn--nttery-byae",                "odda", "oksnes", "xn--ksnes-uua", "oppdal", "oppegard",                "xn--oppegrd-ixa", "orkdal", "orland", "xn--rland-uua",                "orskog", "xn--rskog-uua", "orsta", "xn--rsta-fra",                "os.hedmark", "os.hordaland", "osen", "osteroy", "xn--ostery-fya",                "ostre-toten", "xn--stre-toten-zcb", "overhalla", "ovre-eiker",                "xn--vre-eiker-k8a", "oyer", "xn--yer-zna",                "oygarden", "xn--ygarden-p1a",  "oystre-slidre", "xn--ystre-slidre-ujb",                "porsanger", "porsangu", "xn--porsgu-sta26f", "porsgrunn",                "radoy", "xn--rady-ira", "rakkestad", "rana", "ruovat", "randaberg",                "rauma", "rendalen", "rennebu", "rennesoy", "xn--rennesy-v1a",                "rindal", "ringebu", "ringerike", "ringsaker", "rissa", "risor",                "xn--risr-ira", "roan", "rollag", "rygge", "ralingen", "xn--rlingen-mxa",                "rodoy", "xn--rdy-0nab", "romskog", "xn--rmskog-bya",                "roros", "xn--rros-gra", "rost", "xn--rst-0na",                "royken", "xn--ryken-vua", "royrvik", "xn--ryrvik-bya",                "rade", "xn--rde-ula", "salangen", "siellak", "saltdal", "salat",                "xn--slt-elab", "xn--slat-5na", "samnanger",                "sandefjord", "sandnes", "sandoy", "xn--sandy-yua", "sarpsborg",                "sauda", "sauherad", "sel", "selbu", "selje", "seljord", "sigdal", "siljan",                "sirdal", "skaun", "skedsmo", "ski", "skien", "skiptvet", "skjervoy",                "xn--skjervy-v1a", "skierva", "xn--skierv-uta",                "skjak", "xn--skjk-soa",  "skodje", "skanland", "xn--sknland-fxa",                "skanit", "xn--sknit-yqa",  "smola", "xn--smla-hra",                "snillfjord", "snasa", "xn--snsa-roa",  "snoasa", "snaase",                "xn--snase-nra", "sogndal", "sokndal", "sola", "solund", "songdalen",                "sortland", "spydeberg", "stange", "stavanger", "steigen", "steinkjer",                "stjordal", "xn--stjrdal-s1a", "stokke", "stor-elvdal", "stord", "stordal",                "storfjord", "omasvuotna", "strand", "stranda", "stryn", "sula", "suldal",                "sund", "sunndal", "surnadal", "sveio", "svelvik", "sykkylven", "sogne",                "xn--sgne-gra", "somna", "xn--smna-gra", "sondre-land",                "xn--sndre-land-0cb", "sor-aurdal", "xn--sr-aurdal-l8a",                "sor-fron", "xn--sr-fron-q1a", "sor-odal", "xn--sr-odal-q1a",                "sor-varanger", "xn--sr-varanger-ggb",  "matta-varjjat",                "xn--mtta-vrjjat-k7af", "sorfold", "xn--srfold-bya",                "sorreisa", "xn--srreisa-q1a", "sorum", "xn--srum-gra",                "tana", "deatnu", "time", "tingvoll", "tinn", "tjeldsund", "dielddanuorri",                "tjome", "xn--tjme-hra", "tokke", "tolga", "torsken", "tranoy",                "xn--trany-yua",  "tromso", "xn--troms-zua",  "tromsa", "romsa",                "trondheim", "troandin", "trysil", "trana", "xn--trna-woa",                "trogstad", "xn--trgstad-r1a",  "tvedestrand", "tydal", "tynset",                "tysfjord", "divtasvuodna", "divttasvuotna", "tysnes", "tysvar",                "xn--tysvr-vra",  "tonsberg", "xn--tnsberg-q1a",                "ullensaker", "ullensvang", "ulvik", "utsira", "vadso", "xn--vads-jra",                "cahcesuolo", "xn--hcesuolo-7ya35b",  "vaksdal", "valle", "vang",                "vanylven", "vardo", "xn--vard-jra",  "varggat", "xn--vrggt-xqad",                "vefsn", "vaapste", "vega", "vegarshei", "xn--vegrshei-c0a", "vennesla",                "verdal", "verran", "vestby", "vestnes", "vestre-slidre", "vestre-toten",                "vestvagoy", "xn--vestvgy-ixa6o", "vevelstad", "vik", "vikna",                "vindafjord", "volda", "voss", "varoy", "xn--vry-yla5g",                "vagan", "xn--vgan-qoa", "voagat", "vagsoy", "xn--vgsy-qoa0j",                "vaga", "xn--vg-yiab")));     topMap.put( "nr", new HashSet<String>(Arrays.asList("biz", "info", "gov", "edu", "org",                 "net", "com", "co")));    topMap.put( "pa", new HashSet<String>(Arrays.asList("ac", "gob", "com", "org",                "sld", "edu", "net", "ing", "abo", "med", "nom")));    topMap.put( "pe", new HashSet<String>(Arrays.asList("edu", "gob", "nom", "mil", "org", "com",                "net", "sld")));    topMap.put( "pf", new HashSet<String>(Arrays.asList( "com")));    topMap.put( "ph", new HashSet<String>(Arrays.asList("com", "net", "org", "gov", "edu", "ngo", "mil")));    topMap.put( "pk", new HashSet<String>(Arrays.asList("com", "net", "edu", "org", "fam", "biz",                "web", "gov", "gob", "gok", "gon", "gop", "gos", "gog", "gkp", "info")));    topMap.put( "pl", new HashSet<String>(Arrays.asList("aid", "agro", "atm", "auto", "biz", "com",                "edu", "gmina", "gsm", "info", "mail", "miasta", "media", "mil", "net", "nieruchomosci",                "nom", "org", "pc", "powiat", "priv", "realestate", "rel", "sex", "shop", "sklep",                "sos", "szkola", "targi", "tm", "tourism", "travel", "turystyka", "art",                "gov", "ngo", "augustow", "babia-gora", "bedzin", "beskidy",                "bialowieza", "bialystok", "bielawa", "bieszczady", "boleslawiec", "bydgoszcz",                "bytom", "cieszyn", "czeladz", "czest", "dlugoleka", "elblag", "elk", "glogow",                "gniezno", "gorlice", "grajewo", "ilawa", "jaworzno", "jelenia-gora", "jgora",                "kalisz", "kazimierz-dolny", "karpacz", "kartuzy", "kaszuby", "katowice", "kepno",                "ketrzyn", "klodzko", "kobierzyce", "kolobrzeg", "konin", "konskowola", "kutno",                "lapy", "lebork", "legnica", "lezajsk", "limanowa", "lomza", "lowicz", "lubin",                "lukow", "malbork", "malopolska", "mazowsze", "mazury", "mielec", "mielno", "mragowo",                "naklo", "nowaruda", "nysa", "olawa", "olecko", "olkusz", "olsztyn", "opoczno",                "opole", "ostroda", "ostroleka", "ostrowiec", "ostrowwlkp", "pila", "pisz", "podhale",                "podlasie", "polkowice", "pomorze", "pomorskie", "prochowice", "pruszkow", "przeworsk",                "pulawy", "radom", "rawa-maz", "rybnik", "rzeszow", "sanok", "sejny", "siedlce",                "slask", "slupsk", "sosnowiec", "stalowa-wola", "skoczow", "starachowice", "stargard",                "suwalki", "swidnica", "swiebodzin", "swinoujscie", "szczecin", "szczytno", "tarnobrzeg",                "tgory", "turek", "tychy", "ustka", "walbrzych", "warmia", "warszawa", "waw",                "wegrow", "wielun", "wlocl", "wloclawek", "wodzislaw", "wolomin", "wroclaw",                "zachpomor", "zagan", "zarow", "zgora", "zgorzelec", "gda", "gdansk",                "krakow", "poznan", "wroc", "co",                "lodz", "lublin", "torun")));    topMap.put( "pn", new HashSet<String>(Arrays.asList("gov", "co", "org", "edu", "net")));    topMap.put( "pr", new HashSet<String>(Arrays.asList("com", "net", "org", "gov", "edu", "isla",                "pro", "biz", "info", "name", "est", "prof", "ac", "gobierno")));    topMap.put( "pro", new HashSet<String>(Arrays.asList("aca", "bar", "cpa", "jur", "law",                 "med", "eng")));    topMap.put( "ps", new HashSet<String>(Arrays.asList("edu", "gov", "sec", "plo", "com", "org", "net")));    topMap.put( "pt", new HashSet<String>(Arrays.asList("net", "gov", "org", "edu", "int", "publ",                 "com", "nome")));    topMap.put( "pw", new HashSet<String>(Arrays.asList("co", "ne", "or", "ed", "go", "belau")));    topMap.put( "qa", new HashSet<String>(Arrays.asList("com", "net", "org", "gov", "edu", "mil")));    topMap.put( "re", new HashSet<String>(Arrays.asList("com", "asso", "nom")));    topMap.put( "ro", new HashSet<String>(Arrays.asList("com", "org", "tm", "nt", "nom", "info",                "rec", "arts", "firm", "store", "www")));    topMap.put( "rs", new HashSet<String>(Arrays.asList("co", "org", "edu", "ac", "gov", "in")));    topMap.put( "ru", new HashSet<String>(Arrays.asList("ac", "com", "edu", "int", "net", "org",                "pp", "adygeya", "altai", "amur", "arkhangelsk", "astrakhan", "bashkiria",                "belgorod", "bir", "bryansk", "buryatia", "cap", "cbg", "chel", "chelyabinsk", "chita",                "chukotka", "dagestan", "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", "mari-el", "marine", "mordovia", "mosreg", "msk", "murmansk",                "nalchik", "nnov", "nov", "novosibirsk", "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", "amursk", "baikal", "cmw", "fareast",                "jamal", "kms", "k-uralsk", "kustanai", "kuzbass", "magnitka", "mytis",                "nakhodka", "nkz", "norilsk", "oskol", "pyatigorsk", "rubtsovsk", "snz", "syzran",                "vdonsk", "zgrad", "gov", "mil", "test")));    topMap.put( "rw", new HashSet<String>(Arrays.asList("gov", "net", "edu", "ac", "com", "co",                "int", "mil", "gouv")));    topMap.put( "sa", new HashSet<String>(Arrays.asList("com", "net", "org", "gov", "med", "pub",                "edu", "sch")));    topMap.put( "sd", new HashSet<String>(Arrays.asList("com", "net", "org", "edu", "med", "gov",                "info", "tv")));    topMap.put( "se", new HashSet<String>(Arrays.asList("a", "ac", "b", "bd", "brand", "c", "d",                "e", "f", "fh", "fhsk", "fhv", "g", "h", "i", "k", "komforb", "kommunalforbund",                "komvux", "l", "lanarb", "lanbib", "m", "n", "naturbruksgymn", "o", "org", "p", "parti",                "pp", "press", "r", "s", "sshn", "t", "tm", "u", "w", "x", "y", "z")));    topMap.put( "sg", new HashSet<String>(Arrays.asList("com", "net", "org", "gov", "edu", "per")));    topMap.put( "sh", new HashSet<String>(Arrays.asList("co", "com", "net", "org", "gov", "edu", "nom")));    topMap.put( "sk", new HashSet<String>(Arrays.asList("gov", "edu")));    topMap.put( "sn", new HashSet<String>(Arrays.asList("art", "com", "edu", "gouv", "org", "perso",                "univ")));    topMap.put( "so", new HashSet<String>(Arrays.asList("com", "net", "org")));    topMap.put( "sr", new HashSet<String>(Arrays.asList("co", "com", "consulado", "edu", "embaixada",                "gov", "mil", "net", "org", "principe", "saotome", "store")));    topMap.put( "sy", new HashSet<String>(Arrays.asList("edu", "gov", "net", "mil", "com", "org", "news")));    topMap.put( "sz", new HashSet<String>(Arrays.asList("co", "ac", "org")));    topMap.put( "th", new HashSet<String>(Arrays.asList("ac", "co", "go", "in", "mi", "net", "or")));    topMap.put( "tj", new HashSet<String>(Arrays.asList("ac", "biz", "co", "com", "edu", "go", "gov",                "int", "mil", "name", "net", "nic", "org", "test", "web")));    topMap.put( "tn", new HashSet<String>(Arrays.asList("com", "ens", "fin", "gov", "ind", "intl",                "nat", "net", "org", "info", "perso", "tourism", "edunet", "rnrt", "rns", "rnu",                "mincom", "agrinet", "defense", "turen")));    topMap.put( "to", new HashSet<String>(Arrays.asList("gov")));    topMap.put( "tt", new HashSet<String>(Arrays.asList("co", "com", "org", "net", "biz", "info",                "pro", "int", "coop", "jobs", "mobi", "travel", "museum", "aero", "name", "gov",                "edu", "cat", "tel", "mil")));    topMap.put( "tw", new HashSet<String>(Arrays.asList("edu", "gov", "mil", "com", "net", "org",                "idv", "game", "ebiz", "club", "xn--zf0ao64a", "xn--uc0atv", "xn--czrw28b")));    topMap.put( "ua", new HashSet<String>(Arrays.asList("com", "edu", "gov", "in", "net", "org",                "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", "uzhgorod", "vinnica", "vn",                "zaporizhzhe", "zp", "zhitomir", "zt", "cr", "lt", "lv", "sb", "sm", "tr",                "co", "biz", "in", "ne", "pp", "uz", "dominic")));    topMap.put( "ug", new HashSet<String>(Arrays.asList("co", "ac", "sc", "go", "ne", "or", "org", "com")));    topMap.put( "us", new HashSet<String>(Arrays.asList("dni", "fed", "isa", "kids", "nsn", "kyschools")));    topMap.put( "uz", new HashSet<String>(Arrays.asList("co", "com", "org", "gov", "ac", "edu", "int", "pp", "net")));    topMap.put( "vc", new HashSet<String>(Arrays.asList("com", "net", "org", "gov")));    topMap.put( "vi", new HashSet<String>(Arrays.asList("co", "com", "k12", "net", "org")));    topMap.put( "vn", new HashSet<String>(Arrays.asList( "com", "net", "org", "edu", "gov", "int",                "ac", "biz", "info", "name", "pro", "health")));    topMap.put( "vu", new HashSet<String>(Arrays.asList("co", "com", "net", "org", "edu", "gov", "de")));    topMap.put("org", new HashSet<String>(Arrays.asList("ae", "za")));    topMap.put("pro", new HashSet<String>(Arrays.asList("aca", "bar", "cpa", "jur", "law", "med", "eng")));     top3Map.put("au", new HashSet<String>(Arrays.asList("act.edu.au", "eq.edu.au",                "nsw.edu.au", "nt.edu.au", "qld.edu.au", "sa.edu.au", "tas.edu.au", "vic.edu.au",                 "wa.edu.au", "act.gov.au", "nsw.gov.au", "nt.gov.au", "qld.gov.au", "sa.gov.au",                 "tas.gov.au", "vic.gov.au", "wa.gov.au")));    top3Map.put("im", new HashSet<String>(Arrays.asList("ltd.co.im", "plc.co.im")));    top3Map.put("no", new HashSet<String>(Arrays.asList("gs.aa.no", "gs.ah.no", "gs.bu.no",                "gs.fm.no", "gs.hl.no", "gs.hm.no", "gs.jan-mayen.no", "gs.mr.no", "gs.nl.no",                "gs.nt.no", "gs.of.no", "gs.ol.no", "gs.oslo.no", "gs.rl.no", "gs.sf.no",                "gs.st.no", "gs.svalbard.no", "gs.tm.no", "gs.tr.no", "gs.va.no", "gs.vf.no",                "bo.telemark.no", "xn--b-5ga.telemark.no", "bo.nordland.no",                "xn--b-5ga.nordland.no", "heroy.more-og-romsdal.no",                "xn--hery-ira.xn--mre-og-romsdal-qqb.no", "heroy.nordland.no",                "xn--hery-ira.nordland.no", "nes.akershus.no", "nes.buskerud.no",                "os.hedmark.no", "os.hordaland.no",                "sande.more-og-romsdal.no", "sande.xn--mre-og-romsdal-qqb.no",                "sande.vestfold.no", "valer.ostfold.no", "xn--vler-qoa.xn--stfold-9xa.no",                "valer.hedmark.no", "xn--vler-qoa.hedmark.no")));    top3Map.put("tr", new HashSet<String>(Arrays.asList("gov.nc.tr")));}      /*     * Return the registered part of a qualified domain     * name or the original if no match is found.     */    public static String getRegisteredDomain(String cname) {        int dot;         /*         * If one dot or less than just return.         */        dot = cname.lastIndexOf('.');        if (dot == -1)            return cname;        if (dot == 0)            return "";        if (dot == cname.length() - 1) {            cname = cname.substring(0, cname.length() -1);            dot = cname.lastIndexOf('.');            if (dot == -1)                return cname;            if (dot == 0)                return "";        }        if (dot == cname.length() - 1)            return "";         /*         * Break it up into seperate labels.         */        int second = cname.lastIndexOf('.', dot - 1);        if (second == -1)            return cname;        if (second == 0)            return "";        int third = cname.lastIndexOf('.', second - 1);        int fourth = -1;        if (third > 0) {            fourth = cname.lastIndexOf('.', third - 1);        }        int fifth = -1;        if (fourth > 0) {            fifth = cname.lastIndexOf('.', fourth - 1);        }        String s = cname.substring(dot + 1);        String s2 = cname.substring(second + 1, dot);         /*         * Look for longest matches first.         * XX.PVT.K12.MA.US etc.         */        if (fourth != -1 && s.equals("us") && usStateSet.contains(s2)) {            String s3 = cname.substring(third + 1, second);            String s4 = cname.substring(fourth + 1, third);            if (s3.equals("k12")) {                if (s2.equals("ma") && (s4.equals("chtr") || s4.equals("paroch"))) {                    return cname.substring(fifth + 1);                } else if (s4.equals("pvt")) {                    return cname.substring(fifth + 1);                }            }        }         /*         * XX.K12.MA.US.         */        String str = cname.substring(third + 1);        if (third != -1) {            Set set = top3Map.get(s);            if (set != null) {                if (set.contains(str)) {                    return cname.substring(fourth + 1);                }            } else if (s.equals("us") && usStateSet.contains(s2)) {                // check for known third level labels                String s3 = cname.substring(third + 1, second);                if (usSubStateSet.contains(s3)) {                    return fourth != -1? cname.substring(fourth + 1): cname;                } else {                    return cname.substring(third + 1);                }            } else if (s.equals("uk")) {                if (s2.equals("sch")) {                    return cname.substring(fourth + 1);                }            } else if (s.equals("jp")) {                if (jpSet.contains(s2)) {                    if (jp2Set.contains(str)) {                        return cname.substring(third + 1);                    }                    return cname.substring(fourth + 1);                }            }        }         /*         * PREF.AKITA.JP etc.         */        if (jp2Set.contains(str)) {            return cname.substring(third + 1);        }         /*         * XX.MA.US.         */        Set topSet = topMap.get(s);        if (topSet != null) {            if (topSet.contains(s2)) {                return cname.substring(third + 1);            }            if (!((s.equals("us") && usStateSet.contains(s2)) || (s.equals("jp") && jpSet.contains(s2)))) {                return cname.substring(second + 1);            }        } else if (top2Set.contains(s)) {            if (s2.equals("gov")) {                return cname.substring(third + 1);            }            return cname.substring(second + 1);        } else if (top3Set.contains(s)) {            if (s.equals("ad") && s2.equals("nom") ||                s.equals("aw") && s2.equals("com") ||                s.equals("be") && s2.equals("ac") ||                s.equals("cl") && s2.equals("gov") ||                s.equals("cl") && s2.equals("gob") ||                s.equals("fi") && s2.equals("aland") ||                s.equals("int") && s2.equals("eu") ||                s.equals("io") && s2.equals("com") ||                s.equals("mc") && s2.equals("tm") ||                s.equals("mc") && s2.equals("asso") ||                s.equals("vc") && s2.equals("com")) {                return cname.substring(third + 1);            }            return cname.substring(second + 1);        } else if (top4Set.contains(s)) {            if (s2.equals("com") || s2.equals("edu") || s2.equals("gov") ||                s2.equals("net") || s2.equals("org")) {                return cname.substring(third + 1);            }            return cname.substring(second + 1);        } else if (top5Set.contains(s)) {            return cname.substring(third + 1);        }         /*         * BB.AA exception cases.         */        if (s.equals("tr")) {            if (!s2.equals("nic") && !s2.equals("tsk")) {                return cname.substring(third + 1);            }            return cname.substring(second + 1);        } else if (s.equals("uk")) {            if (!ukSet.contains(s2)) {                return cname.substring(third + 1);            }            return cname.substring(second + 1);        } else if (s.equals("ar")) {            if (!arSet.contains(s2)) {                return cname.substring(third + 1);            }            return cname.substring(second + 1);        } else if (s.equals("om")) {            if (!omSet.contains(s2)) {                return cname.substring(third + 1);            }            return cname.substring(second + 1);        }         /*         * XX.AA         */        if (top1Set.contains(s)) {            return cname.substring(second + 1);        }         /*         * Nothing matched so we can't shorten the string.         */        return cname;     }}

Lines 501–879 of 879. Previous lines