1 package mircoders.abuse;
\r
3 import mir.entity.Entity;
\r
4 import mir.session.Request;
\r
5 import org.apache.oro.text.regex.MalformedPatternException;
\r
6 import org.apache.oro.text.regex.MatchResult;
\r
7 import org.apache.oro.text.regex.Pattern;
\r
8 import org.apache.oro.text.regex.PatternMatcherInput;
\r
9 import org.apache.oro.text.regex.Perl5Compiler;
\r
10 import org.apache.oro.text.regex.Perl5Matcher;
\r
12 import java.net.InetAddress;
\r
13 import java.net.UnknownHostException;
\r
14 import java.util.Arrays;
\r
15 import java.util.Collection;
\r
16 import java.util.HashSet;
\r
17 import java.util.Iterator;
\r
18 import java.util.Set;
\r
21 * URL Blacklist filter type. Will perform a DNS request on URLs contained
\r
22 * in a posting appended by the filter expression. An existing domain will
\r
23 * cause in a positive filter outcome.
\r
25 public class URLBlacklistFilterType extends AbstractFilterType {
\r
26 public URLBlacklistFilterType(String aName, Collection aWhiteList) {
\r
29 whiteList = new HashSet(aWhiteList);
\r
35 public boolean validate(String anExpression) {
\r
36 return anExpression.trim().length() > 0;
\r
39 public FilterInstance constructFilterInstance(final String anExpression) throws AbuseExc {
\r
40 return new FilterInstance() {
\r
41 public boolean test(Entity anEntity, Request aRequest) {
\r
42 Set domains = new HashSet();
\r
44 Iterator i = anEntity.getFieldNames().iterator();
\r
46 while (i.hasNext()) {
\r
47 String field = anEntity.getFieldValue( (String) i.next());
\r
48 if (field != null) {
\r
49 harvestURLDomains(field, domains);
\r
53 domains.removeAll(whiteList);
\r
55 i = domains.iterator();
\r
56 while (i.hasNext()) {
\r
57 String domain = (String) i.next();
\r
60 InetAddress.getByName(domain + "." + anExpression);
\r
64 catch (UnknownHostException e) {
\r
65 // intentionally empty: the domain was not found, so the domain isn't blacklisted
\r
72 public String status() {
\r
78 public static void main(String[] someArguments) {
\r
79 HashSet set = new HashSet();
\r
80 harvestURLDomains("[URL]https://www.nel9la41.org/informatica[/URL] [URL]http://www.ceud.org/liberi[/URL] [URL]http://www.e6tate.org/danni[/URL] [URL]http://www.e6tate.org/shakira[/URL] [URL]http://www.ceud.org/musica[/URL] [URL]http://www.nel9la41.org/troie[/URL] [URL]http://www.nel9la41.org/corriere-della-sera[/URL] [URL]http://www.e6tate.org/serie-a[/URL] [URL]http://www.nel9la41.org/calciomercato[/URL] [URL]http://www.e6tate.org/vita[/URL] [URL]http://www.e6tate.org/pene[/URL] [URL]http://www.e6tate.org/barzellette[/URL] [URL]http://www.ceud.org/pagine-bianche[/URL] [URL]http://www.e6tate.org/playboy[/URL] [URL]http://www.nel9la41.org/totti[/URL] [URL]http://www.e6tate.org/trenitalia[/URL] [URL]http://www.ceud.org/bambini[/URL] [URL]http://www.ceud.org/pornografia[/URL] [URL]http://www.e6tate.org/corriere-della-sera[/URL] [URL]http://www.nel9la41.org/musica[/URL] [URL]http://www.ceud.org/serie-a[/URL] [URL]http://www.nel9la41.org/barzellette[/URL] [URL]http://www.ceud.org/turismo[/URL] [URL]http://www.ceud.org/del-piero[/URL] [URL]http://www.nel9la41.org/calcio[/URL] [URL]http://www.nel9la41.org/google[/URL] [URL]http://www.e6tate.org/sesso[/URL] [URL]http://www.nel9la41.org/jesse-mccartney[/URL]", set);
\r
81 Iterator i = set.iterator();
\r
82 while (i.hasNext()) {
\r
83 System.out.println(i.next());
\r
88 private static void harvestURLDomains(String someText, Set someResult) {
\r
89 Perl5Matcher matcher = new Perl5Matcher();
\r
91 PatternMatcherInput input =
\r
92 new PatternMatcherInput(someText);
\r
94 while(matcher.contains(input, URL_EXPRESSION)) {
\r
95 MatchResult match = matcher.getMatch();
\r
96 String domain = match.group(5);
\r
98 someResult.add(stripDomain(domain));
\r
104 * Turns a domain (e.g. www.indymedia.org) into its domain just above the top level (e.g. indymedia.org)
\r
106 private static String stripDomain(String aDomain) {
\r
107 String result = aDomain;
\r
108 int pos = aDomain.lastIndexOf('.');
\r
110 pos = aDomain.lastIndexOf('.', pos-1);
\r
112 // note: pos may be -1
\r
113 result = aDomain.substring(pos+1);
\r
114 if (TWO_PART_TOP_LEVEL_DOMAINS.contains(result)) {
\r
115 pos = aDomain.lastIndexOf('.', pos-1);
\r
117 // note: pos may be -1
\r
118 result = aDomain.substring(pos+1);
\r
128 Perl5Compiler compiler = new Perl5Compiler();
\r
131 compiler.compile("((https://)|(http://)|(ftp://)){1}([a-zA-Z0-9_-]+.[a-zA-Z0-9_.:-]+)", Perl5Compiler.READ_ONLY_MASK);
\r
133 catch (MalformedPatternException e) {
\r
139 private Set whiteList;
\r
141 private static Pattern URL_EXPRESSION;
\r
142 private static Set TWO_PART_TOP_LEVEL_DOMAINS = new HashSet(
\r
143 Arrays.asList(new String[] {"com.ac", "edu.ac", "gov.ac", "net.ac", "mil.ac", "org.ac",
\r
144 "com.ae", "net.ae", "org.ae", "gov.ae", "ac.ae", "co.ae",
\r
145 "sch.ae", "pro.ae", "com.ai", "org.ai", "edu.ai", "gov.ai",
\r
146 "com.ar", "net.ar", "org.ar", "gov.ar", "mil.ar", "edu.ar",
\r
147 "int.ar", "co.at", "ac.at", "or.at", "gv.at", "priv.at",
\r
148 "com.au", "gov.au", "org.au", "edu.au", "id.au", "oz.au",
\r
149 "info.au", "net.au", "asn.au", "csiro.au", "telememo.au",
\r
150 "conf.au", "otc.au", "id.au", "com.az", "net.az", "org.az",
\r
151 "com.bb", "net.bb", "org.bb", "ac.be", "belgie.be",
\r
152 "dns.be", "fgov.be", "com.bh", "gov.bh", "net.bh", "edu.bh",
\r
153 "org.bh", "com.bm", "edu.bm", "gov.bm", "org.bm", "net.bm",
\r
154 "adm.br", "adv.br", "agr.br", "am.br", "arq.br", "art.br",
\r
155 "ato.br", "bio.br", "bmd.br", "cim.br", "cng.br", "cnt.br",
\r
156 "com.br", "coop.br", "ecn.br", "edu.br", "eng.br", "esp.br",
\r
157 "etc.br", "eti.br", "far.br", "fm.br", "fnd.br", "fot.br",
\r
158 "fst.br", "g12.br", "ggf.br", "gov.br", "imb.br", "ind.br",
\r
159 "inf.br", "jor.br", "lel.br", "mat.br", "med.br", "mil.br",
\r
160 "mus.br", "net.br", "nom.br", "not.br", "ntr.br", "odo.br",
\r
161 "org.br", "ppg.br", "pro.br", "psc.br", "psi.br", "qsl.br",
\r
162 "rec.br", "slg.br", "srv.br", "tmp.br", "trd.br", "tur.br",
\r
163 "tv.br", "vet.br", "zlg.br", "com.bs", "net.bs", "org.bs",
\r
164 "com.bz", "net.bz", "org.bz", "ab.ca", "bc.ca", "mb.ca",
\r
165 "nb.ca", "nf.ca", "nl.ca", "ns.ca", "nt.ca", "nu.ca",
\r
166 "on.ca", "pe.ca", "qc.ca", "sk.ca", "yk.ca", "gc.ca",
\r
167 "co.ck", "net.ck", "org.ck", "edu.ck", "gov.ck", "com.cn",
\r
168 "edu.cn", "gov.cn", "net.cn", "org.cn", "ac.cn", "ah.cn",
\r
169 "bj.cn", "cq.cn", "gd.cn", "gs.cn", "gx.cn", "gz.cn",
\r
170 "hb.cn", "he.cn", "hi.cn", "hk.cn", "hl.cn", "hn.cn",
\r
171 "jl.cn", "js.cn", "ln.cn", "mo.cn", "nm.cn", "nx.cn",
\r
172 "qh.cn", "sc.cn", "sn.cn", "sh.cn", "sx.cn", "tj.cn",
\r
173 "tw.cn", "xj.cn", "xz.cn", "yn.cn", "zj.cn", "arts.co",
\r
174 "com.co", "edu.co", "firm.co", "gov.co", "info.co",
\r
175 "int.co", "nom.co", "mil.co", "org.co", "rec.co",
\r
176 "store.co", "web.co", "ac.cr", "co.cr", "ed.cr", "fi.cr",
\r
177 "go.cr", "or.cr", "sa.cr", "com.cu", "net.cu", "org.cu",
\r
178 "ac.cy", "com.cy", "gov.cy", "net.cy", "org.cy", "co.dk",
\r
179 "art.do", "com.do", "edu.do", "gov.do", "gob.do", "org.do",
\r
180 "mil.do", "net.do", "sld.do", "web.do", "com.dz", "org.dz",
\r
181 "net.dz", "gov.dz", "edu.dz", "ass.dz", "pol.dz", "art.dz",
\r
182 "com.ec", "k12.ec", "edu.ec", "fin.ec", "med.ec", "gov.ec",
\r
183 "mil.ec", "org.ec", "net.ec", "com.ee", "pri.ee", "fie.ee",
\r
184 "org.ee", "med.ee", "com.eg", "edu.eg", "eun.eg", "gov.eg",
\r
185 "net.eg", "org.eg", "sci.eg", "com.er", "net.er", "org.er",
\r
186 "edu.er", "mil.er", "gov.er", "ind.er", "com.es", "org.es",
\r
187 "gob.es", "edu.es", "nom.es", "com.et", "gov.et", "org.et",
\r
188 "edu.et", "net.et", "biz.et", "name.et", "info.et", "ac.fj",
\r
189 "com.fj", "gov.fj", "id.fj", "org.fj", "school.fj",
\r
190 "com.fk", "ac.fk", "gov.fk", "net.fk", "nom.fk", "org.fk",
\r
191 "asso.fr", "nom.fr", "barreau.fr", "com.fr", "prd.fr",
\r
192 "presse.fr", "tm.fr", "aeroport.fr", "assedic.fr",
\r
193 "avocat.fr", "avoues.fr", "cci.fr", "chambagri.fr",
\r
194 "chirurgiens-dentistes.fr", "experts-comptables.fr",
\r
195 "geometre-expert.fr", "gouv.fr", "greta.fr",
\r
196 "huissier-justice.fr", "medecin.fr", "notaires.fr", "pharmacien.fr",
\r
197 "port.fr", "veterinaire.fr", "com.ge", "edu.ge", "gov.ge",
\r
198 "mil.ge", "net.ge", "org.ge", "pvt.ge", "co.gg", "org.gg",
\r
199 "sch.gg", "ac.gg", "gov.gg", "ltd.gg", "ind.gg", "net.gg",
\r
200 "alderney.gg", "guernsey.gg", "sark.gg", "com.gr", "edu.gr",
\r
201 "gov.gr", "net.gr", "org.gr", "com.gt", "edu.gt", "net.gt",
\r
202 "gob.gt", "org.gt", "mil.gt", "ind.gt", "com.gu", "edu.gu",
\r
203 "net.gu", "org.gu", "gov.gu", "mil.gu", "com.hk", "net.hk",
\r
204 "org.hk", "idv.hk", "gov.hk", "edu.hk", "co.hu", "2000.hu",
\r
205 "erotika.hu", "jogasz.hu", "sex.hu", "video.hu", "info.hu",
\r
206 "agrar.hu", "film.hu", "konyvelo.hu", "shop.hu", "org.hu",
\r
207 "bolt.hu", "forum.hu", "lakas.hu", "suli.hu", "priv.hu",
\r
208 "casino.hu", "games.hu", "media.hu", "szex.hu", "sport.hu",
\r
209 "city.hu", "hotel.hu", "news.hu", "tozsde.hu", "tm.hu",
\r
210 "erotica.hu", "ingatlan.hu", "reklam.hu", "utazas.hu",
\r
211 "ac.id", "co.id", "go.id", "mil.id", "net.id", "or.id",
\r
212 "co.il", "net.il", "org.il", "ac.il", "gov.il", "k12.il",
\r
213 "muni.il", "idf.il", "co.im", "net.im", "org.im", "ac.im",
\r
214 "lkd.co.im", "gov.im", "nic.im", "plc.co.im", "co.in",
\r
215 "net.in", "ac.in", "ernet.in", "gov.in", "nic.in", "res.in",
\r
216 "gen.in", "firm.in", "mil.in", "org.in", "ind.in", "ac.ir",
\r
217 "co.ir", "gov.ir", "id.ir", "net.ir", "org.ir", "sch.ir",
\r
218 "ac.je", "co.je", "net.je", "org.je", "gov.je", "ind.je",
\r
219 "jersey.je", "ltd.je", "sch.je", "com.jo", "org.jo",
\r
220 "net.jo", "gov.jo", "edu.jo", "mil.jo", "ad.jp", "ac.jp",
\r
221 "co.jp", "go.jp", "or.jp", "ne.jp", "gr.jp", "ed.jp",
\r
222 "lg.jp", "net.jp", "org.jp", "gov.jp", "hokkaido.jp",
\r
223 "aomori.jp", "iwate.jp", "miyagi.jp", "akita.jp",
\r
224 "yamagata.jp", "fukushima.jp", "ibaraki.jp", "tochigi.jp",
\r
225 "gunma.jp", "saitama.jp", "chiba.jp", "tokyo.jp",
\r
226 "kanagawa.jp", "niigata.jp", "toyama.jp", "ishikawa.jp",
\r
227 "fukui.jp", "yamanashi.jp", "nagano.jp", "gifu.jp",
\r
228 "shizuoka.jp", "aichi.jp", "mie.jp", "shiga.jp", "kyoto.jp",
\r
229 "osaka.jp", "hyogo.jp", "nara.jp", "wakayama.jp",
\r
230 "tottori.jp", "shimane.jp", "okayama.jp", "hiroshima.jp",
\r
231 "yamaguchi.jp", "tokushima.jp", "kagawa.jp", "ehime.jp",
\r
232 "kochi.jp", "fukuoka.jp", "saga.jp", "nagasaki.jp",
\r
233 "kumamoto.jp", "oita.jp", "miyazaki.jp", "kagoshima.jp",
\r
234 "okinawa.jp", "sapporo.jp", "sendai.jp", "yokohama.jp",
\r
235 "kawasaki.jp", "nagoya.jp", "kobe.jp", "kitakyushu.jp",
\r
236 "utsunomiya.jp", "kanazawa.jp", "takamatsu.jp",
\r
237 "matsuyama.jp", "com.kg", "net.kg", "org.kg", "edu.kg",
\r
238 "gov.kg", "mil.kg", "com.kh", "net.kh", "org.kh", "per.kh",
\r
239 "edu.kh", "gov.kh", "mil.kh", "ac.kr", "co.kr", "go.kr",
\r
240 "ne.kr", "or.kr", "pe.kr", "re.kr", "seoul.kr",
\r
241 "kyonggi.kr", "com.kw", "net.kw", "org.kw", "edu.kw",
\r
242 "gov.kw", "com.la", "net.la", "org.la", "com.lb", "org.lb",
\r
243 "net.lb", "edu.lb", "gov.lb", "mil.lb", "com.lc", "edu.lc",
\r
244 "gov.lc", "net.lc", "org.lc", "com.lv", "net.lv", "org.lv",
\r
245 "edu.lv", "gov.lv", "mil.lv", "id.lv", "asn.lv", "conf.lv",
\r
246 "com.ly", "net.ly", "org.ly", "co.ma", "net.ma", "org.ma",
\r
247 "press.ma", "ac.ma", "com.mk", "com.mm", "net.mm", "org.mm",
\r
248 "edu.mm", "gov.mm", "com.mn", "org.mn", "edu.mn", "gov.mn",
\r
249 "museum.mn", "com.mo", "net.mo", "org.mo", "edu.mo",
\r
250 "gov.mo", "com.mt", "net.mt", "org.mt", "edu.mt", "tm.mt",
\r
251 "uu.mt", "com.mx", "net.mx", "org.mx", "gob.mx", "edu.mx",
\r
252 "com.my", "org.my", "gov.my", "edu.my", "net.my", "com.na",
\r
253 "org.na", "net.na", "alt.na", "edu.na", "cul.na", "unam.na",
\r
254 "telecom.na", "com.nc", "net.nc", "org.nc", "ac.ng",
\r
255 "edu.ng", "sch.ng", "com.ng", "gov.ng", "org.ng", "net.ng",
\r
256 "gob.ni", "com.ni", "net.ni", "edu.ni", "nom.ni", "org.ni",
\r
257 "com.np", "net.np", "org.np", "gov.np", "edu.np", "ac.nz",
\r
258 "co.nz", "cri.nz", "gen.nz", "geek.nz", "govt.nz", "iwi.nz",
\r
259 "maori.nz", "mil.nz", "net.nz", "org.nz", "school.nz",
\r
260 "com.om", "co.om", "edu.om", "ac.om", "gov.om", "net.om",
\r
261 "org.om", "mod.om", "museum.om", "biz.om", "pro.om",
\r
262 "med.om", "com.pa", "net.pa", "org.pa", "edu.pa", "ac.pa",
\r
263 "gob.pa", "sld.pa", "edu.pe", "gob.pe", "nom.pe", "mil.pe",
\r
264 "org.pe", "com.pe", "net.pe", "com.pg", "net.pg", "ac.pg",
\r
265 "com.ph", "net.ph", "org.ph", "mil.ph", "ngo.ph", "aid.pl",
\r
266 "agro.pl", "atm.pl", "auto.pl", "biz.pl", "com.pl",
\r
267 "edu.pl", "gmina.pl", "gsm.pl", "info.pl", "mail.pl",
\r
268 "miasta.pl", "media.pl", "mil.pl", "net.pl",
\r
269 "nieruchomosci.pl", "nom.pl", "org.pl", "pc.pl",
\r
270 "powiat.pl", "priv.pl", "realestate.pl", "rel.pl", "sex.pl",
\r
271 "shop.pl", "sklep.pl", "sos.pl", "szkola.pl", "targi.pl",
\r
272 "tm.pl", "tourism.pl", "travel.pl", "turystyka.pl",
\r
273 "com.pk", "net.pk", "edu.pk", "org.pk", "fam.pk", "biz.pk",
\r
274 "web.pk", "gov.pk", "gob.pk", "gok.pk", "gon.pk", "gop.pk",
\r
275 "gos.pk", "edu.ps", "gov.ps", "plo.ps", "sec.ps", "com.pt",
\r
276 "edu.pt", "gov.pt", "int.pt", "net.pt", "nome.pt", "org.pt",
\r
277 "publ.pt", "com.py", "net.py", "org.py", "edu.py", "com.qa",
\r
278 "net.qa", "org.qa", "edu.qa", "gov.qa", "asso.re", "com.re",
\r
279 "nom.re", "com.ro", "org.ro", "tm.ro", "nt.ro", "nom.ro",
\r
280 "info.ro", "rec.ro", "arts.ro", "firm.ro", "store.ro",
\r
281 "www.ro", "ac.ru", "adygeya.ru", "altai.ru", "amur.ru",
\r
282 "amursk.ru", "arkhangelsk.ru", "astrakhan.ru", "baikal.ru",
\r
283 "bashkiria.ru", "belgorod.ru", "bir.ru", "bryansk.ru",
\r
284 "buryatia.ru", "cbg.ru", "chel.ru", "chelyabinsk.ru",
\r
285 "chita.ru", "chukotka.ru", "chuvashia.ru", "cmw.ru",
\r
286 "com.ru", "dagestan.ru", "dudinka.ru", "e-burg.ru",
\r
287 "edu.ru", "fareast.ru", "gov.ru", "grozny.ru", "int.ru",
\r
288 "irkutsk.ru", "ivanovo.ru", "izhevsk.ru", "jamal.ru",
\r
289 "jar.ru", "joshkar-ola.ru", "k-uralsk.ru", "kalmykia.ru",
\r
290 "kaluga.ru", "kamchatka.ru", "karelia.ru", "kazan.ru",
\r
291 "kchr.ru", "kemerovo.ru", "khabarovsk.ru", "khakassia.ru",
\r
292 "khv.ru", "kirov.ru", "kms.ru", "koenig.ru", "komi.ru",
\r
293 "kostroma.ru", "krasnoyarsk.ru", "kuban.ru", "kurgan.ru",
\r
294 "kursk.ru", "kustanai.ru", "kuzbass.ru", "lipetsk.ru",
\r
295 "magadan.ru", "magnitka.ru", "mari-el.ru", "mari.ru",
\r
296 "marine.ru", "mil.ru", "mordovia.ru", "mosreg.ru", "msk.ru",
\r
297 "murmansk.ru", "mytis.ru", "nakhodka.ru", "nalchik.ru",
\r
298 "net.ru", "nkz.ru", "nnov.ru", "norilsk.ru", "nov.ru",
\r
299 "novosibirsk.ru", "nsk.ru", "omsk.ru", "orenburg.ru",
\r
300 "org.ru", "oryol.ru", "oskol.ru", "palana.ru", "penza.ru",
\r
301 "perm.ru", "pp.ru", "pskov.ru", "ptz.ru", "pyatigorsk.ru",
\r
302 "rnd.ru", "rubtsovsk.ru", "ryazan.ru", "sakhalin.ru",
\r
303 "samara.ru", "saratov.ru", "simbirsk.ru", "smolensk.ru",
\r
304 "snz.ru", "spb.ru", "stavropol.ru", "stv.ru", "surgut.ru",
\r
305 "syzran.ru", "tambov.ru", "tatarstan.ru", "test.ru",
\r
306 "tom.ru", "tomsk.ru", "tsaritsyn.ru", "tsk.ru", "tula.ru",
\r
307 "tuva.ru", "tver.ru", "tyumen.ru", "udm.ru", "udmurtia.ru",
\r
308 "ulan-ude.ru", "vdonsk.ru", "vladikavkaz.ru", "vladimir.ru",
\r
309 "vladivostok.ru", "volgograd.ru", "vologda.ru",
\r
310 "voronezh.ru", "vrn.ru", "vyatka.ru", "yakutia.ru",
\r
311 "yamal.ru", "yaroslavl.ru", "yekaterinburg.ru",
\r
312 "yuzhno-sakhalinsk.ru", "zgrad.ru", "com.sa", "edu.sa", "sch.sa",
\r
313 "med.sa", "gov.sa", "net.sa", "org.sa", "pub.sa", "com.sb",
\r
314 "net.sb", "org.sb", "edu.sb", "gov.sb", "com.sd", "net.sd",
\r
315 "org.sd", "edu.sd", "sch.sd", "med.sd", "gov.sd", "tm.se",
\r
316 "press.se", "parti.se", "brand.se", "fh.se", "fhsk.se",
\r
317 "fhv.se", "komforb.se", "kommunalforbund.se", "komvux.se",
\r
318 "lanarb.se", "lanbib.se", "naturbruksgymn.se", "sshn.se",
\r
319 "org.se", "pp.se", "com.sg", "net.sg", "org.sg", "edu.sg",
\r
320 "gov.sg", "per.sg", "com.sh", "net.sh", "org.sh", "edu.sh",
\r
321 "gov.sh", "mil.sh", "gov.st", "saotome.st", "principe.st",
\r
322 "consulado.st", "embaixada.st", "org.st", "edu.st",
\r
323 "net.st", "com.st", "store.st", "mil.st", "co.st", "com.sv",
\r
324 "org.sv", "edu.sv", "gob.sv", "red.sv", "com.sy", "net.sy",
\r
325 "org.sy", "gov.sy", "ac.th", "co.th", "go.th", "net.th",
\r
326 "or.th", "com.tn", "net.tn", "org.tn", "edunet.tn",
\r
327 "gov.tn", "ens.tn", "fin.tn", "nat.tn", "ind.tn", "info.tn",
\r
328 "intl.tn", "rnrt.tn", "rnu.tn", "rns.tn", "tourism.tn",
\r
329 "com.tr", "net.tr", "org.tr", "edu.tr", "gov.tr", "mil.tr",
\r
330 "bbs.tr", "k12.tr", "gen.tr", "co.tt", "com.tt", "org.tt",
\r
331 "net.tt", "biz.tt", "info.tt", "pro.tt", "int.tt",
\r
332 "coop.tt", "jobs.tt", "mobi.tt", "travel.tt", "museum.tt",
\r
333 "aero.tt", "name.tt", "gov.tt", "edu.tt", "nic.tt", "us.tt",
\r
334 "uk.tt", "ca.tt", "eu.tt", "es.tt", "fr.tt", "it.tt",
\r
335 "se.tt", "dk.tt", "be.tt", "de.tt", "at.tt", "au.tt",
\r
336 "co.tv", "com.tw", "net.tw", "org.tw", "edu.tw", "idv.tw",
\r
337 "gov.tw", "com.ua", "gov.ua", "net.ua", "edu.ua", "org.ua",
\r
338 "in.ua", "cherkassy.ua", "ck.ua", "chernigov.ua", "cn.ua",
\r
339 "chernovtsy.ua", "cv.ua", "crimea.ua", "dnepropetrovsk.ua",
\r
340 "dp.ua", "donetsk.ua", "dn.ua", "ivano-frankivsk.ua",
\r
341 "if.ua", "kharkov.ua", "kh.ua", "kherson.ua", "ks.ua",
\r
342 "khmelnitskiy.ua", "km.ua", "kiev.ua", "kv.ua",
\r
343 "kirovograd.ua", "kr.ua", "lugansk.ua", "lg.ua", "lutsk.ua",
\r
344 "lviv.ua", "nikolaev.ua", "mk.ua", "odessa.ua", "od.ua",
\r
345 "poltava.ua", "pl.ua", "rovno.ua", "rv.ua", "sebastopol.ua",
\r
346 "sumy.ua", "ternopil.ua", "te.ua", "uzhgorod.ua",
\r
347 "vinnica.ua", "vn.ua", "zaporizhzhe.ua", "zp.ua",
\r
348 "zhitomir.ua", "zt.ua", "ac.ug", "co.ug", "or.ug", "go.ug",
\r
349 "co.uk", "me.uk", "org.uk", "edu.uk", "ltd.uk", "plc.uk",
\r
350 "net.uk", "sch.uk", "nic.uk", "ac.uk", "gov.uk", "nhs.uk",
\r
351 "police.uk", "mod.uk", "dni.us", "fed.us", "com.uy",
\r
352 "edu.uy", "net.uy", "org.uy", "gub.uy", "mil.uy", "com.ve",
\r
353 "net.ve", "org.ve", "co.ve", "edu.ve", "gov.ve", "mil.ve",
\r
354 "arts.ve", "bib.ve", "firm.ve", "info.ve", "int.ve",
\r
355 "nom.ve", "rec.ve", "store.ve", "tec.ve", "web.ve", "co.vi",
\r
356 "net.vi", "org.vi", "com.vn", "biz.vn", "edu.vn", "gov.vn",
\r
357 "net.vn", "org.vn", "int.vn", "ac.vn", "pro.vn", "info.vn",
\r
358 "health.vn", "name.vn", "com.vu", "edu.vu", "net.vu",
\r
359 "org.vu", "de.vu", "ch.vu", "fr.vu", "com.ws", "net.ws",
\r
360 "org.ws", "gov.ws", "edu.ws", "ac.yu", "co.yu", "edu.yu",
\r
361 "org.yu", "com.ye", "net.ye", "org.ye", "gov.ye", "edu.ye",
\r
362 "mil.ye", "ac.za", "alt.za", "bourse.za", "city.za",
\r
363 "co.za", "edu.za", "gov.za", "law.za", "mil.za", "net.za",
\r
364 "ngo.za", "nom.za", "org.za", "school.za", "tm.za",
\r
365 "web.za", "co.zw", "ac.zw", "org.zw", "gov.zw", "eu.org",
\r
366 "au.com", "br.com", "cn.com", "de.com", "de.net", "eu.com",
\r
367 "gb.com", "gb.net", "hu.com", "no.com", "qc.com", "ru.com",
\r
368 "sa.com", "se.com", "uk.com", "uk.net", "us.com", "uy.com",
\r
369 "za.com", "dk.org", "tel.no", "fax.nr", "mob.nr",
\r
370 "mobil.nr", "mobile.nr", "tel.nr", "tlf.nr", "e164.arpa"
\r