1
0
mirror of https://github.com/danog/dns.git synced 2024-11-26 20:14:51 +01:00

Support final dot for DNS names

This commit is contained in:
Daniil Gentili 2019-05-14 19:09:51 +02:00 committed by GitHub
parent cb65162596
commit 54f53e2663
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -84,7 +84,7 @@ function isValidName(string $name)
*/
function normalizeName(string $name): string
{
static $pattern = '/^(?<name>[a-z0-9]([a-z0-9-_]{0,61}[a-z0-9])?)(\.(?&name))*$/i';
static $pattern = '/^(?<name>[a-z0-9]([a-z0-9-_]{0,61}[a-z0-9])?)(\.(?&name))*\.?$/i';
if (\function_exists('idn_to_ascii') && \defined('INTL_IDNA_VARIANT_UTS46')) {
if (false === $result = \idn_to_ascii($name, 0, \INTL_IDNA_VARIANT_UTS46)) {
@ -102,6 +102,8 @@ function normalizeName(string $name): string
if (isset($name[253]) || !\preg_match($pattern, $name)) {
throw new InvalidNameException("Name '{$name}' is not a valid hostname.");
}
if ($name[strlen($name)-1] === '.') {
$name = substr($name, 0, -1);
}
return $name;
}