feat: adding packet handling to server

This commit is contained in:
Andrew Rioux
2023-09-04 19:10:43 -04:00
parent fb43a27ba3
commit 1e5f515a25
7 changed files with 112 additions and 29 deletions

View File

@@ -1,4 +1,5 @@
use std::{
collections::HashMap,
net::{Ipv4Addr, UdpSocket},
sync::{
mpsc::{channel, Receiver, Sender},
@@ -214,6 +215,8 @@ fn authenticate<F: Fn()>(
handle_full_connection(capabilities, packet_handler, conninfo, close)
}
mod command;
fn handle_full_connection<F>(
capabilities: Arc<Capabilities>,
packet_handler: Receiver<EthernetPacket>,
@@ -223,8 +226,48 @@ fn handle_full_connection<F>(
where
F: Fn(),
{
use packets::*;
let mut commands = HashMap::new();
let mut uploaded_files = HashMap::new();
let mut downloaded_files = HashMap::new();
loop {
let msg = packet_handler.recv()?;
let pkt = msg.pkt();
let Layer3Pkt::IPv4Pkt(ip_pkt) = pkt.get_layer3_pkt()?;
let Layer4Pkt::UDP(udp_pkt) = ip_pkt.get_layer4_packet()?;
if ip_pkt.source_ip() != conninfo.srcip || udp_pkt.srcport() != conninfo.srcport {
continue;
}
let Ok(data) = conninfo.try_decrypt_and_verify_comm(udp_pkt.get_data()) else {
continue;
};
match data {
Command::RunCommand(_) => {}
Command::SendStdin(_, _) => {}
Command::Cd(_) => {}
Command::Ls(_) => {}
Command::OpenTTY => {}
Command::CloseTTY(_) => {}
Command::SendTTYData(_, _) => {}
Command::SendTTYSignal(_, _) => {}
Command::StartUploadFile(_, _) => {}
Command::SendFileSegment(_, _, _) => {}
Command::StartDownloadFile(_) => {}
Command::DownloadFileStatus(_) => {}
Command::Disconnect => {
break;
}
}
}
close();