From 61333a74d8a68b2c0e10a62ef38389d3016d085c Mon Sep 17 00:00:00 2001 From: Jesse Date: Sat, 2 Sep 2023 10:01:58 +0200 Subject: [PATCH] dns/ddclient - add "get" protocol in custom service type (#3523) --------- Co-authored-by: Franco Fichtner --- .../src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.php | 2 +- .../src/opnsense/mvc/app/models/OPNsense/DynDNS/DynDNS.xml | 2 ++ .../src/opnsense/scripts/ddclient/lib/account/dyndns2.py | 5 +++-- 3 files changed, 6 insertions(+), 3 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 b0b497080..9432b5062 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 @@ -56,7 +56,7 @@ class DynDNS extends BaseModel continue; } $srv = (string)$node->server; - if ((string)$node->protocol == 'post') { + if (in_array((string)$node->protocol, ['get', 'post', 'put'])) { if (empty($srv) || filter_var($srv, FILTER_VALIDATE_URL) === false) { $messages->appendMessage( new Message( 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 aeeaa9074..62f707d38 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 @@ -95,7 +95,9 @@ DynDNS 1 DynDNS 2 + Custom GET Custom POST + Custom PUT diff --git a/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/dyndns2.py b/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/dyndns2.py index dfd2ae2aa..34d5feeb3 100755 --- a/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/dyndns2.py +++ b/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/dyndns2.py @@ -67,11 +67,12 @@ class DynDNS2(BaseAccount): def execute(self): if super().execute(): protocol = self.settings.get('protocol', None) - if protocol == 'post': + if protocol in [ 'get', 'post', 'put' ]: url = self.settings.get('server') url = url.replace('__MYIP__', self.current_address) url = url.replace('__HOSTNAME__', self.settings.get('hostnames')) - req = requests.post( + req = requests.request( + method=protocol, url=url, headers={'User-Agent': 'OPNsense-dyndns'}, auth=HTTPBasicAuth(self.settings.get('username'), self.settings.get('password'))