From 4b062a6759156b97ea3c46911e82629bade50452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Gangloff?= Date: Sat, 13 Jul 2024 00:22:17 +0200 Subject: [PATCH] feat: update entities to comply with RDAP --- composer.json | 216 +- composer.lock | 573 +- config/packages/nyholm_psr7.yaml | 11 - migrations/Version20240712133612.php | 35 - ...12132119.php => Version20240712222038.php} | 16 +- src/Config/DomainStatus.php | 1 + src/Config/dns.json | 5426 +++++++++++++++++ src/Controller/TestController.php | 80 +- src/Entity/Domain.php | 19 +- src/Entity/Nameserver.php | 36 +- src/Entity/NameserverEntity.php | 2 +- symfony.lock | 12 - 12 files changed, 5611 insertions(+), 816 deletions(-) delete mode 100644 config/packages/nyholm_psr7.yaml delete mode 100644 migrations/Version20240712133612.php rename migrations/{Version20240712132119.php => Version20240712222038.php} (84%) create mode 100644 src/Config/dns.json diff --git a/composer.json b/composer.json index b2f000a..9a99367 100644 --- a/composer.json +++ b/composer.json @@ -1,113 +1,111 @@ { - "type": "project", - "license": "proprietary", - "minimum-stability": "stable", - "prefer-stable": true, - "require": { - "php": ">=8.2", - "ext-ctype": "*", - "ext-iconv": "*", - "doctrine/dbal": "^3", - "doctrine/doctrine-bundle": "^2.12", - "doctrine/doctrine-migrations-bundle": "^3.3", - "doctrine/orm": "^3.2", - "eluceo/ical": "^2.13", - "guzzlehttp/guzzle": "^7.8", - "juanparati/rdap-lib": "^2.1", - "nyholm/psr7": "^1.8", - "phpdocumentor/reflection-docblock": "^5.4", - "phpstan/phpdoc-parser": "^1.29", - "psr/http-client": "^1.0", - "symfony/asset": "7.1.*", - "symfony/asset-mapper": "7.1.*", - "symfony/console": "7.1.*", - "symfony/doctrine-messenger": "7.1.*", - "symfony/dotenv": "7.1.*", - "symfony/expression-language": "7.1.*", - "symfony/flex": "^2", - "symfony/form": "7.1.*", - "symfony/framework-bundle": "7.1.*", - "symfony/intl": "7.1.*", - "symfony/mailer": "7.1.*", - "symfony/mime": "7.1.*", - "symfony/monolog-bundle": "^3.0", - "symfony/notifier": "7.1.*", - "symfony/process": "7.1.*", - "symfony/property-access": "7.1.*", - "symfony/property-info": "7.1.*", - "symfony/runtime": "7.1.*", - "symfony/security-bundle": "7.1.*", - "symfony/serializer": "7.1.*", - "symfony/stimulus-bundle": "^2.18", - "symfony/string": "7.1.*", - "symfony/translation": "7.1.*", - "symfony/twig-bundle": "7.1.*", - "symfony/uid": "7.1.*", - "symfony/ux-turbo": "^2.18", - "symfony/validator": "7.1.*", - "symfony/web-link": "7.1.*", - "symfony/yaml": "7.1.*", - "twig/extra-bundle": "^2.12|^3.0", - "twig/twig": "^2.12|^3.0" + "type": "project", + "license": "proprietary", + "minimum-stability": "stable", + "prefer-stable": true, + "require": { + "php": ">=8.2", + "ext-ctype": "*", + "ext-iconv": "*", + "doctrine/dbal": "^3", + "doctrine/doctrine-bundle": "^2.12", + "doctrine/doctrine-migrations-bundle": "^3.3", + "doctrine/orm": "^3.2", + "eluceo/ical": "^2.13", + "phpdocumentor/reflection-docblock": "^5.4", + "phpstan/phpdoc-parser": "^1.29", + "psr/http-client": "^1.0", + "symfony/asset": "7.1.*", + "symfony/asset-mapper": "7.1.*", + "symfony/console": "7.1.*", + "symfony/doctrine-messenger": "7.1.*", + "symfony/dotenv": "7.1.*", + "symfony/expression-language": "7.1.*", + "symfony/flex": "^2", + "symfony/form": "7.1.*", + "symfony/framework-bundle": "7.1.*", + "symfony/http-client": "7.1.*", + "symfony/intl": "7.1.*", + "symfony/mailer": "7.1.*", + "symfony/mime": "7.1.*", + "symfony/monolog-bundle": "^3.0", + "symfony/notifier": "7.1.*", + "symfony/process": "7.1.*", + "symfony/property-access": "7.1.*", + "symfony/property-info": "7.1.*", + "symfony/runtime": "7.1.*", + "symfony/security-bundle": "7.1.*", + "symfony/serializer": "7.1.*", + "symfony/stimulus-bundle": "^2.18", + "symfony/string": "7.1.*", + "symfony/translation": "7.1.*", + "symfony/twig-bundle": "7.1.*", + "symfony/uid": "7.1.*", + "symfony/ux-turbo": "^2.18", + "symfony/validator": "7.1.*", + "symfony/web-link": "7.1.*", + "symfony/yaml": "7.1.*", + "twig/extra-bundle": "^2.12|^3.0", + "twig/twig": "^2.12|^3.0" + }, + "config": { + "allow-plugins": { + "symfony/flex": true, + "symfony/runtime": true }, - "config": { - "allow-plugins": { - "symfony/flex": true, - "symfony/runtime": true - }, - "sort-packages": true - }, - "autoload": { - "psr-4": { - "App\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "App\\Tests\\": "tests/" - } - }, - "replace": { - "symfony/polyfill-ctype": "*", - "symfony/polyfill-iconv": "*", - "symfony/polyfill-php72": "*", - "symfony/polyfill-php73": "*", - "symfony/polyfill-php74": "*", - "symfony/polyfill-php80": "*", - "symfony/polyfill-php81": "*", - "symfony/polyfill-php82": "*" - }, - "scripts": { - "auto-scripts": { - "cache:clear": "symfony-cmd", - "assets:install %PUBLIC_DIR%": "symfony-cmd", - "importmap:install": "symfony-cmd" - }, - "post-install-cmd": [ - "@auto-scripts" - ], - "post-update-cmd": [ - "@auto-scripts" - ] - }, - "conflict": { - "symfony/symfony": "*" - }, - "extra": { - "symfony": { - "allow-contrib": false, - "require": "7.1.*", - "docker": true - } - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "7.1.*", - "symfony/css-selector": "7.1.*", - "symfony/debug-bundle": "7.1.*", - "symfony/maker-bundle": "^1.0", - "symfony/phpunit-bridge": "^7.1", - "symfony/stopwatch": "7.1.*", - "symfony/web-profiler-bundle": "7.1.*" + "sort-packages": true + }, + "autoload": { + "psr-4": { + "App\\": "src/" } + }, + "autoload-dev": { + "psr-4": { + "App\\Tests\\": "tests/" + } + }, + "replace": { + "symfony/polyfill-ctype": "*", + "symfony/polyfill-iconv": "*", + "symfony/polyfill-php72": "*", + "symfony/polyfill-php73": "*", + "symfony/polyfill-php74": "*", + "symfony/polyfill-php80": "*", + "symfony/polyfill-php81": "*", + "symfony/polyfill-php82": "*" + }, + "scripts": { + "auto-scripts": { + "cache:clear": "symfony-cmd", + "assets:install %PUBLIC_DIR%": "symfony-cmd", + "importmap:install": "symfony-cmd" + }, + "post-install-cmd": [ + "@auto-scripts" + ], + "post-update-cmd": [ + "@auto-scripts" + ] + }, + "conflict": { + "symfony/symfony": "*" + }, + "extra": { + "symfony": { + "allow-contrib": false, + "require": "7.1.*", + "docker": true + } + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "symfony/browser-kit": "7.1.*", + "symfony/css-selector": "7.1.*", + "symfony/debug-bundle": "7.1.*", + "symfony/maker-bundle": "^1.0", + "symfony/phpunit-bridge": "^7.1", + "symfony/stopwatch": "7.1.*", + "symfony/web-profiler-bundle": "7.1.*" + } } diff --git a/composer.lock b/composer.lock index 6178108..a86afd5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7ca7ab51341dd737ee39ad655f657dff", + "content-hash": "5f504b40613dac0da1ea6c1dc972bbe8", "packages": [ { "name": "composer/semver", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", "shasum": "" }, "require": { @@ -69,7 +69,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.4.2" }, "funding": [ { @@ -85,7 +85,7 @@ "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2024-07-12T11:35:52+00:00" }, { "name": "doctrine/cache", @@ -1378,16 +1378,16 @@ }, { "name": "eluceo/ical", - "version": "2.13.0", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/markuspoerschke/iCal.git", - "reference": "43fd5991032d46db06ae0b3f67416adfdad38336" + "reference": "3123533f7ff0af015da1d788476204f936d18135" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/43fd5991032d46db06ae0b3f67416adfdad38336", - "reference": "43fd5991032d46db06ae0b3f67416adfdad38336", + "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/3123533f7ff0af015da1d788476204f936d18135", + "reference": "3123533f7ff0af015da1d788476204f936d18135", "shasum": "" }, "require": { @@ -1438,379 +1438,7 @@ "issues": "https://github.com/markuspoerschke/iCal/issues", "source": "https://github.com/markuspoerschke/iCal" }, - "time": "2023-12-19T19:24:37+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.8.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2023-12-03T20:35:24+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2023-12-03T20:19:20+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.6.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2023-12-03T20:05:35+00:00" - }, - { - "name": "juanparati/rdap-lib", - "version": "2.1", - "source": { - "type": "git", - "url": "https://github.com/juanparati/RDAPLib.git", - "reference": "c926d29ef038027d7ae05f48a55b7e1d95639dfe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/juanparati/RDAPLib/zipball/c926d29ef038027d7ae05f48a55b7e1d95639dfe", - "reference": "c926d29ef038027d7ae05f48a55b7e1d95639dfe", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=7.4", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0" - }, - "require-dev": { - "guzzlehttp/guzzle": "^7.3", - "phpunit/phpunit": "~9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Juanparati\\RDAPLib\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Juan Lago", - "email": "juanparati@gmail.com" - } - ], - "description": "A PHP RDAP client library", - "support": { - "issues": "https://github.com/juanparati/RDAPLib/issues", - "source": "https://github.com/juanparati/RDAPLib/tree/2.1" - }, - "time": "2021-06-22T12:04:42+00:00" + "time": "2024-07-11T22:33:13+00:00" }, { "name": "monolog/monolog", @@ -1913,84 +1541,6 @@ ], "time": "2024-06-28T09:40:51+00:00" }, - { - "name": "nyholm/psr7", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/Nyholm/psr7.git", - "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/aa5fc277a4f5508013d571341ade0c3886d4d00e", - "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0", - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "php-http/message-factory": "^1.0", - "php-http/psr7-integration-tests": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", - "symfony/error-handler": "^4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Nyholm\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" - }, - { - "name": "Martijn van der Ven", - "email": "martijn@vanderven.se" - } - ], - "description": "A fast PHP7 implementation of PSR-7", - "homepage": "https://tnyholm.se", - "keywords": [ - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.8.1" - }, - "funding": [ - { - "url": "https://github.com/Zegnat", - "type": "github" - }, - { - "url": "https://github.com/nyholm", - "type": "github" - } - ], - "time": "2023-11-13T09:31:12+00:00" - }, { "name": "phpdocumentor/reflection-common", "version": "2.2.0", @@ -2465,61 +2015,6 @@ }, "time": "2023-09-23T14:17:50+00:00" }, - { - "name": "psr/http-factory", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory" - }, - "time": "2024-04-15T12:06:14+00:00" - }, { "name": "psr/http-message", "version": "2.0", @@ -2679,50 +2174,6 @@ }, "time": "2021-07-14T16:46:02+00:00" }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, { "name": "symfony/asset", "version": "v7.1.1", diff --git a/config/packages/nyholm_psr7.yaml b/config/packages/nyholm_psr7.yaml deleted file mode 100644 index ade8312..0000000 --- a/config/packages/nyholm_psr7.yaml +++ /dev/null @@ -1,11 +0,0 @@ -services: - # Register nyholm/psr7 services for autowiring with PSR-17 (HTTP factories) - Psr\Http\Message\RequestFactoryInterface: '@nyholm.psr7.psr17_factory' - Psr\Http\Message\ResponseFactoryInterface: '@nyholm.psr7.psr17_factory' - Psr\Http\Message\ServerRequestFactoryInterface: '@nyholm.psr7.psr17_factory' - Psr\Http\Message\StreamFactoryInterface: '@nyholm.psr7.psr17_factory' - Psr\Http\Message\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory' - Psr\Http\Message\UriFactoryInterface: '@nyholm.psr7.psr17_factory' - - nyholm.psr7.psr17_factory: - class: Nyholm\Psr7\Factory\Psr17Factory diff --git a/migrations/Version20240712133612.php b/migrations/Version20240712133612.php deleted file mode 100644 index 1b5e8bd..0000000 --- a/migrations/Version20240712133612.php +++ /dev/null @@ -1,35 +0,0 @@ -addSql('ALTER TABLE entity ADD COLUMN j_card CLOB NOT NULL'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('CREATE TEMPORARY TABLE __temp__entity AS SELECT handle FROM entity'); - $this->addSql('DROP TABLE entity'); - $this->addSql('CREATE TABLE entity (handle VARCHAR(255) NOT NULL, PRIMARY KEY(handle))'); - $this->addSql('INSERT INTO entity (handle) SELECT handle FROM __temp__entity'); - $this->addSql('DROP TABLE __temp__entity'); - } -} diff --git a/migrations/Version20240712132119.php b/migrations/Version20240712222038.php similarity index 84% rename from migrations/Version20240712132119.php rename to migrations/Version20240712222038.php index 87686c8..f1ff639 100644 --- a/migrations/Version20240712132119.php +++ b/migrations/Version20240712222038.php @@ -10,7 +10,7 @@ use Doctrine\Migrations\AbstractMigration; /** * Auto-generated Migration: Please modify to your needs! */ -final class Version20240712132119 extends AbstractMigration +final class Version20240712222038 extends AbstractMigration { public function getDescription(): string { @@ -20,11 +20,11 @@ final class Version20240712132119 extends AbstractMigration public function up(Schema $schema): void { // this up() migration is auto-generated, please modify it to your needs - $this->addSql('CREATE TABLE domain (handle VARCHAR(255) NOT NULL, ldh_name VARCHAR(255) NOT NULL, whois_status VARCHAR(255) NOT NULL, status CLOB NOT NULL --(DC2Type:simple_array) + $this->addSql('CREATE TABLE domain (handle VARCHAR(255) NOT NULL, ldh_name VARCHAR(255) NOT NULL, status CLOB NOT NULL --(DC2Type:simple_array) , PRIMARY KEY(handle))'); - $this->addSql('CREATE TABLE domain_nameservers (domain_handle VARCHAR(255) NOT NULL, nameserver_handle VARCHAR(255) NOT NULL, PRIMARY KEY(domain_handle, nameserver_handle), CONSTRAINT FK_B6E6B63AFEE32C10 FOREIGN KEY (domain_handle) REFERENCES domain (handle) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_B6E6B63A3DC1CB05 FOREIGN KEY (nameserver_handle) REFERENCES nameserver (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('CREATE TABLE domain_nameservers (domain_handle VARCHAR(255) NOT NULL, nameserver_ldh_name VARCHAR(255) NOT NULL, PRIMARY KEY(domain_handle, nameserver_ldh_name), CONSTRAINT FK_B6E6B63AFEE32C10 FOREIGN KEY (domain_handle) REFERENCES domain (handle) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_B6E6B63AA6496BFE FOREIGN KEY (nameserver_ldh_name) REFERENCES nameserver (ldh_name) NOT DEFERRABLE INITIALLY IMMEDIATE)'); $this->addSql('CREATE INDEX IDX_B6E6B63AFEE32C10 ON domain_nameservers (domain_handle)'); - $this->addSql('CREATE INDEX IDX_B6E6B63A3DC1CB05 ON domain_nameservers (nameserver_handle)'); + $this->addSql('CREATE INDEX IDX_B6E6B63AA6496BFE ON domain_nameservers (nameserver_ldh_name)'); $this->addSql('CREATE TABLE domain_entity (domain_id VARCHAR(255) NOT NULL, entity_id VARCHAR(255) NOT NULL, roles CLOB NOT NULL --(DC2Type:simple_array) , PRIMARY KEY(domain_id, entity_id), CONSTRAINT FK_614B48A1115F0EE5 FOREIGN KEY (domain_id) REFERENCES domain (handle) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_614B48A181257D5D FOREIGN KEY (entity_id) REFERENCES entity (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); $this->addSql('CREATE INDEX IDX_614B48A1115F0EE5 ON domain_entity (domain_id)'); @@ -32,15 +32,15 @@ final class Version20240712132119 extends AbstractMigration $this->addSql('CREATE TABLE domain_event (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, domain_id VARCHAR(255) NOT NULL, "action" VARCHAR(255) NOT NULL, date DATETIME NOT NULL --(DC2Type:datetime_immutable) , CONSTRAINT FK_E8D52271115F0EE5 FOREIGN KEY (domain_id) REFERENCES domain (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); $this->addSql('CREATE INDEX IDX_E8D52271115F0EE5 ON domain_event (domain_id)'); - $this->addSql('CREATE TABLE entity (handle VARCHAR(255) NOT NULL, PRIMARY KEY(handle))'); + $this->addSql('CREATE TABLE entity (handle VARCHAR(255) NOT NULL, j_card CLOB NOT NULL --(DC2Type:json) + , PRIMARY KEY(handle))'); $this->addSql('CREATE TABLE entity_event (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, entity_id VARCHAR(255) NOT NULL, "action" VARCHAR(255) NOT NULL, date DATETIME NOT NULL --(DC2Type:datetime_immutable) , CONSTRAINT FK_975A3F5E81257D5D FOREIGN KEY (entity_id) REFERENCES entity (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); $this->addSql('CREATE INDEX IDX_975A3F5E81257D5D ON entity_event (entity_id)'); - $this->addSql('CREATE TABLE nameserver (handle VARCHAR(255) NOT NULL, ldh_name VARCHAR(255) NOT NULL, status CLOB NOT NULL --(DC2Type:simple_array) - , PRIMARY KEY(handle))'); + $this->addSql('CREATE TABLE nameserver (ldh_name VARCHAR(255) NOT NULL, PRIMARY KEY(ldh_name))'); $this->addSql('CREATE TABLE nameserver_entity (nameserver_id VARCHAR(255) NOT NULL, entity_id VARCHAR(255) NOT NULL, roles CLOB NOT NULL --(DC2Type:simple_array) , status CLOB NOT NULL --(DC2Type:simple_array) - , PRIMARY KEY(nameserver_id, entity_id), CONSTRAINT FK_A269AFB41A555619 FOREIGN KEY (nameserver_id) REFERENCES nameserver (handle) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_A269AFB481257D5D FOREIGN KEY (entity_id) REFERENCES entity (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + , PRIMARY KEY(nameserver_id, entity_id), CONSTRAINT FK_A269AFB41A555619 FOREIGN KEY (nameserver_id) REFERENCES nameserver (ldh_name) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_A269AFB481257D5D FOREIGN KEY (entity_id) REFERENCES entity (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); $this->addSql('CREATE INDEX IDX_A269AFB41A555619 ON nameserver_entity (nameserver_id)'); $this->addSql('CREATE INDEX IDX_A269AFB481257D5D ON nameserver_entity (entity_id)'); $this->addSql('CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, email VARCHAR(180) NOT NULL, roles CLOB NOT NULL --(DC2Type:json) diff --git a/src/Config/DomainStatus.php b/src/Config/DomainStatus.php index 06494f5..c905c1a 100644 --- a/src/Config/DomainStatus.php +++ b/src/Config/DomainStatus.php @@ -39,6 +39,7 @@ enum DomainStatus: string case ServerRenewProhibited = 'server renew prohibited'; case ServerTransferProhibited = 'server transfer prohibited'; case ServerUpdateProhibited = 'server update prohibited'; + case ServerRecoverProhibited = 'server recover prohibited'; case ServerHold = 'server hold'; case TransferPeriod = 'transfer period'; case Administrative = 'administrative'; diff --git a/src/Config/dns.json b/src/Config/dns.json new file mode 100644 index 0000000..14294f8 --- /dev/null +++ b/src/Config/dns.json @@ -0,0 +1,5426 @@ +{ + "description": "RDAP bootstrap file for Domain Name System registrations", + "publication": "2024-07-10T16:00:02Z", + "services": [ + [ + [ + "kg" + ], + [ + "http://rdap.cctld.kg/" + ] + ], + [ + [ + "music" + ], + [ + "http://rdap.centralnic.com/music/" + ] + ], + [ + [ + "ally" + ], + [ + "http://rdap.nic.ally/" + ] + ], + [ + [ + "cpa" + ], + [ + "http://rdap.nic.cpa/" + ] + ], + [ + [ + "merckmsd" + ], + [ + "http://rdap.nic.merckmsd/" + ] + ], + [ + [ + "msd" + ], + [ + "http://rdap.nic.msd/" + ] + ], + [ + [ + "tattoo" + ], + [ + "http://rdap.nic.tattoo/" + ] + ], + [ + [ + "pars" + ], + [ + "https://api.rdap.nic.pars/" + ] + ], + [ + [ + "shia" + ], + [ + "https://api.rdap.nic.shia/" + ] + ], + [ + [ + "tci" + ], + [ + "https://api.rdap.nic.tci/" + ] + ], + [ + [ + "xn--mgbt3dhd" + ], + [ + "https://api.rdap.nic.xn--mgbt3dhd/" + ] + ], + [ + [ + "xn--p1acf" + ], + [ + "https://api.rdap.nic.xn--p1acf/" + ] + ], + [ + [ + "moscow" + ], + [ + "https://flexireg.net/moscow/rdap/" + ] + ], + [ + [ + "xn--80adxhks" + ], + [ + "https://flexireg.net/xn--80adxhks/rdap/" + ] + ], + [ + [ + "samsung", + "xn--cg4bki" + ], + [ + "https://nic.samsung:8443/rdap/" + ] + ], + [ + [ + "tvs" + ], + [ + "https://rdap.afilias-srs.net/rdap/tvs/" + ] + ], + [ + [ + "ca" + ], + [ + "https://rdap.ca.fury.ca/rdap/" + ] + ], + [ + [ + "uz" + ], + [ + "https://rdap.cctld.uz/" + ] + ], + [ + [ + "allfinanz" + ], + [ + "https://rdap.centralnic.com/allfinanz/" + ] + ], + [ + [ + "art" + ], + [ + "https://rdap.centralnic.com/art/" + ] + ], + [ + [ + "audio" + ], + [ + "https://rdap.centralnic.com/audio/" + ] + ], + [ + [ + "auto" + ], + [ + "https://rdap.centralnic.com/auto/" + ] + ], + [ + [ + "autos" + ], + [ + "https://rdap.centralnic.com/autos/" + ] + ], + [ + [ + "baby" + ], + [ + "https://rdap.centralnic.com/baby/" + ] + ], + [ + [ + "basketball" + ], + [ + "https://rdap.centralnic.com/basketball/" + ] + ], + [ + [ + "beauty" + ], + [ + "https://rdap.centralnic.com/beauty/" + ] + ], + [ + [ + "best" + ], + [ + "https://rdap.centralnic.com/best/" + ] + ], + [ + [ + "blog" + ], + [ + "https://rdap.centralnic.com/blog/" + ] + ], + [ + [ + "bmw" + ], + [ + "https://rdap.centralnic.com/bmw/" + ] + ], + [ + [ + "boats" + ], + [ + "https://rdap.centralnic.com/boats/" + ] + ], + [ + [ + "bond" + ], + [ + "https://rdap.centralnic.com/bond/" + ] + ], + [ + [ + "box" + ], + [ + "https://rdap.centralnic.com/box/" + ] + ], + [ + [ + "build" + ], + [ + "https://rdap.centralnic.com/build/" + ] + ], + [ + [ + "cam" + ], + [ + "https://rdap.centralnic.com/cam/" + ] + ], + [ + [ + "car" + ], + [ + "https://rdap.centralnic.com/car/" + ] + ], + [ + [ + "cars" + ], + [ + "https://rdap.centralnic.com/cars/" + ] + ], + [ + [ + "case" + ], + [ + "https://rdap.centralnic.com/case/" + ] + ], + [ + [ + "ceo" + ], + [ + "https://rdap.centralnic.com/ceo/" + ] + ], + [ + [ + "cfd" + ], + [ + "https://rdap.centralnic.com/cfd/" + ] + ], + [ + [ + "christmas" + ], + [ + "https://rdap.centralnic.com/christmas/" + ] + ], + [ + [ + "college" + ], + [ + "https://rdap.centralnic.com/college/" + ] + ], + [ + [ + "cyou" + ], + [ + "https://rdap.centralnic.com/cyou/" + ] + ], + [ + [ + "dealer" + ], + [ + "https://rdap.centralnic.com/dealer/" + ] + ], + [ + [ + "deloitte" + ], + [ + "https://rdap.centralnic.com/deloitte/" + ] + ], + [ + [ + "dhl" + ], + [ + "https://rdap.centralnic.com/dhl/" + ] + ], + [ + [ + "diet" + ], + [ + "https://rdap.centralnic.com/diet/" + ] + ], + [ + [ + "dvag" + ], + [ + "https://rdap.centralnic.com/dvag/" + ] + ], + [ + [ + "fans" + ], + [ + "https://rdap.centralnic.com/fans/" + ] + ], + [ + [ + "feedback" + ], + [ + "https://rdap.centralnic.com/feedback/" + ] + ], + [ + [ + "flowers" + ], + [ + "https://rdap.centralnic.com/flowers/" + ] + ], + [ + [ + "fm" + ], + [ + "https://rdap.centralnic.com/fm/" + ] + ], + [ + [ + "fo" + ], + [ + "https://rdap.centralnic.com/fo/" + ] + ], + [ + [ + "forum" + ], + [ + "https://rdap.centralnic.com/forum/" + ] + ], + [ + [ + "fresenius" + ], + [ + "https://rdap.centralnic.com/fresenius/" + ] + ], + [ + [ + "frl" + ], + [ + "https://rdap.centralnic.com/frl/" + ] + ], + [ + [ + "fun" + ], + [ + "https://rdap.centralnic.com/fun/" + ] + ], + [ + [ + "game" + ], + [ + "https://rdap.centralnic.com/game/" + ] + ], + [ + [ + "gd" + ], + [ + "https://rdap.centralnic.com/gd/" + ] + ], + [ + [ + "gent" + ], + [ + "https://rdap.centralnic.com/gent/" + ] + ], + [ + [ + "guitars" + ], + [ + "https://rdap.centralnic.com/guitars/" + ] + ], + [ + [ + "hair" + ], + [ + "https://rdap.centralnic.com/hair/" + ] + ], + [ + [ + "help" + ], + [ + "https://rdap.centralnic.com/help/" + ] + ], + [ + [ + "homes" + ], + [ + "https://rdap.centralnic.com/homes/" + ] + ], + [ + [ + "host" + ], + [ + "https://rdap.centralnic.com/host/" + ] + ], + [ + [ + "hosting" + ], + [ + "https://rdap.centralnic.com/hosting/" + ] + ], + [ + [ + "icu" + ], + [ + "https://rdap.centralnic.com/icu/" + ] + ], + [ + [ + "inc" + ], + [ + "https://rdap.centralnic.com/inc/" + ] + ], + [ + [ + "kfh" + ], + [ + "https://rdap.centralnic.com/kfh/" + ] + ], + [ + [ + "kpn" + ], + [ + "https://rdap.centralnic.com/kpn/" + ] + ], + [ + [ + "kred" + ], + [ + "https://rdap.centralnic.com/kred/" + ] + ], + [ + [ + "lat" + ], + [ + "https://rdap.centralnic.com/lat/" + ] + ], + [ + [ + "lidl" + ], + [ + "https://rdap.centralnic.com/lidl/" + ] + ], + [ + [ + "llp" + ], + [ + "https://rdap.centralnic.com/llp/" + ] + ], + [ + [ + "lol" + ], + [ + "https://rdap.centralnic.com/lol/" + ] + ], + [ + [ + "london" + ], + [ + "https://rdap.centralnic.com/london/" + ] + ], + [ + [ + "lpl" + ], + [ + "https://rdap.centralnic.com/lpl/" + ] + ], + [ + [ + "lplfinancial" + ], + [ + "https://rdap.centralnic.com/lplfinancial/" + ] + ], + [ + [ + "luxury" + ], + [ + "https://rdap.centralnic.com/luxury/" + ] + ], + [ + [ + "makeup" + ], + [ + "https://rdap.centralnic.com/makeup/" + ] + ], + [ + [ + "mini" + ], + [ + "https://rdap.centralnic.com/mini/" + ] + ], + [ + [ + "mom" + ], + [ + "https://rdap.centralnic.com/mom/" + ] + ], + [ + [ + "monster" + ], + [ + "https://rdap.centralnic.com/monster/" + ] + ], + [ + [ + "motorcycles" + ], + [ + "https://rdap.centralnic.com/motorcycles/" + ] + ], + [ + [ + "nokia" + ], + [ + "https://rdap.centralnic.com/nokia/" + ] + ], + [ + [ + "online" + ], + [ + "https://rdap.centralnic.com/online/" + ] + ], + [ + [ + "ooo" + ], + [ + "https://rdap.centralnic.com/ooo/" + ] + ], + [ + [ + "pics" + ], + [ + "https://rdap.centralnic.com/pics/" + ] + ], + [ + [ + "pid" + ], + [ + "https://rdap.centralnic.com/pid/" + ] + ], + [ + [ + "pohl" + ], + [ + "https://rdap.centralnic.com/pohl/" + ] + ], + [ + [ + "press" + ], + [ + "https://rdap.centralnic.com/press/" + ] + ], + [ + [ + "protection" + ], + [ + "https://rdap.centralnic.com/protection/" + ] + ], + [ + [ + "pw" + ], + [ + "https://rdap.centralnic.com/pw/" + ] + ], + [ + [ + "qpon" + ], + [ + "https://rdap.centralnic.com/qpon/" + ] + ], + [ + [ + "quest" + ], + [ + "https://rdap.centralnic.com/quest/" + ] + ], + [ + [ + "reit" + ], + [ + "https://rdap.centralnic.com/reit/" + ] + ], + [ + [ + "rent" + ], + [ + "https://rdap.centralnic.com/rent/" + ] + ], + [ + [ + "rugby" + ], + [ + "https://rdap.centralnic.com/rugby/" + ] + ], + [ + [ + "ruhr" + ], + [ + "https://rdap.centralnic.com/ruhr/" + ] + ], + [ + [ + "saarland" + ], + [ + "https://rdap.centralnic.com/saarland/" + ] + ], + [ + [ + "sbs" + ], + [ + "https://rdap.centralnic.com/sbs/" + ] + ], + [ + [ + "schwarz" + ], + [ + "https://rdap.centralnic.com/schwarz/" + ] + ], + [ + [ + "security" + ], + [ + "https://rdap.centralnic.com/security/" + ] + ], + [ + [ + "sfr" + ], + [ + "https://rdap.centralnic.com/sfr/" + ] + ], + [ + [ + "site" + ], + [ + "https://rdap.centralnic.com/site/" + ] + ], + [ + [ + "skin" + ], + [ + "https://rdap.centralnic.com/skin/" + ] + ], + [ + [ + "smart" + ], + [ + "https://rdap.centralnic.com/smart/" + ] + ], + [ + [ + "space" + ], + [ + "https://rdap.centralnic.com/space/" + ] + ], + [ + [ + "stc" + ], + [ + "https://rdap.centralnic.com/stc/" + ] + ], + [ + [ + "stcgroup" + ], + [ + "https://rdap.centralnic.com/stcgroup/" + ] + ], + [ + [ + "storage" + ], + [ + "https://rdap.centralnic.com/storage/" + ] + ], + [ + [ + "store" + ], + [ + "https://rdap.centralnic.com/store/" + ] + ], + [ + [ + "tech" + ], + [ + "https://rdap.centralnic.com/tech/" + ] + ], + [ + [ + "theatre" + ], + [ + "https://rdap.centralnic.com/theatre/" + ] + ], + [ + [ + "tickets" + ], + [ + "https://rdap.centralnic.com/tickets/" + ] + ], + [ + [ + "tui" + ], + [ + "https://rdap.centralnic.com/tui/" + ] + ], + [ + [ + "uno" + ], + [ + "https://rdap.centralnic.com/uno/" + ] + ], + [ + [ + "vg" + ], + [ + "https://rdap.centralnic.com/vg/" + ] + ], + [ + [ + "viva" + ], + [ + "https://rdap.centralnic.com/viva/" + ] + ], + [ + [ + "website" + ], + [ + "https://rdap.centralnic.com/website/" + ] + ], + [ + [ + "wme" + ], + [ + "https://rdap.centralnic.com/wme/" + ] + ], + [ + [ + "xn--4gbrim" + ], + [ + "https://rdap.centralnic.com/xn--4gbrim/" + ] + ], + [ + [ + "xn--ngbe9e0a" + ], + [ + "https://rdap.centralnic.com/xn--ngbe9e0a/" + ] + ], + [ + [ + "xn--vermgensberater-ctb" + ], + [ + "https://rdap.centralnic.com/xn--vermgensberater-ctb/" + ] + ], + [ + [ + "xn--vermgensberatung-pwb" + ], + [ + "https://rdap.centralnic.com/xn--vermgensberatung-pwb/" + ] + ], + [ + [ + "xyz" + ], + [ + "https://rdap.centralnic.com/xyz/" + ] + ], + [ + [ + "yachts" + ], + [ + "https://rdap.centralnic.com/yachts/" + ] + ], + [ + [ + "zuerich" + ], + [ + "https://rdap.centralnic.com/zuerich/" + ] + ], + [ + [ + "xn--55qw42g", + "xn--zfr164b" + ], + [ + "https://rdap.conac.cn/" + ] + ], + [ + [ + "crown" + ], + [ + "https://rdap.crown.fury.ca/rdap/" + ] + ], + [ + [ + "xn--5tzm5g" + ], + [ + "https://rdap.donuts.co/rdap/" + ] + ], + [ + [ + "eco" + ], + [ + "https://rdap.eco.fury.ca/rdap/" + ] + ], + [ + [ + "fi" + ], + [ + "https://rdap.fi/rdap/rdap/" + ] + ], + [ + [ + "bridgestone", + "brother", + "canon", + "datsun", + "dnp", + "epson", + "firestone", + "fujitsu", + "ggee", + "gmo", + "goldpoint", + "goo", + "hisamitsu", + "hitachi", + "honda", + "hyundai", + "infiniti", + "jcb", + "kddi", + "kia", + "komatsu", + "kyoto", + "lexus", + "lotte", + "mitsubishi", + "nagoya", + "nec", + "nhk", + "nico", + "nissan", + "okinawa", + "otsuka", + "panasonic", + "playstation", + "ricoh", + "ryukyu", + "sharp", + "shop", + "softbank", + "sony", + "suzuki", + "tokyo", + "toray", + "toshiba", + "toyota", + "yodobashi", + "yokohama" + ], + [ + "https://rdap.gmoregistry.net/rdap/" + ] + ], + [ + [ + "bom", + "final", + "globo", + "rio", + "uol" + ], + [ + "https://rdap.gtlds.nic.br/" + ] + ], + [ + [ + "ua" + ], + [ + "https://rdap.hostmaster.ua/" + ] + ], + [ + [ + "int" + ], + [ + "https://rdap.iana.org/" + ] + ], + [ + [ + "abb", + "abbott", + "academy", + "accenture", + "accountants", + "actor", + "aeg", + "aero", + "agakhan", + "agency", + "airforce", + "akdn", + "alibaba", + "alipay", + "allstate", + "aol", + "apartments", + "apple", + "archi", + "army", + "arte", + "asda", + "asia", + "associates", + "attorney", + "auction", + "audi", + "band", + "barclaycard", + "barclays", + "barefoot", + "bargains", + "bbt", + "bcg", + "beats", + "bestbuy", + "bet", + "bike", + "bingo", + "bio", + "black", + "blockbuster", + "bloomberg", + "blue", + "bm", + "bms", + "bnpparibas", + "boehringer", + "bofa", + "bosch", + "boutique", + "bradesco", + "broker", + "builders", + "business", + "cab", + "cafe", + "camera", + "camp", + "capital", + "cards", + "care", + "careers", + "cash", + "casino", + "catering", + "center", + "cern", + "cfa", + "chanel", + "chat", + "cheap", + "church", + "cipriani", + "citadel", + "city", + "claims", + "cleaning", + "clinic", + "clinique", + "clothing", + "clubmed", + "coach", + "codes", + "coffee", + "community", + "company", + "computer", + "condos", + "construction", + "consulting", + "contact", + "contractors", + "cool", + "coupons", + "credit", + "creditcard", + "crs", + "cruise", + "cruises", + "dabur", + "dance", + "data", + "dating", + "deals", + "degree", + "delivery", + "delta", + "democrat", + "dental", + "dentist", + "diamonds", + "digital", + "direct", + "directory", + "discount", + "dish", + "doctor", + "dog", + "domains", + "dot", + "dtv", + "dunlop", + "dvr", + "edeka", + "education", + "email", + "emerck", + "energy", + "engineer", + "engineering", + "enterprises", + "equipment", + "ericsson", + "estate", + "events", + "exchange", + "expert", + "exposed", + "express", + "extraspace", + "fage", + "fail", + "family", + "fan", + "farm", + "fedex", + "ferrari", + "fidelity", + "fido", + "finance", + "financial", + "fish", + "fitness", + "flights", + "florist", + "football", + "forex", + "forsale", + "frogans", + "fund", + "furniture", + "futbol", + "fyi", + "gallery", + "gallo", + "gallup", + "games", + "genting", + "george", + "gifts", + "glass", + "global", + "gmbh", + "gold", + "golf", + "goodyear", + "graphics", + "gratis", + "green", + "gripe", + "grocery", + "group", + "guide", + "guru", + "haus", + "hdfc", + "hdfcbank", + "healthcare", + "helsinki", + "hermes", + "hkt", + "hockey", + "holdings", + "holiday", + "homedepot", + "hospital", + "house", + "hughes", + "ice", + "imamat", + "immo", + "immobilien", + "industries", + "info", + "institute", + "insure", + "international", + "investments", + "irish", + "ismaili", + "ist", + "istanbul", + "itv", + "jaguar", + "java", + "jeep", + "jetzt", + "jewelry", + "jio", + "jll", + "juniper", + "kaufen", + "kerryhotels", + "kerrylogistics", + "kerryproperties", + "kids", + "kim", + "kitchen", + "kosher", + "kuokgroup", + "lamborghini", + "lamer", + "land", + "landrover", + "lasalle", + "latino", + "lawyer", + "lds", + "lease", + "lefrak", + "legal", + "lgbt", + "life", + "lighting", + "limited", + "limo", + "lipsy", + "live", + "llc", + "loans", + "locker", + "lotto", + "ltd", + "ltda", + "lundbeck", + "maif", + "maison", + "management", + "market", + "marketing", + "markets", + "marriott", + "mba", + "mckinsey", + "media", + "memorial", + "mit", + "mobi", + "mobile", + "moda", + "money", + "mormon", + "mortgage", + "movie", + "nab", + "navy", + "network", + "news", + "next", + "nextdirect", + "nikon", + "ninja", + "nowtv", + "nra", + "obi", + "ollo", + "onl", + "oracle", + "orange", + "organic", + "origins", + "ott", + "partners", + "parts", + "pccw", + "pet", + "phone", + "photography", + "photos", + "pictet", + "pictures", + "pink", + "pizza", + "place", + "plumbing", + "plus", + "pnc", + "poker", + "post", + "pro", + "productions", + "progressive", + "promo", + "properties", + "pub", + "pwc", + "recipes", + "red", + "redumbrella", + "rehab", + "reise", + "reisen", + "reliance", + "rentals", + "repair", + "report", + "republican", + "restaurant", + "reviews", + "rexroth", + "rich", + "richardli", + "ril", + "rip", + "rocks", + "rogers", + "run", + "sale", + "salon", + "samsclub", + "sanofi", + "sarl", + "saxo", + "sbi", + "scholarships", + "school", + "schule", + "services", + "sew", + "shangrila", + "shiksha", + "shoes", + "shopping", + "show", + "sina", + "singles", + "ski", + "sling", + "soccer", + "social", + "software", + "solar", + "solutions", + "spa", + "srl", + "stada", + "star", + "statebank", + "stockholm", + "studio", + "style", + "supplies", + "supply", + "support", + "surgery", + "systems", + "taobao", + "tatamotors", + "tax", + "taxi", + "team", + "technology", + "temasek", + "tennis", + "thd", + "theater", + "tiaa", + "tienda", + "tips", + "tires", + "tmall", + "today", + "tools", + "tours", + "town", + "toys", + "trading", + "training", + "travel", + "travelers", + "travelersinsurance", + "trv", + "ubank", + "ubs", + "university", + "ups", + "vacations", + "vanguard", + "vegas", + "ventures", + "vet", + "viajes", + "video", + "vig", + "viking", + "villas", + "vin", + "vision", + "volvo", + "vote", + "voto", + "voyage", + "walmart", + "watch", + "watches", + "weibo", + "weir", + "wine", + "wolterskluwer", + "works", + "world", + "wtf", + "xin", + "xn--6frz82g", + "xn--9krt00a", + "xn--b4w605ferd", + "xn--czrs0t", + "xn--fjq720a", + "xn--fzys8d69uvgm", + "xn--unup4y", + "xn--vhquv", + "zara", + "zone" + ], + [ + "https://rdap.identitydigital.services/rdap/" + ] + ], + [ + [ + "is" + ], + [ + "https://rdap.isnic.is/rdap/" + ] + ], + [ + [ + "kiwi" + ], + [ + "https://rdap.kiwi.fury.ca/rdap/" + ] + ], + [ + [ + "lb" + ], + [ + "https://rdap.lbdr.org.lb/" + ] + ], + [ + [ + "mls" + ], + [ + "https://rdap.mls.fury.ca/rdap/" + ] + ], + [ + [ + "aaa" + ], + [ + "https://rdap.nic.aaa/" + ] + ], + [ + [ + "able" + ], + [ + "https://rdap.nic.able/" + ] + ], + [ + [ + "abogado" + ], + [ + "https://rdap.nic.abogado/" + ] + ], + [ + [ + "abudhabi" + ], + [ + "https://rdap.nic.abudhabi/" + ] + ], + [ + [ + "accountant" + ], + [ + "https://rdap.nic.accountant/" + ] + ], + [ + [ + "aco" + ], + [ + "https://rdap.nic.aco/" + ] + ], + [ + [ + "adult" + ], + [ + "https://rdap.nic.adult/" + ] + ], + [ + [ + "aetna" + ], + [ + "https://rdap.nic.aetna/" + ] + ], + [ + [ + "afl" + ], + [ + "https://rdap.nic.afl/" + ] + ], + [ + [ + "africa" + ], + [ + "https://rdap.nic.africa/rdap/" + ] + ], + [ + [ + "aig" + ], + [ + "https://rdap.nic.aig/" + ] + ], + [ + [ + "alsace" + ], + [ + "https://rdap.nic.alsace/" + ] + ], + [ + [ + "alstom" + ], + [ + "https://rdap.nic.alstom/" + ] + ], + [ + [ + "americanexpress" + ], + [ + "https://rdap.nic.americanexpress/" + ] + ], + [ + [ + "amex" + ], + [ + "https://rdap.nic.amex/" + ] + ], + [ + [ + "amica" + ], + [ + "https://rdap.nic.amica/" + ] + ], + [ + [ + "amsterdam" + ], + [ + "https://rdap.nic.amsterdam/" + ] + ], + [ + [ + "analytics" + ], + [ + "https://rdap.nic.analytics/" + ] + ], + [ + [ + "anz" + ], + [ + "https://rdap.nic.anz/" + ] + ], + [ + [ + "aquarelle" + ], + [ + "https://rdap.nic.aquarelle/" + ] + ], + [ + [ + "ar" + ], + [ + "https://rdap.nic.ar/" + ] + ], + [ + [ + "arab" + ], + [ + "https://rdap.nic.arab/" + ] + ], + [ + [ + "aramco" + ], + [ + "https://rdap.nic.aramco/" + ] + ], + [ + [ + "athleta" + ], + [ + "https://rdap.nic.athleta/" + ] + ], + [ + [ + "auspost" + ], + [ + "https://rdap.nic.auspost/" + ] + ], + [ + [ + "axa" + ], + [ + "https://rdap.nic.axa/" + ] + ], + [ + [ + "banamex" + ], + [ + "https://rdap.nic.banamex/" + ] + ], + [ + [ + "bank" + ], + [ + "https://rdap.nic.bank/" + ] + ], + [ + [ + "barcelona" + ], + [ + "https://rdap.nic.barcelona/" + ] + ], + [ + [ + "baseball" + ], + [ + "https://rdap.nic.baseball/" + ] + ], + [ + [ + "bauhaus" + ], + [ + "https://rdap.nic.bauhaus/" + ] + ], + [ + [ + "bayern" + ], + [ + "https://rdap.nic.bayern/" + ] + ], + [ + [ + "bcn" + ], + [ + "https://rdap.nic.bcn/" + ] + ], + [ + [ + "beer" + ], + [ + "https://rdap.nic.beer/" + ] + ], + [ + [ + "berlin" + ], + [ + "https://rdap.nic.berlin/v1/" + ] + ], + [ + [ + "bible" + ], + [ + "https://rdap.nic.bible/" + ] + ], + [ + [ + "bid" + ], + [ + "https://rdap.nic.bid/" + ] + ], + [ + [ + "biz" + ], + [ + "https://rdap.nic.biz/" + ] + ], + [ + [ + "blackfriday" + ], + [ + "https://rdap.nic.blackfriday/" + ] + ], + [ + [ + "booking" + ], + [ + "https://rdap.nic.booking/" + ] + ], + [ + [ + "bostik" + ], + [ + "https://rdap.nic.bostik/" + ] + ], + [ + [ + "boston" + ], + [ + "https://rdap.nic.boston/" + ] + ], + [ + [ + "brussels" + ], + [ + "https://rdap.nic.brussels/" + ] + ], + [ + [ + "buzz" + ], + [ + "https://rdap.nic.buzz/" + ] + ], + [ + [ + "bzh" + ], + [ + "https://rdap.nic.bzh/" + ] + ], + [ + [ + "calvinklein" + ], + [ + "https://rdap.nic.calvinklein/" + ] + ], + [ + [ + "capetown" + ], + [ + "https://rdap.nic.capetown/rdap/" + ] + ], + [ + [ + "caravan" + ], + [ + "https://rdap.nic.caravan/" + ] + ], + [ + [ + "casa" + ], + [ + "https://rdap.nic.casa/" + ] + ], + [ + [ + "cat" + ], + [ + "https://rdap.nic.cat/" + ] + ], + [ + [ + "catholic" + ], + [ + "https://rdap.nic.catholic/" + ] + ], + [ + [ + "cba" + ], + [ + "https://rdap.nic.cba/" + ] + ], + [ + [ + "cbn" + ], + [ + "https://rdap.nic.cbn/" + ] + ], + [ + [ + "cbre" + ], + [ + "https://rdap.nic.cbre/" + ] + ], + [ + [ + "chase" + ], + [ + "https://rdap.nic.chase/" + ] + ], + [ + [ + "chintai" + ], + [ + "https://rdap.nic.chintai/" + ] + ], + [ + [ + "cisco" + ], + [ + "https://rdap.nic.cisco/" + ] + ], + [ + [ + "citi" + ], + [ + "https://rdap.nic.citi/" + ] + ], + [ + [ + "club" + ], + [ + "https://rdap.nic.club/" + ] + ], + [ + [ + "commbank" + ], + [ + "https://rdap.nic.commbank/" + ] + ], + [ + [ + "compare" + ], + [ + "https://rdap.nic.compare/" + ] + ], + [ + [ + "cooking" + ], + [ + "https://rdap.nic.cooking/" + ] + ], + [ + [ + "corsica" + ], + [ + "https://rdap.nic.corsica/" + ] + ], + [ + [ + "coupon" + ], + [ + "https://rdap.nic.coupon/" + ] + ], + [ + [ + "courses" + ], + [ + "https://rdap.nic.courses/" + ] + ], + [ + [ + "cr" + ], + [ + "https://rdap.nic.cr/" + ] + ], + [ + [ + "cricket" + ], + [ + "https://rdap.nic.cricket/" + ] + ], + [ + [ + "cuisinella" + ], + [ + "https://rdap.nic.cuisinella/" + ] + ], + [ + [ + "cv" + ], + [ + "https://rdap.nic.cv/" + ] + ], + [ + [ + "cx" + ], + [ + "https://rdap.nic.cx/" + ] + ], + [ + [ + "cz" + ], + [ + "https://rdap.nic.cz/" + ] + ], + [ + [ + "date" + ], + [ + "https://rdap.nic.date/" + ] + ], + [ + [ + "dds" + ], + [ + "https://rdap.nic.dds/" + ] + ], + [ + [ + "dell" + ], + [ + "https://rdap.nic.dell/" + ] + ], + [ + [ + "design" + ], + [ + "https://rdap.nic.design/" + ] + ], + [ + [ + "discover" + ], + [ + "https://rdap.nic.discover/" + ] + ], + [ + [ + "download" + ], + [ + "https://rdap.nic.download/" + ] + ], + [ + [ + "dubai" + ], + [ + "https://rdap.nic.dubai/" + ] + ], + [ + [ + "dupont" + ], + [ + "https://rdap.nic.dupont/" + ] + ], + [ + [ + "durban" + ], + [ + "https://rdap.nic.durban/rdap/" + ] + ], + [ + [ + "earth" + ], + [ + "https://rdap.nic.earth/" + ] + ], + [ + [ + "erni" + ], + [ + "https://rdap.nic.erni/" + ] + ], + [ + [ + "eurovision" + ], + [ + "https://rdap.nic.eurovision/" + ] + ], + [ + [ + "eus" + ], + [ + "https://rdap.nic.eus/" + ] + ], + [ + [ + "faith" + ], + [ + "https://rdap.nic.faith/" + ] + ], + [ + [ + "farmers" + ], + [ + "https://rdap.nic.farmers/" + ] + ], + [ + [ + "fashion" + ], + [ + "https://rdap.nic.fashion/" + ] + ], + [ + [ + "ferrero" + ], + [ + "https://rdap.nic.ferrero/" + ] + ], + [ + [ + "film" + ], + [ + "https://rdap.nic.film/" + ] + ], + [ + [ + "firmdale" + ], + [ + "https://rdap.nic.firmdale/" + ] + ], + [ + [ + "fishing" + ], + [ + "https://rdap.nic.fishing/" + ] + ], + [ + [ + "fit" + ], + [ + "https://rdap.nic.fit/" + ] + ], + [ + [ + "flickr" + ], + [ + "https://rdap.nic.flickr/" + ] + ], + [ + [ + "flir" + ], + [ + "https://rdap.nic.flir/" + ] + ], + [ + [ + "ford" + ], + [ + "https://rdap.nic.ford/" + ] + ], + [ + [ + "fox" + ], + [ + "https://rdap.nic.fox/" + ] + ], + [ + [ + "fr" + ], + [ + "https://rdap.nic.fr/" + ] + ], + [ + [ + "frontier" + ], + [ + "https://rdap.nic.frontier/" + ] + ], + [ + [ + "ftr" + ], + [ + "https://rdap.nic.ftr/" + ] + ], + [ + [ + "gal" + ], + [ + "https://rdap.nic.gal/" + ] + ], + [ + [ + "gap" + ], + [ + "https://rdap.nic.gap/" + ] + ], + [ + [ + "garden" + ], + [ + "https://rdap.nic.garden/" + ] + ], + [ + [ + "gay" + ], + [ + "https://rdap.nic.gay/" + ] + ], + [ + [ + "gdn" + ], + [ + "https://rdap.nic.gdn/" + ] + ], + [ + [ + "gea" + ], + [ + "https://rdap.nic.gea/" + ] + ], + [ + [ + "gmx" + ], + [ + "https://rdap.nic.gmx/" + ] + ], + [ + [ + "godaddy" + ], + [ + "https://rdap.nic.godaddy/" + ] + ], + [ + [ + "grainger" + ], + [ + "https://rdap.nic.grainger/" + ] + ], + [ + [ + "gs" + ], + [ + "https://rdap.nic.gs/" + ] + ], + [ + [ + "hamburg" + ], + [ + "https://rdap.nic.hamburg/v1/" + ] + ], + [ + [ + "hbo" + ], + [ + "https://rdap.nic.hbo/" + ] + ], + [ + [ + "health" + ], + [ + "https://rdap.nic.health/" + ] + ], + [ + [ + "homegoods" + ], + [ + "https://rdap.nic.homegoods/" + ] + ], + [ + [ + "homesense" + ], + [ + "https://rdap.nic.homesense/" + ] + ], + [ + [ + "horse" + ], + [ + "https://rdap.nic.horse/" + ] + ], + [ + [ + "hotels" + ], + [ + "https://rdap.nic.hotels/" + ] + ], + [ + [ + "hsbc" + ], + [ + "https://rdap.nic.hsbc/" + ] + ], + [ + [ + "hyatt" + ], + [ + "https://rdap.nic.hyatt/" + ] + ], + [ + [ + "ibm" + ], + [ + "https://rdap.nic.ibm/" + ] + ], + [ + [ + "ifm" + ], + [ + "https://rdap.nic.ifm/" + ] + ], + [ + [ + "ikano" + ], + [ + "https://rdap.nic.ikano/v1/" + ] + ], + [ + [ + "ink" + ], + [ + "https://rdap.nic.ink/" + ] + ], + [ + [ + "insurance" + ], + [ + "https://rdap.nic.insurance/" + ] + ], + [ + [ + "intuit" + ], + [ + "https://rdap.nic.intuit/" + ] + ], + [ + [ + "ipiranga" + ], + [ + "https://rdap.nic.ipiranga/" + ] + ], + [ + [ + "itau" + ], + [ + "https://rdap.nic.itau/" + ] + ], + [ + [ + "jmp" + ], + [ + "https://rdap.nic.jmp/" + ] + ], + [ + [ + "jnj" + ], + [ + "https://rdap.nic.jnj/" + ] + ], + [ + [ + "joburg" + ], + [ + "https://rdap.nic.joburg/rdap/" + ] + ], + [ + [ + "jpmorgan" + ], + [ + "https://rdap.nic.jpmorgan/" + ] + ], + [ + [ + "jprs" + ], + [ + "https://rdap.nic.jprs/rdap/" + ] + ], + [ + [ + "kpmg" + ], + [ + "https://rdap.nic.kpmg/" + ] + ], + [ + [ + "krd" + ], + [ + "https://rdap.nic.krd/" + ] + ], + [ + [ + "lacaixa" + ], + [ + "https://rdap.nic.lacaixa/" + ] + ], + [ + [ + "lancaster" + ], + [ + "https://rdap.nic.lancaster/" + ] + ], + [ + [ + "lanxess" + ], + [ + "https://rdap.nic.lanxess/" + ] + ], + [ + [ + "latrobe" + ], + [ + "https://rdap.nic.latrobe/" + ] + ], + [ + [ + "law" + ], + [ + "https://rdap.nic.law/" + ] + ], + [ + [ + "leclerc" + ], + [ + "https://rdap.nic.leclerc/" + ] + ], + [ + [ + "lifeinsurance" + ], + [ + "https://rdap.nic.lifeinsurance/" + ] + ], + [ + [ + "lilly" + ], + [ + "https://rdap.nic.lilly/" + ] + ], + [ + [ + "lincoln" + ], + [ + "https://rdap.nic.lincoln/" + ] + ], + [ + [ + "loan" + ], + [ + "https://rdap.nic.loan/" + ] + ], + [ + [ + "luxe" + ], + [ + "https://rdap.nic.luxe/" + ] + ], + [ + [ + "madrid" + ], + [ + "https://rdap.nic.madrid/" + ] + ], + [ + [ + "man" + ], + [ + "https://rdap.nic.man/" + ] + ], + [ + [ + "mango" + ], + [ + "https://rdap.nic.mango/" + ] + ], + [ + [ + "marshalls" + ], + [ + "https://rdap.nic.marshalls/" + ] + ], + [ + [ + "mattel" + ], + [ + "https://rdap.nic.mattel/" + ] + ], + [ + [ + "melbourne" + ], + [ + "https://rdap.nic.melbourne/" + ] + ], + [ + [ + "men" + ], + [ + "https://rdap.nic.men/" + ] + ], + [ + [ + "menu" + ], + [ + "https://rdap.nic.menu/" + ] + ], + [ + [ + "miami" + ], + [ + "https://rdap.nic.miami/" + ] + ], + [ + [ + "mint" + ], + [ + "https://rdap.nic.mint/" + ] + ], + [ + [ + "mlb" + ], + [ + "https://rdap.nic.mlb/" + ] + ], + [ + [ + "mma" + ], + [ + "https://rdap.nic.mma/" + ] + ], + [ + [ + "moe" + ], + [ + "https://rdap.nic.moe/" + ] + ], + [ + [ + "monash" + ], + [ + "https://rdap.nic.monash/" + ] + ], + [ + [ + "moto" + ], + [ + "https://rdap.nic.moto/" + ] + ], + [ + [ + "ms" + ], + [ + "https://rdap.nic.ms/" + ] + ], + [ + [ + "museum" + ], + [ + "https://rdap.nic.museum/" + ] + ], + [ + [ + "nba" + ], + [ + "https://rdap.nic.nba/" + ] + ], + [ + [ + "netbank" + ], + [ + "https://rdap.nic.netbank/" + ] + ], + [ + [ + "netflix" + ], + [ + "https://rdap.nic.netflix/" + ] + ], + [ + [ + "neustar" + ], + [ + "https://rdap.nic.neustar/" + ] + ], + [ + [ + "nf" + ], + [ + "https://rdap.nic.nf/" + ] + ], + [ + [ + "nfl" + ], + [ + "https://rdap.nic.nfl/" + ] + ], + [ + [ + "nike" + ], + [ + "https://rdap.nic.nike/" + ] + ], + [ + [ + "nrw" + ], + [ + "https://rdap.nic.nrw/" + ] + ], + [ + [ + "ntt" + ], + [ + "https://rdap.nic.ntt/rdap/" + ] + ], + [ + [ + "nyc" + ], + [ + "https://rdap.nic.nyc/" + ] + ], + [ + [ + "office" + ], + [ + "https://rdap.nic.office/" + ] + ], + [ + [ + "olayan" + ], + [ + "https://rdap.nic.olayan/" + ] + ], + [ + [ + "olayangroup" + ], + [ + "https://rdap.nic.olayangroup/" + ] + ], + [ + [ + "one" + ], + [ + "https://rdap.nic.one/" + ] + ], + [ + [ + "open" + ], + [ + "https://rdap.nic.open/" + ] + ], + [ + [ + "osaka" + ], + [ + "https://rdap.nic.osaka/" + ] + ], + [ + [ + "ovh" + ], + [ + "https://rdap.nic.ovh/" + ] + ], + [ + [ + "paris" + ], + [ + "https://rdap.nic.paris/" + ] + ], + [ + [ + "party" + ], + [ + "https://rdap.nic.party/" + ] + ], + [ + [ + "pfizer" + ], + [ + "https://rdap.nic.pfizer/" + ] + ], + [ + [ + "philips" + ], + [ + "https://rdap.nic.philips/" + ] + ], + [ + [ + "photo" + ], + [ + "https://rdap.nic.photo/" + ] + ], + [ + [ + "physio" + ], + [ + "https://rdap.nic.physio/" + ] + ], + [ + [ + "ping" + ], + [ + "https://rdap.nic.ping/" + ] + ], + [ + [ + "pm" + ], + [ + "https://rdap.nic.pm/" + ] + ], + [ + [ + "politie" + ], + [ + "https://rdap.nic.politie/" + ] + ], + [ + [ + "porn" + ], + [ + "https://rdap.nic.porn/" + ] + ], + [ + [ + "pramerica" + ], + [ + "https://rdap.nic.pramerica/" + ] + ], + [ + [ + "praxi" + ], + [ + "https://rdap.nic.praxi/" + ] + ], + [ + [ + "pru" + ], + [ + "https://rdap.nic.pru/" + ] + ], + [ + [ + "prudential" + ], + [ + "https://rdap.nic.prudential/" + ] + ], + [ + [ + "quebec" + ], + [ + "https://rdap.nic.quebec/" + ] + ], + [ + [ + "racing" + ], + [ + "https://rdap.nic.racing/" + ] + ], + [ + [ + "radio" + ], + [ + "https://rdap.nic.radio/" + ] + ], + [ + [ + "re" + ], + [ + "https://rdap.nic.re/" + ] + ], + [ + [ + "review" + ], + [ + "https://rdap.nic.review/" + ] + ], + [ + [ + "rodeo" + ], + [ + "https://rdap.nic.rodeo/" + ] + ], + [ + [ + "safety" + ], + [ + "https://rdap.nic.safety/" + ] + ], + [ + [ + "sakura" + ], + [ + "https://rdap.nic.sakura/rdap/" + ] + ], + [ + [ + "sandvik" + ], + [ + "https://rdap.nic.sandvik/" + ] + ], + [ + [ + "sandvikcoromant" + ], + [ + "https://rdap.nic.sandvikcoromant/" + ] + ], + [ + [ + "sap" + ], + [ + "https://rdap.nic.sap/" + ] + ], + [ + [ + "sas" + ], + [ + "https://rdap.nic.sas/" + ] + ], + [ + [ + "scb" + ], + [ + "https://rdap.nic.scb/" + ] + ], + [ + [ + "schaeffler" + ], + [ + "https://rdap.nic.schaeffler/" + ] + ], + [ + [ + "schmidt" + ], + [ + "https://rdap.nic.schmidt/" + ] + ], + [ + [ + "science" + ], + [ + "https://rdap.nic.science/" + ] + ], + [ + [ + "scot" + ], + [ + "https://rdap.nic.scot/" + ] + ], + [ + [ + "sd" + ], + [ + "https://rdap.nic.sd/" + ] + ], + [ + [ + "seat" + ], + [ + "https://rdap.nic.seat/" + ] + ], + [ + [ + "seek" + ], + [ + "https://rdap.nic.seek/" + ] + ], + [ + [ + "select" + ], + [ + "https://rdap.nic.select/" + ] + ], + [ + [ + "seven" + ], + [ + "https://rdap.nic.seven/" + ] + ], + [ + [ + "sex" + ], + [ + "https://rdap.nic.sex/" + ] + ], + [ + [ + "skype" + ], + [ + "https://rdap.nic.skype/" + ] + ], + [ + [ + "sncf" + ], + [ + "https://rdap.nic.sncf/" + ] + ], + [ + [ + "song" + ], + [ + "https://rdap.nic.song/" + ] + ], + [ + [ + "sport" + ], + [ + "https://rdap.nic.sport/" + ] + ], + [ + [ + "ss" + ], + [ + "https://rdap.nic.ss/" + ] + ], + [ + [ + "staples" + ], + [ + "https://rdap.nic.staples/" + ] + ], + [ + [ + "statefarm" + ], + [ + "https://rdap.nic.statefarm/" + ] + ], + [ + [ + "stream" + ], + [ + "https://rdap.nic.stream/" + ] + ], + [ + [ + "study" + ], + [ + "https://rdap.nic.study/" + ] + ], + [ + [ + "sucks" + ], + [ + "https://rdap.nic.sucks/" + ] + ], + [ + [ + "surf" + ], + [ + "https://rdap.nic.surf/" + ] + ], + [ + [ + "swiss" + ], + [ + "https://rdap.nic.swiss/" + ] + ], + [ + [ + "sydney" + ], + [ + "https://rdap.nic.sydney/" + ] + ], + [ + [ + "tab" + ], + [ + "https://rdap.nic.tab/" + ] + ], + [ + [ + "taipei" + ], + [ + "https://rdap.nic.taipei/" + ] + ], + [ + [ + "target" + ], + [ + "https://rdap.nic.target/" + ] + ], + [ + [ + "tdk" + ], + [ + "https://rdap.nic.tdk/" + ] + ], + [ + [ + "tel" + ], + [ + "https://rdap.nic.tel/" + ] + ], + [ + [ + "teva" + ], + [ + "https://rdap.nic.teva/" + ] + ], + [ + [ + "tf" + ], + [ + "https://rdap.nic.tf/" + ] + ], + [ + [ + "tjmaxx" + ], + [ + "https://rdap.nic.tjmaxx/" + ] + ], + [ + [ + "tjx" + ], + [ + "https://rdap.nic.tjx/" + ] + ], + [ + [ + "tkmaxx" + ], + [ + "https://rdap.nic.tkmaxx/" + ] + ], + [ + [ + "total" + ], + [ + "https://rdap.nic.total/" + ] + ], + [ + [ + "trade" + ], + [ + "https://rdap.nic.trade/" + ] + ], + [ + [ + "tube" + ], + [ + "https://rdap.nic.tube/" + ] + ], + [ + [ + "tv" + ], + [ + "https://rdap.nic.tv/" + ] + ], + [ + [ + "versicherung" + ], + [ + "https://rdap.nic.versicherung/v1/" + ] + ], + [ + [ + "vi" + ], + [ + "https://rdap.nic.vi/" + ] + ], + [ + [ + "vip" + ], + [ + "https://rdap.nic.vip/" + ] + ], + [ + [ + "vivo" + ], + [ + "https://rdap.nic.vivo/" + ] + ], + [ + [ + "vlaanderen" + ], + [ + "https://rdap.nic.vlaanderen/" + ] + ], + [ + [ + "vodka" + ], + [ + "https://rdap.nic.vodka/" + ] + ], + [ + [ + "voting" + ], + [ + "https://rdap.nic.voting/" + ] + ], + [ + [ + "walter" + ], + [ + "https://rdap.nic.walter/" + ] + ], + [ + [ + "weather" + ], + [ + "https://rdap.nic.weather/" + ] + ], + [ + [ + "weatherchannel" + ], + [ + "https://rdap.nic.weatherchannel/" + ] + ], + [ + [ + "webcam" + ], + [ + "https://rdap.nic.webcam/" + ] + ], + [ + [ + "wedding" + ], + [ + "https://rdap.nic.wedding/" + ] + ], + [ + [ + "wf" + ], + [ + "https://rdap.nic.wf/" + ] + ], + [ + [ + "whoswho" + ], + [ + "https://rdap.nic.whoswho/" + ] + ], + [ + [ + "wiki" + ], + [ + "https://rdap.nic.wiki/" + ] + ], + [ + [ + "williamhill" + ], + [ + "https://rdap.nic.williamhill/" + ] + ], + [ + [ + "win" + ], + [ + "https://rdap.nic.win/" + ] + ], + [ + [ + "winners" + ], + [ + "https://rdap.nic.winners/" + ] + ], + [ + [ + "woodside" + ], + [ + "https://rdap.nic.woodside/" + ] + ], + [ + [ + "work" + ], + [ + "https://rdap.nic.work/" + ] + ], + [ + [ + "wtc" + ], + [ + "https://rdap.nic.wtc/" + ] + ], + [ + [ + "xerox" + ], + [ + "https://rdap.nic.xerox/" + ] + ], + [ + [ + "xn--1ck2e1b" + ], + [ + "https://rdap.nic.xn--1ck2e1b/" + ] + ], + [ + [ + "xn--80aqecdr1a" + ], + [ + "https://rdap.nic.xn--80aqecdr1a/" + ] + ], + [ + [ + "xn--80asehdb" + ], + [ + "https://rdap.nic.xn--80asehdb/" + ] + ], + [ + [ + "xn--80aswg" + ], + [ + "https://rdap.nic.xn--80aswg/" + ] + ], + [ + [ + "xn--bck1b9a5dre4c" + ], + [ + "https://rdap.nic.xn--bck1b9a5dre4c/" + ] + ], + [ + [ + "xn--cck2b3b" + ], + [ + "https://rdap.nic.xn--cck2b3b/" + ] + ], + [ + [ + "xn--eckvdtc9d" + ], + [ + "https://rdap.nic.xn--eckvdtc9d/" + ] + ], + [ + [ + "xn--fct429k" + ], + [ + "https://rdap.nic.xn--fct429k/" + ] + ], + [ + [ + "xn--g2xx48c" + ], + [ + "https://rdap.nic.xn--g2xx48c/" + ] + ], + [ + [ + "xn--gckr3f0f" + ], + [ + "https://rdap.nic.xn--gckr3f0f/" + ] + ], + [ + [ + "xn--gk3at1e" + ], + [ + "https://rdap.nic.xn--gk3at1e/" + ] + ], + [ + [ + "xn--jvr189m" + ], + [ + "https://rdap.nic.xn--jvr189m/" + ] + ], + [ + [ + "xn--kcrx77d1x4a" + ], + [ + "https://rdap.nic.xn--kcrx77d1x4a/" + ] + ], + [ + [ + "xn--mgba3a3ejt" + ], + [ + "https://rdap.nic.xn--mgba3a3ejt/" + ] + ], + [ + [ + "xn--mgba7c0bbn0a" + ], + [ + "https://rdap.nic.xn--mgba7c0bbn0a/" + ] + ], + [ + [ + "xn--mgbab2bd" + ], + [ + "https://rdap.nic.xn--mgbab2bd/" + ] + ], + [ + [ + "xn--mgbca7dzdo" + ], + [ + "https://rdap.nic.xn--mgbca7dzdo/" + ] + ], + [ + [ + "xn--mgbi4ecexp" + ], + [ + "https://rdap.nic.xn--mgbi4ecexp/" + ] + ], + [ + [ + "xn--ngbc5azd" + ], + [ + "https://rdap.nic.xn--ngbc5azd/" + ] + ], + [ + [ + "xn--ngbrx" + ], + [ + "https://rdap.nic.xn--ngbrx/" + ] + ], + [ + [ + "xn--rovu88b" + ], + [ + "https://rdap.nic.xn--rovu88b/" + ] + ], + [ + [ + "xn--tiq49xqyj" + ], + [ + "https://rdap.nic.xn--tiq49xqyj/" + ] + ], + [ + [ + "xxx" + ], + [ + "https://rdap.nic.xxx/" + ] + ], + [ + [ + "yandex" + ], + [ + "https://rdap.nic.yandex/" + ] + ], + [ + [ + "yoga" + ], + [ + "https://rdap.nic.yoga/" + ] + ], + [ + [ + "yt" + ], + [ + "https://rdap.nic.yt/" + ] + ], + [ + [ + "zero" + ], + [ + "https://rdap.nic.zero/" + ] + ], + [ + [ + "zm" + ], + [ + "https://rdap.nic.zm/" + ] + ], + [ + [ + "abbvie" + ], + [ + "https://rdap.nominet.uk/abbvie/" + ] + ], + [ + [ + "amazon" + ], + [ + "https://rdap.nominet.uk/amazon/" + ] + ], + [ + [ + "audible" + ], + [ + "https://rdap.nominet.uk/audible/" + ] + ], + [ + [ + "author" + ], + [ + "https://rdap.nominet.uk/author/" + ] + ], + [ + [ + "aws" + ], + [ + "https://rdap.nominet.uk/aws/" + ] + ], + [ + [ + "azure" + ], + [ + "https://rdap.nominet.uk/azure/" + ] + ], + [ + [ + "bbc" + ], + [ + "https://rdap.nominet.uk/bbc/" + ] + ], + [ + [ + "bbva" + ], + [ + "https://rdap.nominet.uk/bbva/" + ] + ], + [ + [ + "bentley" + ], + [ + "https://rdap.nominet.uk/bentley/" + ] + ], + [ + [ + "bing" + ], + [ + "https://rdap.nominet.uk/bing/" + ] + ], + [ + [ + "book" + ], + [ + "https://rdap.nominet.uk/book/" + ] + ], + [ + [ + "bot" + ], + [ + "https://rdap.nominet.uk/bot/" + ] + ], + [ + [ + "broadway" + ], + [ + "https://rdap.nominet.uk/broadway/" + ] + ], + [ + [ + "buy" + ], + [ + "https://rdap.nominet.uk/buy/" + ] + ], + [ + [ + "call" + ], + [ + "https://rdap.nominet.uk/call/" + ] + ], + [ + [ + "career" + ], + [ + "https://rdap.nominet.uk/career/" + ] + ], + [ + [ + "circle" + ], + [ + "https://rdap.nominet.uk/circle/" + ] + ], + [ + [ + "cymru" + ], + [ + "https://rdap.nominet.uk/cymru/" + ] + ], + [ + [ + "deal" + ], + [ + "https://rdap.nominet.uk/deal/" + ] + ], + [ + [ + "desi" + ], + [ + "https://rdap.nominet.uk/desi/" + ] + ], + [ + [ + "fairwinds" + ], + [ + "https://rdap.nominet.uk/fairwinds/" + ] + ], + [ + [ + "fast" + ], + [ + "https://rdap.nominet.uk/fast/" + ] + ], + [ + [ + "fire" + ], + [ + "https://rdap.nominet.uk/fire/" + ] + ], + [ + [ + "free" + ], + [ + "https://rdap.nominet.uk/free/" + ] + ], + [ + [ + "gop" + ], + [ + "https://rdap.nominet.uk/gop/" + ] + ], + [ + [ + "got" + ], + [ + "https://rdap.nominet.uk/got/" + ] + ], + [ + [ + "gucci" + ], + [ + "https://rdap.nominet.uk/gucci/" + ] + ], + [ + [ + "hot" + ], + [ + "https://rdap.nominet.uk/hot/" + ] + ], + [ + [ + "hotmail" + ], + [ + "https://rdap.nominet.uk/hotmail/" + ] + ], + [ + [ + "ieee" + ], + [ + "https://rdap.nominet.uk/ieee/" + ] + ], + [ + [ + "imdb" + ], + [ + "https://rdap.nominet.uk/imdb/" + ] + ], + [ + [ + "jobs" + ], + [ + "https://rdap.nominet.uk/jobs/" + ] + ], + [ + [ + "jot" + ], + [ + "https://rdap.nominet.uk/jot/" + ] + ], + [ + [ + "joy" + ], + [ + "https://rdap.nominet.uk/joy/" + ] + ], + [ + [ + "kindle" + ], + [ + "https://rdap.nominet.uk/kindle/" + ] + ], + [ + [ + "like" + ], + [ + "https://rdap.nominet.uk/like/" + ] + ], + [ + [ + "locus" + ], + [ + "https://rdap.nominet.uk/locus/" + ] + ], + [ + [ + "med" + ], + [ + "https://rdap.nominet.uk/med/" + ] + ], + [ + [ + "microsoft" + ], + [ + "https://rdap.nominet.uk/microsoft/" + ] + ], + [ + [ + "moi" + ], + [ + "https://rdap.nominet.uk/moi/" + ] + ], + [ + [ + "mtn" + ], + [ + "https://rdap.nominet.uk/mtn/" + ] + ], + [ + [ + "now" + ], + [ + "https://rdap.nominet.uk/now/" + ] + ], + [ + [ + "nowruz" + ], + [ + "https://rdap.nominet.uk/nowruz/" + ] + ], + [ + [ + "pay" + ], + [ + "https://rdap.nominet.uk/pay/" + ] + ], + [ + [ + "pharmacy" + ], + [ + "https://rdap.nominet.uk/pharmacy/" + ] + ], + [ + [ + "pin" + ], + [ + "https://rdap.nominet.uk/pin/" + ] + ], + [ + [ + "pioneer" + ], + [ + "https://rdap.nominet.uk/pioneer/" + ] + ], + [ + [ + "pn" + ], + [ + "https://rdap.nominet.uk/pn/" + ] + ], + [ + [ + "prime" + ], + [ + "https://rdap.nominet.uk/prime/" + ] + ], + [ + [ + "read" + ], + [ + "https://rdap.nominet.uk/read/" + ] + ], + [ + [ + "realestate" + ], + [ + "https://rdap.nominet.uk/realestate/" + ] + ], + [ + [ + "realtor" + ], + [ + "https://rdap.nominet.uk/realtor/" + ] + ], + [ + [ + "room" + ], + [ + "https://rdap.nominet.uk/room/" + ] + ], + [ + [ + "safe" + ], + [ + "https://rdap.nominet.uk/safe/" + ] + ], + [ + [ + "save" + ], + [ + "https://rdap.nominet.uk/save/" + ] + ], + [ + [ + "secure" + ], + [ + "https://rdap.nominet.uk/secure/" + ] + ], + [ + [ + "silk" + ], + [ + "https://rdap.nominet.uk/silk/" + ] + ], + [ + [ + "sky" + ], + [ + "https://rdap.nominet.uk/sky/" + ] + ], + [ + [ + "smile" + ], + [ + "https://rdap.nominet.uk/smile/" + ] + ], + [ + [ + "spot" + ], + [ + "https://rdap.nominet.uk/spot/" + ] + ], + [ + [ + "talk" + ], + [ + "https://rdap.nominet.uk/talk/" + ] + ], + [ + [ + "tunes" + ], + [ + "https://rdap.nominet.uk/tunes/" + ] + ], + [ + [ + "tushu" + ], + [ + "https://rdap.nominet.uk/tushu/" + ] + ], + [ + [ + "uk" + ], + [ + "https://rdap.nominet.uk/uk/" + ] + ], + [ + [ + "virgin" + ], + [ + "https://rdap.nominet.uk/virgin/" + ] + ], + [ + [ + "wales" + ], + [ + "https://rdap.nominet.uk/wales/" + ] + ], + [ + [ + "wanggou" + ], + [ + "https://rdap.nominet.uk/wanggou/" + ] + ], + [ + [ + "wed" + ], + [ + "https://rdap.nominet.uk/wed/" + ] + ], + [ + [ + "windows" + ], + [ + "https://rdap.nominet.uk/windows/" + ] + ], + [ + [ + "wow" + ], + [ + "https://rdap.nominet.uk/wow/" + ] + ], + [ + [ + "xbox" + ], + [ + "https://rdap.nominet.uk/xbox/" + ] + ], + [ + [ + "xn--cckwcxetd" + ], + [ + "https://rdap.nominet.uk/xn--cckwcxetd/" + ] + ], + [ + [ + "xn--jlq480n2rg" + ], + [ + "https://rdap.nominet.uk/xn--jlq480n2rg/" + ] + ], + [ + [ + "yamaxun" + ], + [ + "https://rdap.nominet.uk/yamaxun/" + ] + ], + [ + [ + "you" + ], + [ + "https://rdap.nominet.uk/you/" + ] + ], + [ + [ + "zappos" + ], + [ + "https://rdap.nominet.uk/zappos/" + ] + ], + [ + [ + "no" + ], + [ + "https://rdap.norid.no/" + ] + ], + [ + [ + "id" + ], + [ + "https://rdap.pandi.id/rdap/" + ] + ], + [ + [ + "charity", + "foundation", + "gives", + "giving", + "ngo", + "ong", + "org", + "xn--c1avg", + "xn--i1b6b1a6a2e", + "xn--nqv7f", + "xn--nqv7fs00ema" + ], + [ + "https://rdap.publicinterestregistry.org/rdap/" + ] + ], + [ + [ + "si" + ], + [ + "https://rdap.register.si/" + ] + ], + [ + [ + "br" + ], + [ + "https://rdap.registro.br/" + ] + ], + [ + [ + "bar", + "rest" + ], + [ + "https://rdap.registry.bar/rdap/" + ] + ], + [ + [ + "observer", + "realty" + ], + [ + "https://rdap.registry.click/rdap/" + ] + ], + [ + [ + "cloud" + ], + [ + "https://rdap.registry.cloud/rdap/" + ] + ], + [ + [ + "coop", + "creditunion" + ], + [ + "https://rdap.registry.coop/rdap/" + ] + ], + [ + [ + "ec" + ], + [ + "https://rdap.registry.ec/" + ] + ], + [ + [ + "hiphop" + ], + [ + "https://rdap.registry.hiphop/rdap/" + ] + ], + [ + [ + "love" + ], + [ + "https://rdap.registry.love/rdap/" + ] + ], + [ + [ + "cologne", + "koeln", + "tirol", + "wien" + ], + [ + "https://rdap.ryce-rsp.com/rdap/" + ] + ], + [ + [ + "nl" + ], + [ + "https://rdap.sidn.nl/" + ] + ], + [ + [ + "anquan", + "shouji", + "xihuan", + "xn--vuq861b", + "yun" + ], + [ + "https://rdap.teleinfo.cn/" + ] + ], + [ + [ + "xn--3ds443g" + ], + [ + "https://rdap.teleinfo.cn/xn--3ds443g/" + ] + ], + [ + [ + "xn--fiq228c5hs" + ], + [ + "https://rdap.teleinfo.cn/xn--fiq228c5hs/" + ] + ], + [ + [ + "xn--kput3i" + ], + [ + "https://rdap.teleinfo.cn/xn--kput3i/" + ] + ], + [ + [ + "xn--nyqy26a" + ], + [ + "https://rdap.teleinfo.cn/xn--nyqy26a/" + ] + ], + [ + [ + "xn--rhqv96g" + ], + [ + "https://rdap.teleinfo.cn/xn--rhqv96g/" + ] + ], + [ + [ + "xn--mxtq1m" + ], + [ + "https://rdap.twnic.tw/rdap/" + ] + ], + [ + [ + "com" + ], + [ + "https://rdap.verisign.com/com/v1/" + ] + ], + [ + [ + "net" + ], + [ + "https://rdap.verisign.com/net/v1/" + ] + ], + [ + [ + "ai" + ], + [ + "https://rdap.whois.ai/" + ] + ], + [ + [ + "xn--45q11c" + ], + [ + "https://rdap.zdnsgtld.com/XN--45Q11C/" + ] + ], + [ + [ + "xn--efvy88h" + ], + [ + "https://rdap.zdnsgtld.com/XN--EFVY88H/" + ] + ], + [ + [ + "baidu" + ], + [ + "https://rdap.zdnsgtld.com/baidu/" + ] + ], + [ + [ + "citic" + ], + [ + "https://rdap.zdnsgtld.com/citic/" + ] + ], + [ + [ + "icbc" + ], + [ + "https://rdap.zdnsgtld.com/icbc/" + ] + ], + [ + [ + "redstone" + ], + [ + "https://rdap.zdnsgtld.com/redstone/" + ] + ], + [ + [ + "ren" + ], + [ + "https://rdap.zdnsgtld.com/ren/" + ] + ], + [ + [ + "sohu" + ], + [ + "https://rdap.zdnsgtld.com/sohu/" + ] + ], + [ + [ + "top" + ], + [ + "https://rdap.zdnsgtld.com/top/" + ] + ], + [ + [ + "unicom" + ], + [ + "https://rdap.zdnsgtld.com/unicom/" + ] + ], + [ + [ + "wang" + ], + [ + "https://rdap.zdnsgtld.com/wang/" + ] + ], + [ + [ + "xn--30rr7y" + ], + [ + "https://rdap.zdnsgtld.com/xn--30rr7y/" + ] + ], + [ + [ + "xn--3bst00m" + ], + [ + "https://rdap.zdnsgtld.com/xn--3bst00m/" + ] + ], + [ + [ + "xn--6qq986b3xl" + ], + [ + "https://rdap.zdnsgtld.com/xn--6qq986b3xl/" + ] + ], + [ + [ + "xn--8y0a063a" + ], + [ + "https://rdap.zdnsgtld.com/xn--8y0a063a/" + ] + ], + [ + [ + "xn--9et52u" + ], + [ + "https://rdap.zdnsgtld.com/xn--9et52u/" + ] + ], + [ + [ + "xn--czr694b" + ], + [ + "https://rdap.zdnsgtld.com/xn--czr694b/" + ] + ], + [ + [ + "xn--czru2d" + ], + [ + "https://rdap.zdnsgtld.com/xn--czru2d/" + ] + ], + [ + [ + "xn--fiq64b" + ], + [ + "https://rdap.zdnsgtld.com/xn--fiq64b/" + ] + ], + [ + [ + "xn--hxt814e" + ], + [ + "https://rdap.zdnsgtld.com/xn--hxt814e/" + ] + ], + [ + [ + "xn--imr513n" + ], + [ + "https://rdap.zdnsgtld.com/xn--imr513n/" + ] + ], + [ + [ + "xn--otu796d" + ], + [ + "https://rdap.zdnsgtld.com/xn--otu796d/" + ] + ], + [ + [ + "xn--ses554g" + ], + [ + "https://rdap.zdnsgtld.com/xn--ses554g/" + ] + ], + [ + [ + "xn--1qqw23a", + "xn--55qx5d", + "xn--io0a7i", + "xn--xhq521b" + ], + [ + "https://restwhois.ngtld.cn/" + ] + ], + [ + [ + "aarp" + ], + [ + "https://tld-rdap.verisign.com/aarp/v1/" + ] + ], + [ + [ + "abc" + ], + [ + "https://tld-rdap.verisign.com/abc/v1/" + ] + ], + [ + [ + "airbus" + ], + [ + "https://tld-rdap.verisign.com/airbus/v1/" + ] + ], + [ + [ + "airtel" + ], + [ + "https://tld-rdap.verisign.com/airtel/v1/" + ] + ], + [ + [ + "americanfamily" + ], + [ + "https://tld-rdap.verisign.com/americanfamily/v1/" + ] + ], + [ + [ + "amfam" + ], + [ + "https://tld-rdap.verisign.com/amfam/v1/" + ] + ], + [ + [ + "bharti" + ], + [ + "https://tld-rdap.verisign.com/bharti/v1/" + ] + ], + [ + [ + "capitalone" + ], + [ + "https://tld-rdap.verisign.com/capitalone/v1/" + ] + ], + [ + [ + "cc" + ], + [ + "https://tld-rdap.verisign.com/cc/v1/" + ] + ], + [ + [ + "comsec" + ], + [ + "https://tld-rdap.verisign.com/comsec/v1/" + ] + ], + [ + [ + "diy" + ], + [ + "https://tld-rdap.verisign.com/diy/v1/" + ] + ], + [ + [ + "food" + ], + [ + "https://tld-rdap.verisign.com/food/v1/" + ] + ], + [ + [ + "lego" + ], + [ + "https://tld-rdap.verisign.com/lego/v1/" + ] + ], + [ + [ + "lifestyle" + ], + [ + "https://tld-rdap.verisign.com/lifestyle/v1/" + ] + ], + [ + [ + "living" + ], + [ + "https://tld-rdap.verisign.com/living/v1/" + ] + ], + [ + [ + "name" + ], + [ + "https://tld-rdap.verisign.com/name/v1/" + ] + ], + [ + [ + "nissay" + ], + [ + "https://tld-rdap.verisign.com/nissay/v1/" + ] + ], + [ + [ + "norton" + ], + [ + "https://tld-rdap.verisign.com/norton/v1/" + ] + ], + [ + [ + "omega" + ], + [ + "https://tld-rdap.verisign.com/omega/v1/" + ] + ], + [ + [ + "rwe" + ], + [ + "https://tld-rdap.verisign.com/rwe/v1/" + ] + ], + [ + [ + "sener" + ], + [ + "https://tld-rdap.verisign.com/sener/v1/" + ] + ], + [ + [ + "shell" + ], + [ + "https://tld-rdap.verisign.com/shell/v1/" + ] + ], + [ + [ + "swatch" + ], + [ + "https://tld-rdap.verisign.com/swatch/v1/" + ] + ], + [ + [ + "vana" + ], + [ + "https://tld-rdap.verisign.com/vana/v1/" + ] + ], + [ + [ + "verisign" + ], + [ + "https://tld-rdap.verisign.com/verisign/v1/" + ] + ], + [ + [ + "visa" + ], + [ + "https://tld-rdap.verisign.com/visa/v1/" + ] + ], + [ + [ + "weber" + ], + [ + "https://tld-rdap.verisign.com/weber/v1/" + ] + ], + [ + [ + "xn--11b4c3d" + ], + [ + "https://tld-rdap.verisign.com/xn--11b4c3d/v1/" + ] + ], + [ + [ + "xn--3pxu8k" + ], + [ + "https://tld-rdap.verisign.com/xn--3pxu8k/v1/" + ] + ], + [ + [ + "xn--42c2d9a" + ], + [ + "https://tld-rdap.verisign.com/xn--42c2d9a/v1/" + ] + ], + [ + [ + "xn--5su34j936bgsg" + ], + [ + "https://tld-rdap.verisign.com/xn--5su34j936bgsg/v1/" + ] + ], + [ + [ + "xn--9dbq2a" + ], + [ + "https://tld-rdap.verisign.com/xn--9dbq2a/v1/" + ] + ], + [ + [ + "xn--c2br7g" + ], + [ + "https://tld-rdap.verisign.com/xn--c2br7g/v1/" + ] + ], + [ + [ + "xn--fhbei" + ], + [ + "https://tld-rdap.verisign.com/xn--fhbei/v1/" + ] + ], + [ + [ + "xn--j1aef" + ], + [ + "https://tld-rdap.verisign.com/xn--j1aef/v1/" + ] + ], + [ + [ + "xn--mk1bu44c" + ], + [ + "https://tld-rdap.verisign.com/xn--mk1bu44c/v1/" + ] + ], + [ + [ + "xn--pssy2u" + ], + [ + "https://tld-rdap.verisign.com/xn--pssy2u/v1/" + ] + ], + [ + [ + "xn--t60b56a" + ], + [ + "https://tld-rdap.verisign.com/xn--t60b56a/v1/" + ] + ], + [ + [ + "xn--tckwe" + ], + [ + "https://tld-rdap.verisign.com/xn--tckwe/v1/" + ] + ], + [ + [ + "xn--w4r85el8fhu5dnra" + ], + [ + "https://tld-rdap.verisign.com/xn--w4r85el8fhu5dnra/v1/" + ] + ], + [ + [ + "xn--w4rs40l" + ], + [ + "https://tld-rdap.verisign.com/xn--w4rs40l/v1/" + ] + ], + [ + [ + "yahoo" + ], + [ + "https://tld-rdap.verisign.com/yahoo/v1/" + ] + ], + [ + [ + "ky" + ], + [ + "https://whois.kyregistry.ky/rdap/" + ] + ], + [ + [ + "mtr" + ], + [ + "https://whois.nic.mtr/rdap/" + ] + ], + [ + [ + "tatar" + ], + [ + "https://whois.nic.tatar/rdap/" + ] + ], + [ + [ + "xn--d1acj3b" + ], + [ + "https://whois.nic.xn--d1acj3b/rdap/" + ] + ], + [ + [ + "tz" + ], + [ + "https://whois.tznic.or.tz/rdap/" + ] + ], + [ + [ + "click", + "country", + "gift", + "hiv", + "juegos", + "link", + "property", + "sexy", + "trust" + ], + [ + "https://whois.uniregistry.net/rdap/" + ] + ], + [ + [ + "ads", + "android", + "app", + "boo", + "cal", + "channel", + "chrome", + "dad", + "day", + "dclk", + "dev", + "docs", + "drive", + "eat", + "esq", + "fly", + "foo", + "gbiz", + "gle", + "gmail", + "goog", + "google", + "guge", + "hangout", + "here", + "how", + "ing", + "map", + "meet", + "meme", + "mov", + "new", + "nexus", + "page", + "phd", + "play", + "prod", + "prof", + "rsvp", + "search", + "soy", + "xn--flw351e", + "xn--q9jyb4c", + "xn--qcka1pmc", + "youtube", + "zip" + ], + [ + "https://www.registry.google/rdap/" + ] + ] + ], + "version": "1.0" +} diff --git a/src/Controller/TestController.php b/src/Controller/TestController.php index c63efe1..11ab3d3 100644 --- a/src/Controller/TestController.php +++ b/src/Controller/TestController.php @@ -22,25 +22,25 @@ use App\Repository\NameserverEntityRepository; use App\Repository\NameserverRepository; use DateTimeImmutable; use Doctrine\ORM\EntityManagerInterface; -use Juanparati\RDAPLib\Exceptions\RDAPWrongRequest; -use Juanparati\RDAPLib\RDAPClient; -use Psr\Http\Client\ClientExceptionInterface; +use Exception; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; +use Symfony\Contracts\HttpClient\HttpClientInterface; class TestController extends AbstractController { - public function __construct(private EntityRepository $entityRepository, - private DomainRepository $domainRepository, - private DomainEventRepository $domainEventRepository, - private NameserverRepository $nameserverRepository, - private NameserverEntityRepository $nameserverEntityRepository, - private EntityEventRepository $entityEventRepository, - private DomainEntityRepository $domainEntityRepository, - private EntityManagerInterface $em) + public function __construct(private HttpClientInterface $client, + private readonly EntityRepository $entityRepository, + private readonly DomainRepository $domainRepository, + private readonly DomainEventRepository $domainEventRepository, + private readonly NameserverRepository $nameserverRepository, + private readonly NameserverEntityRepository $nameserverEntityRepository, + private readonly EntityEventRepository $entityEventRepository, + private readonly DomainEntityRepository $domainEntityRepository, + private readonly EntityManagerInterface $em) { } @@ -48,22 +48,19 @@ class TestController extends AbstractController #[Route(path: '/test/{fqdn}', name: 'test')] public function testRoute(string $fqdn): Response { - $rdap = new RDAPClient(['domain' => 'https://rdap.nic.fr/domain/']); - try { - $res = $rdap->domainLookup($fqdn, RDAPClient::ARRAY_OUTPUT); - } catch (RDAPWrongRequest $e) { - return new Response(null, Response::HTTP_BAD_REQUEST); - } catch (ClientExceptionInterface $e) { - return new Response(null, Response::HTTP_INTERNAL_SERVER_ERROR); - } + $rdapServer = $this->getRdapServer($fqdn); + + $res = $this->client->request( + 'GET', $rdapServer . 'domain/' . $fqdn + )->toArray(); $domain = $this->domainRepository->findOneBy(["handle" => $res['handle']]); if ($domain === null) $domain = new Domain(); - $domain->setLdhName($res['ldhName']) + $domain + ->setLdhName($res['ldhName']) ->setHandle($res['handle']) - ->setStatus(array_map(fn($str): DomainStatus => DomainStatus::from($str), $res['status'])) - ->setWhoisStatus($res['whoisStatus']); + ->setStatus(array_map(fn($str): DomainStatus => DomainStatus::from($str), $res['status'])); foreach ($res['events'] as $rdapEvent) { @@ -80,8 +77,8 @@ class TestController extends AbstractController } - foreach ($res['entities'] as $rdapEntity) { + if (!array_key_exists('handle', $rdapEntity)) continue; $entity = $this->processEntity($rdapEntity); $domainEntity = $this->domainEntityRepository->findOneBy([ @@ -107,16 +104,20 @@ class TestController extends AbstractController foreach ($res['nameservers'] as $rdapNameserver) { $nameserver = $this->nameserverRepository->findOneBy([ - "handle" => $rdapNameserver['handle'] + "ldhName" => strtolower($rdapNameserver['ldhName']) ]); if ($nameserver === null) $nameserver = new Nameserver(); - $nameserver - ->setHandle($rdapNameserver['handle']) - ->setLdhName($rdapNameserver['ldhName']) - ->setStatus(array_map(fn($str): DomainStatus => DomainStatus::from($str), $rdapNameserver['status'])); + $nameserver->setLdhName($rdapNameserver['ldhName']); + + if (!array_key_exists('entities', $rdapNameserver)) { + $domain->addNameserver($nameserver); + continue; + } foreach ($rdapNameserver['entities'] as $rdapEntity) { + if (!array_key_exists('handle', $rdapEntity)) continue; + $entity = $this->processEntity($rdapEntity); $nameserverEntity = $this->nameserverEntityRepository->findOneBy([ @@ -132,6 +133,8 @@ class TestController extends AbstractController ->setEntity($entity) ->setRoles(array_map(fn($str): DomainRole => DomainRole::from($str), $rdapEntity['roles']))); + $this->em->persist($entity); + $this->em->flush(); } $domain->addNameserver($nameserver); } @@ -143,6 +146,26 @@ class TestController extends AbstractController return new Response(null, Response::HTTP_OK); } + private function getRdapServer(string $fqdn) + { + $tld = $this->getTld($fqdn); + + $dnsRoot = json_decode(file_get_contents($this->getParameter('kernel.project_dir') . '/src/Config/dns.json'))->services; + foreach ($dnsRoot as $dns) { + if (in_array($tld, $dns[0])) return $dns[1][0]; + } + throw new Exception("This TLD ($tld) is not supported."); + } + + private function getTld($domain) + { + $lastDotPosition = strrpos($domain, '.'); + if ($lastDotPosition === false) { + throw new Exception("Domain must contain at least one dot."); + } + return substr($domain, $lastDotPosition + 1); + } + private function processEntity(array $rdapEntity): Entity { $entity = $this->entityRepository->findOneBy([ @@ -154,6 +177,7 @@ class TestController extends AbstractController ->setHandle($rdapEntity['handle']) ->setJCard($rdapEntity['vcardArray']); + if (!array_key_exists('events', $rdapEntity)) return $entity; foreach ($rdapEntity['events'] as $rdapEntityEvent) { $event = $this->entityEventRepository->findOneBy([ diff --git a/src/Entity/Domain.php b/src/Entity/Domain.php index 05503c2..a2fd26c 100644 --- a/src/Entity/Domain.php +++ b/src/Entity/Domain.php @@ -31,9 +31,6 @@ class Domain #[ORM\OneToMany(targetEntity: DomainEntity::class, mappedBy: 'domain', cascade: ['persist'], orphanRemoval: true)] private Collection $domainEntities; - #[ORM\Column(length: 255)] - private ?string $whoisStatus = null; - #[ORM\Column(type: Types::SIMPLE_ARRAY, enumType: DomainStatus::class)] private array $status = []; @@ -49,7 +46,7 @@ class Domain #[ORM\ManyToMany(targetEntity: Nameserver::class, inversedBy: 'domains', cascade: ['persist'])] #[ORM\JoinTable(name: 'domain_nameservers', joinColumns: [new ORM\JoinColumn(name: 'domain_handle', referencedColumnName: 'handle')], - inverseJoinColumns: [new ORM\JoinColumn(name: 'nameserver_handle', referencedColumnName: 'handle')] + inverseJoinColumns: [new ORM\JoinColumn(name: 'nameserver_ldh_name', referencedColumnName: 'ldh_name')] )] private Collection $nameservers; @@ -68,7 +65,7 @@ class Domain public function setLdhName(string $ldhName): static { - $this->ldhName = $ldhName; + $this->ldhName = strtolower($ldhName); return $this; } @@ -145,18 +142,6 @@ class Domain return $this; } - public function getWhoisStatus(): ?string - { - return $this->whoisStatus; - } - - public function setWhoisStatus(string $whoisStatus): static - { - $this->whoisStatus = $whoisStatus; - - return $this; - } - /** * @return DomainStatus[] */ diff --git a/src/Entity/Nameserver.php b/src/Entity/Nameserver.php index 0cc0aac..f04ba31 100644 --- a/src/Entity/Nameserver.php +++ b/src/Entity/Nameserver.php @@ -12,10 +12,8 @@ use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: NameserverRepository::class)] class Nameserver { - #[ORM\Id] - #[ORM\Column(length: 255)] - private ?string $handle = null; + #[ORM\Id] #[ORM\Column(length: 255)] private ?string $ldhName = null; @@ -25,9 +23,6 @@ class Nameserver #[ORM\OneToMany(targetEntity: NameserverEntity::class, mappedBy: 'nameserver', cascade: ['persist'], orphanRemoval: true)] private Collection $nameserverEntities; - #[ORM\Column(type: Types::SIMPLE_ARRAY, enumType: DomainStatus::class)] - private array $status = []; - /** * @var Collection */ @@ -40,18 +35,6 @@ class Nameserver $this->domains = new ArrayCollection(); } - public function getHandle(): ?string - { - return $this->handle; - } - - public function setHandle(string $handle): static - { - $this->handle = $handle; - - return $this; - } - public function getLdhName(): ?string { return $this->ldhName; @@ -59,7 +42,7 @@ class Nameserver public function setLdhName(string $ldhName): static { - $this->ldhName = $ldhName; + $this->ldhName = strtolower($ldhName); return $this; } @@ -94,21 +77,6 @@ class Nameserver return $this; } - /** - * @return DomainStatus[] - */ - public function getStatus(): array - { - return $this->status; - } - - public function setStatus(array $status): static - { - $this->status = $status; - - return $this; - } - /** * @return Collection */ diff --git a/src/Entity/NameserverEntity.php b/src/Entity/NameserverEntity.php index 8d63ac8..706b6e1 100644 --- a/src/Entity/NameserverEntity.php +++ b/src/Entity/NameserverEntity.php @@ -13,7 +13,7 @@ class NameserverEntity { #[ORM\Id] #[ORM\ManyToOne(targetEntity: Nameserver::class, cascade: ['persist'], inversedBy: 'nameserverEntities')] - #[ORM\JoinColumn(referencedColumnName: 'handle', nullable: false)] + #[ORM\JoinColumn(referencedColumnName: 'ldh_name', nullable: false)] private ?Nameserver $nameserver = null; #[ORM\Id] diff --git a/symfony.lock b/symfony.lock index 3717b04..2afeabc 100644 --- a/symfony.lock +++ b/symfony.lock @@ -26,18 +26,6 @@ "migrations/.gitignore" ] }, - "nyholm/psr7": { - "version": "1.8", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "main", - "version": "1.0", - "ref": "4a8c0345442dcca1d8a2c65633dcf0285dd5a5a2" - }, - "files": [ - "config/packages/nyholm_psr7.yaml" - ] - }, "phpunit/phpunit": { "version": "9.6", "recipe": {