Changes to be committed:
modified: src/server.rs
This commit is contained in:
parent
46aaf3dccb
commit
23ddaf8c4b
@ -36,11 +36,14 @@ pub async fn server_mode(server_config: ServerConfiguration) {
|
|||||||
let sock = UdpSocket::bind(&server_config.interface.bind_address).await.unwrap();
|
let sock = UdpSocket::bind(&server_config.interface.bind_address).await.unwrap();
|
||||||
let sock_rec = Arc::new(sock);
|
let sock_rec = Arc::new(sock);
|
||||||
let sock_snd = sock_rec.clone();
|
let sock_snd = sock_rec.clone();
|
||||||
|
let sock_hnd = sock_snd.clone();
|
||||||
let addresses = Arc::new(Mutex::new(HashMap::<IpAddr, UDPeer>::new()));
|
let addresses = Arc::new(Mutex::new(HashMap::<IpAddr, UDPeer>::new()));
|
||||||
let peers = Arc::new(Mutex::new(Vec::<ServerPeer>::new()));
|
let peers = Arc::new(Mutex::new(Vec::<ServerPeer>::new()));
|
||||||
|
|
||||||
let (send2tun, recv2tun) = unbounded::<Vec<u8>>();
|
let (send2tun, recv2tun) = unbounded::<Vec<u8>>();
|
||||||
|
|
||||||
|
let (send2hnd, recv2hnd) = unbounded::<(UDPVpnHandshake, SocketAddr)>();
|
||||||
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
loop {
|
loop {
|
||||||
if let Ok(bytes) = recv2tun.recv() {
|
if let Ok(bytes) = recv2tun.recv() {
|
||||||
@ -49,6 +52,14 @@ pub async fn server_mode(server_config: ServerConfiguration) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
tokio::spawn(async move {
|
||||||
|
loop {
|
||||||
|
if let Ok((handshake, addr)) = recv2hnd.recv() {
|
||||||
|
sock_hnd.send_to(&handshake.serialize(), addr).await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
let addrs_cl = addresses.clone();
|
let addrs_cl = addresses.clone();
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let mut buf = vec![0; 4096];
|
let mut buf = vec![0; 4096];
|
||||||
@ -116,7 +127,7 @@ pub async fn server_mode(server_config: ServerConfiguration) {
|
|||||||
|
|
||||||
let handshake_response = UDPVpnHandshake{ public_key: server_config.interface.public_key.clone().into_bytes(), request_ip: handshake.request_ip };
|
let handshake_response = UDPVpnHandshake{ public_key: server_config.interface.public_key.clone().into_bytes(), request_ip: handshake.request_ip };
|
||||||
|
|
||||||
sock_rec.send_to(&handshake_response.serialize(), addr);
|
send2hnd.send((handshake_response, addr));
|
||||||
} else {
|
} else {
|
||||||
info!("Bad handshake");
|
info!("Bad handshake");
|
||||||
plp.iter().for_each(|c| info!("ip: {:?}; pkey: {:?}", c.ip, c.public_key));
|
plp.iter().for_each(|c| info!("ip: {:?}; pkey: {:?}", c.ip, c.public_key));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user