diff --git a/public/whois/whois-php/.gitignore b/public/whois/whois-php/.gitignore new file mode 100644 index 0000000..48b8bf9 --- /dev/null +++ b/public/whois/whois-php/.gitignore @@ -0,0 +1 @@ +vendor/ diff --git a/public/whois/whois-php/.styleci.yml b/public/whois/whois-php/.styleci.yml new file mode 100644 index 0000000..247a09c --- /dev/null +++ b/public/whois/whois-php/.styleci.yml @@ -0,0 +1 @@ +preset: psr2 diff --git a/public/whois/whois-php/.travis.yml b/public/whois/whois-php/.travis.yml new file mode 100644 index 0000000..4336fe4 --- /dev/null +++ b/public/whois/whois-php/.travis.yml @@ -0,0 +1,18 @@ +cache: + directories: + - vendor + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + +matrix: + fast_finish: true + +before_install: + - composer install + +script: ./vendor/bin/phpunit diff --git a/public/whois/whois-php/LICENSE b/public/whois/whois-php/LICENSE new file mode 100644 index 0000000..6fec212 --- /dev/null +++ b/public/whois/whois-php/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2016 flashwave + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/public/whois/whois-php/README.md b/public/whois/whois-php/README.md new file mode 100644 index 0000000..877768a --- /dev/null +++ b/public/whois/whois-php/README.md @@ -0,0 +1,7 @@ +# whois-php +[![Build Status](https://api.travis-ci.org/flashwave/whois-php.svg)](https://travis-ci.org/flashwave/whois-php) +[![Style Check](https://styleci.io/repos/42394993/shield)](https://styleci.io/repos/42394993) +[![Latest Version](https://poser.pugx.org/flashwave/whois-php/v/stable)](https://packagist.org/packages/flashwave/whois-php) +[![License](https://poser.pugx.org/flashwave/whois-php/license)](https://packagist.org/packages/flashwave/whois-php) + +Whois Query thing in PHP with "portable" class. diff --git a/public/whois/whois-php/composer.json b/public/whois/whois-php/composer.json new file mode 100644 index 0000000..501930c --- /dev/null +++ b/public/whois/whois-php/composer.json @@ -0,0 +1,30 @@ +{ + "name": "flashwave/whois-php", + "description": "Whois client library for PHP", + "keywords": ["flashwave", "whois", "php"], + "type": "library", + "license": "MIT", + "support": { + "email": "me@flash.moe", + "issues": "https://github.com/flashwave/whois-php/issues", + "source": "https://github.com/flashwave/whois-php" + }, + "authors": [ + { + "name": "Julian van de Groep", + "email": "me@flash.moe", + "homepage": "https://flash.moe" + } + ], + "autoload": { + "psr-4": { + "Whois\\": "src/Whois/" + } + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "5.5.*" + } +} diff --git a/public/whois/whois-php/composer.lock b/public/whois/whois-php/composer.lock new file mode 100644 index 0000000..9cbf6c4 --- /dev/null +++ b/public/whois/whois-php/composer.lock @@ -0,0 +1,1327 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "ad5c12c908be2ba02f4ef7f7721c6536", + "packages": [], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14T21:17:01+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-01-26T22:05:40+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27T11:43:31+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30T07:12:33+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-11-25T06:54:22+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.6.2", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1", + "sebastian/recursion-context": "^1.0|^2.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.0", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2016-11-21T14:58:47+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "c19cfc7cbb0e9338d8c469c7eedecc2a428b0971" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c19cfc7cbb0e9338d8c469c7eedecc2a428b0971", + "reference": "c19cfc7cbb0e9338d8c469c7eedecc2a428b0971", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "^1.4.2", + "sebastian/code-unit-reverse-lookup": "~1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "~1.0|~2.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.4.0", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-01-20T15:06:43+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2016-10-03T07:40:28+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4|~5" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2016-05-12T18:03:57+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b", + "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2016-11-15T14:06:22+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "5.5.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "3f67cee782c9abfaee5e32fd2f57cdd54bc257ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3f67cee782c9abfaee5e32fd2f57cdd54bc257ba", + "reference": "3f67cee782c9abfaee5e32fd2f57cdd54bc257ba", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "^4.0.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.2", + "sebastian/environment": "^1.3 || ^2.0", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/object-enumerator": "~1.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-tidy": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2016-10-03T13:04:15+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2016-12-08T20:27:08+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe", + "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2016-02-13T06:45:14+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-12-08T07:14:41+00:00" + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-11-26T07:53:53+00:00" + }, + { + "name": "sebastian/exporter", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-06-17T09:04:28+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "d4ca2fb70344987502567bc50081c03e6192fb26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d4ca2fb70344987502567bc50081c03e6192fb26", + "reference": "d4ca2fb70344987502567bc50081c03e6192fb26", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2016-01-28T13:25:10+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "913401df809e99e4f47b27cdd781f4a258d58791" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", + "reference": "913401df809e99e4f47b27cdd781f4a258d58791", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-11-11T19:50:13+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "e1718c6bf57e1efbb8793ada951584b2ab27775b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e1718c6bf57e1efbb8793ada951584b2ab27775b", + "reference": "e1718c6bf57e1efbb8793ada951584b2ab27775b", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2017-01-21T17:06:35+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/public/whois/whois-php/phpunit.xml b/public/whois/whois-php/phpunit.xml new file mode 100644 index 0000000..278f94d --- /dev/null +++ b/public/whois/whois-php/phpunit.xml @@ -0,0 +1,17 @@ + + + + + ./tests/ + + + diff --git a/public/whois/whois-php/src/Whois/Client.php b/public/whois/whois-php/src/Whois/Client.php new file mode 100644 index 0000000..26c8282 --- /dev/null +++ b/public/whois/whois-php/src/Whois/Client.php @@ -0,0 +1,234 @@ +servers = new $servers; + } + + /** + * Loop up a target (ip/domain) on whois + * + * @param string $target The target domain/ip. + * + * @throws WhoisException if the given target doesn't validate as an IP or domain. + * + * @return Result The response from the whois server + */ + public function lookup($target) + { + // Check if IP + if (filter_var($target, FILTER_VALIDATE_IP)) { + return $this->lookupIP($target); + } + + // Check if domain + if ($this->verifyDomainName($target)) { + return $this->lookupDomain($target); + } + + // Throw an error if both are false + throw new WhoisException('The target supplied does not appear to be a valid IP or domain name.'); + } + + private function lookupDomain($target) + { + // Make target completely lowercase + $target = strtolower($target); + + // Split the dots + $targetSplit = explode('.', $target); + + // Create server variable + $server = null; + + // Select a server + while (count($targetSplit)) { + // Glue array + $tld = implode('.', $targetSplit); + + // Check if it exists in the tld servers variable + if (array_key_exists($tld, $this->servers->tld)) { + $server = $this->servers->tld[$tld]; + break; + } + + // Remove first entry + array_shift($targetSplit); + } + + // If we get here and $server is still null throw an exception + if ($server === null) { + throw new WhoisException('No whois server found for this domain.'); + } + + // Create a Result object + $result = new Result(); + + // Set the domain + $result->target = $target; + + // Set the type + $result->type = 'domain'; + + // Create responses container + $responses = []; + + // Query the server + $response = $this->query($target, $server); + + // Process the data if anything was returned + if ($response) { + // Add the response to the array + $responses[$server] = $response; + + // Check if there's a secondary whois server + if ($position = strpos(strtolower($response), 'whois server:')) { + // Grab the uri from the response + preg_match("/whois server: (.*)/", strtolower($response), $matches); + + // Check if it's not the same server + if (isset($matches[1]) && trim(strtolower($server)) !== trim($matches[1])) { + // Set the secondary server + $second = trim($matches[1]); + + // Do a query + $response = $this->query($target, $second); + + // Check if that was something + if ($response) { + // Add it to the responses + $responses[$second] = $response; + } + } + } + } + + // Set the count + $result->count = count($responses); + + // Set the responses + $result->responses = array_reverse($responses); + + // Return the result + return $result; + } + + /** + * Whois an IP address. + * + * @param string $address The IP address to query. + * + * @return Result The whois results. + */ + private function lookupIP($address) + { + // Create the responses storage array + $responses = []; + + // Query every server in the IP list + foreach ($this->servers->ip as $server) { + // Check if we haven't queried this server yet + if (array_key_exists($server, $responses)) { + continue; + } + + // Query the server + $responses[$server] = $this->query($address, $server); + } + + // Create a result object + $result = new Result(); + + // Set target + $result->target = $address; + + // Set the type + $result->type = 'ip'; + + // Set response count + $result->count = count($responses); + + // Set responses + $result->responses = array_reverse($responses); + + // Return the Result object + return $result; + } + + /** + * Validates a domain name. + * + * @param string $domain The string to validate as a domain. + * + * @return bool will be positive if the string is a domain. + */ + private function verifyDomainName($domain) + { + return (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain) // Valid chars check + && preg_match("/^.{1,253}$/", $domain) // Overall length check + && preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain)); // Length of each label + } + + /** + * Query the whois server. + * + * @param string $target The target IP/domain. + * @param string $server The server to be queried. + * @param int $port The port for the whois server. + * @param int $timeout The timeout. + * + * @throws WhoisException if the socket failed to open. + * + * @return string The response from the whois server. + */ + private function query($target, $server, $port = 43, $timeout = 5) + { + // Create the socket + $sock = @fsockopen($server, $port, $errno, $errstr, $timeout); + + // Check for errors + if (!$sock) { + // Throw an exception with the error string + throw new WhoisException($errstr); + } + + // Write the target to the socket + fwrite($sock, $target . "\r\n"); + + // Create storage variable + $response = ''; + + // Await output + while ($line = fgets($sock)) { + $response .= $line; + } + + // Close the socket + fclose($sock); + + // Return the response + return $response; + } +} diff --git a/public/whois/whois-php/src/Whois/Result.php b/public/whois/whois-php/src/Whois/Result.php new file mode 100644 index 0000000..3035805 --- /dev/null +++ b/public/whois/whois-php/src/Whois/Result.php @@ -0,0 +1,34 @@ + 'whois.nic.ac', + 'ac' => 'whois.nic.ac', + 'academy' => 'whois.donuts.co', + 'accountants' => 'whois.donuts.co', + 'active' => 'whois.afilias-srs.net', + 'actor' => 'whois.unitedtld.com', + 'actor' => 'whois.unitedtld.com', + 'ad' => 'whois.ripe.net', + 'ae' => 'whois.nic.ae', + 'aero' => 'whois.aero', + 'af' => 'whois.nic.af', + 'ag' => 'whois.nic.ag', + 'agency' => 'whois.donuts.co', + 'ai' => 'whois.ai', + 'airforce' => 'whois.unitedtld.com', + 'al' => 'whois.ripe.net', + 'allfinanz' => 'whois.ksregistry.net', + 'alsace' => 'whois-alsace.nic.fr', + 'am' => 'whois.amnic.net', + 'army' => 'whois.rightside.co', + 'arpa' => 'whois.iana.org', + 'as' => 'whois.nic.as', + 'asia' => 'whois.nic.asia', + 'associates' => 'whois.donuts.co', + 'at' => 'whois.nic.at', + 'attorney' => 'whois.rightside.co', + 'au' => 'whois.audns.net.au', + 'auction' => 'whois.unitedtld.com', + 'audio' => 'whois.uniregistry.net', + 'autos' => 'whois.afilias-srs.net', + 'aw' => 'whois.nic.aw', + 'ax' => 'whois.ax', + 'az' => 'whois.ripe.net', + 'band' => 'whois.rightside.co', + 'bar' => 'whois.nic.bar', + 'bargains' => 'whois.donuts.co', + 'bayern' => 'whois-dub.mm-registry.com', + 'be' => 'whois.dns.be', + 'beer' => 'whois-dub.mm-registry.com', + 'berlin' => 'whois.nic.berlin', + 'best' => 'whois.nic.best', + 'bg' => 'whois.register.bg', + 'bi' => 'whois.nic.bi', + 'bike' => 'whois.donuts.co', + 'bio' => 'whois.ksregistry.net', + 'biz' => 'whois.biz', + 'bj' => 'whois.nic.bj', + 'black' => 'whois.afilias.net', + 'blackfriday' => 'whois.uniregistry.net', + 'blue' => 'whois.afilias.net', + 'bmw' => 'whois.ksregistry.net', + 'bn' => 'whois.bn', + 'bnpparibas' => 'whois.afilias-srs.net', + 'bo' => 'whois.nic.bo', + 'boo' => 'domain-registry-whois.l.google.com', + 'boutique' => 'whois.donuts.co', + 'br' => 'whois.nic.br', + 'brussels' => 'whois.nic.brussels', + 'bt' => 'whois.netnames.net', + 'budapest' => 'whois-dub.mm-registry.com', + 'build' => 'whois.nic.build', + 'builders' => 'whois.donuts.co', + 'business' => 'whois.donuts.co', + 'business' => 'whois.donuts.co', + 'bw' => 'whois.nic.net.bw', + 'by' => 'whois.cctld.by', + 'bz' => 'whois.belizenic.bz', + 'bzh' => 'whois-bzh.nic.fr', + 'ca' => 'whois.cira.ca', + 'cab' => 'whois.donuts.co', + 'cal' => 'domain-registry-whois.l.google.com', + 'camera' => 'whois.donuts.co', + 'camp' => 'whois.donuts.co', + 'cancerresearch' => 'whois.nic.cancerresearch', + 'capetown' => 'capetown-whois.registry.net.za', + 'capital' => 'whois.donuts.co', + 'cards' => 'whois.donuts.co', + 'care' => 'whois.donuts.co', + 'career' => 'whois.nic.career', + 'careers' => 'whois.donuts.co', + 'casa' => 'whois-dub.mm-registry.com', + 'cash' => 'whois.donuts.co', + 'cat' => 'whois.cat', + 'catering' => 'whois.donuts.co', + 'cc' => 'ccwhois.verisign-grs.com', + 'cd' => 'whois.nic.cd', + 'center' => 'whois.donuts.co', + 'ceo' => 'whois.nic.ceo', + 'cern' => 'whois.afilias-srs.net', + 'cf' => 'whois.dot.cf', + 'ch' => 'whois.nic.ch', + 'channel' => 'domain-registry-whois.l.google.com', + 'cheap' => 'whois.donuts.co', + 'christmas' => 'whois.uniregistry.net', + 'chrome' => 'domain-registry-whois.l.google.com', + 'church' => 'whois.donuts.co', + 'ci' => 'whois.nic.ci', + 'city' => 'whois.donuts.co', + 'ck' => 'whois.nic.ck', + 'cl' => 'whois.nic.cl', + 'claims' => 'whois.donuts.co', + 'cleaning' => 'whois.donuts.co', + 'click' => 'whois.uniregistry.net', + 'clinic' => 'whois.donuts.co', + 'clothing' => 'whois.donuts.co', + 'club' => 'whois.nic.club', + 'cn' => 'whois.cnnic.net.cn', + 'co' => 'whois.co', + 'codes' => 'whois.donuts.co', + 'coffee' => 'whois.donuts.co', + 'college' => 'whois.centralnic.com', + 'cologne' => 'whois-fe1.pdt.cologne.tango.knipp.de', + 'com' => 'whois.verisign-grs.com', + 'community' => 'whois.donuts.co', + 'company' => 'whois.donuts.co', + 'computer' => 'whois.donuts.co', + 'condos' => 'whois.donuts.co', + 'construction' => 'whois.donuts.co', + 'consulting' => 'whois.unitedtld.com', + 'contractors' => 'whois.donuts.co', + 'cooking' => 'whois-dub.mm-registry.com', + 'cool' => 'whois.donuts.co', + 'coop' => 'whois.nic.coop', + 'country' => 'whois-dub.mm-registry.com', + 'credit' => 'whois.donuts.co', + 'creditcard' => 'whois.donuts.co', + 'cruises' => 'whois.donuts.co', + 'cuisinella' => 'whois.nic.cuisinella', + 'cx' => 'whois.nic.cx', + 'cymru' => 'whois.nic.cymru', + 'cz' => 'whois.nic.cz', + 'dad' => 'domain-registry-whois.l.google.com', + 'dance' => 'whois.unitedtld.com', + 'dating' => 'whois.donuts.co', + 'day' => 'domain-registry-whois.l.google.com', + 'de' => 'whois.denic.de', + 'deals' => 'whois.donuts.co', + 'democrat' => 'whois.rightside.co', + 'degree' => 'whois.unitedtld.com', + 'dental' => 'whois.donuts.co', + 'dentist' => 'whois.rightside.co', + 'desi' => 'whois.ksregistry.net', + 'diamonds' => 'whois.donuts.co', + 'diet' => 'whois.uniregistry.net', + 'digital' => 'whois.donuts.co', + 'direct' => 'whois.donuts.co', + 'directory' => 'whois.donuts.co', + 'discount' => 'whois.donuts.co', + 'dk' => 'whois.dk-hostmaster.dk', + 'dm' => 'whois.nic.dm', + 'domains' => 'whois.donuts.co', + 'durban' => 'durban-whois.registry.net.za', + 'dvag' => 'whois.ksregistry.net', + 'dz' => 'whois.nic.dz', + 'eat' => 'domain-registry-whois.l.google.com', + 'ec' => 'whois.nic.ec', + 'edu' => 'whois.educause.edu', + 'education' => 'whois.donuts.co', + 'ee' => 'whois.eenet.ee', + 'eg' => 'whois.ripe.net', + 'email' => 'whois.donuts.co', + 'engineer' => 'whois.rightside.co', + 'engineering' => 'whois.donuts.co', + 'enterprises' => 'whois.donuts.co', + 'equipment' => 'whois.donuts.co', + 'es' => 'whois.nic.es', + 'esq' => 'domain-registry-whois.l.google.com', + 'estate' => 'whois.donuts.co', + 'eu' => 'whois.eu', + 'eus' => 'whois.eus.coreregistry.net', + 'events' => 'whois.donuts.co', + 'exchange' => 'whois.donuts.co', + 'expert' => 'whois.donuts.co', + 'exposed' => 'whois.donuts.co', + 'fail' => 'whois.donuts.co', + 'farm' => 'whois.donuts.co', + 'feedback' => 'whois.centralnic.com', + 'fi' => 'whois.ficora.fi', + 'finance' => 'whois.donuts.co', + 'financial' => 'whois.donuts.co', + 'fish' => 'whois.donuts.co', + 'fishing' => 'whois-dub.mm-registry.com', + 'fitness' => 'whois.donuts.co', + 'flights' => 'whois.donuts.co', + 'florist' => 'whois.donuts.co', + 'flsmidth' => 'whois.ksregistry.net', + 'fly' => 'domain-registry-whois.l.google.com', + 'fo' => 'whois.nic.fo', + 'foo' => 'domain-registry-whois.l.google.com', + 'forsale' => 'whois.unitedtld.com', + 'foundation' => 'whois.donuts.co', + 'fr' => 'whois.nic.fr', + 'frl' => 'whois.nic.frl', + 'frogans' => 'whois-frogans.nic.fr', + 'fund' => 'whois.donuts.co', + 'furniture' => 'whois.donuts.co', + 'futbol' => 'whois.unitedtld.com', + 'gal' => 'whois.gal.coreregistry.net', + 'gallery' => 'whois.donuts.co', + 'gbiz' => 'domain-registry-whois.l.google.com', + 'gd' => 'whois.nic.gd', + 'gent' => 'whois.nic.gent', + 'gg' => 'whois.channelisles.net', + 'gi' => 'whois2.afilias-grs.net', + 'gift' => 'whois.uniregistry.net', + 'gifts' => 'whois.donuts.co', + 'gives' => 'whois.rightside.co', + 'gl' => 'whois.nic.gl', + 'glass' => 'whois.donuts.co', + 'gle' => 'domain-registry-whois.l.google.com', + 'global' => 'whois.afilias-srs.net', + 'globo' => 'whois.gtlds.nic.br', + 'gmail' => 'domain-registry-whois.l.google.com', + 'gmx' => 'whois-fe1.gmx.tango.knipp.de', + 'google' => 'domain-registry-whois.l.google.com', + 'gop' => 'whois-cl01.mm-registry.com', + 'gov' => 'whois.nic.gov', + 'gq' => 'whois.dominio.gq', + 'gr' => 'whois.ripe.net', + 'gratis' => 'whois.donuts.co', + 'green' => 'whois.afilias.net', + 'gripe' => 'whois.donuts.co', + 'gs' => 'whois.nic.gs', + 'guide' => 'whois.donuts.co', + 'guitars' => 'whois.uniregistry.net', + 'guru' => 'whois.donuts.co', + 'gy' => 'whois.registry.gy', + 'hamburg' => 'whois.nic.hamburg', + 'haus' => 'whois.unitedtld.com', + 'healthcare' => 'whois.donuts.co', + 'help' => 'whois.uniregistry.net', + 'here' => 'domain-registry-whois.l.google.com', + 'hiphop' => 'whois.uniregistry.net', + 'hiv' => 'whois.afilias-srs.net', + 'hk' => 'whois.hkirc.hk', + 'hn' => 'whois.nic.hn', + 'holdings' => 'whois.donuts.co', + 'holiday' => 'whois.donuts.co', + 'homes' => 'whois.afilias-srs.net', + 'horse' => 'whois-dub.mm-registry.com', + 'host' => 'whois.nic.host', + 'hosting' => 'whois.uniregistry.net', + 'house' => 'whois.donuts.co', + 'how' => 'domain-registry-whois.l.google.com', + 'hr' => 'whois.dns.hr', + 'ht' => 'whois.nic.ht', + 'hu' => 'whois.nic.hu', + 'ibm' => 'whois.nic.ibm', + 'id' => 'whois.pandi.or.id', + 'ie' => 'whois.domainregistry.ie', + 'il' => 'whois.isoc.org.il', + 'im' => 'whois.nic.im', + 'immo' => 'whois.donuts.co', + 'immobilien' => 'whois.unitedtld.com', + 'in' => 'whois.inregistry.net', + 'industries' => 'whois.donuts.co', + 'info' => 'whois.afilias.net', + 'ing' => 'domain-registry-whois.l.google.com', + 'ink' => 'whois.centralnic.com', + 'institute' => 'whois.donuts.co', + 'insure' => 'whois.donuts.co', + 'int' => 'whois.iana.org', + 'international' => 'whois.donuts.co', + 'investments' => 'whois.donuts.co', + 'io' => 'whois.nic.io', + 'iq' => 'whois.cmc.iq', + 'ir' => 'whois.nic.ir', + 'is' => 'whois.isnic.is', + 'it' => 'whois.nic.it', + 'je' => 'whois.channelisles.net', + 'jobs' => 'jobswhois.verisign-grs.com', + 'joburg' => 'joburg-whois.registry.net.za', + 'jp' => 'whois.jprs.jp', + 'juegos' => 'whois.uniregistry.net', + 'kaufen' => 'whois.unitedtld.com', + 'ke' => 'whois.kenic.or.ke', + 'kg' => 'www.domain.kg', + 'ki' => 'whois.nic.ki', + 'kim' => 'whois.afilias.net', + 'kitchen' => 'whois.donuts.co', + 'kiwi' => 'whois.nic.kiwi', + 'koeln' => 'whois-fe1.pdt.koeln.tango.knipp.de', + 'kr' => 'whois.kr', + 'krd' => 'whois.aridnrs.net.au', + 'kz' => 'whois.nic.kz', + 'la' => 'whois.nic.la', + 'lacaixa' => 'whois.nic.lacaixa', + 'land' => 'whois.donuts.co', + 'lawyer' => 'whois.rightside.co', + 'lease' => 'whois.donuts.co', + 'lgbt' => 'whois.afilias.net', + 'li' => 'whois.nic.li', + 'life' => 'whois.donuts.co', + 'lighting' => 'whois.donuts.co', + 'limited' => 'whois.donuts.co', + 'limo' => 'whois.donuts.co', + 'link' => 'whois.uniregistry.net', + 'loans' => 'whois.donuts.co', + 'london' => 'whois-lon.mm-registry.com', + 'lotto' => 'whois.afilias.net', + 'love' => 'whois.nic.love', + 'lt' => 'whois.domreg.lt', + 'ltda' => 'whois.afilias-srs.net', + 'lu' => 'whois.dns.lu', + 'luxe' => 'whois-dub.mm-registry.com', + 'luxury' => 'whois.nic.luxury', + 'lv' => 'whois.nic.lv', + 'ly' => 'whois.nic.ly', + 'ma' => 'whois.iam.net.ma', + 'maison' => 'whois.donuts.co', + 'management' => 'whois.donuts.co', + 'mango' => 'whois.mango.coreregistry.net', + 'market' => 'whois.rightside.co', + 'marketing' => 'whois.donuts.co', + 'md' => 'whois.nic.md', + 'me' => 'whois.nic.me', + 'media' => 'whois.donuts.co', + 'meet' => 'whois.afilias.net', + 'melbourne' => 'whois.aridnrs.net.au', + 'meme' => 'domain-registry-whois.l.google.com', + 'menu' => 'whois.nic.menu', + 'mg' => 'whois.nic.mg', + 'miami' => 'whois-dub.mm-registry.com', + 'mil' => 'whois.internic.net', + 'mini' => 'whois.ksregistry.net', + 'mk' => 'whois.marnet.mk', + 'ml' => 'whois.dot.ml', + 'mn' => 'whois.nic.mn', + 'mo' => 'whois.monic.mo', + 'mobi' => 'whois.dotmobiregistry.net', + 'moda' => 'whois.unitedtld.com', + 'moe' => 'whois.nic.moe', + 'monash' => 'whois.nic.monash', + 'mortgage' => 'whois.rightside.co', + 'moscow' => 'whois.nic.moscow', + 'motorcycles' => 'whois.afilias-srs.net', + 'mov' => 'domain-registry-whois.l.google.com', + 'mp' => 'whois.nic.mp', + 'ms' => 'whois.nic.ms', + 'mu' => 'whois.nic.mu', + 'museum' => 'whois.museum', + 'mx' => 'whois.mx', + 'my' => 'whois.mynic.my', + 'mz' => 'whois.nic.mz', + 'na' => 'whois.na-nic.com.na', + 'name' => 'whois.nic.name', + 'navy' => 'whois.rightside.co', + 'nc' => 'whois.nc', + 'net' => 'whois.verisign-grs.net', + 'network' => 'whois.donuts.co', + 'new' => 'domain-registry-whois.l.google.com', + 'nexus' => 'domain-registry-whois.l.google.com', + 'nf' => 'whois.nic.nf', + 'ng' => 'whois.nic.net.ng', + 'ngo' => 'whois.publicinterestregistry.net', + 'ninja' => 'whois.unitedtld.com', + 'nl' => 'whois.domain-registry.nl', + 'no' => 'whois.norid.no', + 'nra' => 'whois.afilias-srs.net', + 'nrw' => 'whois.nic.nrw', + 'nu' => 'whois.nic.nu', + 'nz' => 'whois.srs.net.nz', + 'om' => 'whois.registry.om', + 'one' => 'whois.nic.one', + 'ong' => 'whois.publicinterestregistry.net', + 'onl' => 'whois.afilias-srs.net', + 'ooo' => 'whois.nic.ooo', + 'org' => 'whois.pir.org', + 'organic' => 'whois.afilias.net', + 'ovh' => 'whois-ovh.nic.fr', + 'paris' => 'whois-paris.nic.fr', + 'partners' => 'whois.donuts.co', + 'parts' => 'whois.donuts.co', + 'pe' => 'kero.yachay.pe', + 'pf' => 'whois.registry.pf', + 'photo' => 'whois.uniregistry.net', + 'photography' => 'whois.donuts.co', + 'photos' => 'whois.donuts.co', + 'physio' => 'whois.nic.physio', + 'pics' => 'whois.uniregistry.net', + 'pictures' => 'whois.donuts.co', + 'pink' => 'whois.afilias.net', + 'pizza' => 'whois.donuts.co', + 'pl' => 'whois.dns.pl', + 'place' => 'whois.donuts.co', + 'plumbing' => 'whois.donuts.co', + 'pm' => 'whois.nic.pm', + 'pohl' => 'whois.ksregistry.net', + 'poker' => 'whois.afilias.net', + 'post' => 'whois.dotpostregistry.net', + 'pr' => 'whois.nic.pr', + 'press' => 'whois.nic.press', + 'pro' => 'whois.nic.pro', + 'prod' => 'domain-registry-whois.l.google.com', + 'productions' => 'whois.donuts.co', + 'prof' => 'domain-registry-whois.l.google.com', + 'properties' => 'whois.donuts.co', + 'property' => 'whois.uniregistry.net', + 'pt' => 'whois.dns.pt', + 'pub' => 'whois.unitedtld.com', + 'pw' => 'whois.nic.pw', + 'qa' => 'whois.registry.qa', + 'quebec' => 'whois.quebec.rs.corenic.net', + 're' => 'whois.nic.re', + 'recipes' => 'whois.donuts.co', + 'red' => 'whois.afilias.net', + 'rehab' => 'whois.rightside.co', + 'reise' => 'whois.nic.reise', + 'reisen' => 'whois.donuts.co', + 'rentals' => 'whois.donuts.co', + 'repair' => 'whois.donuts.co', + 'report' => 'whois.donuts.co', + 'republican' => 'whois.rightside.co', + 'rest' => 'whois.centralnic.com', + 'restaurant' => 'whois.donuts.co', + 'reviews' => 'whois.unitedtld.com', + 'rich' => 'whois.afilias-srs.net', + 'rio' => 'whois.gtlds.nic.br', + 'rip' => 'whois.rightside.co', + 'ro' => 'whois.rotld.ro', + 'rocks' => 'whois.unitedtld.com', + 'rodeo' => 'whois-dub.mm-registry.com', + 'rs' => 'whois.rnids.rs', + 'rsvp' => 'domain-registry-whois.l.google.com', + 'ru' => 'whois.ripn.net', + 'ruhr' => 'whois.nic.ruhr', + 'sa' => 'whois.nic.net.sa', + 'saarland' => 'whois.ksregistry.net', + 'sarl' => 'whois.donuts.co', + 'sb' => 'whois.nic.net.sb', + 'sc' => 'whois2.afilias-grs.net', + 'sca' => 'whois.nic.scb', + 'schmidt' => 'whois.nic.schmidt', + 'schule' => 'whois.donuts.co', + 'scot' => 'whois.scot.coreregistry.net', + 'se' => 'whois.iis.se', + 'services' => 'whois.donuts.co', + 'sexy' => 'whois.uniregistry.net', + 'sg' => 'whois.nic.net.sg', + 'sh' => 'whois.nic.sh', + 'shiksha' => 'whois.afilias.net', + 'shoes' => 'whois.donuts.co', + 'si' => 'whois.arnes.si', + 'singles' => 'whois.donuts.co', + 'sk' => 'whois.sk-nic.sk', + 'sm' => 'whois.nic.sm', + 'sn' => 'whois.nic.sn', + 'so' => 'whois.nic.so', + 'social' => 'whois.unitedtld.com', + 'software' => 'whois.rightside.co', + 'solar' => 'whois.donuts.co', + 'solutions' => 'whois.donuts.co', + 'soy' => 'domain-registry-whois.l.google.com', + 'space' => 'whois.nic.space', + 'spiegel' => 'whois.ksregistry.net', + 'st' => 'whois.nic.st', + 'store' => 'whois.nic.store', + 'su' => 'whois.tcinet.ru', + 'supplies' => 'whois.donuts.co', + 'supply' => 'whois.donuts.co', + 'support' => 'whois.donuts.co', + 'surf' => 'whois-dub.mm-registry.com', + 'surgery' => 'whois.donuts.co', + 'sx' => 'whois.sx', + 'sy' => 'whois.tld.sy', + 'systems' => 'whois.donuts.co', + 'tatar' => 'whois.nic.tatar', + 'tattoo' => 'whois.uniregistry.net', + 'tax' => 'whois.donuts.co', + 'tc' => 'whois.meridiantld.net', + 'technology' => 'whois.donuts.co', + 'tel' => 'whois.nic.tel', + 'tf' => 'whois.nic.tf', + 'th' => 'whois.thnic.co.th', + 'tienda' => 'whois.donuts.co', + 'tips' => 'whois.donuts.co', + 'tirol' => 'whois.nic.tirol', + 'tj' => 'whois.nic.tj', + 'tk' => 'whois.dot.tk', + 'tl' => 'whois.nic.tl', + 'tm' => 'whois.nic.tm', + 'tn' => 'whois.ati.tn', + 'to' => 'whois.tonic.to', + 'today' => 'whois.donuts.co', + 'tools' => 'whois.donuts.co', + 'top' => 'whois.nic.top', + 'town' => 'whois.donuts.co', + 'toys' => 'whois.donuts.co', + 'tp' => 'whois.nic.tl', + 'tr' => 'whois.nic.tr', + 'training' => 'whois.donuts.co', + 'travel' => 'whois.nic.travel', + 'tui' => 'whois.ksregistry.net', + 'tv' => 'tvwhois.verisign-grs.com', + 'tw' => 'whois.twnic.net.tw', + 'tz' => 'whois.tznic.or.tz', + 'ua' => 'whois.ua', + 'ug' => 'whois.co.ug', + 'uk' => 'whois.nic.uk', + 'university' => 'whois.donuts.co', + 'uol' => 'whois.gtlds.nic.br', + 'us' => 'whois.nic.us', + 'uy' => 'whois.nic.org.uy', + 'uz' => 'whois.cctld.uz', + 'vacations' => 'whois.donuts.co', + 'vc' => 'whois2.afilias-grs.net', + 've' => 'whois.nic.ve', + 'vegas' => 'whois.afilias-srs.net', + 'ventures' => 'whois.donuts.co', + 'vermögensberater' => 'whois.ksregistry.net', + 'vermögensberatung' => 'whois.ksregistry.net', + 'versicherung' => 'whois.nic.versicherung', + 'vet' => 'whois.rightside.co', + 'vg' => 'ccwhois.ksregistry.net', + 'viajes' => 'whois.donuts.co', + 'villas' => 'whois.donuts.co', + 'vision' => 'whois.donuts.co', + 'vlaanderen' => 'whois.nic.vlaanderen', + 'vodka' => 'whois-dub.mm-registry.com', + 'vote' => 'whois.afilias.net', + 'voting' => 'whois.voting.tld-box.at', + 'voto' => 'whois.afilias.net', + 'voyage' => 'whois.donuts.co', + 'vu' => 'vunic.vu', + 'wf' => 'whois.nic.wf', + 'wales' => 'whois.nic.wales', + 'wang' => 'whois.gtld.knet.cn', + 'watch' => 'whois.donuts.co', + 'website' => 'whois.nic.website', + 'wed' => 'whois.nic.wed', + 'wedding' => 'whois-dub.mm-registry.com', + 'wf' => 'whois.nic.wf', + 'wien' => 'whois.nic.wien', + 'wiki' => 'whois.nic.wiki', + 'wme' => 'whois.centralnic.com', + 'work' => 'whois-dub.mm-registry.com', + 'works' => 'whois.donuts.co', + 'world' => 'whois.donuts.co', + 'ws' => 'whois.website.ws', + 'wtc' => 'whois.nic.wtc', + 'wtf' => 'whois.donuts.co', + 'xxx' => 'whois.nic.xxx', + 'xyz' => 'whois.nic.xyz', + 'yachts' => 'whois.afilias-srs.net', + 'yoga' => 'whois-dub.mm-registry.com', + 'youtube' => 'domain-registry-whois.l.google.com', + 'yt' => 'whois.nic.yt', + 'zip' => 'domain-registry-whois.l.google.com', + 'zm' => 'whois.nic.zm', + 'zone' => 'whois.donuts.co', + 'дети' => 'whois.nic.xn--d1acj3b', + 'москва' => 'whois.nic.xn--80adxhks', + 'онлайн' => 'whois.online.rs.corenic.net', + 'орг' => 'whois.publicinterestregistry.net', + 'рус' => 'whois.nic.xn--p1acf', + 'рф' => 'whois.tcinet.ru', + 'сайт' => 'whois.site.rs.corenic.net', + 'укр' => 'whois.dotukr.com', + 'қаз' => 'whois.nic.kz', + 'الجزائر' => 'whois.nic.dz', + 'السعودية' => 'whois.nic.net.sa', + 'امارات' => 'whois.aeda.net.ae', + 'ایران' => 'whois.nic.ir', + 'بازار' => 'whois.bazaar.coreregistry.net', + 'سورية' => 'whois.tld.sy', + 'شبكة' => 'whois.nic.xn--ngbc5azd', + 'عمان' => 'whois.registry.om', + 'قطر' => 'whois.registry.qa', + 'مليسيا' => 'whois.mynic.my', + 'موقع' => 'whois.afilias-srs.net', + 'சிங்கப்பூர்' => 'whois.sgnic.sg', + 'ไทย' => 'whois.thnic.co.th', + 'みんな' => 'domain-registry-whois.l.google.com', + '中信' => 'whois.gtld.knet.cn', + '中国' => 'cwhois.cnnic.cn', + '中國' => 'cwhois.cnnic.cn', + '中文网' => 'whois.afilias-srs.net', + '企业' => 'whois.donuts.co', + '佛山' => 'whois.ngtld.cn', + '公司' => 'whois.ngtld.cn', + '公益' => 'whois.conac.cn', + '台湾' => 'whois.twnic.net.tw', + '台灣' => 'whois.twnic.net.tw', + '商城' => 'whois.gtld.knet.cn', + '在线' => 'whois.afilias-srs.net', + '广东' => 'whois.ngtld.cn', + '我爱你' => 'whois.gtld.knet.cn', + '手机' => 'whois.afilias-srs.net', + '政务' => 'whois.conac.cn', + '新加坡' => 'whois.sgnic.sg', + '新加坡' => 'whois.sgnic.sg', + '游戏' => 'whois.donuts.co', + '移动' => 'whois.afilias.net', + '组织机构' => 'whois.publicinterestregistry.net', + '网络' => 'whois.ngtld.cn', + '集团' => 'whois.gtld.knet.cn', + '香港' => 'whois.hkirc.hk', + ]; + + public $ip = [ + 'whois.lacnic.net', + 'whois.apnic.net', + 'whois.arin.net', + 'whois.ripe.net', + ]; +} diff --git a/public/whois/whois-php/src/Whois/WhoisException.php b/public/whois/whois-php/src/Whois/WhoisException.php new file mode 100644 index 0000000..57bba77 --- /dev/null +++ b/public/whois/whois-php/src/Whois/WhoisException.php @@ -0,0 +1,8 @@ +lookup('flash.moe'); + } + + public function testIP() + { + static::$client->lookup('8.8.8.8'); + static::$client->lookup('2001:4860:4860::8888'); + } + + /** + * @expectedException \Whois\WhoisException + */ + public function testException() + { + static::$client->lookup('not a domain'); + } +}