Skip to content

Commit 00ee20c

Browse files
committed
updated ddns resolver to accept any domain/subdomain instead of domains/subdomains prefixed with ddns, update resolution to return ipv4 addresses
1 parent cae8ba9 commit 00ee20c

File tree

6 files changed

+8
-20
lines changed

6 files changed

+8
-20
lines changed

backend/internal/nginx.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ const internalNginx = {
143143
if (typeof host.access_list !== 'undefined' && host.access_list && typeof host.access_list.clients !== 'undefined' && host.access_list.clients) {
144144
for (const client of host.access_list.clients) {
145145
const address = client.address;
146-
if (ddnsResolver.requiresResolution(address)) {
146+
if (ddnsResolver.ddnsRegex.test(address)) {
147147
const p = ddnsResolver.resolveAddress(address)
148148
.then((resolvedIP) => {
149149
Object.defineProperty(client, 'resolvedAddress', {value: resolvedIP});

backend/lib/ddns_resolver/ddns_resolver.js

+3-15
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,8 @@ const logger = require('../../logger').ddns;
33
const utils = require('../utils');
44

55
const ddnsResolver = {
6-
/**
7-
* Checks whether the address requires resolution (i.e. starts with ddns:)
8-
* @param {String} address
9-
* @returns {boolean}
10-
*/
11-
requiresResolution: (address) => {
12-
if (typeof address !== 'undefined' && address && address.toLowerCase().startsWith('ddns:')) {
13-
return true;
14-
}
15-
return false;
16-
},
6+
/** Pattern to match any valid domain/subdomain */
7+
ddnsRegex: /'^((?!-)[A-Za-z\d-]{1,63}(?<!-)\.)+[A-Za-z]{2,6}$'/,
178

189
/**
1910
* Resolves the given address to its IP
@@ -35,9 +26,6 @@ const ddnsResolver = {
3526
ddnsResolver._cache.delete(address);
3627
// Reach here only if cache value doesn't exist or needs to be updated
3728
let host = address.toLowerCase();
38-
if (host.startsWith('ddns:')) {
39-
host = host.substring(5);
40-
}
4129
return ddnsResolver._queryHost(host)
4230
.then((resolvedIP) => {
4331
ddnsResolver._cache.set(address, [resolvedIP, Date.now()]);
@@ -64,7 +52,7 @@ const ddnsResolver = {
6452
* @returns {Promise}
6553
*/
6654
_queryHost: (host) => {
67-
return utils.execSafe('getent', ['hosts', host])
55+
return utils.execSafe('getent', ['ahostsv4', 'hosts', host])
6856
.then((result) => {
6957
if (result.length < 8) {
7058
logger.error(`IP lookup for ${host} returned invalid output: ${result}`);

backend/lib/ddns_resolver/ddns_updater.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const ddnsUpdater = {
6363
continue;
6464
}
6565
for (const client of row.clients) {
66-
if (!ddnsResolver.requiresResolution(client.address)) {
66+
if (!ddnsResolver.ddnsRegex.test(client.address)) {
6767
continue;
6868
}
6969
if (!usedAddresses.has(client.address)) {

backend/schema/components/access-list-object.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
},
4141
{
4242
"type": "string",
43-
"pattern": "^ddns:[\\w\\.-]+$"
43+
"pattern": "^((?!-)[A-Za-z\\d-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$"
4444
}
4545
]
4646
},

backend/schema/paths/nginx/access-lists/listID/put.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
},
7777
{
7878
"type": "string",
79-
"pattern": "^ddns:[\\w\\.-]+$"
79+
"pattern": "^((?!-)[A-Za-z\\d-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$"
8080
}
8181
]
8282
},

backend/schema/paths/nginx/access-lists/post.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
},
6666
{
6767
"type": "string",
68-
"pattern": "^ddns:[\\w\\.-]+$"
68+
"pattern": "^((?!-)[A-Za-z\\d-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$"
6969
}
7070
]
7171
},

0 commit comments

Comments
 (0)