some rebuilding
This commit is contained in:
parent
fb0a1644b7
commit
2e08a3093e
@ -1,9 +1,10 @@
|
|||||||
use pea_2_pea::SERVER_PORT;
|
use pea_2_pea::SERVER_PORT;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
io::{Read, Write},
|
io::{ErrorKind, Read, Write},
|
||||||
net::UdpSocket,
|
net::UdpSocket,
|
||||||
process::exit,
|
process::exit,
|
||||||
|
time::Duration,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(clap::Parser)]
|
#[derive(clap::Parser)]
|
||||||
@ -47,6 +48,8 @@ fn main() -> std::io::Result<()> {
|
|||||||
})()
|
})()
|
||||||
.expect("Failed to bind to any available port");
|
.expect("Failed to bind to any available port");
|
||||||
|
|
||||||
|
socket.set_read_timeout(Some(Duration::new(10, 0)))?; // set timeout to 10 seconds
|
||||||
|
|
||||||
// send query request to get server public key
|
// send query request to get server public key
|
||||||
let server_port: u16 = (|| -> u16 {
|
let server_port: u16 = (|| -> u16 {
|
||||||
match cli.bind_port {
|
match cli.bind_port {
|
||||||
@ -59,18 +62,34 @@ fn main() -> std::io::Result<()> {
|
|||||||
.parse()
|
.parse()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
{
|
||||||
|
let mut query_byte: [u8; 1] = [0; 1];
|
||||||
|
query_byte[0] = pea_2_pea::ServerMethods::QUERY as u8;
|
||||||
|
match socket.send_to(&query_byte, &server_SocketAddr) {
|
||||||
|
Ok(s) => {
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
eprintln!("send {} bytes", s);
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
eprintln!("Error snding data: {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let mut buf: [u8; pea_2_pea::BUFFER_SIZE] = [0; pea_2_pea::BUFFER_SIZE];
|
let mut buf: [u8; pea_2_pea::BUFFER_SIZE] = [0; pea_2_pea::BUFFER_SIZE];
|
||||||
loop {
|
loop {
|
||||||
match socket.recv_from(&mut buf) {
|
match socket.recv_from(&mut buf) {
|
||||||
Ok((data_length, src)) => {}
|
Ok((data_length, src)) => {}
|
||||||
|
Err(e) if e.kind() == ErrorKind::WouldBlock || e.kind() == ErrorKind::TimedOut => {
|
||||||
|
// timedout
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Error receiving data: {}", e);
|
eprintln!("Error receiving data: {}", e);
|
||||||
std::process::exit(-4);
|
std::process::exit(-4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let mut out = std::io::stdout();
|
break;
|
||||||
out.write_all(&buf)?;
|
|
||||||
out.flush()?;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -6,9 +6,10 @@ pub const RSA_SIZE: usize = 2048;
|
|||||||
|
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum ServerMethods {
|
pub enum ServerMethods {
|
||||||
REGISTER = 0,
|
QUERY = 0,
|
||||||
GET = 1,
|
REGISTER = 1,
|
||||||
HEARTBEAT = 2,
|
GET = 2,
|
||||||
|
HEARTBEAT = 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod shared;
|
pub mod shared;
|
||||||
|
@ -7,6 +7,25 @@ pub async fn handle_request(
|
|||||||
let mut rng: rand::prelude::ThreadRng = rand::thread_rng();
|
let mut rng: rand::prelude::ThreadRng = rand::thread_rng();
|
||||||
|
|
||||||
match buf[0] {
|
match buf[0] {
|
||||||
|
x if x == pea_2_pea::ServerMethods::QUERY as u8 => {
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
eprintln!("QUERY method");
|
||||||
|
|
||||||
|
let client_sock_addr_str: String = src.to_string();
|
||||||
|
let mut send_vec: Vec<u8> = client_sock_addr_str.into();
|
||||||
|
send_vec.insert(0, pea_2_pea::ServerMethods::QUERY as u8);
|
||||||
|
|
||||||
|
match socket.send_to(&send_vec, &src) {
|
||||||
|
Ok(s) => {
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
eprintln!("send {} bytes", s);
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
eprintln!("Error snding data: {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
x if x == pea_2_pea::ServerMethods::GET as u8 => {
|
x if x == pea_2_pea::ServerMethods::GET as u8 => {
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
println!("GET method");
|
println!("GET method");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user