Skip to content

Commit dd8ded7

Browse files
committed
Update configs for active hosts only on ddns update
Other changes: - Fixed null property read error on clients (when switching to public access) - Use separate `resolvedAddress` field for resolved IP instead of overwriting address - Reduced ddns log verbosity
1 parent 08fa451 commit dd8ded7

File tree

4 files changed

+14
-8
lines changed

4 files changed

+14
-8
lines changed

backend/internal/nginx.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,13 @@ const internalNginx = {
139139
*/
140140
resolveDDNSAddresses: (host) => {
141141
const promises = [];
142-
if (typeof host.access_list !== 'undefined' && typeof host.access_list.clients !== 'undefined') {
142+
if (typeof host.access_list !== 'undefined' && host.access_list && typeof host.access_list.clients !== 'undefined' && host.access_list.clients) {
143143
for (const client of host.access_list.clients) {
144-
if (ddnsResolver.requiresResolution(client.address)) {
145-
const p = ddnsResolver.resolveAddress(client.address)
144+
const address = client.address;
145+
if (ddnsResolver.requiresResolution(address)) {
146+
const p = ddnsResolver.resolveAddress(address)
146147
.then((resolvedIP) => {
147-
client.address = `${resolvedIP}; # ${client.address}`;
148+
Object.defineProperty(client, 'resolvedAddress', {value: resolvedIP});
148149
return Promise.resolve();
149150
});
150151
promises.push(p);

backend/lib/ddns_resolver/ddns_resolver.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,13 @@ const ddnsResolver = {
6464
* @returns {Promise}
6565
*/
6666
_queryHost: (host) => {
67-
logger.info('Looking up IP for ', host);
6867
return utils.execSafe('getent', ['hosts', host])
6968
.then((result) => {
7069
if (result.length < 8) {
71-
logger.error('IP lookup returned invalid output: ', result);
70+
logger.error(`IP lookup for ${host} returned invalid output: ${result}`);
7271
throw error.ValidationError('Invalid output from getent hosts');
7372
}
7473
const out = result.split(/\s+/);
75-
logger.info(`Resolved ${host} to ${out[0]}`);
7674
return out[0];
7775
},
7876
(error) => {

backend/lib/ddns_resolver/ddns_updater.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,11 @@ const ddnsUpdater = {
113113
for (const row of rows) {
114114
if (!updatedRows.has(row.id)) {
115115
updatedRows.set(row.id, 1);
116-
proxy_hosts.push(...row.proxy_hosts);
116+
for (const host of row.proxy_hosts) {
117+
if (host.enabled) {
118+
proxy_hosts.push(host);
119+
}
120+
}
117121
}
118122
}
119123
}

backend/lib/utils.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ module.exports = {
123123
*/
124124
renderEngine.registerFilter('nginxAccessRule', (v) => {
125125
if (typeof v.directive !== 'undefined' && typeof v.address !== 'undefined' && v.directive && v.address) {
126+
if (typeof v.resolvedAddress !== 'undefined' && v.resolvedAddress) {
127+
return `${v.directive} ${v.resolvedAddress}; # ${v.address}`;
128+
}
126129
return `${v.directive} ${v.address};`;
127130
}
128131
return '';

0 commit comments

Comments
 (0)