diff options
Diffstat (limited to 'src/daemon_network.rs')
-rw-r--r-- | src/daemon_network.rs | 64 |
1 files changed, 23 insertions, 41 deletions
diff --git a/src/daemon_network.rs b/src/daemon_network.rs index 895e409..97349c8 100644 --- a/src/daemon_network.rs +++ b/src/daemon_network.rs @@ -1,29 +1,26 @@ -use atomic_write_file::AtomicWriteFile; use defguard_wireguard_rs::{ - host::Peer, key::Key, net::IpAddrMask, InterfaceConfiguration, WGApi, WireguardInterfaceApi, + host::Peer, key::Key, InterfaceConfiguration, WGApi, WireguardInterfaceApi, }; -use log::{debug, error, info, warn}; +//use log::{debug, error, info, warn}; use std::{ collections::{BTreeSet, HashMap}, - io::Write, net::ToSocketAddrs, sync::Arc, }; -use tokio::{ - net::TcpListener, - sync::{broadcast, RwLock}, -}; +use tokio::{net::TcpListener, sync::RwLock}; use crate::daemon::*; +use crate::daemon_config::*; pub async fn add_network( - hostfile: &mut Option<(String, BTreeSet<String>)>, name: String, privkey: String, address: String, port: u16, peers: &HashMap<Key, PeerConfig>, -) -> Result<WGApi, DaemonError> { +) -> Result<(WGApi, BTreeSet<(String, String)>), DaemonError> { + let mut hostname_pairs = BTreeSet::new(); + let wg = WGApi::new(name.clone(), false)?; let defguard_peers = peers .iter() @@ -59,38 +56,23 @@ pub async fn add_network( peers: defguard_peers, })?; - if let Some((hosts_str, hosts)) = hostfile { - peers - .values() - .map(|peer| { - if peer.use_hostnames { - peer.ips - .iter() - .map(|(mask, may_dom)| { - if let Some(dom) = may_dom - && hosts.insert(dom.clone()) - { - hosts_str.push_str(&format!("{}", mask.ip)); - hosts_str.push('\t'); - hosts_str.push_str(&dom); - hosts_str.push('\n'); - } - }) - .count(); - } - }) - .count(); - } - - if let Some((hosts_str, _)) = hostfile { - debug!("writing hosts file: {hosts_str}"); - - let mut f = AtomicWriteFile::open("/etc/hosts")?; - f.write(hosts_str.as_bytes())?; - f.commit()?; - } + peers + .values() + .map(|peer| { + if peer.use_hostnames { + peer.ips + .iter() + .map(|(mask, may_dom)| { + if let Some(dom) = may_dom { + hostname_pairs.insert((format!("{}", mask.ip), dom.clone())); + } + }) + .count(); + } + }) + .count(); - Ok(wg) + Ok((wg, hostname_pairs)) } pub async fn run_network( |