use API token if available

If the username is "token", use the password as an API token instead of a global one
This commit is contained in:
Juan
2023-05-15 21:13:36 +02:00
committed by Ad Schellevis
parent 08144eda8b
commit 02f273faaf
2 changed files with 13 additions and 5 deletions
+1
View File
@@ -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
@@ -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: