Only send provider specific dns configs

This commit is contained in:
Johannes Zellner
2025-05-02 15:34:10 +02:00
parent 3c1419a22f
commit 8939f0dad7
3 changed files with 118 additions and 66 deletions
+66 -2
View File
@@ -2,6 +2,70 @@
import { fetcher } from 'pankow';
import { API_ORIGIN } from '../constants.js';
function filterForProvider(provider, config) {
let props = [];
switch (provider) {
case 'route53':
props = ['accessKeyId', 'secretAccessKey'];
break;
case 'gcdns':
props = ['projectId', 'credentials'];
break;
case 'digitalocean':
props = ['token'];
break;
case 'linode':
props = ['token'];
break;
case 'bunny':
props = ['accessKey'];
break;
case 'dnsimple':
props = ['accessToken'];
break;
case 'hetzner':
props = ['token'];
break;
case 'vultr':
props = ['token'];
break;
case 'desec':
props = ['token'];
break;
case 'gandi':
props = ['token', 'tokenType'];
break;
case 'godaddy':
props = ['apiKey', 'apiSecret'];
break;
case 'cloudflare':
props = ['token', 'email', 'tokenType', 'defaultProxyStatus'];
break;
case 'namecom':
props = ['token', 'username'];
break;
case 'namecheap':
props = ['token', 'username'];
break;
case 'inwx':
props = ['password', 'username'];
break;
case 'netcup':
props = ['customerNumber', 'apiKey', 'apiPassword'];
break;
case 'ovh':
props = ['endpoint', 'consumerKey', 'appKey', 'appSecret'];
break;
case 'porkbun':
props = ['apikey', 'secretapikey'];
break;
}
const ret = {};
for (const p of props) ret[p] = config[p];
return ret;
}
function create() {
const accessToken = localStorage.token;
@@ -29,7 +93,7 @@ function create() {
return [null, result.body];
},
async add(domain, zoneName, provider, config, fallbackCertificate, tlsConfig) {
const data = { domain, provider, config, tlsConfig };
const data = { domain, provider, config: filterForProvider(provider, config), tlsConfig };
if (zoneName) data.zoneName = zoneName;
if (fallbackCertificate) data.fallbackCertificate = fallbackCertificate;
@@ -44,7 +108,7 @@ function create() {
return [null];
},
async update(domain, zoneName, provider, config, fallbackCertificate, tlsConfig) {
const data = { provider, config, tlsConfig };
const data = { provider, config: filterForProvider(provider, config), tlsConfig };
if (zoneName) data.zoneName = zoneName;
if (fallbackCertificate) data.fallbackCertificate = fallbackCertificate;