From 2399717eaf3b9a015d05711451cacf6d2c593302 Mon Sep 17 00:00:00 2001 From: patrick cheung Date: Wed, 13 May 2026 16:37:05 +0800 Subject: [PATCH 1/2] add oray dns service for ddclient backend Signed-off-by: patrick cheung --- .../mvc/app/models/OPNsense/DynDNS/DynDNS.php | 11 +++++++++++ .../mvc/app/models/OPNsense/DynDNS/DynDNS.xml | 1 + .../service/templates/OPNsense/ddclient/ddclient.conf | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php b/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php index 5ce08ea111..71dfa4647f 100644 --- a/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php +++ b/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php @@ -41,10 +41,14 @@ public function performValidation($validateFullModel = false) { $messages = parent::performValidation($validateFullModel); $validate_servers = []; + $has_oray = false; foreach ($this->getFlatNodes() as $key => $node) { $tagName = $node->getInternalXMLTagName(); $parentNode = $node->getParentNode(); + if ($parentNode->getInternalXMLTagName() === 'account' && $parentNode->service->isEqual('oray')) { + $has_oray = true; + } if ($validateFullModel || $node->isFieldChanged()) { if ($parentNode->getInternalXMLTagName() === 'account' && in_array($tagName, ['protocol', 'server'])) { $parentKey = $parentNode->__reference; @@ -53,7 +57,14 @@ public function performValidation($validateFullModel = false) } } + if ($has_oray && !$this->general->backend->isEqual('ddclient')) { + $messages->appendMessage(new Message(gettext('Oray is only supported when the ddclient backend is selected.'), 'general.backend')); + } + foreach ($validate_servers as $key => $node) { + if ($node->service->isEqual('oray')) { + continue; + } $validate_url = false; if ($node->service->isEqual('powerdns')) { diff --git a/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.xml b/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.xml index 75c390ce1e..b346f3c96a 100644 --- a/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.xml +++ b/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.xml @@ -77,6 +77,7 @@ no-ip nsupdate.info (IPv4) nsupdate.info (IPv6) + Oray OVHcloud DynHost Porkbun regfish.de diff --git a/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf b/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf index d82eb19d9d..baf9a9b886 100644 --- a/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf +++ b/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf @@ -87,6 +87,10 @@ server=dyndns.strato.com, \ {% elif account.service == 'ovh' %} protocol=dyndns2, \ server=www.ovh.com, \ +{% elif account.service == 'oray' %} +protocol=dyndns2, \ +server=ddns.oray.com, \ +script=/ph/update, \ {% elif account.service == 'porkbun' %} protocol={{account.service}}, \ apikey={{account.username}}, \ From 5550e41415ff11a242078b6f7935b0b59927e46f Mon Sep 17 00:00:00 2001 From: patrick cheung Date: Thu, 14 May 2026 08:29:25 +0800 Subject: [PATCH 2/2] Remove code from DynDNS.php based on code review feedback. Note: "Force SSL" is unsupported by Oray and will request donation info if enabled. Signed-off-by: patrick cheung --- .../mvc/app/models/OPNsense/DynDNS/DynDNS.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php b/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php index 71dfa4647f..5ce08ea111 100644 --- a/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php +++ b/dns/ddclient/src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php @@ -41,14 +41,10 @@ public function performValidation($validateFullModel = false) { $messages = parent::performValidation($validateFullModel); $validate_servers = []; - $has_oray = false; foreach ($this->getFlatNodes() as $key => $node) { $tagName = $node->getInternalXMLTagName(); $parentNode = $node->getParentNode(); - if ($parentNode->getInternalXMLTagName() === 'account' && $parentNode->service->isEqual('oray')) { - $has_oray = true; - } if ($validateFullModel || $node->isFieldChanged()) { if ($parentNode->getInternalXMLTagName() === 'account' && in_array($tagName, ['protocol', 'server'])) { $parentKey = $parentNode->__reference; @@ -57,14 +53,7 @@ public function performValidation($validateFullModel = false) } } - if ($has_oray && !$this->general->backend->isEqual('ddclient')) { - $messages->appendMessage(new Message(gettext('Oray is only supported when the ddclient backend is selected.'), 'general.backend')); - } - foreach ($validate_servers as $key => $node) { - if ($node->service->isEqual('oray')) { - continue; - } $validate_url = false; if ($node->service->isEqual('powerdns')) {