feat: adding packet handling to server
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user