├── .gitignore ├── .rspec ├── Gemfile ├── LICENSE.txt ├── README.md ├── Rakefile ├── dominatrix.gemspec ├── lib ├── dominatrix.rb ├── dominatrix │ └── version.rb └── extensions.txt └── spec ├── dominatrix_spec.rb └── spec_helper.rb /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.rbc 3 | .bundle 4 | .config 5 | .yardoc 6 | Gemfile.lock 7 | InstalledFiles 8 | _yardoc 9 | coverage 10 | doc/ 11 | lib/bundler/man 12 | pkg 13 | rdoc 14 | spec/reports 15 | test/tmp 16 | test/version_tmp 17 | tmp 18 | *.bundle 19 | *.so 20 | *.o 21 | *.a 22 | mkmf.log 23 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --color 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in dominatrix.gemspec 4 | gemspec 5 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 mhuggins 2 | 3 | MIT License 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Domainatrix is now Domainator 2 | 3 | Dominatrix will be known as Domainator moving forward. Domainator can be found at: 4 | 5 | * [github.com/mhuggins/domainator](https://github.com/mhuggins/domainator) 6 | * [rubygems.org/gems/domainator](http://rubygems.org/gems/domainator) 7 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require "bundler/gem_tasks" 2 | 3 | -------------------------------------------------------------------------------- /dominatrix.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | lib = File.expand_path('../lib', __FILE__) 3 | $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 4 | require 'dominatrix/version' 5 | 6 | Gem::Specification.new do |spec| 7 | spec.name = 'dominatrix' 8 | spec.version = Dominatrix::VERSION 9 | spec.authors = ['Matt Huggins'] 10 | spec.email = ['matt.huggins@gmail.com'] 11 | spec.summary = 'Parse the registered domain name from a URL.' 12 | spec.description = 'Parse the registered domain name from a URL.' 13 | spec.homepage = 'https://github.com/mhuggins/dominatrix' 14 | spec.license = 'MIT' 15 | 16 | spec.files = `git ls-files -z`.split("\x0") 17 | spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } 18 | spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) 19 | spec.require_paths = ['lib'] 20 | 21 | spec.add_development_dependency 'bundler', '~> 1.6' 22 | spec.add_development_dependency 'rake' 23 | spec.add_development_dependency 'rspec' 24 | 25 | spec.post_install_message = <<-MESSAGE 26 | ! The 'dominatrix' gem has been deprecated and has been replaced by 'domainator'. 27 | ! See: https://rubygems.org/gems/domainator 28 | ! And: https://github.com/mhuggins/domainator 29 | MESSAGE 30 | end 31 | -------------------------------------------------------------------------------- /lib/dominatrix.rb: -------------------------------------------------------------------------------- 1 | require 'set' 2 | require 'uri' 3 | require 'dominatrix/version' 4 | 5 | class Dominatrix 6 | class NotFoundError < StandardError; end 7 | 8 | attr_reader :extensions 9 | 10 | def initialize(extensions = self.class.default_extensions) 11 | warn '[DEPRECATION] Dominatrix has been renamed to Domainator and will no longer be supported. Please switch to Domainator as soon as possible.' 12 | self.extensions = extensions 13 | end 14 | 15 | def parse(uri) 16 | uri = URI.parse(uri) if uri.is_a?(String) 17 | raise ArgumentError, '`uri` must be a String or URI' unless uri.is_a?(URI) 18 | raise ArgumentError, '`uri` must include a host' if uri.host.nil? 19 | 20 | domain = extract_domain(uri.host) 21 | raise NotFoundError, "no matching domain for \"#{uri}\"" if domain.nil? 22 | domain 23 | end 24 | 25 | private 26 | 27 | def extensions=(extensions) 28 | raise ArgumentError, '`extensions` must be Enumerable' unless extensions.is_a?(Enumerable) 29 | raise ArgumentError, '`extensions` must all start with "."' unless extensions.all? { |s| s.start_with?('.') } 30 | @extensions = extensions 31 | end 32 | 33 | def extract_domain(host) 34 | parts = host.split('.') 35 | last_found_domain = nil 36 | 37 | parts.size.times.each do |n| 38 | offset = parts.size - n - 1 39 | lookup = '.' + parts[offset..-1].join('.') 40 | 41 | if extensions.include?(lookup) 42 | last_found_domain = lookup 43 | elsif last_found_domain 44 | last_found_domain = parts[offset] + last_found_domain 45 | break 46 | else 47 | break 48 | end 49 | end 50 | 51 | last_found_domain 52 | end 53 | 54 | def self.parse(uri, extensions = default_extensions) 55 | new(extensions).parse(uri) 56 | end 57 | 58 | def self.default_extensions 59 | @default_domains ||= begin 60 | file = File.join(File.dirname(__FILE__), 'extensions.txt') 61 | File.readlines(file).map(&:strip).delete_if(&:empty?).to_set 62 | end 63 | end 64 | end 65 | -------------------------------------------------------------------------------- /lib/dominatrix/version.rb: -------------------------------------------------------------------------------- 1 | class Dominatrix 2 | VERSION = '1.1.1' 3 | end 4 | -------------------------------------------------------------------------------- /lib/extensions.txt: -------------------------------------------------------------------------------- 1 | .ac 2 | .com.ac 3 | .gov.ac 4 | .mil.ac 5 | .net.ac 6 | .org.ac 7 | .academy 8 | .actor 9 | .ad 10 | .nom.ad 11 | .ae 12 | .امارات 13 | .co.ae 14 | .net.ae 15 | .org.ae 16 | .ac.ae 17 | .gov.ae 18 | .mil.ae 19 | .sch.ae 20 | .aero 21 | .af 22 | .com.af 23 | .edu.af 24 | .gov.af 25 | .net.af 26 | .org.af 27 | .ag 28 | .com.ag 29 | .net.ag 30 | .org.ag 31 | .agency 32 | .ai 33 | .com.ai 34 | .net.ai 35 | .off.ai 36 | .org.ai 37 | .al 38 | .com.al 39 | .edu.al 40 | .gov.al 41 | .net.al 42 | .org.al 43 | .am 44 | .co.am 45 | .com.am 46 | .net.am 47 | .org.am 48 | .an 49 | .com.an 50 | .net.an 51 | .ao 52 | .co.ao 53 | .ed.ao 54 | .gv.ao 55 | .it.ao 56 | .og.ao 57 | .pb.ao 58 | .aq 59 | .com.aq 60 | .ar 61 | .com.ar 62 | .edu.ar 63 | .gob.ar 64 | .gov.ar 65 | .mil.ar 66 | .int.ar 67 | .net.ar 68 | .org.ar 69 | .tur.ar 70 | .archi 71 | .as 72 | .asia 73 | .associates 74 | .at 75 | .co.at 76 | .or.at 77 | .ac.at 78 | .gv.at 79 | .com.au 80 | .net.au 81 | .au 82 | .act.au 83 | .asn.au 84 | .csiro.au 85 | .edu.au 86 | .gov.au 87 | .id.au 88 | .nsw.au 89 | .nt.au 90 | .org.au 91 | .qld.au 92 | .sa.au 93 | .tas.au 94 | .vic.au 95 | .wa.au 96 | .aw 97 | .com.aw 98 | .ax 99 | .az 100 | .biz.az 101 | .co.az 102 | .com.az 103 | .edu.az 104 | .gov.az 105 | .info.az 106 | .int.az 107 | .mil.az 108 | .name.az 109 | .net.az 110 | .org.az 111 | .pp.az 112 | .bilesuvar.az 113 | .ganja.az 114 | .imishli.az 115 | .samux.az 116 | .shamaxi.az 117 | .shusha.az 118 | .sumgait.az 119 | .zaqatala.az 120 | .ae.com 121 | .ar.com 122 | .au.com 123 | .africa.com 124 | .ba 125 | .co.ba 126 | .com.ba 127 | .edu.ba 128 | .gov.ba 129 | .mil.ba 130 | .net.ba 131 | .org.ba 132 | .bar 133 | .bargains 134 | .bb 135 | .co.bb 136 | .com.bb 137 | .biz.bb 138 | .gov.bb 139 | .info.bb 140 | .net.bb 141 | .org.bb 142 | .store.bb 143 | .tv.bb 144 | .bd 145 | .com.bd 146 | .net.bd 147 | .org.bd 148 | .ac.bd 149 | .edu.bd 150 | .gov.bd 151 | .mil.bd 152 | .be 153 | .berlin 154 | .best 155 | .bf 156 | .bg 157 | .0.bg 158 | .1.bg 159 | .2.bg 160 | .3.bg 161 | .4.bg 162 | .5.bg 163 | .6.bg 164 | .7.bg 165 | .8.bg 166 | .9.bg 167 | .a.bg 168 | .b.bg 169 | .c.bg 170 | .d.bg 171 | .e.bg 172 | .f.bg 173 | .g.bg 174 | .h.bg 175 | .i.bg 176 | .j.bg 177 | .k.bg 178 | .l.bg 179 | .m.bg 180 | .n.bg 181 | .o.bg 182 | .p.bg 183 | .q.bg 184 | .r.bg 185 | .s.bg 186 | .t.bg 187 | .u.bg 188 | .v.bg 189 | .w.bg 190 | .x.bg 191 | .y.bg 192 | .z.bg 193 | .bh 194 | .biz.bh 195 | .info.bh 196 | .net.bh 197 | .org.bh 198 | .cc.bh 199 | .com.bh 200 | .edu.bh 201 | .gov.bh 202 | .bi 203 | .co.bi 204 | .com.bi 205 | .or.bi 206 | .org.bi 207 | .edu.bi 208 | .gov.bi 209 | .info.bi 210 | .ote.bi 211 | .bid 212 | .bio 213 | .biz 214 | .bj 215 | .barreau.bj 216 | .com.bj 217 | .edu.bj 218 | .gouv.bj 219 | .gov.bj 220 | .mil.bj 221 | .bl 222 | .blackfriday 223 | .blue 224 | .bm 225 | .com.bm 226 | .edu.bm 227 | .gov.bm 228 | .net.bm 229 | .org.bm 230 | .com.bn 231 | .bn 232 | .edu.bn 233 | .gov.bn 234 | .net.bn 235 | .org.bn 236 | .bo 237 | .com.bo 238 | .edu.bo 239 | .org.bo 240 | .tv.bo 241 | .gob.bo 242 | .gov.bo 243 | .int.bo 244 | .mil.bo 245 | .net.bo 246 | .boutique 247 | .bq 248 | .br 249 | .com.br 250 | .emp.br 251 | .net.br 252 | .org.br 253 | .adm.br 254 | .adv.br 255 | .agr.br 256 | .am.br 257 | .arq.br 258 | .art.br 259 | .ato.br 260 | .b.br 261 | .bio.br 262 | .blog.br 263 | .bmd.br 264 | .cim.br 265 | .cng.br 266 | .cnt.br 267 | .coop.br 268 | .ecn.br 269 | .edu.br 270 | .eng.br 271 | .esp.br 272 | .etc.br 273 | .eti.br 274 | .far.br 275 | .flog.br 276 | .fm.br 277 | .fnd.br 278 | .fot.br 279 | .fst.br 280 | .g12.br 281 | .ggf.br 282 | .gov.br 283 | .imb.br 284 | .ind.br 285 | .inf.br 286 | .jor.br 287 | .jus.br 288 | .lel.br 289 | .mat.br 290 | .med.br 291 | .mil.br 292 | .mus.br 293 | .nom.br 294 | .not.br 295 | .ntr.br 296 | .odo.br 297 | .ppg.br 298 | .pro.br 299 | .psc.br 300 | .psi.br 301 | .qsl.br 302 | .radio.br 303 | .rec.br 304 | .slg.br 305 | .srv.br 306 | .taxi.br 307 | .teo.br 308 | .tmp.br 309 | .trd.br 310 | .tur.br 311 | .tv.br 312 | .vet.br 313 | .vlog.br 314 | .wiki.br 315 | .zlg.br 316 | .bs 317 | .com.bs 318 | .net.bs 319 | .org.bs 320 | .edu.bs 321 | .gov.bs 322 | .we.bs 323 | .bt 324 | .com.bt 325 | .edu.bt 326 | .gov.bt 327 | .net.bt 328 | .org.bt 329 | .build 330 | .builders 331 | .buzz 332 | .bv 333 | .bw 334 | .co.bw 335 | .ac.bw 336 | .net.bw 337 | .org.bw 338 | .by 339 | .com.by 340 | .gov.by 341 | .mil.by 342 | .minsk.by 343 | .net.by 344 | .bz 345 | .com.bz 346 | .net.bz 347 | .org.bz 348 | .co.bz 349 | .edu.bz 350 | .gov.bz 351 | .br.com 352 | .ca 353 | .ab.ca 354 | .bc.ca 355 | .mb.ca 356 | .nb.ca 357 | .nl.ca 358 | .ns.ca 359 | .nt.ca 360 | .nu.ca 361 | .on.ca 362 | .pe.ca 363 | .qc.ca 364 | .sk.ca 365 | .yk.ca 366 | .cab 367 | .camp 368 | .capital 369 | .cards 370 | .care 371 | .career 372 | .cash 373 | .cat 374 | .catering 375 | .cc 376 | .com.cc 377 | .net.cc 378 | .org.cc 379 | .edu.cc 380 | .cd 381 | .center 382 | .ceo 383 | .cf 384 | .cg 385 | .ch 386 | .cheap 387 | .christmas 388 | .ci 389 | .ac.ci 390 | .assoc.ci 391 | .co.ci 392 | .com.ci 393 | .ed.ci 394 | .edu.ci 395 | .go.ci 396 | .int.ci 397 | .net.ci 398 | .or.ci 399 | .org.ci 400 | .presse.ci 401 | .co.ck 402 | .edu.ck 403 | .org.ck 404 | .ck 405 | .biz.ck 406 | .gen.ck 407 | .gov.ck 408 | .info.ck 409 | .net.ck 410 | .cl 411 | .cleaning 412 | .clinic 413 | .club 414 | .cm 415 | .co.cm 416 | .com.cm 417 | .edu.cm 418 | .net.cm 419 | .cn 420 | .中国 421 | .中國 422 | .com.cn 423 | .net.cn 424 | .org.cn 425 | .ac.cn 426 | .ah.cn 427 | .bj.cn 428 | .cq.cn 429 | .edu.cn 430 | .fj.cn 431 | .gd.cn 432 | .gov.cn 433 | .gs.cn 434 | .gx.cn 435 | .gz.cn 436 | .ha.cn 437 | .hb.cn 438 | .he.cn 439 | .hi.cn 440 | .hk.cn 441 | .hl.cn 442 | .hn.cn 443 | .jl.cn 444 | .js.cn 445 | .jx.cn 446 | .ln.cn 447 | .mil.cn 448 | .mo.cn 449 | .nm.cn 450 | .nx.cn 451 | .qh.cn 452 | .sc.cn 453 | .sd.cn 454 | .sh.cn 455 | .sn.cn 456 | .sx.cn 457 | .tj.cn 458 | .tw.cn 459 | .xj.cn 460 | .xz.cn 461 | .yn.cn 462 | .zj.cn 463 | .co 464 | .com.co 465 | .edu.co 466 | .net.co 467 | .nom.co 468 | .org.co 469 | .codes 470 | .coffee 471 | .com 472 | .cn.com 473 | .community 474 | .company 475 | .computer 476 | .condos 477 | .consulting 478 | .cool 479 | .coop 480 | .cr 481 | .co.cr 482 | .fi.cr 483 | .or.cr 484 | .ac.cr 485 | .ed.cr 486 | .go.cr 487 | .sa.cr 488 | .cruises 489 | .cu 490 | .com.cu 491 | .edu.cu 492 | .gov.cu 493 | .inf.cu 494 | .net.cu 495 | .org.cu 496 | .cv 497 | .com.cv 498 | .edu.cv 499 | .gov.cv 500 | .int.cv 501 | .net.cv 502 | .nome.cv 503 | .org.cv 504 | .publ.cv 505 | .cw 506 | .cx 507 | .com.cy 508 | .cy 509 | .ac.cy 510 | .biz.cy 511 | .ekloges.cy 512 | .ltd.cy 513 | .name.cy 514 | .net.cy 515 | .org.cy 516 | .parliament.cy 517 | .press.cy 518 | .pro.cy 519 | .tm.cy 520 | .cz 521 | .co.ni 522 | .co.nl 523 | .co.no 524 | .co.nu 525 | .de.com 526 | .dance 527 | .dating 528 | .de 529 | .co.de 530 | .com.de 531 | .democrat 532 | .dental 533 | .dj 534 | .dk 535 | .dm 536 | .co.dm 537 | .com.dm 538 | .net.dm 539 | .org.dm 540 | .do 541 | .com.do 542 | .art.do 543 | .edu.do 544 | .gob.do 545 | .gov.do 546 | .mil.do 547 | .net.do 548 | .org.do 549 | .sid.do 550 | .web.do 551 | .domains 552 | .dz 553 | .الجزائر 554 | .com.dz 555 | .art.dz 556 | .asso.dz 557 | .edu.dz 558 | .gov.dz 559 | .net.dz 560 | .org.dz 561 | .pol.dz 562 | .eu.com 563 | .ec 564 | .com.ec 565 | .edu.ec 566 | .fin.ec 567 | .gob.ec 568 | .info.ec 569 | .med.ec 570 | .mil.ec 571 | .net.ec 572 | .org.ec 573 | .pro.ec 574 | .edu 575 | .education 576 | .ee 577 | .co.ee 578 | .com.ee 579 | .edu.ee 580 | .fie.ee 581 | .med.ee 582 | .org.ee 583 | .pri.ee 584 | .eg 585 | .مصر 586 | .com.eg 587 | .edu.eg 588 | .eun.eg 589 | .gov.eg 590 | .info.eg 591 | .mil.eg 592 | .name.eg 593 | .net.eg 594 | .org.eg 595 | .sci.eg 596 | .sport.eg 597 | .tv.eg 598 | .eh 599 | .email 600 | .engineering 601 | .er 602 | .es 603 | .com.es 604 | .edu.es 605 | .gob.es 606 | .nom.es 607 | .org.es 608 | .et 609 | .biz.et 610 | .com.et 611 | .edu.et 612 | .gov.et 613 | .info.et 614 | .name.et 615 | .net.et 616 | .org.et 617 | .eu 618 | .events 619 | .exchange 620 | .expert 621 | .exposed 622 | .fail 623 | .farm 624 | .fi 625 | .financial 626 | .fish 627 | .fj 628 | .biz.fj 629 | .com.fj 630 | .info.fj 631 | .name.fj 632 | .net.fj 633 | .org.fj 634 | .pro.fj 635 | .ac.fj 636 | .gov.fj 637 | .mil.fj 638 | .school.fj 639 | .ac.fk 640 | .co.fk 641 | .gov.fk 642 | .net.fk 643 | .nom.fk 644 | .org.fk 645 | .flights 646 | .florist 647 | .fm 648 | .0.fm 649 | .2.fm 650 | .4.fm 651 | .6.fm 652 | .8.fm 653 | .fo 654 | .com.fo 655 | .foundation 656 | .fr 657 | .asso.fr 658 | .com.fr 659 | .nom.fr 660 | .tm.fr 661 | .gouv.fr 662 | .presse.fr 663 | .fund 664 | .futbol 665 | .gb.com 666 | .gr.com 667 | .ga 668 | .gb 669 | .gd 670 | .ge 671 | .გე 672 | .com.ge 673 | .net.ge 674 | .org.ge 675 | .edu.ge 676 | .gov.ge 677 | .mil.ge 678 | .pvt.ge 679 | .gf 680 | .gg 681 | .co.gg 682 | .net.gg 683 | .org.gg 684 | .gov.gg 685 | .sch.gg 686 | .com.gh 687 | .edu.gh 688 | .gov.gh 689 | .net.gh 690 | .org.gh 691 | .gh 692 | .mil.gh 693 | .gi 694 | .com.gi 695 | .edu.gi 696 | .gov.gi 697 | .ltd.gi 698 | .mod.gi 699 | .org.gi 700 | .gift 701 | .gl 702 | .co.gl 703 | .com.gl 704 | .edu.gl 705 | .net.gl 706 | .org.gl 707 | .glass 708 | .gm 709 | .gn 710 | .com.gn 711 | .ac.gn 712 | .gov.gn 713 | .net.gn 714 | .org.gn 715 | .gop 716 | .gov 717 | .gp 718 | .asso.gp 719 | .com.gp 720 | .edu.gp 721 | .mobi.gp 722 | .net.gp 723 | .org.gp 724 | .gq 725 | .gr 726 | .com.gr 727 | .edu.gr 728 | .gov.gr 729 | .net.gr 730 | .org.gr 731 | .gripe 732 | .gs 733 | .gt 734 | .ind.gt 735 | .com.gt 736 | .net.gt 737 | .org.gt 738 | .edu.gt 739 | .gob.gt 740 | .mil.gt 741 | .gu 742 | .com.gu 743 | .edu.gu 744 | .gov.gu 745 | .guam.gu 746 | .net.gu 747 | .org.gu 748 | .web.gu 749 | .guitars 750 | .gw 751 | .gy 752 | .co.gy 753 | .com.gy 754 | .net.gy 755 | .org.gy 756 | .gb.net 757 | .hk.com 758 | .hu.com 759 | .hamburg 760 | .haus 761 | .hk 762 | .inc.hk 763 | .ltd.hk 764 | .香港 765 | .com.hk 766 | .edu.hk 767 | .gov.hk 768 | .idv.hk 769 | .net.hk 770 | .org.hk 771 | .hm 772 | .hn 773 | .com.hn 774 | .net.hn 775 | .org.hn 776 | .edu.hn 777 | .gob.hn 778 | .mil.hn 779 | .holiday 780 | .house 781 | .hr 782 | .com.hr 783 | .from.hr 784 | .ht 785 | .art.ht 786 | .asso.ht 787 | .com.ht 788 | .coop.ht 789 | .edu.ht 790 | .gouv.ht 791 | .med.ht 792 | .net.ht 793 | .org.ht 794 | .perso.ht 795 | .pol.ht 796 | .pro.ht 797 | .rel.ht 798 | .adult.ht 799 | .firm.ht 800 | .info.ht 801 | .shop.ht 802 | .hu 803 | .co.hu 804 | .org.hu 805 | .tm.hu 806 | .2000.hu 807 | .agrar.hu 808 | .bolt.hu 809 | .casino.hu 810 | .city.hu 811 | .erotica.hu 812 | .erotika.hu 813 | .film.hu 814 | .forum.hu 815 | .games.hu 816 | .hotel.hu 817 | .info.hu 818 | .ingatlan.hu 819 | .jogasz.hu 820 | .konyvelo.hu 821 | .lakas.hu 822 | .media.hu 823 | .news.hu 824 | .priv.hu 825 | .reklam.hu 826 | .sex.hu 827 | .shop.hu 828 | .sport.hu 829 | .suli.hu 830 | .szex.hu 831 | .tozsde.hu 832 | .utazas.hu 833 | .video.hu 834 | .hu.net 835 | .公司.香港 836 | .個人.香港 837 | .政府.香港 838 | .網絡.香港 839 | .組織.香港 840 | .教育.香港 841 | .id 842 | .co.id 843 | .web.id 844 | .ac.id 845 | .go.id 846 | .mi.id 847 | .net.id 848 | .or.id 849 | .sch.id 850 | .ie 851 | .il 852 | .co.il 853 | .net.il 854 | .org.il 855 | .ac.il 856 | .gov.il 857 | .idf.il 858 | .k12.il 859 | .muni.il 860 | .im 861 | .co.im 862 | .org.im 863 | .ac.im 864 | .com.im 865 | .gov.im 866 | .net.im 867 | .immobilien 868 | .in 869 | .ભારત 870 | .भारत 871 | .بھارت 872 | .ਭਾਰਤ 873 | .இந்தியா 874 | .co.in 875 | .net.in 876 | .org.in 877 | .ac.in 878 | .edu.in 879 | .ernet.in 880 | .firm.in 881 | .gen.in 882 | .gov.in 883 | .ind.in 884 | .mil.in 885 | .res.in 886 | .industries 887 | .info 888 | .ink 889 | .institute 890 | .int 891 | .international 892 | .investments 893 | .io 894 | .com.io 895 | .org.io 896 | .iq 897 | .com.iq 898 | .biz.iq 899 | .edu.iq 900 | .gov.iq 901 | .info.iq 902 | .mil.iq 903 | .name.iq 904 | .net.iq 905 | .org.iq 906 | .tv.iq 907 | .ir 908 | .ایران 909 | .ac.ir 910 | .co.ir 911 | .id.ir 912 | .net.ir 913 | .org.ir 914 | .gov.ir 915 | .sch.ir 916 | .is 917 | .it 918 | .edu.it 919 | .gov.it 920 | .in.net 921 | .ie.nu 922 | .jpn.com 923 | .je 924 | .co.je 925 | .net.je 926 | .org.je 927 | .gov.je 928 | .sch.je 929 | .jetzt 930 | .jm 931 | .com.jm 932 | .jo 933 | .الاردن 934 | .com.jo 935 | .edu.jo 936 | .gov.jo 937 | .mil.jo 938 | .name.jo 939 | .net.jo 940 | .org.jo 941 | .sch.jo 942 | .jobs 943 | .jp 944 | .co.jp 945 | .ac.jp 946 | .ad.jp 947 | .ed.jp 948 | .go.jp 949 | .gr.jp 950 | .lg.jp 951 | .ne.jp 952 | .or.jp 953 | .kr.com 954 | .kaufen 955 | .ke 956 | .co.ke 957 | .or.ke 958 | .ac.ke 959 | .go.ke 960 | .info.ke 961 | .me.ke 962 | .mobi.ke 963 | .ne.ke 964 | .sc.ke 965 | .kg 966 | .com.kg 967 | .edu.kg 968 | .gov.kg 969 | .mil.kg 970 | .net.kg 971 | .org.kg 972 | .kh 973 | .com.kh 974 | .edu.kh 975 | .gov.kh 976 | .mil.kh 977 | .net.kh 978 | .org.kh 979 | .per.kh 980 | .ki 981 | .biz.ki 982 | .com.ki 983 | .edu.ki 984 | .gov.ki 985 | .info.ki 986 | .net.ki 987 | .org.ki 988 | .tel.ki 989 | .mobi.ki 990 | .kim 991 | .kiwi 992 | .km 993 | .nom.km 994 | .com.km 995 | .asso.km 996 | .coop.km 997 | .edu.km 998 | .gouv.km 999 | .medecin.km 1000 | .mil.km 1001 | .notaires.km 1002 | .org.km 1003 | .pharmaciens.km 1004 | .presse.km 1005 | .tm.km 1006 | .veterinaire.km 1007 | .kn 1008 | .edu.kn 1009 | .gov.kn 1010 | .net.kn 1011 | .org.kn 1012 | .kp 1013 | .com.kp 1014 | .org.kp 1015 | .rep.kp 1016 | .kr 1017 | .한국 1018 | .co.kr 1019 | .ac.kr 1020 | .busan.kr 1021 | .chungbuk.kr 1022 | .chungnam.kr 1023 | .daegu.kr 1024 | .daejeon.kr 1025 | .es.kr 1026 | .gangwon.kr 1027 | .go.kr 1028 | .gwangju.kr 1029 | .gyeongbuk.kr 1030 | .gyeonggi.kr 1031 | .gyeongnam.kr 1032 | .hs.kr 1033 | .incheon.kr 1034 | .jeju.kr 1035 | .jeonbuk.kr 1036 | .jeonnam.kr 1037 | .kg.kr 1038 | .mil.kr 1039 | .ms.kr 1040 | .ne.kr 1041 | .or.kr 1042 | .pe.kr 1043 | .re.kr 1044 | .sc.kr 1045 | .seoul.kr 1046 | .ulsan.kr 1047 | .kw 1048 | .com.kw 1049 | .edu.kw 1050 | .gov.kw 1051 | .net.kw 1052 | .org.kw 1053 | .ky 1054 | .com.ky 1055 | .org.ky 1056 | .edu.ky 1057 | .gov.ky 1058 | .net.ky 1059 | .kz 1060 | .қаз 1061 | .com.kz 1062 | .edu.kz 1063 | .gov.kz 1064 | .mil.kz 1065 | .net.kz 1066 | .org.kz 1067 | .la 1068 | .lb 1069 | .com.lb 1070 | .net.lb 1071 | .org.lb 1072 | .edu.lb 1073 | .gov.lb 1074 | .lc 1075 | .co.lc 1076 | .com.lc 1077 | .net.lc 1078 | .org.lc 1079 | .edu.lc 1080 | .gov.lc 1081 | .l.lc 1082 | .p.lc 1083 | .lease 1084 | .li 1085 | .limited 1086 | .limo 1087 | .link 1088 | .lk 1089 | .ලංකා 1090 | .இலங்கை 1091 | .assn.lk 1092 | .com.lk 1093 | .edu.lk 1094 | .hotel.lk 1095 | .ltd.lk 1096 | .ngo.lk 1097 | .org.lk 1098 | .soc.lk 1099 | .web.lk 1100 | .gov.lk 1101 | .grp.lk 1102 | .int.lk 1103 | .net.lk 1104 | .sch.lk 1105 | .lr 1106 | .com.lr 1107 | .org.lr 1108 | .edu.lr 1109 | .gov.lr 1110 | .net.lr 1111 | .co.ls 1112 | .org.ls 1113 | .ls 1114 | .ac.ls 1115 | .gov.ls 1116 | .net.ls 1117 | .parliament.ls 1118 | .lt 1119 | .lu 1120 | .luxury 1121 | .lv 1122 | .asn.lv 1123 | .com.lv 1124 | .conf.lv 1125 | .edu.lv 1126 | .gov.lv 1127 | .id.lv 1128 | .mil.lv 1129 | .net.lv 1130 | .org.lv 1131 | .ly 1132 | .com.ly 1133 | .edu.ly 1134 | .gov.ly 1135 | .id.ly 1136 | .med.ly 1137 | .net.ly 1138 | .org.ly 1139 | .plc.ly 1140 | .sch.ly 1141 | .mex.com 1142 | .ma 1143 | .المغرب 1144 | .co.ma 1145 | .net.ma 1146 | .org.ma 1147 | .ac.ma 1148 | .com.ma 1149 | .gov.ma 1150 | .press.ma 1151 | .maison 1152 | .management 1153 | .marketing 1154 | .mc 1155 | .tm.mc 1156 | .asso.mc 1157 | .md 1158 | .me 1159 | .media 1160 | .menu 1161 | .mf 1162 | .mg 1163 | .com.mg 1164 | .org.mg 1165 | .edu.mg 1166 | .gov.mg 1167 | .in.mg 1168 | .mil.mg 1169 | .nom.mg 1170 | .prd.mg 1171 | .tm.mg 1172 | .mh 1173 | .mil 1174 | .mk 1175 | .com.mk 1176 | .net.mk 1177 | .org.mk 1178 | .edu.mk 1179 | .gov.mk 1180 | .inf.mk 1181 | .name.mk 1182 | .pro.mk 1183 | .ml 1184 | .com.ml 1185 | .edu.ml 1186 | .gov.ml 1187 | .net.ml 1188 | .org.ml 1189 | .presse.ml 1190 | .mm 1191 | .com.mm 1192 | .edu.mm 1193 | .gov.mm 1194 | .mil.mm 1195 | .net.mm 1196 | .org.mm 1197 | .mn 1198 | .мон 1199 | .org.mn 1200 | .edu.mn 1201 | .gov.mn 1202 | .mo 1203 | .co.mo 1204 | .com.mo 1205 | .edu.mo 1206 | .gov.mo 1207 | .net.mo 1208 | .org.mo 1209 | .mobi 1210 | .moda 1211 | .moe 1212 | .mp 1213 | .co.mp 1214 | .gov.mp 1215 | .org.mp 1216 | .mq 1217 | .mr 1218 | .gov.mr 1219 | .ms 1220 | .co.ms 1221 | .com.ms 1222 | .org.ms 1223 | .com.mt 1224 | .net.mt 1225 | .org.mt 1226 | .mt 1227 | .edu.mt 1228 | .gov.mt 1229 | .mu 1230 | .co.mu 1231 | .com.mu 1232 | .net.mu 1233 | .org.mu 1234 | .ac.mu 1235 | .gov.mu 1236 | .or.mu 1237 | .museum 1238 | .mv 1239 | .aero.mv 1240 | .biz.mv 1241 | .com.mv 1242 | .coop.mv 1243 | .edu.mv 1244 | .gov.mv 1245 | .info.mv 1246 | .int.mv 1247 | .mil.mv 1248 | .museum.mv 1249 | .name.mv 1250 | .net.mv 1251 | .org.mv 1252 | .pro.mv 1253 | .mw 1254 | .co.mw 1255 | .com.mw 1256 | .net.mw 1257 | .org.mw 1258 | .ac.mw 1259 | .coop.mw 1260 | .edu.mw 1261 | .gov.mw 1262 | .int.mw 1263 | .museum.mw 1264 | .mx 1265 | .com.mx 1266 | .net.mx 1267 | .org.mx 1268 | .edu.mx 1269 | .gob.mx 1270 | .my 1271 | .مليسيا 1272 | .com.my 1273 | .net.my 1274 | .org.my 1275 | .edi.my 1276 | .edu.my 1277 | .gov.my 1278 | .mil.my 1279 | .name.my 1280 | .mz 1281 | .co.mz 1282 | .org.mz 1283 | .ac.mz 1284 | .adv.mz 1285 | .edu.mz 1286 | .gov.mz 1287 | .net.mz 1288 | .no.com 1289 | .co.na 1290 | .com.na 1291 | .org.na 1292 | .na 1293 | .nagoya 1294 | .name 1295 | .com.nc 1296 | .nc 1297 | .asso.nc 1298 | .nom.nc 1299 | .ne 1300 | .net 1301 | .nf 1302 | .arts.nf 1303 | .com.nf 1304 | .info.nf 1305 | .net.nf 1306 | .web.nf 1307 | .firm.nf 1308 | .other.nf 1309 | .per.nf 1310 | .rec.nf 1311 | .store.nf 1312 | .ng 1313 | .com.ng 1314 | .edu.ng 1315 | .gov.ng 1316 | .mil.ng 1317 | .mobi.ng 1318 | .name.ng 1319 | .net.ng 1320 | .org.ng 1321 | .sch.ng 1322 | .ni 1323 | .com.ni 1324 | .ac.ni 1325 | .biz.ni 1326 | .edu.ni 1327 | .gov.ni 1328 | .in.ni 1329 | .info.ni 1330 | .int.ni 1331 | .mil.ni 1332 | .net.ni 1333 | .nom.ni 1334 | .org.ni 1335 | .web.ni 1336 | .ninja 1337 | .nl 1338 | .no 1339 | .np 1340 | .aero.np 1341 | .asia.np 1342 | .biz.np 1343 | .com.np 1344 | .coop.np 1345 | .edu.np 1346 | .gov.np 1347 | .info.np 1348 | .mil.np 1349 | .mobi.np 1350 | .museum.np 1351 | .name.np 1352 | .net.np 1353 | .org.np 1354 | .pro.np 1355 | .travel.np 1356 | .nr 1357 | .biz.nr 1358 | .com.nr 1359 | .info.nr 1360 | .net.nr 1361 | .org.nr 1362 | .gov.nr 1363 | .nu 1364 | .ac.nz 1365 | .co.nz 1366 | .cri.nz 1367 | .geek.nz 1368 | .gen.nz 1369 | .govt.nz 1370 | .iwi.nz 1371 | .maori.nz 1372 | .mil.nz 1373 | .net.nz 1374 | .org.nz 1375 | .school.nz 1376 | .nz 1377 | .health.nz 1378 | .parliament.nz 1379 | .om 1380 | .عمان 1381 | .co.om 1382 | .com.om 1383 | .ac.om 1384 | .biz.om 1385 | .edu.om 1386 | .gov.om 1387 | .med.om 1388 | .mil.om 1389 | .museum.om 1390 | .net.om 1391 | .org.om 1392 | .pro.om 1393 | .sch.om 1394 | .onl 1395 | .org 1396 | .hk.org 1397 | .pa 1398 | .abo.pa 1399 | .com.pa 1400 | .ing.pa 1401 | .med.pa 1402 | .nom.pa 1403 | .org.pa 1404 | .ac.pa 1405 | .edu.pa 1406 | .gob.pa 1407 | .net.pa 1408 | .sld.pa 1409 | .partners 1410 | .parts 1411 | .pe 1412 | .com.pe 1413 | .edu.pe 1414 | .net.pe 1415 | .nom.pe 1416 | .org.pe 1417 | .gov.pe 1418 | .mil.pe 1419 | .sld.pe 1420 | .pf 1421 | .pg 1422 | .ac.pg 1423 | .com.pg 1424 | .gov.pg 1425 | .mil.pg 1426 | .net.pg 1427 | .org.pg 1428 | .ph 1429 | .com.ph 1430 | .edi.ph 1431 | .gov.ph 1432 | .i.ph 1433 | .mil.ph 1434 | .net.ph 1435 | .org.ph 1436 | .photo 1437 | .pics 1438 | .pictures 1439 | .pink 1440 | .pk 1441 | .پاکستان 1442 | .com.pk 1443 | .net.pk 1444 | .org.pk 1445 | .biz.pk 1446 | .edu.pk 1447 | .fam.pk 1448 | .gkp.pk 1449 | .gob.pk 1450 | .gog.pk 1451 | .gok.pk 1452 | .gop.pk 1453 | .gos.pk 1454 | .gov.pk 1455 | .web.pk 1456 | .pl 1457 | .biz.pl 1458 | .com.pl 1459 | .info.pl 1460 | .net.pl 1461 | .org.pl 1462 | .agro.pl 1463 | .aid.pl 1464 | .atm.pl 1465 | .augustow.pl 1466 | .auto.pl 1467 | .babia-gora.pl 1468 | .bedzin.pl 1469 | .beskidy.pl 1470 | .bialowieza.pl 1471 | .bialystok.pl 1472 | .bielawa.pl 1473 | .bieszczady.pl 1474 | .boleslawiec.pl 1475 | .bydgoszcz.pl 1476 | .bytom.pl 1477 | .ciesyn.pl 1478 | .czeladz.pl 1479 | .czest.pl 1480 | .dlugoleka.pl 1481 | .edu.pl 1482 | .elblag.pl 1483 | .elk.pl 1484 | .glogow.pl 1485 | .gmina.pl 1486 | .gniezon.pl 1487 | .gorlice.pl 1488 | .gov.pl 1489 | .grajewo.pl 1490 | .gsm.pl 1491 | .ilawa.pl 1492 | .jaworzono.pl 1493 | .jelenia-gora.pl 1494 | .jgora.pl 1495 | .kalisz.pl 1496 | .karpacz.pl 1497 | .kartuzy.pl 1498 | .katowice.pl 1499 | .kazimierz-dolny.pl 1500 | .kepno.pl 1501 | .ketrzyn.pl 1502 | .klodzko.pl 1503 | .kobierzyce.pl 1504 | .kolobrzeg.pl 1505 | .konin.pl 1506 | .konskowola.pl 1507 | .ksazuby.pl 1508 | .kutno.pl 1509 | .lapy.pl 1510 | .lebork.pl 1511 | .legnica.pl 1512 | .lezajsk.pl 1513 | .limanowa.pl 1514 | .lomza.pl 1515 | .lowicz.pl 1516 | .lubin.pl 1517 | .lukow.pl 1518 | .mail.pl 1519 | .malbork.pl 1520 | .malopolska.pl 1521 | .mazowsze.pl 1522 | .mazury.pl 1523 | .media.pl 1524 | .miasta.pl 1525 | .mielec.pl 1526 | .mielno.pl 1527 | .mil.pl 1528 | .mragowo.pl 1529 | .naklo.pl 1530 | .nieruchomosci.pl 1531 | .nom.pl 1532 | .nowaruda.pl 1533 | .nysa.pl 1534 | .olawa.pl 1535 | .olecko.pl 1536 | .olkusz.pl 1537 | .olsztyn.pl 1538 | .opoczno.pl 1539 | .opole.pl 1540 | .ostroda.pl 1541 | .ostroleka.pl 1542 | .ostrowiec.pl 1543 | .ostrowwlkp.pl 1544 | .pc.pl 1545 | .pila.pl 1546 | .pisz.pl 1547 | .podhale.pl 1548 | .podlasie.pl 1549 | .polkowice.pl 1550 | .pomorskie.pl 1551 | .pomorze.pl 1552 | .powiat.pl 1553 | .priv.pl 1554 | .prochowice.pl 1555 | .pruszkow.pl 1556 | .przeworsk.pl 1557 | .pulawy.pl 1558 | .radom.pl 1559 | .rawa-maz.pl 1560 | .realestate.pl 1561 | .rel.pl 1562 | .rybnik.pl 1563 | .rzeszow.pl 1564 | .sanok.pl 1565 | .sejny.pl 1566 | .sex.pl 1567 | .shop.pl 1568 | .sklep.pl 1569 | .skoczow.pl 1570 | .slask.pl 1571 | .slupsk.pl 1572 | .sos.pl 1573 | .sosnowiec.pl 1574 | .stalowa-wola.pl 1575 | .starachowice.pl 1576 | .stargard.pl 1577 | .suwalki.pl 1578 | .swidnica.pl 1579 | .swiebodzin.pl 1580 | .swinoujscie.pl 1581 | .szczecin.pl 1582 | .szczytno.pl 1583 | .szkola.pl 1584 | .targi.pl 1585 | .tarnobrzeg.pl 1586 | .tgory.pl 1587 | .tm.pl 1588 | .tourism.pl 1589 | .travel.pl 1590 | .turek.pl 1591 | .turystyka.pl 1592 | .tychy.pl 1593 | .ustka.pl 1594 | .walbrzych.pl 1595 | .warmia.pl 1596 | .warszawa.pl 1597 | .waw.pl 1598 | .wegrow.pl 1599 | .wielun.pl 1600 | .wlocl.pl 1601 | .wloclawek.pl 1602 | .wolomin.pl 1603 | .wroclaw.pl 1604 | .zachpomor.pl 1605 | .zagan.pl 1606 | .zarow.pl 1607 | .zgora.pl 1608 | .zgorzelec.pl 1609 | .pm 1610 | .pn 1611 | .co.pn 1612 | .net.pn 1613 | .org.pn 1614 | .eu.pn 1615 | .in.pn 1616 | .pr 1617 | .com.pr 1618 | .alumni.pr 1619 | .biz.pr 1620 | .edu.pr 1621 | .exalumnos.pr 1622 | .gov.pr 1623 | .info.pr 1624 | .isla.pr 1625 | .name.pr 1626 | .net.pr 1627 | .nom.pr 1628 | .org.pr 1629 | .pro.pr 1630 | .pro 1631 | .aaa.pro 1632 | .aca.pro 1633 | .acct.pro 1634 | .avocat.pro 1635 | .bar.pro 1636 | .cpa.pro 1637 | .eng.pro 1638 | .jur.pro 1639 | .law.pro 1640 | .med.pro 1641 | .recht.pro 1642 | .arc.pro 1643 | .bus.pro 1644 | .cfp.pro 1645 | .chi.pro 1646 | .chiro.pro 1647 | .dds.pro 1648 | .den.pro 1649 | .dent.pro 1650 | .ed.pro 1651 | .min.pro 1652 | .nitr.pro 1653 | .nur.pro 1654 | .nurse.pro 1655 | .opt.pro 1656 | .pa.pro 1657 | .pha.pro 1658 | .pod.pro 1659 | .pr.pro 1660 | .prof.pro 1661 | .prx.pro 1662 | .pt.pro 1663 | .teach.pro 1664 | .vet.pro 1665 | .productions 1666 | .properties 1667 | .ps 1668 | .فلسطين 1669 | .com.ps 1670 | .net.ps 1671 | .org.ps 1672 | .gov.ps 1673 | .plo.ps 1674 | .pt 1675 | .gov.pt 1676 | .int.pt 1677 | .nome.pt 1678 | .publ.pt 1679 | .com.pt 1680 | .edu.pt 1681 | .net.pt 1682 | .org.pt 1683 | .pub 1684 | .pw 1685 | .co.pw 1686 | .ed.pw 1687 | .go.pw 1688 | .ne.pw 1689 | .or.pw 1690 | .py 1691 | .com.py 1692 | .coop.py 1693 | .edu.py 1694 | .gov.py 1695 | .mil.py 1696 | .net.py 1697 | .org.py 1698 | .qc.com 1699 | .qa 1700 | .قطر 1701 | .com.qa 1702 | .net.qa 1703 | .org.qa 1704 | .edu.qa 1705 | .gov.qa 1706 | .mil.qa 1707 | .name.qa 1708 | .sch.qa 1709 | .qpon 1710 | .radio.am 1711 | .ru.com 1712 | .radio.fm 1713 | .re 1714 | .com.re 1715 | .asso.re 1716 | .nom.re 1717 | .red 1718 | .reise 1719 | .reisen 1720 | .rentals 1721 | .repair 1722 | .report 1723 | .rest 1724 | .reviews 1725 | .rich 1726 | .ro 1727 | .arts.ro 1728 | .co.ro 1729 | .com.ro 1730 | .info.ro 1731 | .nom.ro 1732 | .nt.ro 1733 | .org.ro 1734 | .rec.ro 1735 | .store.ro 1736 | .tm.ro 1737 | .www.ro 1738 | .firm.ro 1739 | .ro.ro 1740 | .rocks 1741 | .rs 1742 | .срб 1743 | .co.rs 1744 | .edu.rs 1745 | .org.rs 1746 | .ac.rs 1747 | .gov.rs 1748 | .in.rs 1749 | .ru 1750 | .рф 1751 | .ac.ru 1752 | .com.ru 1753 | .edu.ru 1754 | .gov.ru 1755 | .int.ru 1756 | .mil.ru 1757 | .msk.ru 1758 | .net.ru 1759 | .org.ru 1760 | .pp.ru 1761 | .spb.ru 1762 | .ruhr 1763 | .rw 1764 | .ac.rw 1765 | .co.rw 1766 | .com.rw 1767 | .edu.rw 1768 | .gouv.rw 1769 | .gov.rw 1770 | .int.rw 1771 | .mil.rw 1772 | .net.rw 1773 | .sa.com 1774 | .se.com 1775 | .com.sa 1776 | .sa 1777 | .edu.sa 1778 | .gov.sa 1779 | .med.sa 1780 | .net.sa 1781 | .org.sa 1782 | .pub.sa 1783 | .sch.sa 1784 | .السعودية 1785 | .com.sb 1786 | .net.sb 1787 | .org.sb 1788 | .sb 1789 | .edu.sb 1790 | .gov.sb 1791 | .sc 1792 | .com.sc 1793 | .net.sc 1794 | .org.sc 1795 | .edu.sc 1796 | .gov.sc 1797 | .sd 1798 | .com.sd 1799 | .edu.sd 1800 | .gov.sd 1801 | .info.sd 1802 | .med.sd 1803 | .net.sd 1804 | .org.sd 1805 | .tv.sd 1806 | .se 1807 | .a.se 1808 | .ac.se 1809 | .b.se 1810 | .bd.se 1811 | .c.se 1812 | .d.se 1813 | .e.se 1814 | .f.se 1815 | .g.se 1816 | .h.se 1817 | .i.se 1818 | .k.se 1819 | .l.se 1820 | .m.se 1821 | .n.se 1822 | .o.se 1823 | .org.se 1824 | .p.se 1825 | .parti.se 1826 | .pp.se 1827 | .press.se 1828 | .r.se 1829 | .s.se 1830 | .t.se 1831 | .tm.se 1832 | .u.se 1833 | .w.se 1834 | .x.se 1835 | .y.se 1836 | .z.se 1837 | .services 1838 | .sexy 1839 | .sg 1840 | .சிங்கப்பூர் 1841 | .新加坡 1842 | .com.sg 1843 | .edu.sg 1844 | .net.sg 1845 | .org.sg 1846 | .gov.sg 1847 | .per.sg 1848 | .sh 1849 | .co.sh 1850 | .com.sh 1851 | .edu.sh 1852 | .gov.sh 1853 | .net.sh 1854 | .nom.sh 1855 | .org.sh 1856 | .shiksha 1857 | .si 1858 | .ae.si 1859 | .at.si 1860 | .cn.si 1861 | .co.si 1862 | .de.si 1863 | .uk.si 1864 | .us.si 1865 | .sj 1866 | .sk 1867 | .sl 1868 | .com.sl 1869 | .edu.sl 1870 | .gov.sl 1871 | .net.sl 1872 | .org.sl 1873 | .sm 1874 | .sn 1875 | .art.sn 1876 | .com.sn 1877 | .edu.sn 1878 | .gouv.sn 1879 | .org.sn 1880 | .perso.sn 1881 | .univ.sn 1882 | .so 1883 | .social 1884 | .solar 1885 | .solutions 1886 | .soy 1887 | .sr 1888 | .st 1889 | .co.st 1890 | .com.st 1891 | .consulado.st 1892 | .edu.st 1893 | .embaixada.st 1894 | .gov.st 1895 | .mil.st 1896 | .net.st 1897 | .org.st 1898 | .principe.st 1899 | .saotome.st 1900 | .store.st 1901 | .su 1902 | .supplies 1903 | .supply 1904 | .support 1905 | .surgery 1906 | .sv 1907 | .com.sv 1908 | .edu.sv 1909 | .gob.sv 1910 | .org.sv 1911 | .red.sv 1912 | .sx 1913 | .sy 1914 | .سوريا 1915 | .systems 1916 | .co.sz 1917 | .sz 1918 | .ac.sz 1919 | .org.sz 1920 | .tax 1921 | .tc 1922 | .biz.tc 1923 | .td 1924 | .tel 1925 | .tf 1926 | .tg 1927 | .co.th 1928 | .th 1929 | .ac.th 1930 | .go.th 1931 | .in.th 1932 | .mi.th 1933 | .net.th 1934 | .or.th 1935 | .ไทย 1936 | .tienda 1937 | .tj 1938 | .co.tj 1939 | .com.tj 1940 | .ac.tj 1941 | .aero.tj 1942 | .biz.tj 1943 | .coop.tj 1944 | .dyn.tj 1945 | .edu.tj 1946 | .go.tj 1947 | .gov.tj 1948 | .info.tj 1949 | .int.tj 1950 | .mil.tj 1951 | .museum.tj 1952 | .my.tj 1953 | .name.tj 1954 | .net.tj 1955 | .org.tj 1956 | .per.tj 1957 | .pro.tj 1958 | .web.tj 1959 | .tk 1960 | .tl 1961 | .com.tl 1962 | .in.tl 1963 | .na.tl 1964 | .net.tl 1965 | .org.tl 1966 | .tm 1967 | .tn 1968 | .تونس 1969 | .com.tn 1970 | .net.tn 1971 | .org.tn 1972 | .agrinet.tn 1973 | .defense.tn 1974 | .edunet.tn 1975 | .ens.tn 1976 | .fin.tn 1977 | .gov.tn 1978 | .ind.tn 1979 | .info.tn 1980 | .intl.tn 1981 | .mincom.tn 1982 | .nat.tn 1983 | .perso.tn 1984 | .rnrt.tn 1985 | .rns.tn 1986 | .rnu.tn 1987 | .tourism.tn 1988 | .to 1989 | .tokyo 1990 | .tools 1991 | .town 1992 | .toys 1993 | .tp 1994 | .biz.tr 1995 | .com.tr 1996 | .info.tr 1997 | .tv.tr 1998 | .tr 1999 | .av.tr 2000 | .bbs.tr 2001 | .bel.tr 2002 | .dr.tr 2003 | .edu.tr 2004 | .gen.tr 2005 | .gov.tr 2006 | .k12.tr 2007 | .name.tr 2008 | .nc.tr 2009 | .net.tr 2010 | .org.tr 2011 | .pol.tr 2012 | .tel.tr 2013 | .tsk.tr 2014 | .web.tr 2015 | .trade 2016 | .training 2017 | .travel 2018 | .tt 2019 | .co.tt 2020 | .com.tt 2021 | .net.tt 2022 | .aero.tt 2023 | .biz.tt 2024 | .cat.tt 2025 | .coop.tt 2026 | .info.tt 2027 | .int.tt 2028 | .jobs.tt 2029 | .mobi.tt 2030 | .museum.tt 2031 | .name.tt 2032 | .org.tt 2033 | .pro.tt 2034 | .tel.tt 2035 | .travel.tt 2036 | .tv 2037 | .tw 2038 | .台湾 2039 | .台灣 2040 | .com.tw 2041 | .net.tw 2042 | .org.tw 2043 | .club.tw 2044 | .ebiz.tw 2045 | .edu.tw 2046 | .game.tw 2047 | .gov.tw 2048 | .idv.tw 2049 | .mil.tw 2050 | .tz 2051 | .ac.tz 2052 | .co.tz 2053 | .go.tz 2054 | .hotel.tz 2055 | .info.tz 2056 | .me.tz 2057 | .mil.tz 2058 | .mobi.tz 2059 | .ne.tz 2060 | .or.tz 2061 | .sc.tz 2062 | .tv.tz 2063 | .us.com 2064 | .uy.com 2065 | .uk.com 2066 | .uk.net 2067 | .us.org 2068 | .ua 2069 | .укр 2070 | .com.ua 2071 | .cherkassy.ua 2072 | .cherkasy.ua 2073 | .chernigov.ua 2074 | .chernovtsy.ua 2075 | .ck.ua 2076 | .cn.ua 2077 | .crimea.ua 2078 | .cv.ua 2079 | .dn.ua 2080 | .dnepropetrovsk.ua 2081 | .dnipropetrovsk.ua 2082 | .donetsk.ua 2083 | .dp.ua 2084 | .edu.ua 2085 | .gov.ua 2086 | .if.ua 2087 | .in.ua 2088 | .ivano-frankivsk.ua 2089 | .kh.ua 2090 | .kharkiv.ua 2091 | .kharkov.ua 2092 | .kherson.ua 2093 | .khmelnitskiy.ua 2094 | .kiev.ua 2095 | .kirovograd.ua 2096 | .km.ua 2097 | .kr.ua 2098 | .ks.ua 2099 | .lg.ua 2100 | .lt.ua 2101 | .lugansk.ua 2102 | .lutsk.ua 2103 | .lviv.ua 2104 | .mk.ua 2105 | .net.ua 2106 | .nikolaev.ua 2107 | .od.ua 2108 | .odesa.ua 2109 | .odessa.ua 2110 | .org.ua 2111 | .pl.ua 2112 | .poltava.ua 2113 | .rovno.ua 2114 | .rv.ua 2115 | .sebastopol.ua 2116 | .sm.ua 2117 | .sumy.ua 2118 | .te.ua 2119 | .ternopil.ua 2120 | .uz.ua 2121 | .uzhgorod.ua 2122 | .vinnica.ua 2123 | .vn.ua 2124 | .volyn.ua 2125 | .yalta.ua 2126 | .zaporizhzhe.ua 2127 | .zhitomir.ua 2128 | .zp.ua 2129 | .zt.ua 2130 | .ug 2131 | .co.ug 2132 | .ne.ug 2133 | .or.ug 2134 | .sc.ug 2135 | .ac.ug 2136 | .com.ug 2137 | .go.ug 2138 | .org.ug 2139 | .uk 2140 | .co.uk 2141 | .ltd.uk 2142 | .me.uk 2143 | .org.uk 2144 | .plc.uk 2145 | .ac.uk 2146 | .gov.uk 2147 | .net.uk 2148 | .sch.uk 2149 | .um 2150 | .university 2151 | .uno 2152 | .us 2153 | .uy 2154 | .com.uy 2155 | .edu.uy 2156 | .gub.uy 2157 | .mil.uy 2158 | .net.uy 2159 | .org.uy 2160 | .uz 2161 | .co.uz 2162 | .com.uz 2163 | .va 2164 | .vacations 2165 | .vc 2166 | .com.vc 2167 | .net.vc 2168 | .org.vc 2169 | .ve 2170 | .co.ve 2171 | .com.ve 2172 | .net.ve 2173 | .org.ve 2174 | .tec.ve 2175 | .edu.ve 2176 | .gob.ve 2177 | .info.ve 2178 | .int.ve 2179 | .mil.ve 2180 | .web.ve 2181 | .vg 2182 | .vi 2183 | .co.vi 2184 | .com.vi 2185 | .k12.vi 2186 | .net.vi 2187 | .org.vi 2188 | .viajes 2189 | .villas 2190 | .vision 2191 | .vn 2192 | .com.vn 2193 | .net.vn 2194 | .org.vn 2195 | .ac.vn 2196 | .biz.vn 2197 | .edu.vn 2198 | .gov.vn 2199 | .health.vn 2200 | .info.vn 2201 | .int.vn 2202 | .name.vn 2203 | .pro.vn 2204 | .voting 2205 | .vu 2206 | .wang 2207 | .watch 2208 | .webcam 2209 | .wed 2210 | .wf 2211 | .wien 2212 | .wiki 2213 | .works 2214 | .ws 2215 | .wtf 2216 | .在线 2217 | .移动 2218 | .онлайн 2219 | .сайт 2220 | .орг 2221 | .中文网 2222 | .सरकार.भारत 2223 | .कंपनी.भारत 2224 | .संगठन 2225 | .机构 2226 | .网址 2227 | .xxx 2228 | .xyz 2229 | .ye 2230 | .اليمن 2231 | .co.ye 2232 | .com.ye 2233 | .gov.ye 2234 | .ltd.ye 2235 | .me.ye 2236 | .net.ye 2237 | .org.ye 2238 | .plc.ye 2239 | .yt 2240 | .yu 2241 | .za.com 2242 | .za 2243 | .co.za 2244 | .ac.za 2245 | .alt.za 2246 | .edu.za 2247 | .gov.za 2248 | .net.za 2249 | .nom.za 2250 | .org.za 2251 | .web.za 2252 | .zm 2253 | .ac.zm 2254 | .co.zm 2255 | .com.zm 2256 | .edu.zm 2257 | .gov.zm 2258 | .net.zm 2259 | .org.zm 2260 | .sch.zm 2261 | .zone 2262 | .zw 2263 | .co.zw 2264 | .ac.zw 2265 | .com.zw 2266 | .org.zw 2267 | -------------------------------------------------------------------------------- /spec/dominatrix_spec.rb: -------------------------------------------------------------------------------- 1 | # encoding: UTF-8 2 | require 'spec_helper' 3 | 4 | RSpec.describe Dominatrix do 5 | describe '#parse' do 6 | shared_examples_for 'a valid URL' do |domain| 7 | it 'returns the domain when given a string' do 8 | expect(subject.parse(url)).to eq domain 9 | end 10 | 11 | it 'returns the domain when given a URI' do 12 | uri = URI.parse(url) 13 | expect(subject.parse(uri)).to eq domain 14 | end 15 | end 16 | 17 | describe 'for a valid LTR URI' do 18 | let(:url) { 'http://www.example.com/foo?x=y&y=z' } 19 | it_behaves_like 'a valid URL', 'example.com' 20 | end 21 | 22 | describe 'for a valid RTL URI', skip: 'RTL extensions not working' do 23 | let(:url) { 'http://مليسيا.مليسيا.مليسيا' } 24 | it_behaves_like 'a valid URL', 'مليسيا.مليسيا' 25 | end 26 | 27 | describe 'for an invalid URI' do 28 | it 'raises an error' do 29 | url = 42 30 | expect { subject.parse(url) }.to raise_error ArgumentError 31 | end 32 | end 33 | 34 | describe 'for an unparseable URI' do 35 | it 'raises an error' do 36 | url = ':' 37 | expect { subject.parse(url) }.to raise_error URI::InvalidURIError 38 | end 39 | end 40 | 41 | describe 'for an nonexistent domain' do 42 | it 'raises an error' do 43 | url = 'http://www.example.foo' 44 | expect { subject.parse(url) }.to raise_error Dominatrix::NotFoundError 45 | end 46 | end 47 | 48 | describe 'when given a custom list of extensions' do 49 | subject { described_class.new(extensions) } 50 | 51 | let(:extensions) { %w[.uk .co.uk].to_set } 52 | 53 | it 'returns the domain for a valid URI' do 54 | expect(subject.parse('http://www.example.co.uk')).to eq 'example.co.uk' 55 | end 56 | 57 | it 'raises an error for an invalid URI' do 58 | expect { subject.parse('http://www.example.com') }.to raise_error Dominatrix::NotFoundError 59 | end 60 | end 61 | end 62 | 63 | describe '.parse' do 64 | subject { described_class } 65 | 66 | let(:url) { 'http://www.google.com' } 67 | 68 | it 'delegates to a new instance' do 69 | instance = subject.new 70 | allow(subject).to receive(:new).and_return(instance) 71 | expect(instance).to receive(:parse).with(url) 72 | subject.parse(url) 73 | end 74 | 75 | it 'includes the provided extension list' do 76 | extensions = %w[.uk .co.uk].to_set 77 | instance = subject.new(extensions) 78 | allow(subject).to receive(:new).with(extensions).and_return(instance) 79 | expect(instance).to receive(:parse).with(url) 80 | subject.parse(url, extensions) 81 | end 82 | end 83 | 84 | describe '.default_extensions' do 85 | subject { described_class } 86 | 87 | it 'returns a set' do 88 | expect(subject.default_extensions).to be_a Set 89 | end 90 | 91 | it 'prefixes each extension with a dot' do 92 | expect(subject.default_extensions).to all start_with('.') 93 | end 94 | end 95 | end 96 | -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | require 'dominatrix' 2 | 3 | # Requires supporting ruby files with custom matchers and macros, etc, 4 | # in spec/support/ and its subdirectories. 5 | Dir[File.expand_path('spec/support/**/*.rb')].each(&method(:require)) 6 | 7 | RSpec.configure do |config| 8 | # Run specs in random order to surface order dependencies. If you find an 9 | # order dependency and want to debug it, you can fix the order by providing 10 | # the seed, which is printed after each run. 11 | # --seed 1234 12 | config.order = 'random' 13 | 14 | # Enable filtered runs. 15 | config.run_all_when_everything_filtered = true 16 | config.filter_run focus: true 17 | end 18 | --------------------------------------------------------------------------------