Fix class methods
This commit is contained in:
parent
4525eb1974
commit
add93f26f4
1 changed files with 55 additions and 48 deletions
103
src/main.rs
103
src/main.rs
|
@ -55,71 +55,78 @@ struct DnsEntry {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DnsEntry {
|
impl DnsEntry {
|
||||||
fn update(&self, change4: &mut ChangeTracker, change6: &mut ChangeTracker, agent: &Instance, ips: &Ips) {
|
fn update(
|
||||||
|
&self,
|
||||||
|
change4: &mut ChangeTracker,
|
||||||
|
change6: &mut ChangeTracker,
|
||||||
|
agent: &Instance,
|
||||||
|
ips: &Ips,
|
||||||
|
zone: &DnsZone
|
||||||
|
) {
|
||||||
let mut found4 = false;
|
let mut found4 = false;
|
||||||
let mut found6 = false;
|
let mut found6 = false;
|
||||||
|
|
||||||
for cloudflare_entry in &agent.dns_entries {
|
for cloudflare_entry in &agent.dns_entries {
|
||||||
|
|
||||||
// Update IPv4 Entry
|
// Update IPv4 Entry
|
||||||
if cloudflare_entry.is_equal(&self.name) {
|
if cloudflare_entry.is_equal(&self.name) {
|
||||||
found4 = true;
|
found4 = true;
|
||||||
if cloudflare_entry.r#type == CloudflareDnsType::A && self.type4 {
|
if cloudflare_entry.r#type == CloudflareDnsType::A && self.type4 {
|
||||||
let success = agent.update_entry(cloudflare_entry, &ips.ipv4);
|
let success = agent.update_entry(cloudflare_entry, &ips.ipv4);
|
||||||
if success {
|
|
||||||
change4.updated += 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
change4.error += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
change4.unchanged += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Update IPv6 Entry
|
|
||||||
else if cloudflare_entry.r#type == CloudflareDnsType::AAAA && self.type6 {
|
|
||||||
found6 = true;
|
|
||||||
let ipv6 = ips.ipv6base.clone() + self.interface.as_ref().unwrap();
|
|
||||||
|
|
||||||
if cloudflare_entry.is_ip_new(&ipv6) {
|
if cloudflare_entry.is_ip_new(&ips.ipv4) {
|
||||||
let success = agent.update_entry(cloudflare_entry, &ipv6);
|
if success {
|
||||||
if success {
|
change4.updated += 1;
|
||||||
change6.updated += 1
|
}
|
||||||
|
else {
|
||||||
|
change4.error += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
change6.error += 1
|
change4.unchanged += 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
change6.unchanged += 1;
|
|
||||||
}
|
}
|
||||||
|
// Update IPv6 Entry
|
||||||
|
else if cloudflare_entry.r#type == CloudflareDnsType::AAAA && self.type6 {
|
||||||
|
found6 = true;
|
||||||
|
let ipv6 = ips.ipv6base.clone() + self.interface.as_ref().unwrap();
|
||||||
|
|
||||||
|
if cloudflare_entry.is_ip_new(&ipv6) {
|
||||||
|
let success = agent.update_entry(cloudflare_entry, &ipv6);
|
||||||
|
if success {
|
||||||
|
change6.updated += 1
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
change6.error += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
change6.unchanged += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ignore otherwise
|
||||||
|
else {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !found4 && self.type4 {
|
||||||
|
let success = agent.create_entry(&zone.id, "A", &self.name, &ips.ipv4);
|
||||||
|
if success {
|
||||||
|
change4.created += 1;
|
||||||
}
|
}
|
||||||
// ignore otherwise
|
|
||||||
else {
|
else {
|
||||||
|
change4.error += 1;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if !found6 && self.type6 {
|
||||||
|
let ipv6 = ips.ipv6base.clone() + self.interface.as_ref().unwrap();
|
||||||
|
let success = agent.create_entry(&zone.id, "AAAA", &self.name, &ipv6);
|
||||||
|
if success {
|
||||||
|
change6.created += 1;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
if !found4 && self.type4 {
|
change6.error += 1;
|
||||||
let success = agent.create_entry(&cloudflare_entry.zone_id, "A", &self.name, &ips.ipv4);
|
};
|
||||||
if success {
|
|
||||||
change4.created += 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
change4.error += 1;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if !found6 && self.type6 {
|
|
||||||
let ipv6 = ips.ipv6base.clone() + self.interface.as_ref().unwrap();
|
|
||||||
let success = agent.create_entry(&cloudflare_entry.zone_id, "AAAA", &self.name, &ipv6);
|
|
||||||
if success {
|
|
||||||
change6.created += 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
change6.error += 1;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -139,7 +146,7 @@ impl DnsZone {
|
||||||
agent.load_entries(&self.email, &self.id);
|
agent.load_entries(&self.email, &self.id);
|
||||||
|
|
||||||
for entry in &self.dns_entries {
|
for entry in &self.dns_entries {
|
||||||
entry.update(change4, change6, &agent, &ips);
|
entry.update(change4, change6, &agent, &ips, &self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue