From 02f273faafd43ae788cb54395bf0f30f9155ce43 Mon Sep 17 00:00:00 2001 From: Juan Date: Thu, 11 May 2023 18:25:09 +0200 Subject: [PATCH] use API token if available If the username is "token", use the password as an API token instead of a global one --- dns/ddclient/Makefile | 1 + .../scripts/ddclient/lib/account/cloudflare.py | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dns/ddclient/Makefile b/dns/ddclient/Makefile index 3eee7b353..043bd829d 100644 --- a/dns/ddclient/Makefile +++ b/dns/ddclient/Makefile @@ -1,5 +1,6 @@ PLUGIN_NAME= ddclient PLUGIN_VERSION= 1.13 +PLUGIN_REVISION= 1 PLUGIN_DEPENDS= ddclient-devel PLUGIN_COMMENT= Dynamic DNS client PLUGIN_MAINTAINER= ad@opnsense.org diff --git a/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/cloudflare.py b/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/cloudflare.py index 774be44fa..388c2b147 100755 --- a/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/cloudflare.py +++ b/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/cloudflare.py @@ -60,16 +60,23 @@ class Cloudflare(BaseAccount): # get ZoneID url = "https://%s/client/v4/zones" % self._services[self.settings.get('service')] + + headers = { + 'User-Agent': 'OPNsense-dyndns' + } + # switch between bearer and email/key authentication + if self.settings.get('username', '').find('@') == -1: + headers["Authorization"] = "Bearer " + self.settings.get('password') + else: + headers["X-Auth-Email"] = self.settings.get('username') + headers["X-Auth-Key"] = self.settings.get('password') + req_opts = { 'url': url, 'params': { 'name': self.settings.get('zone') }, - 'headers': { - 'User-Agent': 'OPNsense-dyndns', - 'X-Auth-Email': self.settings.get('username'), - 'X-Auth-Key': self.settings.get('password') - } + 'headers': headers } response = requests.get(**req_opts) try: