From 2f3271867f8b26d1ef46d59289a4ed3c514b834b Mon Sep 17 00:00:00 2001 From: Tom Van Looy Date: Tue, 9 Jan 2024 09:33:50 +0100 Subject: [PATCH] Support ALIAS, *._something and foo.#bar# --- src/Command/Dns/GetRecord.php | 1 + src/Command/Dns/ListRecords.php | 1 + src/Structure/Dns/AbstractDnsRecord.php | 4 +-- src/Structure/Dns/DnsALIASRecord.php | 33 +++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/Structure/Dns/DnsALIASRecord.php diff --git a/src/Command/Dns/GetRecord.php b/src/Command/Dns/GetRecord.php index 9b38fc7..0213aec 100644 --- a/src/Command/Dns/GetRecord.php +++ b/src/Command/Dns/GetRecord.php @@ -35,6 +35,7 @@ public function processResponse(array $response) case 'CNAME': case 'SOA': case 'CAA': + case 'ALIAS': $rec = new $className($record->id, $record->record_name, $record->ttl, $record->content); break; diff --git a/src/Command/Dns/ListRecords.php b/src/Command/Dns/ListRecords.php index 2cca7f6..6232e6f 100644 --- a/src/Command/Dns/ListRecords.php +++ b/src/Command/Dns/ListRecords.php @@ -35,6 +35,7 @@ public function processResponse(array $response) case 'CNAME': case 'SOA': case 'CAA': + case 'ALIAS': $rec = new $className( $record->id, $record->record_name, diff --git a/src/Structure/Dns/AbstractDnsRecord.php b/src/Structure/Dns/AbstractDnsRecord.php index 30f39ae..d5172a3 100644 --- a/src/Structure/Dns/AbstractDnsRecord.php +++ b/src/Structure/Dns/AbstractDnsRecord.php @@ -71,8 +71,8 @@ protected function validateHostname(string $hostname, bool $allowOrigin = true): if ($allowOrigin && in_array($hostname, ['', '@', '*'])) { return $hostname; } else { - // remove leading underscores or wildcards from labels, as we consider them valid, then send through filter_var - $filtered = preg_replace('(^\*\.|^_|\._)', '', $hostname); + // remove special characters from labels, as we consider them valid, then send through filter_var + $filtered = preg_replace('(^\*\._|^\*\.|^_|\._|\#)', '', $hostname); $filtered = filter_var($filtered, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME); // did the check pass and did we removed leading underscores? if so, use original value; diff --git a/src/Structure/Dns/DnsALIASRecord.php b/src/Structure/Dns/DnsALIASRecord.php new file mode 100644 index 0000000..55e0e77 --- /dev/null +++ b/src/Structure/Dns/DnsALIASRecord.php @@ -0,0 +1,33 @@ +setContent($content); + } + + public function getContent(): string + { + return $this->content; + } + + private function setContent(string $content): void + { + $this->content = $content; + } + + public function getObject(): \stdClass + { + $obj = parent::getObject(); + $obj->content = $this->getContent(); + + return $obj; + } +} +