Wrapping, wrapping, wrapping.
All checks were successful
gitea/Frida/pipeline/head This commit looks good

modified:   Cargo.lock
	modified:   Cargo.toml
	modified:   src/client.rs
	modified:   src/server.rs
This commit is contained in:
Michael Wain 2024-11-17 23:24:16 +03:00
parent 419f65fcca
commit a819b20391
4 changed files with 15 additions and 92 deletions

62
Cargo.lock generated
View File

@ -602,33 +602,13 @@ version = "1.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
[[package]]
name = "c2rust-bitfields"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b43c3f07ab0ef604fa6f595aa46ec2f8a22172c975e186f6f5bf9829a3b72c41"
dependencies = [
"c2rust-bitfields-derive 0.18.0",
]
[[package]]
name = "c2rust-bitfields"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "367e5d1b30f28be590b6b3868da1578361d29d9bfac516d22f497d28ed7c9055"
dependencies = [
"c2rust-bitfields-derive 0.19.0",
]
[[package]]
name = "c2rust-bitfields-derive"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3cbc102e2597c9744c8bd8c15915d554300601c91a079430d309816b0912545"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
"c2rust-bitfields-derive",
]
[[package]]
@ -1604,7 +1584,6 @@ dependencies = [
"tokio-util",
"tray-item",
"tun",
"tun2",
"x25519-dalek",
]
@ -4574,29 +4553,7 @@ dependencies = [
"tokio",
"tokio-util",
"windows-sys 0.59.0",
"wintun-bindings 0.7.17",
]
[[package]]
name = "tun2"
version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b139b40733b3e81560335ccad94948916c4d03ed1ded505a8675428879075b4"
dependencies = [
"bytes",
"cfg-if",
"futures-core",
"ipnet",
"libc",
"libloading 0.8.5",
"log",
"nix",
"rustversion",
"thiserror 1.0.64",
"tokio",
"tokio-util",
"windows-sys 0.59.0",
"wintun-bindings 0.6.4",
"wintun-bindings",
]
[[package]]
@ -5455,19 +5412,6 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "wintun-bindings"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3af47a132f449a64ff858f9ad876a3d1812df30e9500cddfdcabb2266ab68c0d"
dependencies = [
"c2rust-bitfields 0.18.0",
"libloading 0.8.5",
"log",
"thiserror 1.0.64",
"windows-sys 0.59.0",
]
[[package]]
name = "wintun-bindings"
version = "0.7.17"
@ -5475,7 +5419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8aed5bc5516ca7a52018b0a198911566edfa07584bdbfd71ea39161aa13806e"
dependencies = [
"blocking",
"c2rust-bitfields 0.19.0",
"c2rust-bitfields",
"futures",
"libloading 0.8.5",
"log",

View File

@ -45,11 +45,6 @@ base64 = "0.22.1"
chrono = "0.4.38"
console-subscriber = "0.4.0"
network-interface = "2.0.0"
[target.'cfg(target_os="linux")'.dependencies]
tun2 = { version = "2", features = ["async"] }
[target.'cfg(not(target_os="linux"))'.dependencies]
tun = { version = "0.7", features = ["async"] }
[target.'cfg(target_os="windows")'.dependencies]

View File

@ -8,31 +8,24 @@ pub mod general {
aead::{Aead, AeadCore, KeyInit, OsRng},
Aes256Gcm, Nonce};
use base64::prelude::*;
use std::sync::Arc;
use std::{io::{Read, Write}, sync::Arc};
use std::net::Ipv4Addr;
use x25519_dalek::{PublicKey, StaticSecret};
use crate::udp::{UDPVpnPacket, UDPVpnHandshake, UDPSerializable};
#[cfg(not(target_os = "linux"))]
use tun::{DeviceReader, DeviceWriter};
#[cfg(target_os = "linux")]
use tun2::{DeviceReader, DeviceWriter};
pub trait ReadWrapper {
async fn read(&mut self, buf: &mut [u8]) -> Result<usize, ()>;
}
pub struct DevReader {
pub dr: DeviceReader
pub struct DevReader<R> where R: Read {
pub dr: R
}
// TODO: implement custom Error
impl ReadWrapper for DevReader {
impl<R: Read> ReadWrapper for DevReader<R> {
async fn read(&mut self, buf: &mut [u8]) -> Result<usize, ()> {
let r = self.dr.read(buf).await;
if let Ok(a) = r {
if let Ok(a) = self.dr.read(buf) {
return Ok(a);
}
Err(())
@ -62,17 +55,17 @@ pub mod general {
Gateway(Ipv4Addr)
}
pub struct DevWriter {
pub dr: DeviceWriter,
pub struct DevWriter<W> where W: Write {
pub dr: W,
//pub dev: AsyncDevice
}
// TODO: implement custom Error
impl WriteWrapper for DevWriter {
impl<W: Write> WriteWrapper for DevWriter<W> {
async fn write(&mut self, msg: WriterMessage) -> Result<usize, ()> {
match msg {
WriterMessage::Plain(buf) => {
if let Ok(a) = self.dr.write(&buf).await {
if let Ok(a) = self.dr.write(&buf) {
return Ok(a);
}
Err(())
@ -282,11 +275,7 @@ pub mod desktop {
#[cfg(target_os = "linux")]
use network_interface::{NetworkInterface, NetworkInterfaceConfig};
#[cfg(target_os = "linux")]
use tun2::{ Configuration, create_as_async };
#[cfg(not(target_os = "linux"))]
use tun::{ Configuration, create_as_async };
use tun::{ Configuration, create };
#[cfg(target_os = "linux")]
@ -372,9 +361,9 @@ pub mod desktop {
sock.connect(&self.client_config.server.endpoint).await.unwrap();
info!("AsyncDevice");
let dev = create_as_async(&config).unwrap();
let dev = create(&config).unwrap();
info!("Split device");
let (dev_writer, dev_reader) = dev.split().unwrap();
let (dev_reader, dev_writer) = dev.split();
info!("CoreVpnClient");
let mut client = CoreVpnClient{ client_config: self.client_config.clone(), dev_reader: DevReader{ dr: dev_reader }, dev_writer: DevWriter{dr: dev_writer}, close_token: tokio_util::sync::CancellationToken::new()};

View File

@ -9,11 +9,6 @@ use std::net::{ SocketAddr, Ipv4Addr, IpAddr };
use std::collections::HashMap;
use aes_gcm::{ aead::{Aead, AeadCore, KeyInit, OsRng},
Aes256Gcm, Nonce };
#[cfg(target_os = "linux")]
use tun2::{Configuration, create_as_async};
#[cfg(not(target_os = "linux"))]
use tun::{Configuration, create_as_async};
#[cfg(target_os = "linux")]