Compare commits
	
		
			2 Commits
		
	
	
		
			6aa9fb27e6
			...
			4ca652cea5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 4ca652cea5 | |||
| 4a70fb61f9 | 
| @ -37,7 +37,7 @@ pub fn read_tun_iface( | ||||
|         loop { | ||||
|             let data_lenght = tun_iface.recv(&mut buf).unwrap(); // build in auto termination, isn't it great
 | ||||
|             smol::spawn(handle_ip_packet( | ||||
|                 buf[..data_lenght - 1].to_vec().into(), | ||||
|                 buf[..data_lenght].to_vec().into(), | ||||
|                 network.clone(), | ||||
|                 socket.clone(), | ||||
|             )) | ||||
| @ -84,22 +84,25 @@ pub async fn handle_ip_packet( | ||||
|     let mut iv: [u8; BLOCK_SIZE] = [0u8; BLOCK_SIZE]; | ||||
|     rng.fill_bytes(&mut iv); | ||||
| 
 | ||||
|     let mut encrypted_data = | ||||
|     let mut procesed_data: Vec<u8> = if network.read().unwrap().encrypted { | ||||
|         match shared::crypto::encrypt(&network.read().unwrap().key, &iv, &packet_data) { | ||||
|             Ok(cr) => cr, | ||||
|             Err(e) => { | ||||
|                 eprintln!("Failed to encrypt packet droping it: {}", e); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|     } else { | ||||
|         packet_data.to_vec() | ||||
|     }; | ||||
| 
 | ||||
|     encrypted_data.insert(0, P2PMethods::PACKET as u8); | ||||
|     encrypted_data.splice(1..1, iv); | ||||
|     procesed_data.insert(0, P2PMethods::PACKET as u8); | ||||
|     procesed_data.splice(1..1, iv); | ||||
| 
 | ||||
|     if dst_ip.octets()[3] == 255 { | ||||
|         network.read().unwrap().peers.par_iter().for_each(|peer| { | ||||
|             // broadcast
 | ||||
|             match socket.send_to(&encrypted_data, peer.sock_addr) { | ||||
|             match socket.send_to(&procesed_data, peer.sock_addr) { | ||||
|                 Ok(_) => {} | ||||
|                 Err(e) => eprintln!("failed to send packet: {}", e), | ||||
|             }; | ||||
| @ -117,7 +120,7 @@ pub async fn handle_ip_packet( | ||||
|             None => return, | ||||
|         }; | ||||
| 
 | ||||
|         match socket.send_to(&encrypted_data, dst) { | ||||
|         match socket.send_to(&procesed_data, dst) { | ||||
|             Ok(_) => {} | ||||
|             Err(e) => eprintln!("failed to send packet: {}", e), | ||||
|         }; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user