diff --git a/feeds/tip/cloud_discovery/files/usr/bin/cloud_discovery b/feeds/tip/cloud_discovery/files/usr/bin/cloud_discovery index 9cf3aa84e..a3195ec80 100755 --- a/feeds/tip/cloud_discovery/files/usr/bin/cloud_discovery +++ b/feeds/tip/cloud_discovery/files/usr/bin/cloud_discovery @@ -145,6 +145,17 @@ function gateway_available() { return true; } +function dnsmasq_rebind_allow(fqdn) { + let config_dir = '/tmp/dnsmasq.d'; + let config_file = `${config_dir}/cloud-discovery.conf`; + + if (!fs.stat(config_dir)) + fs.mkdir(config_dir); + + fs.writefile(config_file, `rebind-domain-ok=/${fqdn}/\n`); + system('/etc/init.d/dnsmasq reload'); +} + function set_state(set) { if (state == set) return; @@ -193,6 +204,7 @@ function discover_dhcp() { let dhcp = readjsonfile('/tmp/cloud.json'); if (dhcp?.dhcp_server && dhcp?.dhcp_port) { let fqdn = split(dhcp.dhcp_server, ':')[0]; + dnsmasq_rebind_allow(fqdn); if (gateway_write({ server: dhcp.dhcp_server, port: dhcp.dhcp_port, @@ -264,6 +276,8 @@ function discover_standard_fqdn() { let address = result[STANDARD_FQDN].A[0]; ulog(LOG_INFO, `Resolved ${STANDARD_FQDN} to ${address}\n`); + dnsmasq_rebind_allow(STANDARD_FQDN); + if (gateway_write({ server: STANDARD_FQDN, port: STANDARD_FQDN_PORT,