diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-11-01 21:44:22 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-11-01 21:44:22 +0100 |
commit | 5e827e178ae7b9d7c71d34fa27870f05441f3fc0 (patch) | |
tree | a13e9734c7eccbd22f8214fa9709c32d65be6d3b /src | |
parent | 96511706bbe5a2a441302f62987ac767fbb7a263 (diff) |
don't check for address change in push function
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 132 |
1 files changed, 62 insertions, 70 deletions
diff --git a/src/main.rs b/src/main.rs index 0aef619..73c0d89 100644 --- a/src/main.rs +++ b/src/main.rs @@ -337,33 +337,29 @@ fn monitor_net6(config: Arc<Config>, tx: mpsc::Sender<Ipv6Net>) -> Result<()> { } fn push_addr4(config: Arc<Config>, rx: &mpsc::Receiver<Ipv4Net>) -> Result<()> { - let mut last_address = None; loop { let address = rx.recv()?; - if last_address.is_none() || address != last_address.unwrap() { - let user = config.user.clone(); - let pass = config.pass.clone(); - let clt = Client::login(Endpoint::Sandbox, user, pass)?; + let user = config.user.clone(); + let pass = config.pass.clone(); - clt.call(RecordUpdate { - ids: config.records_addr4.clone(), - name: None, - record_type: Some(RecordType::A), - content: Some(address.addr().to_string()), - ttl: Some(300), - priority: None, - url_rdr_type: None, - url_rdr_title: None, - url_rdr_desc: None, - url_rdr_keywords: None, - url_rdr_favicon: None, - url_append: None, - testing_mode: false, - })?; + let clt = Client::login(Endpoint::Sandbox, user, pass)?; - last_address = Some(address); - } + clt.call(RecordUpdate { + ids: config.records_addr4.clone(), + name: None, + record_type: Some(RecordType::A), + content: Some(address.addr().to_string()), + ttl: Some(300), + priority: None, + url_rdr_type: None, + url_rdr_title: None, + url_rdr_desc: None, + url_rdr_keywords: None, + url_rdr_favicon: None, + url_append: None, + testing_mode: false, + })?; } } @@ -395,62 +391,58 @@ fn push_addr6(config: Arc<Config>, rx: &mpsc::Receiver<Ipv6Net>) -> Result<()> { } fn push_net6(config: Arc<Config>, rx: &mpsc::Receiver<Ipv6Net>) -> Result<()> { - let mut last_prefix = None; loop { let prefix = rx.recv()?; - if last_prefix.is_none() || prefix != last_prefix.unwrap() { - let user = config.user.clone(); - let pass = config.pass.clone(); - - let clt = Client::login(Endpoint::Sandbox, user, pass)?; - - let mut total_records = Vec::new(); - for id in &config.records_net6 { - let info: RecordInfoResponse = clt - .call(RecordInfoCall { - domain_name: None, - domain_id: None, - record_id: Some(*id), - record_type: Some(RecordType::Aaaa), - name: None, - content: None, - ttl: None, - priority: None, - })? - .try_into()?; - - let mut records = info - .records - .expect("no AAAA records (this should never happen"); - - total_records.append(&mut records); - } - for record in total_records { - let address = Ipv6Addr::from_str(&record.content)?; + let user = config.user.clone(); + let pass = config.pass.clone(); - // Get the interface identifier. - let if_id = address.bitand(prefix.hostmask()); - let new = prefix.addr().bitor(if_id); + let clt = Client::login(Endpoint::Sandbox, user, pass)?; - clt.call(RecordUpdate { - ids: vec![record.id], - name: None, + let mut total_records = Vec::new(); + for id in &config.records_net6 { + let info: RecordInfoResponse = clt + .call(RecordInfoCall { + domain_name: None, + domain_id: None, + record_id: Some(*id), record_type: Some(RecordType::Aaaa), - content: Some(new.to_string()), - ttl: Some(300), + name: None, + content: None, + ttl: None, priority: None, - url_rdr_type: None, - url_rdr_title: None, - url_rdr_desc: None, - url_rdr_keywords: None, - url_rdr_favicon: None, - url_append: None, - testing_mode: false, - })?; - } + })? + .try_into()?; + + let mut records = info + .records + .expect("no AAAA records (this should never happen"); + + total_records.append(&mut records); + } + + for record in total_records { + let address = Ipv6Addr::from_str(&record.content)?; - last_prefix = Some(prefix); + // Get the interface identifier. + let if_id = address.bitand(prefix.hostmask()); + let new = prefix.addr().bitor(if_id); + + clt.call(RecordUpdate { + ids: vec![record.id], + name: None, + record_type: Some(RecordType::Aaaa), + content: Some(new.to_string()), + ttl: Some(300), + priority: None, + url_rdr_type: None, + url_rdr_title: None, + url_rdr_desc: None, + url_rdr_keywords: None, + url_rdr_favicon: None, + url_append: None, + testing_mode: false, + })?; } } } |