progress [CI SKIP]
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
use crate::model::{Base64Backed, ECCKey, Interface, Peer, PeerBuilder, SharedKey, WireguardController};
|
||||
use crate::model::{
|
||||
Base64Backed, ECCKey, Interface, Peer, PeerBuilder, SharedKey, WireguardController,
|
||||
};
|
||||
use std::io::{BufRead, BufReader, Error, ErrorKind, Result, Write};
|
||||
use std::net::{IpAddr, SocketAddr};
|
||||
use std::os::unix::net::UnixStream;
|
||||
@@ -46,6 +48,10 @@ impl WireguardController for Userspace {
|
||||
Ok(())
|
||||
};
|
||||
match key.as_ref() {
|
||||
"" => {
|
||||
//Empty line means end of data
|
||||
build_peer(&mut peer, builder); //TODO: handle possible actual error case
|
||||
}
|
||||
"public_key" => {
|
||||
add_key(&mut peer, parse_err(ECCKey::from_base64(value))?)?;
|
||||
}
|
||||
@@ -64,9 +70,15 @@ impl WireguardController for Userspace {
|
||||
"last_handshake_time_nsec" => {
|
||||
builder.add_last_handshake(Duration::from_nanos(value_as_num()?.into()));
|
||||
}
|
||||
"persistent_keepalive" => {
|
||||
"persistent_keepalive_interval" => {
|
||||
builder.persistent_keepalive(Some(Duration::from_secs(value_as_num()?.into())));
|
||||
}
|
||||
"rx_bytes" => {
|
||||
builder.add_traffic((parse_err(value.parse::<u64>())?, 0));
|
||||
}
|
||||
"tx_bytes" => {
|
||||
builder.add_traffic((0, (parse_err(value.parse::<u64>())?)));
|
||||
}
|
||||
"allowed_ip" => {
|
||||
let mut parts = value.split("/").into_iter();
|
||||
let net = match (
|
||||
@@ -89,7 +101,11 @@ impl WireguardController for Userspace {
|
||||
format!("Returned error code: {}", code),
|
||||
))?,
|
||||
},
|
||||
_ => Err(Error::new(ErrorKind::InvalidData, "Unknown key"))?,
|
||||
"listen_port" | "fwmark" | "private_key" => (), //Ignore for now
|
||||
_ => Err(Error::new(
|
||||
ErrorKind::InvalidData,
|
||||
["Unknown key: \"", &key, "\""].join(""),
|
||||
))?,
|
||||
}
|
||||
Ok(peer)
|
||||
}
|
||||
@@ -100,19 +116,19 @@ impl WireguardController for Userspace {
|
||||
match build_peer(builder, line) {
|
||||
Ok(Some(value)) => Some(Some(Ok(value))),
|
||||
Err(err) => {
|
||||
eprintln!("{:?}", err);
|
||||
None
|
||||
}, //TODO: propagate
|
||||
eprintln!("{:?}", err);
|
||||
None
|
||||
} //TODO: propagate
|
||||
_ => Some(None),
|
||||
}
|
||||
})
|
||||
.flatten();
|
||||
Ok(Box::new(peers))
|
||||
}
|
||||
|
||||
|
||||
fn interface(&mut self) -> Result<Interface> {
|
||||
let mut stream = UnixStream::connect(&self.0)?;
|
||||
stream.write_all(b"get=1\n")?;
|
||||
stream.write_all(b"get=1\n")?;
|
||||
unimplemented!("TODO: return iface")
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user