summaryrefslogtreecommitdiff
path: root/src/daemon_network.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon_network.rs')
-rw-r--r--src/daemon_network.rs64
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(