Support for loading IP addresses from DiploNAT autodiscovery #4

Merged
lx merged 6 commits from diplonat-autodiscovery into main 2023-04-21 14:00:06 +00:00
Showing only changes of commit d906a6ebb5 - Show all commits

View file

@ -138,26 +138,23 @@ impl DnsConfigFetcher {
return Ok(None); return Ok(None);
} }
let (record_type, targets) = match splits[0] { let (record_type, target) = match splits[0] {
"d53-a" => match self.get_node_ipv4(&node).await? { "d53-a" => match self.get_node_ipv4(&node).await? {
Some(tgt) => (DnsRecordType::A, [tgt.to_string()].into_iter().collect()), Some(tgt) => (DnsRecordType::A, tgt.to_string()),
None => { None => {
warn!("Got d53-a tag `{}` but node {} does not appear to have a known public IPv4 address. Tag is ignored.", tag, node.node); warn!("Got d53-a tag `{}` but node {} does not appear to have a known public IPv4 address. Tag is ignored.", tag, node.node);
return Ok(None); return Ok(None);
} }
}, },
"d53-aaaa" => match self.get_node_ipv6(&node).await? { "d53-aaaa" => match self.get_node_ipv6(&node).await? {
Some(tgt) => (DnsRecordType::AAAA, [tgt.to_string()].into_iter().collect()), Some(tgt) => (DnsRecordType::AAAA, tgt.to_string()),
None => { None => {
warn!("Got d53-aaaa tag `{}` but node {} does not appear to have a known public IPv6 address. Tag is ignored.", tag, node.node); warn!("Got d53-aaaa tag `{}` but node {} does not appear to have a known public IPv6 address. Tag is ignored.", tag, node.node);
return Ok(None); return Ok(None);
} }
}, },
"d53-cname" => match node.meta.get(CNAME_TARGET_METADATA_TAG) { "d53-cname" => match node.meta.get(CNAME_TARGET_METADATA_TAG) {
Some(tgt) => ( Some(tgt) => (DnsRecordType::CNAME, tgt.to_string()),
DnsRecordType::CNAME,
[tgt.to_string()].into_iter().collect(),
),
None => { None => {
warn!("Got d53-cname tag `{}` but node {} does not have a {} metadata value. Tag is ignored.", tag, node.node, CNAME_TARGET_METADATA_TAG); warn!("Got d53-cname tag `{}` but node {} does not have a {} metadata value. Tag is ignored.", tag, node.node, CNAME_TARGET_METADATA_TAG);
return Ok(None); return Ok(None);
@ -171,7 +168,9 @@ impl DnsConfigFetcher {
dns_path: splits[1].to_string(), dns_path: splits[1].to_string(),
record_type, record_type,
}, },
DnsEntryValue { targets }, DnsEntryValue {
targets: [target].into_iter().collect(),
},
))) )))
} }