├── .gitattributes ├── .gitignore ├── .phpcs.xml.dist ├── .scrutinizer.yml ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── VERSION ├── composer.json ├── docs ├── FAQ.md ├── HANDLERS.md ├── ROADMAP.md └── UPGRADE.md ├── example ├── example.cli.php ├── example.php └── whois.icon.png ├── handler.template.php ├── output.txt ├── phpunit.xml.dist ├── poc.php ├── src ├── Cli │ └── CliHelper.php ├── Handlers │ ├── AbstractHandler.php │ ├── AeHandler.php │ ├── AeroHandler.php │ ├── AgHandler.php │ ├── AmHandler.php │ ├── AppHandler.php │ ├── AsiaHandler.php │ ├── AtHandler.php │ ├── AuHandler.php │ ├── BeHandler.php │ ├── BhHandler.php │ ├── BizHandler.php │ ├── BrHandler.php │ ├── ClHandler.php │ ├── DeHandler.php │ ├── EduHandler.php │ ├── HandlerInterface.php │ ├── KiwiHandler.php │ └── UkHandler.php ├── IpTools.php ├── Utils.php ├── Whois.php ├── WhoisClient.php ├── npdata.ser ├── whois.ca.php ├── whois.cat.php ├── whois.ch.php ├── whois.cn.php ├── whois.co.php ├── whois.co.za.php ├── whois.coop.php ├── whois.cz.php ├── whois.dev.php ├── whois.dk.php ├── whois.eu.php ├── whois.fi.php ├── whois.fj.php ├── whois.fm.php ├── whois.fr.php ├── whois.gtld.afternic.php ├── whois.gtld.alldomains.php ├── whois.gtld.ascio.php ├── whois.gtld.assorted.php ├── whois.gtld.corporatedomains.php ├── whois.gtld.directnic.php ├── whois.gtld.domaindiscover.php ├── whois.gtld.domainpeople.php ├── whois.gtld.dotster.php ├── whois.gtld.dreamhost.php ├── whois.gtld.enom.php ├── whois.gtld.fabulous.php ├── whois.gtld.fastdomain.php ├── whois.gtld.gandi.php ├── whois.gtld.genericb.php ├── whois.gtld.godaddy.php ├── whois.gtld.iana.php ├── whois.gtld.interdomain.php ├── whois.gtld.itsyourdomain.php ├── whois.gtld.joker.php ├── whois.gtld.markmonitor.php ├── whois.gtld.melbourneit.php ├── whois.gtld.moniker.php ├── whois.gtld.name.php ├── whois.gtld.nameintel.php ├── whois.gtld.namejuice.php ├── whois.gtld.nameking.php ├── whois.gtld.names4ever.php ├── whois.gtld.namevault.php ├── whois.gtld.networksolutions.php ├── whois.gtld.nicco.php ├── whois.gtld.nicline.php ├── whois.gtld.onlinenic.php ├── whois.gtld.opensrs.php ├── whois.gtld.ovh.php ├── whois.gtld.php ├── whois.gtld.psiusa.php ├── whois.gtld.publicdomainregistry.php ├── whois.gtld.register.php ├── whois.gtld.rrpproxy.php ├── whois.gtld.schlund.php ├── whois.gtld.srsplus.php ├── whois.gtld.tmagnic.php ├── whois.gtld.tvcorp.php ├── whois.gtld.wildwestdomains.php ├── whois.hu.php ├── whois.ie.php ├── whois.il.php ├── whois.in.php ├── whois.info.php ├── whois.int.php ├── whois.ip.afrinic.php ├── whois.ip.apnic.php ├── whois.ip.arin.php ├── whois.ip.krnic.php ├── whois.ip.lacnic.php ├── whois.ip.php ├── whois.ip.ripe.php ├── whois.ir.php ├── whois.is.php ├── whois.it.php ├── whois.jp.php ├── whois.london.php ├── whois.lt.php ├── whois.lu.php ├── whois.ly.php ├── whois.me.php ├── whois.mobi.php ├── whois.museum.php ├── whois.mx.php ├── whois.name.php ├── whois.nl.php ├── whois.no.php ├── whois.nu.php ├── whois.nz.php ├── whois.org.php ├── whois.org.za.php ├── whois.parser.php ├── whois.ph.php ├── whois.pl.php ├── whois.pro.php ├── whois.pt.php ├── whois.ro.php ├── whois.ru.php ├── whois.rwhois.php ├── whois.sc.php ├── whois.se.php ├── whois.servers.php ├── whois.si.php ├── whois.su.php ├── whois.tel.php ├── whois.today.php ├── whois.travel.php ├── whois.us.php ├── whois.ve.php ├── whois.ws.php ├── whois.xxx.php └── whois.zanet.php ├── test.txt ├── tests ├── BaseTestCase.php ├── Handlers │ ├── AeHandlerTest.php │ ├── AeroHandlerTest.php │ ├── AfternicHandlerTest.php │ ├── AgHandlerTest.php │ ├── AmHandlerTest.php │ ├── AppHandlerTest.php │ ├── AsiaHandlerTest.php │ ├── AtHandlerTest.php │ ├── AuHandlerTest.php │ ├── BeHandlerTest.php │ ├── BhHandlerTest.php │ ├── BizHandlerTest.php │ ├── BrHandlerTest.php │ ├── CaHandlerTest.php │ ├── CatHandlerTest.php │ ├── ChHandlerTest.php │ ├── ClHandlerTest.php │ ├── CnHandlerTest.php │ ├── CoHandlerTest.php │ ├── CoZaHandlerTest.php │ ├── CoopHandlerTest.php │ ├── CzHandlerTest.php │ ├── DeHandlerTest.php │ ├── DevHandlerTest.php │ ├── DkHandlerTest.php │ ├── EduHandlerTest.php │ ├── EuHandlerTest.php │ ├── FiHandlerTest.php │ ├── FjHandlerTest.php │ ├── FmHandlerTest.php │ ├── FrHandlerTest.php │ ├── GtldHandlerTest.php │ ├── HandlerTest.php │ ├── HuHandlerTest.php │ ├── IeHandlerTest.php │ ├── IlHandlerTest.php │ ├── KiwiHandlerTest.php │ ├── LondonHandlerTest.php │ ├── NoHandlerTest.php │ ├── OrgHandlerTest.php │ ├── PhHandlerTest.php │ ├── RuHandlerTest.php │ ├── SeHandlerTest.php │ ├── TodayHandlerTest.php │ ├── UkHandlerTest.php │ ├── UsHandlerTest.php │ └── WsHandlerTest.php ├── IpToolsTest.php ├── ParserTest.php ├── WhoisClientTest.php ├── WhoisTest.php ├── bootstrap.php ├── fixtures │ ├── 4ever.de.txt │ ├── a2ba91bff88c6983f6af010c41236206df64001d.de.txt │ ├── aeda.ae.txt │ ├── berkeley.edu.txt │ ├── blaueskreuz.ch.txt │ ├── buydomains.com.txt │ ├── china.cn.txt │ ├── cira.ca.txt │ ├── cityescape.ph.txt │ ├── creart.ch.txt │ ├── create-fixture.bat │ ├── denic.de.txt │ ├── domainregistry.ie.txt │ ├── domains.london.txt │ ├── dominis.cat.txt │ ├── dot.fm.txt │ ├── dot.ph.txt │ ├── eurid.eu.txt │ ├── ficora.fi.txt │ ├── google.ae.txt │ ├── google.app.smitty.txt │ ├── google.app.txt │ ├── google.ca.txt │ ├── google.cat.txt │ ├── google.ch.txt │ ├── google.cl.txt │ ├── google.cn.txt │ ├── google.co.txt │ ├── google.co.uk.txt │ ├── google.co.za.txt │ ├── google.com.txt │ ├── google.coop.txt │ ├── google.cz.txt │ ├── google.de.txt │ ├── google.dk.txt │ ├── google.eu.txt │ ├── google.fi.txt │ ├── google.fm.txt │ ├── google.fr.txt │ ├── google.hu.txt │ ├── google.ie.txt │ ├── google.kiwi.txt │ ├── google.net.txt │ ├── google.no.txt │ ├── google.org.txt │ ├── google.ru.txt │ ├── google.se.txt │ ├── google.us.txt │ ├── google.ws.txt │ ├── hello.kiwi.txt │ ├── humblebundle.de.txt │ ├── isoc.am.txt │ ├── lemonade.fr.txt │ ├── modx.today.txt │ ├── neulevel.biz.txt │ ├── neustar.us.txt │ ├── nic.ae.txt │ ├── nic.aero.txt │ ├── nic.ag.txt │ ├── nic.asia.txt │ ├── nic.at.txt │ ├── nic.be.txt │ ├── nic.bh.txt │ ├── nic.co.txt │ ├── nic.coop.txt │ ├── nic.cz.txt │ ├── nic.fr.txt │ ├── nic.hu.txt │ ├── nic.london.txt │ ├── norid.no.txt │ ├── olsns.co.uk.txt │ ├── ostap.dev.txt │ ├── registro.br.txt │ ├── samoanic.ws.txt │ ├── scottishrecoveryconsortium.org.txt │ ├── sex.co.za.txt │ ├── smile.coop.txt │ ├── tapuz.co.il.txt │ ├── telstra.com.au.txt │ ├── usp.ac.fj.txt │ ├── vibrantdigitalfuture.uk.txt │ └── рег.рф.txt └── ip_handlerTest.php ├── testsuite.php ├── testsuite.txt └── update-fixtures.php /.gitattributes: -------------------------------------------------------------------------------- 1 | /composer.lock -merge 2 | 3 | # Set the default behavior, in case someone doesn't have core.autocrlf set. 4 | * text=auto 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Composer template 2 | composer.lock 3 | composer.phar 4 | /vendor 5 | 6 | nbproject 7 | 8 | ### JetBrains template 9 | .idea/ 10 | 11 | *.phar 12 | 13 | coverage.clover 14 | *.cache 15 | *.diff 16 | -------------------------------------------------------------------------------- /.phpcs.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | ./src 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.scrutinizer.yml: -------------------------------------------------------------------------------- 1 | tools: 2 | external_code_coverage: true -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # https://config.travis-ci.com/explore 2 | os: linux 3 | dist: xenial 4 | 5 | language: php 6 | 7 | php: 8 | - 7.2 9 | - 7.3 10 | - 7.4 11 | - 8.0 12 | - nightly 13 | 14 | jobs: 15 | fast_finish: true 16 | allow_failures: 17 | - php: nightly 18 | 19 | env: 20 | global: 21 | - XDEBUG_MODE="coverage" 22 | jobs: 23 | # - PREFER_LOWEST="--prefer-lowest --prefer-stable" 24 | - PREFER_LOWEST="" 25 | 26 | 27 | install: 28 | - composer self-update && composer --version 29 | 30 | before_script: 31 | - php -i 32 | - composer validate --no-check-all --strict 33 | - composer update $PREFER_LOWEST 34 | 35 | script: 36 | # - php testsuite.php --ci 37 | - vendor/bin/phpunit --verbose --coverage-clover=coverage.clover 38 | 39 | after_script: 40 | - travis_retry wget https://scrutinizer-ci.com/ocular.phar 41 | - php ocular.phar code-coverage:upload --format=php-clover coverage.clover -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 5.0.0-dev -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsmitty12/phpwhois", 3 | "description": "phpWhois - library for querying whois services and parsing results.", 4 | "keywords": [ 5 | "PHP", 6 | "Whois", 7 | "phpWhois" 8 | ], 9 | "homepage": "http://phpwhois.pw", 10 | "type": "library", 11 | "license": "GPL-2.0-or-later", 12 | "authors": [ 13 | { 14 | "name": "Mark Jeftovic", 15 | "email": "markjr@easydns.com" 16 | }, 17 | { 18 | "name": "David Saez Padros", 19 | "email": "david@ols.es" 20 | }, 21 | { 22 | "name": "Ross Golder", 23 | "email": "ross@golder.org" 24 | }, 25 | { 26 | "name": "Dmitry Lukashin", 27 | "email": "dmitry@lukashin.ru" 28 | }, 29 | { 30 | "name": "Joshua Smith", 31 | "email": "jsmith@jssm.com" 32 | } 33 | ], 34 | "require": { 35 | "php": ">=7.2", 36 | "algo26-matthias/idna-convert": "^3.0" 37 | }, 38 | "require-dev": { 39 | "dms/phpunit-arraysubset-asserts": "~0.1", 40 | "phpunit/phpunit": "^8.0 || ^9.0" 41 | }, 42 | "suggest": { 43 | "lib-openssl": "*" 44 | }, 45 | "autoload": { 46 | "psr-4": { 47 | "phpWhois\\": "src/" 48 | } 49 | }, 50 | "autoload-dev": { 51 | "psr-4": { 52 | "phpWhois\\": "tests/" 53 | }, 54 | "classmap": [ 55 | "src/", 56 | "tests/" 57 | ] 58 | }, 59 | "config": { 60 | "sort-packages": true 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /docs/FAQ.md: -------------------------------------------------------------------------------- 1 | Whois2 FAQ v1.2 June 06/00 Mark Jeftovic 2 | 3 | Q's 4 | === 5 | 6 | 1.0 How do I tell if a domain is available or not? 7 | 8 | 1.1 I'm getting **"Fatal error: Call to unsupported or undefined function php preg_replace()"** why? 9 | 10 | 1.2 whois2 breaks under PHP4, I get ```$result["rawdata"]``` array now instead of the actual data! 11 | 12 | Q & A's 13 | ------- 14 | 15 | ### 1.0 How do I tell if a domain is available or not? 16 | 17 | The big difference between this and version 1 is the absence of the 18 | FOUND flag. 19 | 20 | Anyways, for .com/.net/.org you can tell that a domain is available 21 | or not if the regyinfo array is empty. 22 | 23 | ```php 24 | $whois = new Whois("test.com"); 25 | $result = $whois->lookup(); 26 | 27 | if(empty($result["regyinfo"])) { 28 | // available 29 | } else { 30 | // taken 31 | } 32 | ``` 33 | 34 | Keep in mind that this isn't 100% surefire. A domain can be dropped from 35 | the registry for nonpayment, and remain in limbo for up to 5 days where 36 | it still cannot be registered. Also, whois servers can lag behind the root 37 | servers by as much as 24 or even 48 hours in extreme cases. 38 | 39 | You can also check if there are any nameserver RR's defined (and thus infer 40 | that the domain is in the root servers) by calling ns_rr_defined($domain) 41 | in the utils extended class. 42 | 43 | For other TLD's it's up to you to either grep the results for what you know 44 | to be a "not found" string, or write an extended handler that does a cleaner 45 | job of it, which you can then submit to this project and immortalize yourself :) 46 | 47 | 48 | ### 1.1 I'm getting "Fatal error: Call to unsupported or undefined function preg_replace()" why? 49 | 50 | All that means is that the version of PHP you're using doesn't have 51 | the perl regular expression module. You can either upgrade or in 52 | the meantime just move netsol.whois out of the php_include_path, 53 | you won't get nicely parsed output for netsol domains but you 54 | will still at least get the raw output then. 55 | -------------------------------------------------------------------------------- /docs/ROADMAP.md: -------------------------------------------------------------------------------- 1 | Development roadmap 2 | =================== 3 | 4 | General ideas 5 | ------------- 6 | Originally phpWhois was developed a long ago having support of PHP4 in mind. 7 | 8 | Now it is needed to update the codebase to support the modern features like: 9 | 10 | - [Composer](https://getcomposer.org/ "Composer") 11 | - Continuous integration service [Travis](https://travis-ci.org/ "Travis") 12 | with [PHPUnit](https://phpunit.de/ "PHPUnit") 13 | - Code quality testing with [Scrutinizer](https://scrutinizer-ci.com "Scrutinizer") 14 | - Throw exceptions 15 | - Add support for binding source ip 16 | 17 | Code must be reworked to support 18 | [PSR standards](http://www.php-fig.org/ "PSR standards"). 19 | 20 | Current major version of phpWhois is **4**. Global new features will be 21 | implemented in major version **5**. 22 | 23 | It is good idea to keep the backwards compatibility for version 5. However 24 | applications using version 4 may need to be updated because of using 25 | namespaced classes in version 5. 26 | 27 | New TLDs 28 | -------- 29 | Last few years there was a bunch of new top-level domains spinned by ICANN, 30 | including international domains with non-latin symbols. 31 | 32 | New TLDs should be monitored and added to phpWhois database. 33 | 34 | There are some 'default' whois servers which names are like `whois.tld`, 35 | `nic.tld`. We can rely on these names or explicitly set the names in tlds list 36 | 37 | Documentation 38 | ------------- 39 | Having in mind ICANN's great plans for running new TLDs there should be more 40 | detailed documentation regarding contributing to repository. 41 | 42 | Also we should pay attention to the internal code documenting, which later 43 | can be compiled into API documentation with 44 | [PHPDocumentor](http://www.phpdoc.org/ "PHPDocumentor"). 45 | 46 | Optional features 47 | ----------------- 48 | Maybe there should be additional methods implemented like `getDaysToExpire` 49 | which will be reporting a number of days left to domain expiration. -------------------------------------------------------------------------------- /docs/UPGRADE.md: -------------------------------------------------------------------------------- 1 | Migration from v4 to v5 2 | ======================= 3 | 4 | This document is intended to guide users through the process of migration from old version v4 to v5. 5 | 6 | What's new in v5? 7 | ---------------------------------------- 8 | 9 | 1. You can check the list of new features in CHANGELOG.md 10 | 2. Minimum supported version of PHP is **5.3** because of namespaces 11 | 3. Project has external depencies and can be installed only through composer 12 | -------------------------------------------------------------------------------- /example/example.cli.php: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/php -n 2 | lookup($domain); 43 | 44 | print_r($result); -------------------------------------------------------------------------------- /example/whois.icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsmitty12/phpWhois/2f88d8f02e95b3d959e564b476ecdf791135896d/example/whois.icon.png -------------------------------------------------------------------------------- /handler.template.php: -------------------------------------------------------------------------------- 1 | 2 | 7 | 16 | 17 | 18 | ./tests 19 | 20 | 21 | 22 | 23 | src 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /poc.php: -------------------------------------------------------------------------------- 1 | useServer('org', '127.0.0.1:9999'); 6 | print_r($whois->lookup('example.org')); 7 | -------------------------------------------------------------------------------- /src/Cli/CliHelper.php: -------------------------------------------------------------------------------- 1 | 'domain.name', 19 | 'Registrar Name:' => 'domain.sponsor', 20 | 'Status:' => 'domain.status', 21 | 'Registrant Contact ID:' => 'owner.handle', 22 | 'Registrant Contact Name:' => 'owner.name', 23 | 'Registrant Contact Organisation:' => 'owner.organization', 24 | 'Tech Contact Name:' => 'tech.name', 25 | 'Tech Contact ID:' => 'tech.handle', 26 | 'Tech Contact Organisation:' => 'tech.organization', 27 | 'Name Server:' => 'domain.nserver.', 28 | ]; 29 | 30 | $r = [ 31 | 'regrinfo' => $this->generic_parser_b($data_str['rawdata'], $items, 'ymd'), 32 | 'regyinfo' => [ 33 | 'referrer' => 'http://www.nic.ae', 34 | 'registrar' => 'UAENIC', 35 | ], 36 | 'rawdata' => $data_str['rawdata'], 37 | ]; 38 | 39 | return $r; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/Handlers/AeroHandler.php: -------------------------------------------------------------------------------- 1 | $this->generic_parser_b($data_str['rawdata'], [], 'ymd'), 19 | 'regyinfo' => [ 20 | 'referrer' => 'http://www.nic.aero', 21 | 'registrar' => 'Societe Internationale de Telecommunications Aeronautiques SC', 22 | ], 23 | 'rawdata' => $data_str['rawdata'], 24 | ]; 25 | 26 | return $r; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Handlers/AgHandler.php: -------------------------------------------------------------------------------- 1 | $this->generic_parser_b($data_str['rawdata']), 19 | 'regyinfo' => [ 20 | 'referrer' => 'http://www.nic.ag', 21 | 'registrar' => 'Nic AG', 22 | ], 23 | 'rawdata' => $data_str['rawdata'], 24 | ]; 25 | 26 | return $r; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Handlers/AmHandler.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 19 | 'domain.name' => 'Domain name:', 20 | 'domain.created' => 'Registered:', 21 | 'domain.changed' => 'Last modified:', 22 | 'domain.nserver' => 'DNS servers:', 23 | 'domain.status' => 'Status:', 24 | 'tech' => 'Technical contact:', 25 | 'admin' => 'Administrative contact:', 26 | ]; 27 | 28 | $rawData = $this->removeBlankLines($data_str['rawdata']); 29 | $r = [ 30 | 'regrinfo' => $this->get_blocks($rawData, $items), 31 | 'rawdata' => $data_str['rawdata'], 32 | ]; 33 | 34 | if (!empty($r['regrinfo']['domain']['name'])) { 35 | $r['regrinfo'] = $this->get_contacts($r['regrinfo']); 36 | $r['regrinfo']['registered'] = 'yes'; 37 | } else { 38 | $r = []; 39 | $r['regrinfo']['registered'] = 'no'; 40 | } 41 | 42 | $r['regyinfo'] = [ 43 | 'referrer' => 'http://www.isoc.am', 44 | 'registrar' => 'ISOCAM', 45 | ]; 46 | 47 | return $r; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Handlers/AppHandler.php: -------------------------------------------------------------------------------- 1 | $this->generic_parser_b($data_str['rawdata']), 16 | 'rawdata' => $data_str['rawdata'], 17 | ]; 18 | 19 | return $r; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Handlers/AsiaHandler.php: -------------------------------------------------------------------------------- 1 | $this->generic_parser_b($data_str['rawdata']), 19 | 'regyinfo' => [ 20 | 'referrer' => 'http://www.dotasia.org/', 21 | 'registrar' => 'DotAsia', 22 | ], 23 | 'rawdata' => $data_str['rawdata'], 24 | ]; 25 | 26 | return $r; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Handlers/AuHandler.php: -------------------------------------------------------------------------------- 1 | 'domain.name', 19 | 'Last Modified:' => 'domain.changed', 20 | 'Registrar Name:' => 'domain.sponsor', 21 | 'Status:' => 'domain.status', 22 | 'Domain ROID:' => 'domain.handle', 23 | 'Registrant:' => 'owner.organization', 24 | 'Registrant Contact ID:' => 'owner.handle', 25 | 'Registrant Contact Email:' => 'owner.email', 26 | 'Registrant Contact Name:' => 'owner.name', 27 | 'Tech Contact Name:' => 'tech.name', 28 | 'Tech Contact Email:' => 'tech.email', 29 | 'Tech Contact ID:' => 'tech.handle', 30 | 'Name Server:' => 'domain.nserver.', 31 | ]; 32 | 33 | $r = [ 34 | 'regrinfo' => $this->generic_parser_b($data_str['rawdata'], $items), 35 | 'regyinfo' => [ 36 | 'referrer' => 'http://www.aunic.net', 37 | 'registrar' => 'AU-NIC', 38 | ], 39 | 'rawdata' => $data_str['rawdata'], 40 | ]; 41 | 42 | return $r; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/Handlers/BeHandler.php: -------------------------------------------------------------------------------- 1 | 'Domain:', 19 | 'domain.status' => 'Status:', 20 | 'domain.nserver' => 'Nameservers:', 21 | 'domain.created' => 'Registered:', 22 | 'owner' => 'Licensee:', 23 | 'admin' => 'Onsite Contacts:', 24 | 'tech' => 'Registrar Technical Contacts:', 25 | 'agent' => 'Registrar:', 26 | 'agent.uri' => 'Website:', 27 | ]; 28 | 29 | $trans = [ 30 | 'company name2:' => '', 31 | ]; 32 | 33 | $rawData = $this->removeBlankLines($data_str['rawdata']); 34 | $r = [ 35 | 'regrinfo' => $this->get_blocks($rawData, $items), 36 | 'regyinfo' => [ 37 | 'referrer' => 'http://www.domain-registry.nl', 38 | 'registrar' => 'DNS Belgium', 39 | ], 40 | 'rawdata' => $data_str['rawdata'], 41 | ]; 42 | 43 | $domainStatus = $r['regrinfo']['domain']['status'] ; 44 | if ($domainStatus === 'REGISTERED' || $domainStatus === 'NOT AVAILABLE') { 45 | $r['regrinfo']['registered'] = 'yes'; 46 | 47 | $r['regrinfo'] = $this->get_contacts($r['regrinfo'], $trans); 48 | 49 | if (isset($r['regrinfo']['agent'])) { 50 | $sponsor = $this->get_contact($r['regrinfo']['agent'], $trans); 51 | unset($r['regrinfo']['agent']); 52 | $r['regrinfo']['domain']['sponsor'] = $sponsor; 53 | } 54 | 55 | $r = $this->format_dates($r, '-mdy'); 56 | } else { 57 | $r['regrinfo']['registered'] = 'no'; 58 | } 59 | 60 | return $r; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/Handlers/BhHandler.php: -------------------------------------------------------------------------------- 1 | $this->generic_parser_b($data_str['rawdata']), 19 | 'rawdata' => $data_str['rawdata'], 20 | ]; 21 | 22 | if (empty($r['regrinfo']['domain']['created'])) { 23 | $r['regrinfo']['registered'] = 'no'; 24 | } else { 25 | $r['regrinfo']['registered'] = 'yes'; 26 | } 27 | $r['regyinfo'] = [ 28 | 'referrer' => 'http://www.nic.bh/', 29 | 'registrar' => 'NIC-BH', 30 | ]; 31 | 32 | return $r; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Handlers/BizHandler.php: -------------------------------------------------------------------------------- 1 | $this->generic_parser_b($data_str['rawdata'], [], 'mdy'), 19 | 'regyinfo' => [ 20 | 'referrer' => 'http://www.neulevel.biz', 21 | 'registrar' => 'NEULEVEL', 22 | ], 23 | 'rawdata' => $data_str['rawdata'], 24 | ]; 25 | 26 | return $r; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Handlers/ClHandler.php: -------------------------------------------------------------------------------- 1 | '(Administrative Contact)', 19 | 'tech' => 'Contacto Técnico (Technical Contact):', 20 | // 'domain.nserver' => 'Servidores de nombre (Domain servers):', 21 | 'domain.nserver' => 'Name server:', 22 | 'domain.changed' => '(Database last updated on):', 23 | 'domain.created' => 'Creation date:', 24 | 'domain.expires' => 'Expiration date:', 25 | ]; 26 | 27 | $trans = [ 28 | 'organización:' => 'organization', 29 | 'nombre :' => 'name', 30 | ]; 31 | 32 | $rawData = $this->removeBlankLines($data_str['rawdata']); 33 | $r = [ 34 | 'rawdata' => $data_str['rawdata'], 35 | 'regrinfo' => $this->easy_parser($rawData, $items, 'd-m-y', $trans), 36 | ]; 37 | 38 | if (!isset($r['regrinfo']['domain']['name'])) { 39 | $r['regrinfo']['domain']['name'] = $query; 40 | } 41 | 42 | $r['regyinfo'] = [ 43 | 'referrer' => 'http://www.nic.cl', 44 | 'registrar' => 'NIC Chile', 45 | ]; 46 | 47 | return $r; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Handlers/DeHandler.php: -------------------------------------------------------------------------------- 1 | 'Domain:', 19 | 'domain.nserver.' => 'Nserver:', 20 | 'domain.nserver.#' => 'Nsentry:', 21 | 'domain.status' => 'Status:', 22 | 'domain.changed' => 'Changed:', 23 | 'domain.desc.' => 'Descr:', 24 | 'owner' => '[Holder]', 25 | 'admin' => '[Admin-C]', 26 | 'tech' => '[Tech-C]', 27 | 'zone' => '[Zone-C]', 28 | ]; 29 | 30 | $extra = [ 31 | 'city:' => 'address.city', 32 | 'postalcode:' => 'address.pcode', 33 | 'countrycode:' => 'address.country', 34 | 'remarks:' => '', 35 | 'sip:' => 'sip', 36 | 'type:' => '', 37 | ]; 38 | 39 | $rawData = $this->removeBlankLines($data_str['rawdata']); 40 | $r = [ 41 | 'rawdata' => $data_str['rawdata'], 42 | 'regrinfo' => $this->easy_parser($rawData, $items, 'ymd', $extra), 43 | 'regyinfo' => [ 44 | 'registrar' => 'DENIC eG', 45 | 'referrer' => 'http://www.denic.de/', 46 | ], 47 | ]; 48 | 49 | if (!isset($r['regrinfo']['domain']['status']) || $r['regrinfo']['domain']['status'] === 'free') { 50 | $r['regrinfo']['registered'] = 'no'; 51 | } else { 52 | if (isset($r['regrinfo']['domain']['changed'])) { 53 | $r['regrinfo']['domain']['changed'] = substr($r['regrinfo']['domain']['changed'], 0, 10); 54 | } 55 | $r['regrinfo']['registered'] = 'yes'; 56 | } 57 | 58 | return $r; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/Handlers/EduHandler.php: -------------------------------------------------------------------------------- 1 | 'Domain name:', 19 | 'domain.sponsor' => 'Registrar:', 20 | 'domain.nserver' => 'Name Servers:', 21 | 'domain.changed' => 'Domain record last updated:', 22 | 'domain.created' => 'Domain record activated:', 23 | 'domain.expires' => 'Domain expires:', 24 | 'owner' => 'Registrant:', 25 | 'admin' => 'Administrative Contact:', 26 | 'tech' => 'Technical Contact:', 27 | 'billing' => 'Billing Contact:', 28 | ]; 29 | 30 | $rawData = $this->removeBlankLines($data_str['rawdata']); 31 | $r = [ 32 | 'rawdata' => $data_str['rawdata'], 33 | 'regrinfo' => $this->easy_parser($rawData, $items, 'dmy'), 34 | ]; 35 | 36 | if (isset($b['tech'])) { 37 | if ($r['regrinfo']['tech']['name'] === 'Same as above') { 38 | $r['regrinfo']['tech'] = $r['regrinfo']['admin']; 39 | } 40 | } 41 | 42 | if (!isset($r['regrinfo']['domain']['name'])) { 43 | $r['regrinfo']['domain']['name'] = $query; 44 | } 45 | 46 | $r['regyinfo']['referrer'] = 'http://whois.educause.net'; 47 | $r['regyinfo']['registrar'] = 'EDUCASE'; 48 | 49 | return $r; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/Handlers/HandlerInterface.php: -------------------------------------------------------------------------------- 1 | generic_parser_b($data_str['rawdata']); 15 | $data_str['regyinfo'] = $this->parseRegistryInfo($data_str['rawdata']); 16 | 17 | return $data_str; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/whois.ca.php: -------------------------------------------------------------------------------- 1 | $data_str['rawdata'], 39 | ]; 40 | $r['regrinfo'] = generic_parser_b($data_str['rawdata'], [], 'ymd'); 41 | 42 | $r['regyinfo'] = array( 43 | 'registrar' => 'CIRA', 44 | 'referrer' => 'http://www.cira.ca/' 45 | ); 46 | return $r; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/whois.cat.php: -------------------------------------------------------------------------------- 1 | $data_str['rawdata'], 38 | ]; 39 | 40 | $r['regrinfo'] = generic_parser_b($data_str['rawdata']); 41 | 42 | if (!isset($r['regrinfo']['domain']['name'])) { 43 | $r['regrinfo']['registered'] = 'no'; 44 | } 45 | 46 | $r['regyinfo']['referrer'] = 'http://www.domini.cat/'; 47 | $r['regyinfo']['registrar'] = 'Domini punt CAT'; 48 | 49 | return $r; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/whois.co.php: -------------------------------------------------------------------------------- 1 | $data_str['rawdata'], 38 | ]; 39 | 40 | $r['regrinfo'] = generic_parser_b($data_str['rawdata'], [], 'mdy'); 41 | $r['regyinfo']['referrer'] = 'http://www.cointernet.com.co/'; 42 | $r['regyinfo']['registrar'] = '.CO Internet, S.A.S.'; 43 | 44 | return $r; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/whois.dev.php: -------------------------------------------------------------------------------- 1 | generic_parser_b($data_str['rawdata']), 38 | 'rawdata' => $data_str['rawdata'], 39 | ]; 40 | 41 | return $r; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/whois.fm.php: -------------------------------------------------------------------------------- 1 | $data_str['rawdata'], 38 | ]; 39 | 40 | $r['regrinfo'] = generic_parser_b($data_str['rawdata']); 41 | 42 | if (!isset($r['regrinfo']['domain']['name'])) { 43 | $r['regrinfo']['registered'] = 'no'; 44 | } 45 | 46 | $r['regyinfo']['referrer'] = 'http://www.dot.dm'; 47 | $r['regyinfo']['registrar'] = 'dotFM'; 48 | 49 | return $r; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/whois.gtld.afternic.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact', 40 | 'tech' => 'Technical Contact', 41 | 'zone' => 'Zone Contact', 42 | 'domain.name' => 'Domain Name:', 43 | 'domain.changed' => 'Last updated on', 44 | 'domain.created' => 'Domain created on', 45 | 'domain.expires' => 'Domain expires on' 46 | ); 47 | 48 | return easy_parser($data_str, $items, 'dmy', array(), false, true); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/whois.gtld.alldomains.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative', 40 | 'tech' => 'Technical', 41 | 'domain.name' => 'Domain name:', 42 | 'domain.sponsor' => 'Registrar:', 43 | 'domain.nserver.' => 'Domain servers in listed order:' 44 | ); 45 | 46 | return easy_parser($data_str, $items, 'ymd'); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/whois.gtld.ascio.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative ', 40 | 'tech' => 'Technical ', 41 | 'domain.name' => 'Domain name:', 42 | 'domain.nserver.' => 'Domain servers in listed order:', 43 | 'domain.created' => 'Record created:', 44 | 'domain.expires' => 'Record expires:', 45 | 'domain.changed' => 'Record last updated:' 46 | ); 47 | 48 | return easy_parser($data_str, $items, 'ymd', array(), false, true); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/whois.gtld.assorted.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact:', 40 | 'tech' => 'Technical Contact:', 41 | 'domain.name' => 'Domain Name:', 42 | 'domain.nserver.' => 'Domain servers in listed order:', 43 | 'domain.created' => 'Record created on', 44 | 'domain.expires' => 'Record expires on', 45 | 'domain.changed' => 'Record last updated' 46 | ); 47 | 48 | return easy_parser($data_str, $items, 'ymd', array(), false, true); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/whois.gtld.corporatedomains.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact', 40 | 'tech' => 'Technical Contact', 41 | 'zone' => 'Zone Contact', 42 | 'domain.name' => 'Domain Name:', 43 | 'domain.changed' => 'Last updated on', 44 | 'domain.created' => 'Domain created on', 45 | 'domain.expires' => 'Domain expires on', 46 | 'domain.sponsor' => 'Registrar Name....:', 47 | 'domain.nserver' => 'DNS Servers:' 48 | ); 49 | 50 | return easy_parser($data_str, $items, 'dmy', array(), false, true); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/whois.gtld.directnic.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact', 40 | 'tech' => 'Technical Contact', 41 | 'domain.name' => 'Domain Name:', 42 | 'domain.sponsor' => 'Registration Service Provider:', 43 | 'domain.nserver' => 'Domain servers in listed order:', 44 | 'domain.changed' => 'Record last updated ', 45 | 'domain.created' => 'Record created on ', 46 | 'domain.expires' => 'Record expires on ', 47 | '' => 'By submitting a WHOIS query' 48 | ); 49 | 50 | return easy_parser($data_str, $items, 'mdy', array(), false, true); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/whois.gtld.domaindiscover.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact', 40 | 'tech' => 'Technical Contact', 41 | 'zone' => 'Zone Contact', 42 | 'domain.name' => 'Domain Name:', 43 | 'domain.changed' => 'Last updated on', 44 | 'domain.created' => 'Domain created on', 45 | 'domain.expires' => 'Domain expires on' 46 | ); 47 | 48 | return easy_parser($data_str, $items, 'dmy', array(), false, true); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/whois.gtld.domainpeople.php: -------------------------------------------------------------------------------- 1 | 'Registrant Contact:', 40 | 'admin' => 'Administrative Contact:', 41 | 'tech' => 'Technical Contact:', 42 | 'domain.name' => 'Domain name:', 43 | 'domain.sponsor' => 'Registration Service Provided By:', 44 | 'domain.referrer' => 'Contact:', 45 | 'domain.nserver.' => 'Name Servers:', 46 | 'domain.created' => 'Creation date:', 47 | 'domain.expires' => 'Expiration date:', 48 | // 'domain.changed' => 'Record last updated on', 49 | 'domain.status' => 'Status:' 50 | ); 51 | 52 | $r = easy_parser($data_str, $items, 'dmy', array(), false, true); 53 | if (isset($r['domain']['sponsor']) && is_array($r['domain']['sponsor'])) { 54 | $r['domain']['sponsor'] = $r['domain']['sponsor'][0]; 55 | } 56 | return $r; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/whois.gtld.dotster.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative', 40 | 'tech' => 'Technical', 41 | 'domain.nserver' => 42 | 'Domain servers in listed order:', 43 | 'domain.name' => 'Domain name:', 44 | 'domain.created' => 'Created on:', 45 | 'domain.expires' => 'Expires on:', 46 | 'domain.changed' => 'Last Updated on:', 47 | 'domain.sponsor' => 'Registrar:' 48 | ); 49 | 50 | return easy_parser($data_str, $items, 'dmy'); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/whois.gtld.dreamhost.php: -------------------------------------------------------------------------------- 1 | 'Registrant Contact:', 39 | 'admin' => 'Administrative Contact:', 40 | 'tech' => 'Technical Contact:', 41 | 'billing' => 'Billing Contact:', 42 | 'domain.name' => 'Domain Name:', 43 | 'domain.nserver' => 'Domain servers in listed order:', 44 | 'domain.created' => 'Record created on', 45 | 'domain.expires' => 'Record expires on' 46 | ); 47 | 48 | $r = easy_parser($data_str, $items, 'dmy', array(), false, true); 49 | if (isset($r['domain']['sponsor']) && is_array($r['domain']['sponsor'])) { 50 | $r['domain']['sponsor'] = $r['domain']['sponsor'][0]; 51 | } 52 | return $r; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/whois.gtld.fabulous.php: -------------------------------------------------------------------------------- 1 | 'Domain ' . $query . ':', 39 | 'admin' => 'Administrative contact:', 40 | 'tech' => 'Technical contact:', 41 | 'billing' => 'Billing contact:', 42 | '' => 'Record dates:' 43 | ); 44 | 45 | $r = easy_parser($data_str, $items, 'mdy', array(), false, true); 46 | 47 | if (!isset($r['tech'])) { 48 | $r['tech'] = $r['billing']; 49 | } 50 | 51 | if (!isset($r['admin'])) { 52 | $r['admin'] = $r['tech']; 53 | } 54 | 55 | return $r; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/whois.gtld.gandi.php: -------------------------------------------------------------------------------- 1 | 'owner-c', 39 | 'admin' => 'admin-c', 40 | 'tech' => 'tech-c', 41 | 'billing' => 'bill-c' 42 | ); 43 | 44 | $trans = array( 45 | 'nic-hdl:' => 'handle', 46 | 'person:' => 'name', 47 | 'zipcode:' => 'address.pcode', 48 | 'city:' => 'address.city', 49 | 'lastupdated:' => 'changed', 50 | 'owner-name:' => '' 51 | ); 52 | 53 | return easy_parser($data_str, $items, 'dmy', $trans); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/whois.gtld.genericb.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact', 40 | 'tech' => 'Technical Contact', 41 | 'domain.name' => 'Domain Name:', 42 | 'domain.nserver.' => 'Domain servers in listed order:', 43 | 'domain.created' => 'Created on:', 44 | 'domain.expires' => 'Expires on:', 45 | 'domain.changed' => 'Last Updated on:', 46 | 'domain.sponsor' => 'Registered through:' 47 | ); 48 | 49 | $r = get_blocks($data_str, $items); 50 | $r['owner'] = get_contact($r['owner']); 51 | $r['admin'] = get_contact($r['admin'], array(), true); 52 | $r['tech'] = get_contact($r['tech'], array(), true); 53 | return format_dates($r, 'dmy'); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/whois.gtld.iana.php: -------------------------------------------------------------------------------- 1 | 'contact: administrative', 39 | 'tech' => 'contact: technical', 40 | 'domain.nserver.' => 'nserver:', 41 | 'domain.created' => 'created:', 42 | 'domain.changed' => 'changed:', 43 | 'domain.source' => 'source:', 44 | 'domain.name' => 'domain:', 45 | 'disclaimer.' => '% ' 46 | ); 47 | 48 | return easy_parser($data_str, $items, 'Ymd', array(), false, false, 'owner'); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/whois.gtld.itsyourdomain.php: -------------------------------------------------------------------------------- 1 | 'Registrant', 39 | 'admin' => 'Administrative', 40 | 'tech' => 'Technical', 41 | 'billing' => 'Billing', 42 | 'domain.name' => 'Domain:', 43 | 'domain.nserver.' => 'Domain Name Servers:', 44 | 'domain.created' => 'Record created on ', 45 | 'domain.expires' => 'Record expires on ', 46 | 'domain.changed' => 'Record last updated on ' 47 | ); 48 | 49 | return easy_parser($data_str, $items, 'mdy'); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/whois.gtld.moniker.php: -------------------------------------------------------------------------------- 1 | 'Registrant', 39 | 'admin' => 'Administrative ', 40 | 'tech' => 'Technical ', 41 | 'billing' => 'Billing ', 42 | 'domain.name' => 'Domain Name:', 43 | 'domain.nserver.' => 'Domain servers in listed order:', 44 | 'domain.created' => 'Record created on: ', 45 | 'domain.expires' => 'Domain Expires on: ', 46 | 'domain.changed' => 'Database last updated on: ' 47 | ); 48 | 49 | return easy_parser($data_str, $items, 'ymd'); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/whois.gtld.name.php: -------------------------------------------------------------------------------- 1 | 'REGISTRANT CONTACT INFO', 39 | 'admin' => 'ADMINISTRATIVE CONTACT INFO', 40 | 'tech' => 'TECHNICAL CONTACT INFO', 41 | 'billing' => 'BILLING CONTACT INFO', 42 | 'domain.name' => 'Domain Name:', 43 | 'domain.sponsor' => 'Registrar', 44 | 'domain.created' => 'Creation Date', 45 | 'domain.expires' => 'Expiration Date' 46 | ); 47 | 48 | $extra = array( 49 | 'phone:' => 'phone', 50 | 'email address:' => 'email' 51 | ); 52 | 53 | return easy_parser($data_str, $items, 'y-m-d', $extra, false, true); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/whois.gtld.namejuice.php: -------------------------------------------------------------------------------- 1 | 'Registrant Contact:', 39 | 'admin' => 'Administrative Contact:', 40 | 'tech' => 'Technical Contact:', 41 | 'domain.name' => 'Domain name:', 42 | 'domain.nserver.' => 'Name Servers:', 43 | 'domain.created' => 'Creation date:', 44 | 'domain.expires' => 'Expiration date:', 45 | 'domain.changed' => 'Update date:', 46 | 'domain.status' => 'Status:', 47 | 'domain.sponsor' => 'Registration Service Provided By:' 48 | ); 49 | 50 | return easy_parser($data_str, $items, 'dmy', array(), true, true); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/whois.gtld.names4ever.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact', 40 | 'tech' => 'Technical Contact', 41 | 'domain.name' => 'Domain Name:', 42 | 'domain.sponsor' => 'Registrar Name....:', 43 | 'domain.referrer' => 'Registrar Homepage:', 44 | 'domain.nserver' => 'DNS Servers:', 45 | 'domain.created' => 'Record created on', 46 | 'domain.expires' => 'Record expires on', 47 | 'domain.changed' => 'Record last updated on', 48 | 'domain.status' => 'Domain status:' 49 | ); 50 | 51 | return easy_parser($data_str, $items, 'dmy', array(), false, true); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/whois.gtld.namevault.php: -------------------------------------------------------------------------------- 1 | 'Registrant', 39 | 'admin' => 'Administrative Contact:', 40 | 'tech' => 'Technical Contact:', 41 | 'billing' => 'Billing Contact:', 42 | 'domain.name' => 'Domain Name:', 43 | 'domain.nserver.' => 'Name Servers', 44 | 'domain.created' => 'Creation Date:', 45 | 'domain.expires' => 'Expiration Date:', 46 | 'domain.status' => 'Status:' 47 | ); 48 | 49 | return easy_parser($data_str, $items, 'dmy', array(), true, true); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/whois.gtld.networksolutions.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact', 40 | 'tech' => 'Technical Contact', 41 | 'domain.name' => 'Domain Name:', 42 | 'domain.nserver.' => 'Domain servers in listed order:', 43 | 'domain.created' => 'Record created on', 44 | 'domain.expires' => 'Record expires on' 45 | ); 46 | 47 | return easy_parser($data_str, $items, 'dmy', array(), true, true); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/whois.gtld.nicline.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative contact:', 40 | 'tech' => 'Technical contact:', 41 | 'domain.name' => 'Domain name:', 42 | 'domain.nserver.' => 'Domain servers in listed order:', 43 | 'domain.created' => 'Created:', 44 | 'domain.expires' => 'Expires:', 45 | 'domain.changed' => 'Last updated:' 46 | ); 47 | 48 | return easy_parser($data_str, $items, 'dmy'); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/whois.gtld.opensrs.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact', 40 | 'tech' => 'Technical Contact', 41 | 'domain.name' => 'Domain name:', 42 | '' => 'Registration Service Provider:', 43 | 'domain.nserver' => 'Domain servers in listed order:', 44 | 'domain.changed' => 'Record last updated on', 45 | 'domain.created' => 'Record created on', 46 | 'domain.expires' => 'Record expires on', 47 | 'domain.sponsor' => 'Registrar of Record:' 48 | ); 49 | 50 | $r = easy_parser($data_str, $items, 'dmy', array(), false, true); 51 | 52 | if (isset($r['domain']['sponsor']) && is_array($r['domain']['sponsor'])) { 53 | $r['domain']['sponsor'] = $r['domain']['sponsor'][0]; 54 | } 55 | 56 | return $r; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/whois.gtld.ovh.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact:', 40 | 'tech' => 'Technical Contact:', 41 | 'billing' => 'Billing Contact:', 42 | 'domain.sponsor' => 'Registrar of Record:', 43 | 'domain.changed' => 'Record last updated on', 44 | 'domain.expires' => 'Record expires on', 45 | 'domain.created' => 'Record created on' 46 | ); 47 | 48 | return easy_parser($data_str, $items, 'mdy', array(), false, true); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/whois.gtld.publicdomainregistry.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'owner#' => '(Registrant):', 40 | 'admin' => 'Administrative Contact', 41 | 'tech' => 'Technical Contact', 42 | 'billing' => 'Billing Contact', 43 | 'domain.name' => 'Domain name:', 44 | 'domain.sponsor' => 'Registration Service Provided By:', 45 | 'domain.nserver' => 'Domain servers in listed order:', 46 | 'domain.changed' => 'Record last updated ', 47 | 'domain.created' => 'Record created on', 48 | 'domain.created#' => 'Creation Date:', 49 | 'domain.expires' => 'Record expires on', 50 | 'domain.expires#' => 'Expiration Date:', 51 | 'domain.status' => 'Status:' 52 | ); 53 | 54 | return easy_parser($data_str, $items, 'mdy', array(), true, true); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/whois.gtld.srsplus.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative', 40 | 'tech' => 'Technical', 41 | 'billing' => 'Billing', 42 | 'domain.name' => 'Domain Name:', 43 | 'domain.nserver' => 'Domain servers:', 44 | 'domain.created' => 'Record created on', 45 | 'domain.expires' => 'Record expires on' 46 | ); 47 | 48 | return easy_parser($data_str, $items, 'ymd', array(), true, true); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/whois.gtld.tmagnic.php: -------------------------------------------------------------------------------- 1 | 'Owner Contact:', 39 | 'admin' => 'Admin Contact', 40 | 'tech' => 'Technical Contact', 41 | 'domain.name' => 'Domain Name:', 42 | 'domain.nserver.' => 'Domain servers in listed order:', 43 | 'domain.expires' => 'Record expires on: ', 44 | 'domain.changed' => 'Record last updated on: ', 45 | '' => 'Zone Contact', 46 | '#' => 'Punycode Name:' 47 | ); 48 | 49 | return easy_parser($data_str, $items, 'ymd', array(), false, true); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/whois.gtld.tvcorp.php: -------------------------------------------------------------------------------- 1 | 'Registrant', 39 | 'admin' => 'Admin', 40 | 'tech' => 'Technical', 41 | 'billing' => 'Billing', 42 | 'domain.nserver.' => 'Domain servers:', 43 | 'domain.created' => 'Record created on', 44 | 'domain.expires' => 'Record expires on' 45 | ); 46 | 47 | return easy_parser($data_str, $items, 'mdy'); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/whois.gtld.wildwestdomains.php: -------------------------------------------------------------------------------- 1 | 'Registrant:', 39 | 'admin' => 'Administrative Contact:', 40 | 'tech' => 'Technical Contact:', 41 | 'domain.name' => 'Domain name:', 42 | 'domain.sponsor' => 'Registered through:', 43 | 'domain.nserver' => 'Domain servers in listed order:', 44 | 'domain.created' => 'Created on:', 45 | 'domain.expires' => 'Expires on:', 46 | 'domain.changed' => 'Last Updated on:' 47 | ); 48 | 49 | return easy_parser($data_str, $items, 'mdy'); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/whois.hu.php: -------------------------------------------------------------------------------- 1 | 'domain.name', 38 | 'record created:' => 'domain.created', 39 | ]; 40 | 41 | $r = [ 42 | 'rawdata' => $data_str['rawdata'], 43 | ]; 44 | 45 | $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'ymd'); 46 | 47 | if (isset($r['regrinfo']['domain'])) { 48 | $r['regrinfo']['registered'] = 'yes'; 49 | } else { 50 | $r['regrinfo']['registered'] = 'no'; 51 | } 52 | 53 | $r['regyinfo'] = [ 54 | 'referrer' => 'http://www.nic.hu', 55 | 'registrar' => 'HUNIC', 56 | ]; 57 | 58 | return $r; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/whois.in.php: -------------------------------------------------------------------------------- 1 | 'http://whois.registry.in', 41 | 'registrar' => 'INRegistry' 42 | ); 43 | return $r; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/whois.info.php: -------------------------------------------------------------------------------- 1 | 'http://whois.afilias.info', 41 | 'registrar' => 'Afilias Global Registry Services' 42 | ); 43 | return $r; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/whois.int.php: -------------------------------------------------------------------------------- 1 | parse($data_str['rawdata'], $query); 40 | $r['regyinfo']['referrer'] = 'http://www.iana.org/int-dom/int.htm'; 41 | $r['regyinfo']['registrar'] = 'Internet Assigned Numbers Authority'; 42 | return $r; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/whois.ir.php: -------------------------------------------------------------------------------- 1 | 'handle', 44 | 'org' => 'organization', 45 | 'e-mail' => 'email', 46 | 'person' => 'name', 47 | 'fax-no' => 'fax', 48 | 'domain' => 'name' 49 | ); 50 | 51 | $contacts = array( 52 | 'admin-c' => 'admin', 53 | 'tech-c' => 'tech', 54 | 'holder-c' => 'owner' 55 | ); 56 | 57 | $reg = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'Ymd'); 58 | 59 | $r = array(); 60 | $r['regrinfo'] = $reg; 61 | $r['regyinfo'] = array( 62 | 'referrer' => 'http://whois.nic.ir/', 63 | 'registrar' => 'NIC-IR' 64 | ); 65 | return $r; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/whois.london.php: -------------------------------------------------------------------------------- 1 | generic_parser_b($data_str['rawdata']), 38 | 'rawdata' => $data_str['rawdata'], 39 | ]; 40 | 41 | if (!isset($r['regrinfo']['domain']['name'])) { 42 | $r['regrinfo']['domain']['name'] = $query; 43 | } 44 | 45 | return $r; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/whois.me.php: -------------------------------------------------------------------------------- 1 | 'http://domain.me', 41 | 'registrar' => 'doMEn' 42 | ); 43 | return $r; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/whois.mobi.php: -------------------------------------------------------------------------------- 1 | 'http://musedoma.museum', 41 | 'registrar' => 'Museum Domain Management Association' 42 | ); 43 | return $r; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/whois.name.php: -------------------------------------------------------------------------------- 1 | 'http://www.nic.name/', 41 | 'registrar' => 'Global Name Registry' 42 | ); 43 | return $r; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/whois.no.php: -------------------------------------------------------------------------------- 1 | 'domain.name', 38 | 'Created:' => 'domain.created', 39 | 'Last updated:' => 'domain.changed', 40 | 'NORID Handle...............:' => 'domain.handle', 41 | ]; 42 | 43 | $r = [ 44 | 'regrinfo' => generic_parser_b($data_str['rawdata'], $items, 'ymd', false), 45 | 'regyinfo' => [ 46 | 'referrer' => 'https://www.norid.no/en/', 47 | 'registrar' => 'Norid', 48 | ], 49 | 'rawdata' => $data_str['rawdata'], 50 | ]; 51 | 52 | $r['regrinfo']['registered'] = isset($r['regrinfo']['domain']['name']) ? 'yes' : 'no'; 53 | 54 | return $r; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/whois.org.php: -------------------------------------------------------------------------------- 1 | generic_parser_b($data_str['rawdata']), 44 | ]; 45 | 46 | if (!strncmp($data_str['rawdata'][0], 'WHOIS LIMIT EXCEEDED', 20)) { 47 | $r['regrinfo']['registered'] = 'unknown'; 48 | } 49 | 50 | $r['regyinfo']['referrer'] = 'http://www.pir.org/'; 51 | $r['regyinfo']['registrar'] = 'Public Interest Registry'; 52 | 53 | if (!array_key_exists('rawdata', $r) && array_key_exists('rawdata', $data_str)) { 54 | $r['rawdata'] = $data_str['rawdata']; 55 | } 56 | 57 | return $r; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/whois.ph.php: -------------------------------------------------------------------------------- 1 | 'domain.created', 38 | 'changed:' => 'domain.changed', 39 | 'status:' => 'domain.status', 40 | 'nserver:' => 'domain.nserver.' 41 | ]; 42 | 43 | $r = [ 44 | 'regrinfo' => generic_parser_b($data_str['rawdata'], $items), 45 | 'rawdata' => $data_str['rawdata'], 46 | ]; 47 | 48 | if (!isset($r['regrinfo']['domain']['name'])) { 49 | $r['regrinfo']['domain']['name'] = $query; 50 | } 51 | 52 | return $r; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/whois.pl.php: -------------------------------------------------------------------------------- 1 | 'created:', 39 | 'domain.changed' => 'last modified:', 40 | 'domain.sponsor' => 'REGISTRAR:', 41 | '#' => 'WHOIS displays data with a delay not exceeding 15 minutes in relation to the .pl Registry system' 42 | ); 43 | 44 | $r = array(); 45 | $r['regrinfo'] = easy_parser($data_str['rawdata'], $items, 'ymd'); 46 | 47 | $r['regyinfo'] = array( 48 | 'referrer' => 'http://www.dns.pl/english/index.html', 49 | 'registrar' => 'NASK' 50 | ); 51 | return $r; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/whois.pro.php: -------------------------------------------------------------------------------- 1 | 'http://www.nic.sc', 41 | 'registrar' => 'VCS (Pty) Limited' 42 | ); 43 | return $r; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/whois.se.php: -------------------------------------------------------------------------------- 1 | 'domain.name', 39 | 'state:' => 'domain.status.', 40 | 'status:' => 'domain.status.', 41 | 'expires:' => 'domain.expires', 42 | 'created:' => 'domain.created', 43 | 'modified:' => 'domain.changed', 44 | 'nserver:' => 'domain.nserver.', 45 | 'registrar:' => 'domain.sponsor', 46 | 'holder:' => 'owner.handle', 47 | ]; 48 | 49 | $r = []; 50 | $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'ymd', false); 51 | 52 | $r['regrinfo']['registered'] = isset($r['regrinfo']['domain']['name']) ? 'yes' : 'no'; 53 | 54 | $r['regyinfo'] = [ 55 | 'referrer' => 'http://www.nic-se.se', 56 | 'registrar' => 'NIC-SE' 57 | ]; 58 | $r['rawdata'] = $data_str['rawdata']; 59 | return $r; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/whois.si.php: -------------------------------------------------------------------------------- 1 | 'handle', 39 | 'nameserver' => 'nserver' 40 | ); 41 | 42 | $contacts = array( 43 | 'registrant' => 'owner', 44 | 'tech-c' => 'tech' 45 | ); 46 | 47 | $r = array(); 48 | $r['regrinfo'] = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'Ymd'); 49 | $r['regyinfo'] = array( 50 | 'referrer' => 'http://www.arnes.si', 51 | 'registrar' => 'ARNES' 52 | ); 53 | return $r; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/whois.tel.php: -------------------------------------------------------------------------------- 1 | 'http://www.telnic.org', 41 | 'registrar' => 'Telnic' 42 | ); 43 | return $r; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/whois.today.php: -------------------------------------------------------------------------------- 1 | generic_parser_b($data_str['rawdata']), 38 | 'rawdata' => $data_str['rawdata'], 39 | ]; 40 | 41 | if (!isset($r['regrinfo']['domain']['name'])) { 42 | $r['regrinfo']['domain']['name'] = $query; 43 | } 44 | 45 | return $r; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/whois.travel.php: -------------------------------------------------------------------------------- 1 | generic_parser_b($data_str['rawdata'], [], 'ymd'), 44 | 'regyinfo' => [ 45 | 'referrer' => 'http://www.neustar.us', 46 | 'registrar' => 'NEUSTAR INC.', 47 | ], 48 | 'rawdata' => $data_str['rawdata'], 49 | ]; 50 | 51 | return $r; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/whois.xxx.php: -------------------------------------------------------------------------------- 1 | =')) { 16 | self::markTestSkipped('Hangs under php-8.0'); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/Handlers/AeroHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new AeroHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseNicDotAero() 38 | { 39 | $query = 'nic.aero'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'NIC.AERO', 52 | 'changed' => '2020-03-08', 53 | 'created' => '2002-03-08', 54 | 'expires' => '2021-03-08', 55 | ], 56 | 'registered' => 'yes', // Currently broken 57 | ]; 58 | 59 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 60 | $this->assertArrayHasKey('rawdata', $actual); 61 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /tests/Handlers/AgHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new AgHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseNicDotAg() 38 | { 39 | $query = 'nic.ag'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'NIC.AG', 52 | 'changed' => '2019-03-02', 53 | 'created' => '1998-05-02', 54 | 'expires' => '2025-05-02', 55 | ], 56 | 'registered' => 'yes', 57 | ]; 58 | 59 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 60 | $this->assertArrayHasKey('rawdata', $actual); 61 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /tests/Handlers/AmHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new AmHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseIsocDotAm() 38 | { 39 | $query = 'isoc.am'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'isoc.am', 52 | 'changed' => '2018-03-27', 53 | 'created' => '2000-01-01', 54 | ], 55 | 'registered' => 'yes', 56 | ]; 57 | 58 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 59 | $this->assertArrayHasKey('rawdata', $actual); 60 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /tests/Handlers/AppHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new AppHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseGoogleDotApp() 38 | { 39 | $query = 'google.app'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'google.app', 52 | 'changed' => '2018-04-09', 53 | 'created' => '2018-03-29', 54 | 'expires' => '2019-03-29', 55 | ], 56 | 'registered' => 'yes', 57 | ]; 58 | 59 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 60 | $this->assertArrayHasKey('rawdata', $actual); 61 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /tests/Handlers/AsiaHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new AsiaHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseNicDotAsia() 38 | { 39 | $query = 'nic.asia'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'NIC.ASIA', 52 | 'changed' => '2020-04-28', 53 | 'created' => '2020-02-28', 54 | 'expires' => '2021-02-28', 55 | ], 56 | 'registered' => 'yes', 57 | ]; 58 | 59 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 60 | $this->assertArrayHasKey('rawdata', $actual); 61 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /tests/Handlers/AtHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new AtHandler(); 29 | $this->handler->atepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function nicDotAt() 38 | { 39 | $query = 'nic.at'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | // 'name' => 'nic.at', 52 | 'changed' => '2020-04-27', 53 | ], 54 | 'registered' => 'yes', 55 | ]; 56 | 57 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 58 | $this->assertArrayHasKey('rawdata', $actual); 59 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /tests/Handlers/AuHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new AuHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseTelstraDotComDotAu() 38 | { 39 | $query = 'telstra.com.au'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'TELSTRA.COM.AU', 52 | 'changed' => '2020-04-27', 53 | ], 54 | 'registered' => 'yes', 55 | ]; 56 | 57 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 58 | $this->assertArrayHasKey('rawdata', $actual); 59 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /tests/Handlers/BeHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new BeHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseNicDotBe() 38 | { 39 | $query = 'nic.be'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'nic.be', 52 | // 'changed' => '2018-01-24', 53 | 'created' => '1998-04-01', 54 | ], 55 | 'registered' => 'yes', 56 | ]; 57 | 58 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 59 | $this->assertArrayHasKey('rawdata', $actual); 60 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /tests/Handlers/BhHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new BhHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseNicDotBh() 38 | { 39 | $query = 'nic.bh'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'NIC.BH', 52 | 'changed' => '2019-08-01', 53 | 'created' => '2019-04-24', 54 | 'expires' => '2029-04-24', 55 | ], 56 | 'registered' => 'yes', 57 | ]; 58 | 59 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 60 | $this->assertArrayHasKey('rawdata', $actual); 61 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /tests/Handlers/BizHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new BizHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseNeulevelDotBiz() 38 | { 39 | $query = 'neulevel.biz'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'neulevel.biz', 52 | 'changed' => '2020-03-05', 53 | 'created' => '2001-09-30', 54 | 'expires' => '2020-11-06', 55 | ], 56 | 'registered' => 'yes', 57 | ]; 58 | 59 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 60 | $this->assertArrayHasKey('rawdata', $actual); 61 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /tests/Handlers/BrHandlerTest.php: -------------------------------------------------------------------------------- 1 | handler = new BrHandler(); 29 | $this->handler->deepWhois = false; 30 | } 31 | 32 | /** 33 | * @return void 34 | * 35 | * @test 36 | */ 37 | public function parseRegistroDotBr() 38 | { 39 | $query = 'registro.br'; 40 | 41 | $fixture = $this->loadFixture($query); 42 | $data = [ 43 | 'rawdata' => $fixture, 44 | 'regyinfo' => [], 45 | ]; 46 | 47 | $actual = $this->handler->parse($data, $query); 48 | 49 | $expected = [ 50 | 'domain' => [ 51 | 'name' => 'registro.br', 52 | 'changed' => '2018-04-02', 53 | 'created' => '1999-02-21', 54 | ], 55 | 'registered' => 'yes', 56 | ]; 57 | 58 | Assert::assertArraySubset($expected, $actual['regrinfo'], 'Whois data may have changed'); 59 | $this->assertArrayHasKey('rawdata', $actual); 60 | Assert::assertArraySubset($fixture, $actual['rawdata'], 'Fixture data may be out of date'); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /tests/Handlers/HandlerTest.php: -------------------------------------------------------------------------------- 1 | assertTrue($ipTools->validIp($ip)); 14 | } 15 | 16 | public function validIpsProvider() 17 | { 18 | return array( 19 | array('123.123.123.123'), 20 | array('1a80:1f45::ebb:12'), 21 | ); 22 | } 23 | 24 | /** 25 | * @dataProvider invalidIpsProvider 26 | */ 27 | public function testInvalidIp($ip) 28 | { 29 | $ipTools = new IpTools; 30 | $this->assertFalse($ipTools->validIp($ip)); 31 | } 32 | 33 | public function invalidIpsProvider() 34 | { 35 | return array( 36 | array(''), 37 | array('169.254.255.200'), 38 | array('172.17.255.100'), 39 | array('123.a15.255.100'), 40 | array('fd80::1'), 41 | array('fc80:19c::1'), 42 | array('1a80:1f45::ebm:12'), 43 | array('[1a80:1f45::ebb:12]'), 44 | ); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /tests/WhoisTest.php: -------------------------------------------------------------------------------- 1 | lookup('google.com'); 11 | $this->assertEquals('yes', $result['regrinfo']['registered']); 12 | } 13 | 14 | /** 15 | * @dataProvider domainsProvider 16 | */ 17 | public function testQtype($type, $domain) 18 | { 19 | $whois = new Whois; 20 | $this->assertEquals($type, $whois->getQueryType($domain)); 21 | } 22 | 23 | public function domainsProvider() 24 | { 25 | return array( 26 | array(Whois::QTYPE_DOMAIN, 'www.google.com'), 27 | array(Whois::QTYPE_DOMAIN, 'президент.рф'), 28 | array(Whois::QTYPE_IPV4, '212.212.12.12'), 29 | array(Whois::QTYPE_UNKNOWN, '127.0.0.1'), 30 | array(Whois::QTYPE_IPV6, '1a80:1f45::ebb:12'), 31 | array(Whois::QTYPE_UNKNOWN, 'fc80:19c::1'), 32 | array(Whois::QTYPE_AS, 'ABCD_EF-GH:IJK'), 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 | %1.txt 3 | git add %1.txt 4 | -------------------------------------------------------------------------------- /tests/fixtures/denic.de.txt: -------------------------------------------------------------------------------- 1 | % Restricted rights. 2 | % 3 | % Terms and Conditions of Use 4 | % 5 | % The above data may only be used within the scope of technical or 6 | % administrative necessities of Internet operation or to remedy legal 7 | % problems. 8 | % The use for other purposes, in particular for advertising, is not permitted. 9 | % 10 | % The DENIC whois service on port 43 doesn't disclose any information concerning 11 | % the domain holder, general request and abuse contact. 12 | % This information can be obtained through use of our web-based whois service 13 | % available at the DENIC website: 14 | % http://www.denic.de/en/domains/whois-service/web-whois.html 15 | % 16 | % 17 | 18 | Domain: denic.de 19 | Nserver: ns1.denic.de 2001:668:1f:11:0:0:0:106 77.67.63.106 20 | Nserver: ns2.denic.de 2a02:568:0:2:0:0:0:54 81.91.164.6 21 | Nserver: ns3.denic.de 195.243.137.27 2003:8:14:0:0:0:0:106 22 | Nserver: ns4.denic.net 23 | Dnskey: 257 3 8 AwEAAb/xrM2MD+xm84YNYby6TxkMaC6PtzF2bB9WBB7ux7iqzhViob4GKvQ6L7CkXjyAxfKbTzrdvXoAPpsAPW4pkThReDAVp3QxvUKrkBM8/uWRF3wpaUoPsAHm1dbcL9aiW3lqlLMZjDEwDfU6lxLcPg9d14fq4dc44FvPx6aYcymkgJoYvR6P1wECpxqlEAR2K1cvMtqCqvVESBQV/EUtWiALNuwR2PbhwtBWJd+e8BdFI7OLkit4uYYux6Yu35uyGQ== 24 | Status: connect 25 | Changed: 2020-05-11T15:36:21+02:00 -------------------------------------------------------------------------------- /tests/fixtures/domainregistry.ie.txt: -------------------------------------------------------------------------------- 1 | 2 | % Rights restricted by copyright; http://iedr.ie/index.php/mnudomregs/mnudnssearch/96 3 | % Do not remove this notice 4 | 5 | Domain: domainregistry.ie 6 | Domain Holder: IE Domain Registry Company Limited By Guarantee 7 | Admin-c: IH4-IEDR 8 | Tech-c: ITS2-IEDR 9 | Account Name: IEDR 10 | Registrar Abuse Contact: abuse@iedr.ie 11 | Registration Date: 19-March-1999 12 | Renewal Date: 01-January-2025 13 | Holder-type: NonBillable 14 | Locked status: N 15 | Renewal status: Active 16 | In-zone: 1 17 | Nserver: ns0.iedr.ie 18 | Nserver: ns3.iedr.ie 19 | Nserver: b.ns.ie 20 | Nserver: auth-ns2.heanet.ie 21 | Nserver: auth-ns3.heanet.ie 22 | 23 | 24 | % Important Notice 25 | % If you believe that information published on this page is incorrect, or should not be published, please contact your Registrar, or the IEDR Registration Services Department who will advise you further. 26 | % You can also contact your Registrar or the IEDR if your domain holder name isn’t showing and you would like it to be published. 27 | % Our contact information is available at https://www.iedr.ie/contact-us/ 28 | -------------------------------------------------------------------------------- /tests/fixtures/dot.ph.txt: -------------------------------------------------------------------------------- 1 | % IANA WHOIS server 2 | % for more information on IANA, visit http://www.iana.org 3 | % This query returned 1 object 4 | 5 | domain: PH 6 | 7 | organisation: PH Domain Foundation 8 | address: 27/F Jollibee Plaza 9 | address: F. Ortigas Ave. Ortigas Center 10 | address: Pasig Metro Manila 1600 11 | address: Philippines 12 | 13 | contact: administrative 14 | name: DOTPH Administrative Contact 15 | organisation: DotPH 16 | address: Rm A, 7/F, China Overseas Building 17 | address: 139 Hennessy Road 18 | address: Wanchai, Hong Kong 19 | address: Hong Kong 20 | phone: +852 5 8085724 21 | e-mail: admin@dot.ph 22 | 23 | contact: technical 24 | name: DOTPH Technical Contact 25 | organisation: DotPH 26 | address: Rm A, 7/F, China Overseas Building 27 | address: 139 Hennessy Road 28 | address: Wanchai, Hong Kong 29 | address: Hong Kong 30 | phone: +852 5 8085724 31 | e-mail: sysadmin@dot.ph 32 | 33 | nserver: 1.NS.PH 206.51.255.1 2620:171:805:ad2:7068:0:0:1 34 | nserver: NS2.CUHK.EDU.HK 137.189.6.21 2405:3000:3:6:0:0:0:15 35 | nserver: NS4.APNIC.NET 2001:dd8:12:0:0:0:0:53 202.12.31.53 36 | nserver: PH.COMMUNITYDNS.NET 194.0.1.23 2001:678:4:0:0:0:0:17 37 | 38 | status: ACTIVE 39 | remarks: Registration information: http://dot.ph 40 | 41 | created: 1990-09-14 42 | changed: 2020-01-31 43 | source: IANA 44 | -------------------------------------------------------------------------------- /tests/fixtures/eurid.eu.txt: -------------------------------------------------------------------------------- 1 | Connecting to EU.whois-servers.net... 2 | 3 | NOT DISCLOSED! 4 | Visit www.eurid.eu for webbased WHOIS. 5 | 6 | Technical: 7 | Organisation: EURid vzw 8 | Language: en 9 | Email: tech@eurid.eu 10 | 11 | Registrar: 12 | Name: EURid vzw 13 | Website: https://www.eurid.eu 14 | 15 | Name servers: 16 | ns1.eurid.eu (2001:67c:9c:3937::252) 17 | ns1.eurid.eu (185.36.4.252) 18 | nsp.netnod.se 19 | ns4.eurid.eu (2001:67c:40:3937::253) 20 | ns4.eurid.eu (185.36.6.253) 21 | nsx.eurid.eu (185.151.141.1) 22 | nsx.eurid.eu (2a02:568:fe00::6575) 23 | ns3.eurid.eu (2001:67c:9c:3937::253) 24 | ns3.eurid.eu (185.36.4.253) 25 | ns2.eurid.eu (2001:67c:40:3937::252) 26 | ns2.eurid.eu (185.36.6.252) 27 | 28 | Keys: 29 | flags:KSK protocol:3 algorithm:RSA_SHA256 pubKey:AwEAAcOQldGtC33GLx8s335UscKMPlWjDXCqbhR2QyAYcfS4CZS6YHg3A1Zz/K3VurTZF68aSaRkNupZuEgt4jozE3v4+t+2qOfiATvoOCrf74hWduBPwk9Go0z7FVlDkok1/qMQmqOtih8TFP85b+w6F/uyLMZS1JowMDUzRurmHJVoT4lW9+OCdrhuQFK9vU24Y8BmacoRy6mWBCFlysizlOIodwmquOf5A+3Nz0B3TLCK4fIYJYVxCUVlpRJ7uaBS+GLD7afuxkEesReYHgPWZFSDMbXk9Ugh+qUi8tEKKFls9TM3lK9BPBcciXUhI1bRJSHftqcNpMmLqg/79SwoWGc= 30 | 31 | Please visit www.eurid.eu for more info. 32 | 33 | Connecting to SCLOSED!... 34 | -------------------------------------------------------------------------------- /tests/fixtures/ficora.fi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsmitty12/phpWhois/2f88d8f02e95b3d959e564b476ecdf791135896d/tests/fixtures/ficora.fi.txt -------------------------------------------------------------------------------- /tests/fixtures/google.ae.txt: -------------------------------------------------------------------------------- 1 | Domain Name: google.ae 2 | Registrar ID: markmonitor 3 | Registrar Name: MarkMonitor 4 | Status: clientDeleteProhibited 5 | Status: clientUpdateProhibited 6 | 7 | Registrant Contact ID: MMR-171195 8 | Registrant Contact Name: Domain Administrator 9 | Registrant Contact Email: Visit whois.aeda.ae for Web based WhoIs 10 | Registrant Contact Organisation: Google LLC 11 | 12 | Tech Contact ID: MMR-171195 13 | Tech Contact Name: Domain Administrator 14 | Tech Contact Email: Visit whois.aeda.ae for Web based WhoIs 15 | Tech Contact Organisation: Google LLC 16 | 17 | Name Server: ns1.google.com 18 | Name Server: ns2.google.com -------------------------------------------------------------------------------- /tests/fixtures/google.ch.txt: -------------------------------------------------------------------------------- 1 | Connecting to CH.whois-servers.net... 2 | 3 | Requests of this client are not permitted. Please use https://www.nic.ch/whois/ for queries. 4 | 5 | 6 | Connecting to is client are not permitted. Please use https://www.nic.ch/whois/ for queries.... 7 | -------------------------------------------------------------------------------- /tests/fixtures/google.cl.txt: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is the NIC Chile Whois server (whois.nic.cl). 3 | %% 4 | %% Rights restricted by copyright. 5 | %% See https://www.nic.cl/normativa/politica-publicacion-de-datos-cl.pdf 6 | %% 7 | 8 | Domain name: google.cl 9 | Registrant name: Google LLC 10 | Registrant organisation: Google LLC 11 | Registrar name: MarkMonitor Inc. 12 | Registrar URL: https://markmonitor.com/ 13 | Creation date: 2002-10-22 17:48:23 CLST 14 | Expiration date: 2020-11-20 14:48:02 CLST 15 | Name server: ns1.google.com 16 | Name server: ns2.google.com 17 | Name server: ns3.google.com 18 | Name server: ns4.google.com 19 | 20 | %% 21 | %% For communication with domain contacts please use website. 22 | %% See https://www.nic.cl/registry/Whois.do?d=google.cl 23 | %% -------------------------------------------------------------------------------- /tests/fixtures/google.cn.txt: -------------------------------------------------------------------------------- 1 | Connecting to CN.whois-servers.net... 2 | 3 | Domain Name: google.cn 4 | ROID: 20030311s10001s00033735-cn 5 | Domain Status: clientDeleteProhibited 6 | Domain Status: serverDeleteProhibited 7 | Domain Status: serverUpdateProhibited 8 | Domain Status: clientTransferProhibited 9 | Domain Status: serverTransferProhibited 10 | Registrant: 北京谷翔信息技术有限公司 11 | Registrant Contact Email: dns-admin@google.com 12 | Sponsoring Registrar: 厦门易名科技股份有限公司 13 | Name Server: ns2.google.com 14 | Name Server: ns1.google.com 15 | Name Server: ns3.google.com 16 | Name Server: ns4.google.com 17 | Registration Time: 2003-03-17 12:20:05 18 | Expiration Time: 2022-03-17 12:48:36 19 | DNSSEC: unsigned 20 | -------------------------------------------------------------------------------- /tests/fixtures/google.co.uk.txt: -------------------------------------------------------------------------------- 1 | 2 | Domain name: 3 | google.co.uk 4 | 5 | Data validation: 6 | Nominet was able to match the registrant's name and address against a 3rd party data source on 10-Dec-2012 7 | 8 | Registrar: 9 | Markmonitor Inc. t/a MarkMonitor Inc. [Tag = MARKMONITOR] 10 | URL: http://www.markmonitor.com 11 | 12 | Relevant dates: 13 | Registered on: 14-Feb-1999 14 | Expiry date: 14-Feb-2021 15 | Last updated: 13-Jan-2020 16 | 17 | Registration status: 18 | Registered until expiry date. 19 | 20 | Name servers: 21 | ns1.google.com 22 | ns2.google.com 23 | ns3.google.com 24 | ns4.google.com 25 | 26 | WHOIS lookup made at 18:48:30 07-Jun-2020 27 | 28 | -- 29 | This WHOIS information is provided for free by Nominet UK the central registry 30 | for .uk domain names. This information and the .uk WHOIS are: 31 | 32 | Copyright Nominet UK 1996 - 2020. 33 | 34 | You may not access the .uk WHOIS or use any data from it except as permitted 35 | by the terms of use available in full at https://www.nominet.uk/whoisterms, 36 | which includes restrictions on: (A) use of the data for advertising, or its 37 | repackaging, recompilation, redistribution or reuse (B) obscuring, removing 38 | or hiding any or all of this notice and (C) exceeding query rate or volume 39 | limits. The data is provided on an 'as-is' basis and may lag behind the 40 | register. Access may be withdrawn or restricted at any time. -------------------------------------------------------------------------------- /tests/fixtures/google.coop.txt: -------------------------------------------------------------------------------- 1 | Connecting to COOP.whois-servers.net... 2 | 3 | The queried object does not exist: previous registration D59629278-CNIC was purged on 2018-11-15T16:49:26.0Z (DOMAIN NOT FOUND) 4 | 5 | >>> Last update of WHOIS database: 2020-10-10T21:28:57.0Z <<< 6 | 7 | For more information on Whois status codes, please visit https://icann.org/epp 8 | 9 | >>> IMPORTANT INFORMATION ABOUT THE DEPLOYMENT OF RDAP: please visit 10 | https://www.centralnic.com/support/rdap <<< 11 | 12 | The Whois and RDAP services are provided by CentralNic, and contain 13 | information pertaining to Internet domain names registered by our 14 | our customers. By using this service you are agreeing (1) not to use any 15 | information presented here for any purpose other than determining 16 | ownership of domain names, (2) not to store or reproduce this data in 17 | any way, (3) not to use any high-volume, automated, electronic processes 18 | to obtain data from this service. Abuse of this service is monitored and 19 | actions in contravention of these terms will result in being permanently 20 | blacklisted. All data is (c) CentralNic Ltd (https://www.centralnic.com) 21 | 22 | Access to the Whois and RDAP services is rate limited. For more 23 | information, visit https://registrar-console.centralnic.com/pub/whois_guidance. 24 | 25 | Connecting to ject does not exist: previous registration D59629278-CNIC was purged on 2018-11-15T16:49:26.0Z (DOMAIN NOT FOUND)... 26 | -------------------------------------------------------------------------------- /tests/fixtures/google.cz.txt: -------------------------------------------------------------------------------- 1 | Connecting to CZ.whois-servers.net... 2 | 3 | domain: google.cz 4 | registrant: MM1171195 5 | admin-c: MM1171195 6 | nsset: MM1543911 7 | registrar: REG-MARKMONITOR 8 | registered: 21.07.2000 15:21:00 9 | changed: 23.04.2018 20:24:01 10 | expire: 22.07.2021 11 | 12 | contact: MM1171195 13 | org: Google LLC 14 | name: Domain Administrator 15 | address: 1600 Amphitheatre Parkway 16 | address: Mountain View 17 | address: 94043 18 | address: CA 19 | address: US 20 | registrar: REG-MARKMONITOR 21 | created: 02.03.2018 18:52:05 22 | changed: 15.05.2018 21:32:00 23 | 24 | nsset: MM1543911 25 | nserver: ns2.google.com 26 | nserver: ns4.google.com 27 | nserver: ns3.google.com 28 | nserver: ns1.google.com 29 | tech-c: MM193020 30 | registrar: REG-MARKMONITOR 31 | created: 18.05.2011 23:27:16 32 | 33 | contact: MM193020 34 | org: MarkMonitor Inc. 35 | name: Domain Provisioning 36 | address: 3540 East Longwing Lane 37 | address: Suite 300 38 | address: Meridian 39 | address: 83646 40 | address: ID 41 | address: US 42 | registrar: REG-MARKMONITOR 43 | created: 03.02.2011 18:24:34 44 | changed: 11.07.2019 18:54:44 45 | 46 | 47 | 48 | Connecting to google.cz... 49 | -------------------------------------------------------------------------------- /tests/fixtures/google.de.txt: -------------------------------------------------------------------------------- 1 | % Restricted rights. 2 | % 3 | % Terms and Conditions of Use 4 | % 5 | % The above data may only be used within the scope of technical or 6 | % administrative necessities of Internet operation or to remedy legal 7 | % problems. 8 | % The use for other purposes, in particular for advertising, is not permitted. 9 | % 10 | % The DENIC whois service on port 43 doesn't disclose any information concerning 11 | % the domain holder, general request and abuse contact. 12 | % This information can be obtained through use of our web-based whois service 13 | % available at the DENIC website: 14 | % http://www.denic.de/en/domains/whois-service/web-whois.html 15 | % 16 | % 17 | 18 | Domain: google.de 19 | Nserver: ns1.google.com 20 | Nserver: ns2.google.com 21 | Nserver: ns3.google.com 22 | Nserver: ns4.google.com 23 | Status: connect 24 | Changed: 2018-03-12T21:44:25+01:00 -------------------------------------------------------------------------------- /tests/fixtures/google.dk.txt: -------------------------------------------------------------------------------- 1 | # Hello 109.238.54.211. Your session has been logged. 2 | # 3 | # Copyright (c) 2002 - 2018 by DK Hostmaster A/S 4 | # 5 | # Version: 2.0.2 6 | # 7 | # The data in the DK Whois database is provided by DK Hostmaster A/S 8 | # for information purposes only, and to assist persons in obtaining 9 | # information about or related to a domain name registration record. 10 | # We do not guarantee its accuracy. We will reserve the right to remove 11 | # access for entities abusing the data, without notice. 12 | # 13 | # Any use of this material to target advertising or similar activities 14 | # are explicitly forbidden and will be prosecuted. DK Hostmaster A/S 15 | # requests to be notified of any such activities or suspicions thereof. 16 | 17 | Domain: google.dk 18 | DNS: google.dk 19 | Registered: 1999-01-10 20 | Expires: 2019-03-31 21 | Registration period: 1 year 22 | VID: no 23 | Dnssec: Unsigned delegation 24 | Status: Active 25 | 26 | Registrant 27 | Handle: GI656-DK 28 | Name: Google Inc 29 | Address: 1600 Amphitheatre Parkway 30 | Postalcode: CA 94043 31 | City: Mountain View 32 | Country: US 33 | Phone: +16502530000 34 | 35 | Administrator 36 | Handle: GI657-DK 37 | Name: Google Inc 38 | Attention: Domain Administrator 39 | Address: 1600 Amphitheatre Parkway 40 | Postalcode: 94043 41 | City: Mountain View, CA 42 | Country: US 43 | Phone: +16502530000 44 | 45 | Nameservers 46 | Hostname: ns1.google.com 47 | Handle: GI644-DK 48 | Hostname: ns2.google.com 49 | Handle: GI644-DK 50 | Hostname: ns3.google.com 51 | Handle: GI644-DK 52 | Hostname: ns4.google.com 53 | Handle: GI644-DK 54 | 55 | -------------------------------------------------------------------------------- /tests/fixtures/google.eu.txt: -------------------------------------------------------------------------------- 1 | Connecting to EU.whois-servers.net... 2 | 3 | NOT DISCLOSED! 4 | Visit www.eurid.eu for webbased WHOIS. 5 | 6 | On-site(s): 7 | NOT DISCLOSED! 8 | Visit www.eurid.eu for webbased WHOIS. 9 | 10 | Registrar: 11 | Name: MarkMonitor Inc. 12 | Website: https://www.markmonitor.com/ 13 | 14 | Name servers: 15 | ns3.google.com 16 | ns4.google.com 17 | ns1.google.com 18 | ns2.google.com 19 | 20 | Please visit www.eurid.eu for more info. 21 | 22 | Connecting to SCLOSED!... 23 | -------------------------------------------------------------------------------- /tests/fixtures/google.fi.txt: -------------------------------------------------------------------------------- 1 | Connecting to FI.whois-servers.net... 2 | 3 | 4 | domain.............: google.fi 5 | status.............: Registered 6 | created............: 30.6.2006 00:00:00 7 | expires............: 4.7.2021 10:15:55 8 | available..........: 4.8.2021 10:15:55 9 | modified...........: 2.6.2020 10 | holder transfer....: 20.11.2018 11 | RegistryLock.......: locked 12 | 13 | Nameservers 14 | 15 | nserver............: ns3.google.com [OK] 16 | nserver............: ns4.google.com [OK] 17 | nserver............: ns1.google.com [OK] 18 | nserver............: ns2.google.com [OK] 19 | 20 | DNSSEC 21 | 22 | dnssec.............: no 23 | 24 | Holder 25 | 26 | name...............: Google LLC 27 | register number....: 3582691 28 | address............: 1600 Amphitheatre Parkway 29 | address............: 94043 30 | address............: Mountain View 31 | country............: United States of America 32 | phone..............: +1.6502530000 33 | holder email.......: 34 | 35 | Registrar 36 | 37 | registrar..........: MarkMonitor Inc. 38 | www................: www.markmonitor.com 39 | 40 | Tech 41 | 42 | name...............: Google LLC 43 | email..............: ccops@markmonitor.com 44 | 45 | >>> Last update of WHOIS database: 11.10.2020 1:00:28 (EET) <<< 46 | 47 | 48 | Copyright (c) Finnish Transport and Communications Agency Traficom 49 | 50 | 51 | Connecting to .......: google.fi... 52 | -------------------------------------------------------------------------------- /tests/fixtures/google.hu.txt: -------------------------------------------------------------------------------- 1 | % Whois server 3.0 serving the hu ccTLD 2 | 3 | domain: google.hu 4 | record created: 2000-03-25 23:20:39 5 | Tovabbi adatokert ld.: 6 | http://www.domain.hu/domain/domainsearch/ 7 | For further data see: 8 | http://www.domain.hu/domain/English/domainsearch/ 9 | -------------------------------------------------------------------------------- /tests/fixtures/google.ie.txt: -------------------------------------------------------------------------------- 1 | Connecting to IE.whois-servers.net... 2 | 3 | 4 | % Rights restricted by copyright; http://iedr.ie/index.php/mnudomregs/mnudnssearch/96 5 | % Do not remove this notice 6 | 7 | Domain: google.ie 8 | Domain Holder: Google, Inc 9 | Admin-c: AAV410-IEDR 10 | Tech-c: CCA7-IEDR 11 | Account Name: Markmonitor Inc 12 | Registrar Abuse Contact: abusecomplaints@markmonitor.com 13 | Registration Date: 21-March-2002 14 | Renewal Date: 21-March-2021 15 | Holder-type: Billable 16 | Locked status: YES 17 | Renewal status: Active 18 | In-zone: 1 19 | Nserver: ns1.google.com 20 | Nserver: ns2.google.com 21 | Nserver: ns3.google.com 22 | 23 | 24 | % Important Notice 25 | % If you believe that information published on this page is incorrect, or should not be published, please contact your Registrar, or the IEDR Registration Services Department who will advise you further. 26 | % You can also contact your Registrar or the IEDR if your domain holder name isn’t showing and you would like it to be published. 27 | % Our contact information is available at https://www.iedr.ie/contact-us/ 28 | 29 | 30 | Connecting to ricted by copyright; http://iedr.ie/index.php/mnudomregs/mnudnssearch/96... 31 | -------------------------------------------------------------------------------- /tests/fixtures/google.no.txt: -------------------------------------------------------------------------------- 1 | % By looking up information in the domain registration directory 2 | % service, you confirm that you accept the terms and conditions of the 3 | % service: 4 | % https://www.norid.no/en/domeneoppslag/vilkar/ 5 | % 6 | % UNINETT Norid AS holds the copyright to the lookup service, content, 7 | % layout and the underlying collections of information used in the 8 | % service (cf. the Act on Intellectual Property of May 2, 1961, No. 9 | % 2). Any commercial % use of information from the service, including 10 | % targeted marketing, is prohibited. Using information from the domain 11 | % registration directory service in % violation of the terms and 12 | % conditions may result in legal prosecution. 13 | % 14 | % The whois service at port 43 is intended to contribute to resolving 15 | % technical problems where individual domains threaten the 16 | % functionality, security and stability of other domains or the 17 | % internet as an infrastructure. It does not give any information 18 | % about who the holder of a domain is. To find information about a 19 | % domain holder, please visit our website: 20 | % https://www.norid.no/en/domeneoppslag/ 21 | 22 | Domain Information 23 | 24 | NORID Handle...............: GOO371D-NORID 25 | Domain Name................: google.no 26 | Registrar Handle...........: REG466-NORID 27 | Tech-c Handle..............: GL1R-NORID 28 | Name Server Handle.........: NSGO26H-NORID 29 | Name Server Handle.........: NSGO27H-NORID 30 | Name Server Handle.........: NSGO28H-NORID 31 | Name Server Handle.........: NSGO29H-NORID 32 | 33 | Additional information: 34 | Created: 2001-02-26 35 | Last updated: 2018-06-22 36 | 37 | -------------------------------------------------------------------------------- /tests/fixtures/google.ru.txt: -------------------------------------------------------------------------------- 1 | Connecting to RU.whois-servers.net... 2 | 3 | domain: GOOGLE.RU 4 | nserver: ns1.google.com. 5 | nserver: ns2.google.com. 6 | nserver: ns3.google.com. 7 | nserver: ns4.google.com. 8 | state: REGISTERED, DELEGATED, VERIFIED 9 | org: Google LLC 10 | registrar: RU-CENTER-RU 11 | admin-contact: https://www.nic.ru/whois 12 | created: 2004-03-03T21:00:00Z 13 | paid-till: 2021-03-04T21:00:00Z 14 | free-date: 2021-04-05 15 | source: TCI 16 | 17 | Last updated on 2020-10-07T20:01:32Z 18 | 19 | 20 | Connecting to GOOGLE.RU... 21 | -------------------------------------------------------------------------------- /tests/fixtures/google.se.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 1997- IIS (The Internet Foundation In Sweden). 2 | # All rights reserved. 3 | # The information obtained through searches, or otherwise, is protected 4 | # by the Swedish Copyright Act (1960:729) and international conventions. 5 | # It is also subject to database protection according to the Swedish 6 | # Copyright Act. 7 | # Any use of this material to target advertising or 8 | # similar activities is forbidden and will be prosecuted. 9 | # If any of the information below is transferred to a third 10 | # party, it must be done in its entirety. This server must 11 | # not be used as a backend for a search engine. 12 | # Result of search for registered domain names under 13 | # the .se top level domain. 14 | # This whois printout is printed with UTF-8 encoding. 15 | # 16 | state: active 17 | domain: google.se 18 | holder: mmr8008-53808 19 | admin-c: - 20 | tech-c: - 21 | billing-c: - 22 | created: 2003-08-27 23 | modified: 2017-09-18 24 | expires: 2018-10-20 25 | transferred: 2009-03-06 26 | nserver: ns1.google.com 27 | nserver: ns2.google.com 28 | nserver: ns3.google.com 29 | nserver: ns4.google.com 30 | dnssec: unsigned delegation 31 | status: serverUpdateProhibited 32 | status: serverDeleteProhibited 33 | status: serverTransferProhibited 34 | registrar: MarkMonitor Inc 35 | -------------------------------------------------------------------------------- /tests/fixtures/humblebundle.de.txt: -------------------------------------------------------------------------------- 1 | % Restricted rights. 2 | % 3 | % Terms and Conditions of Use 4 | % 5 | % The above data may only be used within the scope of technical or 6 | % administrative necessities of Internet operation or to remedy legal 7 | % problems. 8 | % The use for other purposes, in particular for advertising, is not permitted. 9 | % 10 | % The DENIC whois service on port 43 doesn't disclose any information concerning 11 | % the domain holder, general request and abuse contact. 12 | % This information can be obtained through use of our web-based whois service 13 | % available at the DENIC website: 14 | % http://www.denic.de/en/domains/whois-service/web-whois.html 15 | % 16 | % 17 | 18 | Domain: humblebundle.de 19 | Nserver: ns1.domainers.de 20 | Nserver: ns2.domainers.de 21 | Nserver: ns3.domainers.de 22 | Nserver: ns4.domainers.de 23 | Status: connect 24 | Changed: 2016-05-20T12:55:32+02:00 -------------------------------------------------------------------------------- /tests/fixtures/isoc.am.txt: -------------------------------------------------------------------------------- 1 | % 2 | %AM TLD whois server #1 3 | % Please see 'whois -h whois.amnic.net help' for usage. 4 | % 5 | 6 | Domain name: isoc.am 7 | Registrar: amnic 8 | Status: active 9 | 10 | Registrant: 11 | Internet Society NGO 12 | 17/3 A. Khachatryan str. 13 | Yerevan, 0012 14 | AM 15 | 16 | Administrative contact: 17 | Igor Mkrtumyan 18 | Internet Society NGO 19 | 17/3 A. Khachatryan str. 20 | Yerevan, 0012 21 | AM 22 | imkrtumyan@isoc.am 23 | +374-60-272217 24 | 25 | Technical contact: 26 | Misak Khachatryan 27 | Internet Society NGO 28 | 17/3 A. Khachatryan str. 29 | Yerevan, 0012 30 | AM 31 | misak@amnic.net 32 | +374 93 199840 33 | 34 | DNS servers: 35 | ns10.isoc.am - 173.249.9.197 36 | ns-ext.aic.net 37 | 38 | Registered: 2000-01-01 39 | Last modified: 2018-03-27 40 | -------------------------------------------------------------------------------- /tests/fixtures/nic.ae.txt: -------------------------------------------------------------------------------- 1 | Domain Name: nic.ae 2 | Registrar ID: Etisalat 3 | Registrar Name: Etisalat 4 | Status: clientDeleteProhibited 5 | Status: clientUpdateProhibited 6 | 7 | Registrant Contact ID: CX364448T 8 | Registrant Contact Name: Emirates Telecommunications Corporation - Etisalat 9 | Registrant Contact Email: Visit whois.aeda.ae for Web based WhoIs 10 | Registrant Contact Organisation: Emirates Telecommunications Corporation - Etisalat 11 | 12 | Tech Contact ID: CX364450T 13 | Tech Contact Name: Emirates Telecommunications Corporation - Etisalat 14 | Tech Contact Email: Visit whois.aeda.ae for Web based WhoIs 15 | Tech Contact Organisation: Emirates Telecommunications Corporation - Etisalat 16 | 17 | Name Server: dxbans2.ecompany.ae 18 | Name Server: auhans1.ecompany.ae 19 | Name Server: dxbans1.ecompany.ae 20 | Name Server: auhans2.ecompany.ae -------------------------------------------------------------------------------- /tests/fixtures/nic.aero.txt: -------------------------------------------------------------------------------- 1 | Domain Name: NIC.AERO 2 | Registry Domain ID: D108300000000000122-AGRS 3 | Registrar WHOIS Server: 4 | Registrar URL: 5 | Updated Date: 2020-03-08T22:20:34Z 6 | Creation Date: 2002-03-08T13:26:29Z 7 | Registry Expiry Date: 2021-03-08T13:26:29Z 8 | Registrar Registration Expiration Date: 9 | Registrar: SITA 10 | Registrar IANA ID: 9999 11 | Registrar Abuse Contact Email: 12 | Registrar Abuse Contact Phone: 13 | Reseller: 14 | Domain Status: ok https://icann.org/epp#ok 15 | Registrant Organization: SITA SC 16 | Registrant State/Province: GE 17 | Registrant Country: CH 18 | Name Server: A0.NIC.AERO 19 | Name Server: B0.NIC.AERO 20 | Name Server: C0.NIC.AERO 21 | Name Server: A2.NIC.AERO 22 | Name Server: B2.NIC.AERO 23 | DNSSEC: unsigned 24 | URL of the ICANN Whois Inaccuracy Complaint Form https://www.icann.org/wicf/) 25 | >>> Last update of WHOIS database: 2020-06-07T14:27:09Z <<< 26 | 27 | For more information on Whois status codes, please visit https://icann.org/epp 28 | 29 | Access to WHOIS information is provided to assist persons in determining the contents of a domain name registration record in the registry database. The data in this record is provided by The Registry Operator for informational purposes only, and accuracy is not guaranteed. This service is intended only for query-based access. You agree that you will use this data only for lawful purposes and that, under no circumstances will you use this data to (a) allow, enable, or otherwise support the transmission by e-mail, telephone, or facsimile of mass unsolicited, commercial advertising or solicitations to entities other than the data recipient's own existing customers; or (b) enable high volume, automated, electronic processes that send queries or data to the systems of Registry Operator, a Registrar, or Afilias except as reasonably necessary to register domain names or modify existing registrations. All rights reserved. Registry Operator reserves the right to modify these terms at any time. By submitting this query, you agree to abide by this policy. 30 | 31 | The Registrar of Record identified in this output may have an RDDS service that can be queried for additional information on how to contact the Registrant, Admin, or Tech contact of the queried domain name. -------------------------------------------------------------------------------- /tests/fixtures/nic.ag.txt: -------------------------------------------------------------------------------- 1 | Domain Name: NIC.AG 2 | Registry Domain ID: D105800000000052707-AGRS 3 | Registrar WHOIS Server: 4 | Registrar URL: 5 | Updated Date: 2019-03-02T05:36:24Z 6 | Creation Date: 1998-05-02T04:00:00Z 7 | Registry Expiry Date: 2025-05-02T04:00:00Z 8 | Registrar Registration Expiration Date: 9 | Registrar: NicAg Registrar 10 | Registrar IANA ID: 119 11 | Registrar Abuse Contact Email: 12 | Registrar Abuse Contact Phone: 13 | Reseller: 14 | Domain Status: ok https://icann.org/epp#ok 15 | Registrant Organization: Nic AG LLC 16 | Registrant State/Province: FL 17 | Registrant Country: US 18 | Name Server: NS1.NIC.AG 19 | Name Server: NS11.NIC.AG 20 | DNSSEC: unsigned 21 | 22 | >>> Last update of WHOIS database: 2020-06-08T14:31:04Z <<< 23 | 24 | For more information on Whois status codes, please visit https://icann.org/epp 25 | 26 | Access to WHOIS information is provided to assist persons in determining the contents of a domain name registration record in the registry database. The data in this record is provided by The Registry Operator for informational purposes only, and accuracy is not guaranteed. This service is intended only for query-based access. You agree that you will use this data only for lawful purposes and that, under no circumstances will you use this data to (a) allow, enable, or otherwise support the transmission by e-mail, telephone, or facsimile of mass unsolicited, commercial advertising or solicitations to entities other than the data recipient's own existing customers; or (b) enable high volume, automated, electronic processes that send queries or data to the systems of Registry Operator, a Registrar, or Afilias except as reasonably necessary to register domain names or modify existing registrations. All rights reserved. Registry Operator reserves the right to modify these terms at any time. By submitting this query, you agree to abide by this policy. 27 | 28 | The Registrar of Record identified in this output may have an RDDS service that can be queried for additional information on how to contact the Registrant, Admin, or Tech contact of the queried domain name. -------------------------------------------------------------------------------- /tests/fixtures/nic.asia.txt: -------------------------------------------------------------------------------- 1 | Domain Name: NIC.ASIA 2 | Registry Domain ID: D425500000333335753-AGRS 3 | Registrar WHOIS Server: 4 | Registrar URL: 5 | Updated Date: 2020-04-28T21:15:48Z 6 | Creation Date: 2020-02-28T17:10:40Z 7 | Registry Expiry Date: 2021-02-28T17:10:40Z 8 | Registrar Registration Expiration Date: 9 | Registrar: dotASIA 10 | Registrar IANA ID: 119 11 | Registrar Abuse Contact Email: 12 | Registrar Abuse Contact Phone: 13 | Reseller: 14 | Domain Status: ok https://icann.org/epp#ok 15 | Registrant Organization: DotAsia Organisation Limited 16 | Registrant State/Province: Other 17 | Registrant Country: HK 18 | Name Server: D0.DIG.AFILIAS-NST.INFO 19 | Name Server: C0.DIG.AFILIAS-NST.INFO 20 | Name Server: B0.DIG.AFILIAS-NST.INFO 21 | Name Server: A0.DIG.AFILIAS-NST.INFO 22 | DNSSEC: unsigned 23 | URL of the ICANN Whois Inaccuracy Complaint Form https://www.icann.org/wicf/) 24 | >>> Last update of WHOIS database: 2020-06-07T14:27:10Z <<< 25 | 26 | For more information on Whois status codes, please visit https://icann.org/epp 27 | 28 | Access to WHOIS information is provided to assist persons in determining the contents of a domain name registration record in the registry database. The data in this record is provided by The Registry Operator for informational purposes only, and accuracy is not guaranteed. This service is intended only for query-based access. You agree that you will use this data only for lawful purposes and that, under no circumstances will you use this data to (a) allow, enable, or otherwise support the transmission by e-mail, telephone, or facsimile of mass unsolicited, commercial advertising or solicitations to entities other than the data recipient's own existing customers; or (b) enable high volume, automated, electronic processes that send queries or data to the systems of Registry Operator, a Registrar, or Afilias except as reasonably necessary to register domain names or modify existing registrations. All rights reserved. Registry Operator reserves the right to modify these terms at any time. By submitting this query, you agree to abide by this policy. 29 | 30 | The Registrar of Record identified in this output may have an RDDS service that can be queried for additional information on how to contact the Registrant, Admin, or Tech contact of the queried domain name. -------------------------------------------------------------------------------- /tests/fixtures/nic.hu.txt: -------------------------------------------------------------------------------- 1 | % Whois server 3.0 serving the hu ccTLD 2 | 3 | domain: nic.hu 4 | record created: 1996-06-27 13:36:21 5 | Tovabbi adatokert ld.: 6 | http://www.domain.hu/domain/domainsearch/ 7 | For further data see: 8 | http://www.domain.hu/domain/English/domainsearch/ 9 | -------------------------------------------------------------------------------- /tests/fixtures/norid.no.txt: -------------------------------------------------------------------------------- 1 | Connecting to NO.whois-servers.net... 2 | 3 | % By looking up information in the domain registration directory 4 | % service, you confirm that you accept the terms and conditions of the 5 | % service: 6 | % https://www.norid.no/en/domeneoppslag/vilkar/ 7 | % 8 | % UNINETT Norid AS holds the copyright to the lookup service, content, 9 | % layout and the underlying collections of information used in the 10 | % service (cf. the Act on Intellectual Property of May 2, 1961, No. 11 | % 2). Any commercial % use of information from the service, including 12 | % targeted marketing, is prohibited. Using information from the domain 13 | % registration directory service in % violation of the terms and 14 | % conditions may result in legal prosecution. 15 | % 16 | % The whois service at port 43 is intended to contribute to resolving 17 | % technical problems where individual domains threaten the 18 | % functionality, security and stability of other domains or the 19 | % internet as an infrastructure. It does not give any information 20 | % about who the holder of a domain is. To find information about a 21 | % domain holder, please visit our website: 22 | % https://www.norid.no/en/domeneoppslag/ 23 | 24 | Domain Information 25 | 26 | NORID Handle...............: NOR18456D-NORID 27 | Domain Name................: norid.no 28 | Registrar Handle...........: REG2-NORID 29 | Tech-c Handle..............: UH9R-NORID 30 | Name Server Handle.........: NAC2H-NORID 31 | Name Server Handle.........: NN14H-NORID 32 | Name Server Handle.........: NSUN1239H-NORID 33 | Name Server Handle.........: SERV41H-NORID 34 | DNSSEC.....................: Signed 35 | DS Key Tag 1...........: 50212 36 | Algorithm 1...........: 8 37 | Digest Type 1...........: 2 38 | Digest 1...........: 555cd4da5203e4d74a1c94e3433502ec9d8d4a09a28e6a85f47ade020137f423 39 | 40 | Additional information: 41 | Created: 1999-11-15 42 | Last updated: 2018-05-24 43 | 44 | 45 | Connecting to p information in the domain registration directory... 46 | -------------------------------------------------------------------------------- /tests/fixtures/olsns.co.uk.txt: -------------------------------------------------------------------------------- 1 | 2 | Domain name: 3 | olsns.co.uk 4 | 5 | Data validation: 6 | Nominet was able to match the registrant's name and address against a 3rd party data source on 10-Dec-2012 7 | 8 | Registrar: 9 | Entorno Digital S.A [Tag = ENTORNO-ES] 10 | URL: http://www.entorno.com 11 | 12 | Relevant dates: 13 | Registered on: 21-Feb-2001 14 | Expiry date: 21-Feb-2021 15 | Last updated: 18-Feb-2020 16 | 17 | Registration status: 18 | Registered until expiry date. 19 | 20 | Name servers: 21 | a.ns.olsns.co.uk 82.98.130.187 22 | b.ns.olsns.co.uk 82.98.170.158 23 | 24 | WHOIS lookup made at 18:48:29 07-Jun-2020 25 | 26 | -- 27 | This WHOIS information is provided for free by Nominet UK the central registry 28 | for .uk domain names. This information and the .uk WHOIS are: 29 | 30 | Copyright Nominet UK 1996 - 2020. 31 | 32 | You may not access the .uk WHOIS or use any data from it except as permitted 33 | by the terms of use available in full at https://www.nominet.uk/whoisterms, 34 | which includes restrictions on: (A) use of the data for advertising, or its 35 | repackaging, recompilation, redistribution or reuse (B) obscuring, removing 36 | or hiding any or all of this notice and (C) exceeding query rate or volume 37 | limits. The data is provided on an 'as-is' basis and may lag behind the 38 | register. Access may be withdrawn or restricted at any time. -------------------------------------------------------------------------------- /tests/fixtures/registro.br.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsmitty12/phpWhois/2f88d8f02e95b3d959e564b476ecdf791135896d/tests/fixtures/registro.br.txt -------------------------------------------------------------------------------- /tests/fixtures/samoanic.ws.txt: -------------------------------------------------------------------------------- 1 | Domain Name: SAMOANIC.WS 2 | Domain ID: D865CD2902FC835CE040010AAB015FFF 3 | WHOIS Server: 4 | Registrar URL: http://samoanic.ws/whois.dhtml 5 | Updated Date: 2020-03-09T09:41:00Z 6 | Creation Date: 2000-03-09T19:11:00Z 7 | Registrar Registration Expiration Date: 2021-03-09T19:11:00Z 8 | Registrar: Computer Services Limited 9 | Registrar IANA ID: 10 | Registrar Abuse Contact Email: helpdesk@samoa.ws 11 | Registrar Abuse Contact Phone: 68520926 12 | Domain Status: ok 13 | Registry Registrant ID: 14 | Registrant Name: CSL 15 | Registrant Organization: Computer Services Limited 16 | Registrant Street: 701 Palomar Airport Rd. 3rd floor 17 | Registrant City: Carlsbad 18 | Registrant State/Province: CA 19 | Registrant Postal Code: 92009 20 | Registrant Country: US 21 | Registrant Phone: +1.68520926 22 | Registrant Phone Ext: 23 | Registrant Fax: 24 | Registrant Fax Ext: 25 | Registrant Email: domains@samoa.ws 26 | Registry Admin ID: 27 | Admin Name: CSL 28 | Admin Organization: Computer Services Limited 29 | Admin Street: 701 Palomar Airport Rd. 3rd floor 30 | Admin City: Carlsbad 31 | Admin State/Province: CA 32 | Admin Postal Code: 92009 33 | Admin Country: US 34 | Admin Phone: +1.68520926 35 | Admin Phone Ext: 36 | Admin Fax: 37 | Admin Fax Ext: 38 | Admin Email: domains@samoa.ws 39 | Registry Tech ID: 40 | Tech Name: CSL 41 | Tech Organization: Computer Services Limited 42 | Tech Street: 701 Palomar Airport Rd. 3rd floor 43 | Tech City: Carlsbad 44 | Tech State/Province: CA 45 | Tech Postal Code: 92009 46 | Tech Country: US 47 | Tech Phone: +1.68520926 48 | Tech Phone Ext: 49 | Tech Fax: 50 | Tech Fax Ext: 51 | Tech Email: domains@samoa.ws 52 | Name Server: ns2.ncsdi.ws. 53 | Name Server: ns3.ncsdi.ws. 54 | Name Server: ns4.ncsdi.ws. 55 | Name Server: ns5.ncsdi.ws. 56 | DNSSEC: unsigned 57 | URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/ 58 | >>> Last update of WHOIS database: 2020-06-07T14:27:27Z <<< 59 | 60 | For more information on Whois status codes, please visit https://icann.org/epp 61 | -------------------------------------------------------------------------------- /tests/fixtures/usp.ac.fj.txt: -------------------------------------------------------------------------------- 1 | 2 | The Data in the USP WHOIS database is provided by USP for 3 | information purposes, and to assist persons in obtaining 4 | information about or related to a domain name registration record. 5 | USP does not guarantee its accuracy. By submitting a 6 | WHOIS query, you agree that you will use this Data only for lawful 7 | purposes and that, under no circumstances will you use this Data to: 8 | (1) allow, enable, or otherwise support the transmission of mass 9 | unsolicited, commercial advertising or solicitations via e-mail 10 | (spam); or (2) enable high volume, automated, electronic processes 11 | that apply to USP (or its systems). USP reserves the right to modify 12 | these terms at any time. By submitting this query, you agree to abide 13 | by this policy. 14 | 15 | Domain name: usp.ac.fj Status: Active 16 | Expires: 31st December 2020 17 | 18 | Registrant: 19 | The University of the South Pacific 20 | IT Services 21 | 22 | Domain servers: 23 | 24 | MANU.USP.AC.FJ 144.120.8.10 25 | TERI.USP.AC.FJ 144.120.8.1 26 | -------------------------------------------------------------------------------- /tests/fixtures/vibrantdigitalfuture.uk.txt: -------------------------------------------------------------------------------- 1 | 2 | Domain name: 3 | vibrantdigitalfuture.uk 4 | 5 | Registrant: 6 | Nominet UK 7 | 8 | Registrant type: 9 | UK Limited Company, (Company number: 3203859) 10 | 11 | Registrant's address: 12 | Minerva House 13 | Edmund Halley Road 14 | Oxford Science Park 15 | Oxford 16 | Oxon 17 | OX4 4DQ 18 | United Kingdom 19 | 20 | Data validation: 21 | Nominet was able to match the registrant's name and address against a 3rd party data source on 26-Oct-2018 22 | 23 | Registrar: 24 | No registrar listed. This domain is registered directly with Nominet. 25 | 26 | Relevant dates: 27 | Registered on: 27-Jul-2016 28 | Last updated: 30-Oct-2019 29 | 30 | Registration status: 31 | No registration status listed. 32 | 33 | Name servers: 34 | curt.ns.cloudflare.com 35 | dee.ns.cloudflare.com 36 | 37 | WHOIS lookup made at 18:48:30 07-Jun-2020 38 | 39 | -- 40 | This WHOIS information is provided for free by Nominet UK the central registry 41 | for .uk domain names. This information and the .uk WHOIS are: 42 | 43 | Copyright Nominet UK 1996 - 2020. 44 | 45 | You may not access the .uk WHOIS or use any data from it except as permitted 46 | by the terms of use available in full at https://www.nominet.uk/whoisterms, 47 | which includes restrictions on: (A) use of the data for advertising, or its 48 | repackaging, recompilation, redistribution or reuse (B) obscuring, removing 49 | or hiding any or all of this notice and (C) exceeding query rate or volume 50 | limits. The data is provided on an 'as-is' basis and may lag behind the 51 | register. Access may be withdrawn or restricted at any time. -------------------------------------------------------------------------------- /tests/fixtures/рег.рф.txt: -------------------------------------------------------------------------------- 1 | % By submitting a query to RIPN's Whois Service 2 | % you agree to abide by the following terms of use: 3 | % http://www.ripn.net/about/servpol.html#3.2 (in Russian) 4 | % http://www.ripn.net/about/en/servpol.html#3.2 (in English). 5 | 6 | domain: XN--C1AD6A.XN--P1AI 7 | nserver: ns1.reg.ru. 8 | nserver: ns2.reg.ru. 9 | state: REGISTERED, DELEGATED, VERIFIED 10 | org: Domain name registrar REG.RU 11 | registrar: REGRU-RF 12 | admin-contact: http://www.reg.ru/whois/admin_contact 13 | created: 2009-12-11T11:53:43Z 14 | paid-till: 2020-12-11T11:53:43Z 15 | free-date: 2021-01-11 16 | source: TCI 17 | 18 | Last updated on 2020-10-07T20:06:32Z 19 | -------------------------------------------------------------------------------- /tests/ip_handlerTest.php: -------------------------------------------------------------------------------- 1 | lookup('216.58.209.195'); 15 | self::assertTrue(is_array($result)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /testsuite.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsmitty12/phpWhois/2f88d8f02e95b3d959e564b476ecdf791135896d/testsuite.txt --------------------------------------------------------------------------------