use cttps::CttpsStream;
use tokio::net::TcpListener;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let listener = TcpListener::bind("127.0.0.1:8443").await?;
println!("CTTPS server listening on 127.0.0.1:8443");
loop {
let (socket, addr) = listener.accept().await?;
println!("Client connected: {}", addr);
tokio::spawn(async move {
match CttpsStream::connect(socket).await {
Ok(mut cttps) => {
println!("Secure tunnel established");
loop {
match cttps.recv_packet().await {
Ok(data) => {
println!(
"Received: {}",
String::from_utf8_lossy(&data)
);
let mut response =
b"Hello from secure server".to_vec();
if let Err(e) =
cttps.send_packet(&mut response).await
{
eprintln!("Send error: {}", e);
break;
}
}
Err(e) => {
eprintln!("Receive error: {}", e);
break;
}
}
}
}
Err(e) => {
eprintln!("Handshake failed: {}", e);
}
}
});
}
}