[FIX] WTRANSPORT WORKS (it was Alois fault)
This commit is contained in:
parent
eed2674e44
commit
a42d2f6b95
3 changed files with 48 additions and 94 deletions
61
Cargo.lock
generated
61
Cargo.lock
generated
|
|
@ -621,9 +621,9 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-expr"
|
name = "cfg-expr"
|
||||||
version = "0.20.6"
|
version = "0.20.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "78cef5b5a1a6827c7322ae2a636368a573006b27cfa76c7ebd53e834daeaab6a"
|
checksum = "3c6b04e07d8080154ed4ac03546d9a2b303cc2fe1901ba0b35b301516e289368"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"target-lexicon",
|
"target-lexicon",
|
||||||
|
|
@ -1090,7 +1090,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "epsilon-core"
|
name = "epsilon-core"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/Tensamin/Epsilon.git#4bdd32b44a77ac980cede20a1d401004f52e4a29"
|
source = "git+https://github.com/Tensamin/Epsilon.git#44e3a3ec0ee6ac4c00f8cfb7c20c3299c7ae89c5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"quinn",
|
"quinn",
|
||||||
|
|
@ -1102,7 +1102,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "epsilon-native"
|
name = "epsilon-native"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/Tensamin/Epsilon.git#4bdd32b44a77ac980cede20a1d401004f52e4a29"
|
source = "git+https://github.com/Tensamin/Epsilon.git#44e3a3ec0ee6ac4c00f8cfb7c20c3299c7ae89c5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
|
@ -1112,9 +1112,11 @@ dependencies = [
|
||||||
"quinn",
|
"quinn",
|
||||||
"rcgen",
|
"rcgen",
|
||||||
"rustls 0.23.37",
|
"rustls 0.23.37",
|
||||||
|
"rustls-native-certs",
|
||||||
"thiserror 2.0.18",
|
"thiserror 2.0.18",
|
||||||
"tokio 1.50.0",
|
"tokio 1.50.0",
|
||||||
"wtransport",
|
"wtransport",
|
||||||
|
"wtransport-proto",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -1784,7 +1786,7 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"pin-project-lite 0.2.17",
|
"pin-project-lite 0.2.17",
|
||||||
"socket2 0.6.2",
|
"socket2 0.6.3",
|
||||||
"system-configuration",
|
"system-configuration",
|
||||||
"tokio 1.50.0",
|
"tokio 1.50.0",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
|
|
@ -2725,9 +2727,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro-crate"
|
name = "proc-macro-crate"
|
||||||
version = "3.4.0"
|
version = "3.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
|
checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"toml_edit",
|
"toml_edit",
|
||||||
]
|
]
|
||||||
|
|
@ -2807,7 +2809,7 @@ dependencies = [
|
||||||
"quinn-udp",
|
"quinn-udp",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"rustls 0.23.37",
|
"rustls 0.23.37",
|
||||||
"socket2 0.6.2",
|
"socket2 0.6.3",
|
||||||
"thiserror 2.0.18",
|
"thiserror 2.0.18",
|
||||||
"tokio 1.50.0",
|
"tokio 1.50.0",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
|
@ -2847,16 +2849,16 @@ dependencies = [
|
||||||
"cfg_aliases",
|
"cfg_aliases",
|
||||||
"libc",
|
"libc",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"socket2 0.6.2",
|
"socket2 0.6.3",
|
||||||
"tracing",
|
"tracing",
|
||||||
"windows-sys 0.60.2",
|
"windows-sys 0.60.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.44"
|
version = "1.0.45"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
|
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
@ -2964,6 +2966,7 @@ version = "0.14.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "10b99e0098aa4082912d4c649628623db6aba77335e4f4569ff5083a6448b32e"
|
checksum = "10b99e0098aa4082912d4c649628623db6aba77335e4f4569ff5083a6448b32e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"aws-lc-rs",
|
||||||
"pem",
|
"pem",
|
||||||
"ring 0.17.14",
|
"ring 0.17.14",
|
||||||
"rustls-pki-types",
|
"rustls-pki-types",
|
||||||
|
|
@ -3563,12 +3566,12 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "socket2"
|
name = "socket2"
|
||||||
version = "0.6.2"
|
version = "0.6.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0"
|
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"windows-sys 0.60.2",
|
"windows-sys 0.61.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -3886,7 +3889,7 @@ dependencies = [
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"pin-project-lite 0.2.17",
|
"pin-project-lite 0.2.17",
|
||||||
"signal-hook-registry",
|
"signal-hook-registry",
|
||||||
"socket2 0.6.2",
|
"socket2 0.6.3",
|
||||||
"tokio-macros",
|
"tokio-macros",
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.61.2",
|
||||||
]
|
]
|
||||||
|
|
@ -4025,7 +4028,7 @@ dependencies = [
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"serde_core",
|
"serde_core",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime 0.7.5+spec-1.1.0",
|
||||||
"toml_parser",
|
"toml_parser",
|
||||||
"toml_writer",
|
"toml_writer",
|
||||||
"winnow",
|
"winnow",
|
||||||
|
|
@ -4041,13 +4044,22 @@ dependencies = [
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_edit"
|
name = "toml_datetime"
|
||||||
version = "0.23.10+spec-1.0.0"
|
version = "1.0.0+spec-1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
|
checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e"
|
||||||
|
dependencies = [
|
||||||
|
"serde_core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "toml_edit"
|
||||||
|
version = "0.25.4+spec-1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"toml_datetime",
|
"toml_datetime 1.0.0+spec-1.1.0",
|
||||||
"toml_parser",
|
"toml_parser",
|
||||||
"winnow",
|
"winnow",
|
||||||
]
|
]
|
||||||
|
|
@ -4343,9 +4355,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "uuid"
|
name = "uuid"
|
||||||
version = "1.21.0"
|
version = "1.22.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb"
|
checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.4.2",
|
"getrandom 0.4.2",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
|
|
@ -4987,9 +4999,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winnow"
|
name = "winnow"
|
||||||
version = "0.7.14"
|
version = "0.7.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
|
checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
@ -5169,6 +5181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202"
|
checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"asn1-rs",
|
"asn1-rs",
|
||||||
|
"aws-lc-rs",
|
||||||
"data-encoding",
|
"data-encoding",
|
||||||
"der-parser",
|
"der-parser",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,17 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
data::user::UserStatus,
|
data::user::UserStatus,
|
||||||
get_private_key, log, log_cv_in, log_cv_out, log_err, log_in, log_out,
|
get_private_key, log, log_cv_in, log_cv_out, log_err, log_in,
|
||||||
rho::{
|
rho::rho_manager::{self, RHO_CONNECTIONS, connection_count},
|
||||||
connection::GeneralConnection,
|
|
||||||
rho_manager::{self, RHO_CONNECTIONS, connection_count},
|
|
||||||
},
|
|
||||||
util::{
|
util::{
|
||||||
crypto_helper::{decrypt_b64, secret_key_to_base64},
|
crypto_helper::{decrypt_b64, secret_key_to_base64},
|
||||||
file_util::{load_file_buf, load_file_vec},
|
file_util::load_file_vec,
|
||||||
logger::PrintType,
|
logger::PrintType,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use dashmap::DashMap;
|
use dashmap::DashMap;
|
||||||
use epsilon_core::{CommunicationType, CommunicationValue, DataTypes, DataValue, rand_u32};
|
use epsilon_core::{CommunicationType, CommunicationValue, DataTypes, DataValue, rand_u32};
|
||||||
use epsilon_native::{Receiver, Sender}; // Your existing types
|
use epsilon_native::{Receiver, Sender};
|
||||||
use futures::prelude::*;
|
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use quinn::{ClientConfig, Endpoint};
|
|
||||||
use rustls::{
|
|
||||||
ClientConfig as RustlsClientConfig,
|
|
||||||
crypto::{CryptoProvider, aws_lc_rs},
|
|
||||||
pki_types::ServerName,
|
|
||||||
};
|
|
||||||
use std::{collections::HashMap, env, net::SocketAddr, sync::Arc, time::Duration};
|
use std::{collections::HashMap, env, net::SocketAddr, sync::Arc, time::Duration};
|
||||||
use tokio::{
|
use tokio::{
|
||||||
sync::{Mutex, RwLock, mpsc, watch},
|
sync::{Mutex, RwLock, mpsc, watch},
|
||||||
|
|
@ -34,7 +24,7 @@ use uuid::Uuid;
|
||||||
// Configuration
|
// Configuration
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
const OMEGA_HOST_DEFAULT: &str = "188.114.97.0";
|
const OMEGA_HOST_DEFAULT: &str = "omega.tensamin.net";
|
||||||
const OMEGA_PORT_DEFAULT: u16 = 9187;
|
const OMEGA_PORT_DEFAULT: u16 = 9187;
|
||||||
const RECONNECT_DELAY: Duration = Duration::from_secs(5);
|
const RECONNECT_DELAY: Duration = Duration::from_secs(5);
|
||||||
const MAX_RECONNECT_DELAY: Duration = Duration::from_secs(300);
|
const MAX_RECONNECT_DELAY: Duration = Duration::from_secs(300);
|
||||||
|
|
@ -211,43 +201,17 @@ impl OmegaConnection {
|
||||||
async fn connect_once(self: Arc<Self>) -> Result<(), String> {
|
async fn connect_once(self: Arc<Self>) -> Result<(), String> {
|
||||||
*self.state.write().await = ConnectionState::Connecting;
|
*self.state.write().await = ConnectionState::Connecting;
|
||||||
|
|
||||||
let addr_str = format!("{}:{}", self.host, self.port);
|
let addr_str = format!("https://{}:{}", self.host, self.port);
|
||||||
|
|
||||||
let addrs: Vec<SocketAddr> = tokio::net::lookup_host(&addr_str)
|
let (sender, receiver) = epsilon_native::client::connect(&addr_str, None)
|
||||||
.await
|
|
||||||
.map_err(|e| format!("DNS lookup failed for {}: {}", addr_str, e))?
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
if addrs.is_empty() {
|
|
||||||
return Err(format!("No addresses found for {}", addr_str));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prefer IPv4 if available, otherwise use first available (IPv6 or IPv4)
|
|
||||||
let remote_addr = addrs
|
|
||||||
.iter()
|
|
||||||
.find(|a| a.is_ipv4())
|
|
||||||
.copied()
|
|
||||||
.unwrap_or_else(|| addrs[0]);
|
|
||||||
|
|
||||||
log_in!(
|
|
||||||
0,
|
|
||||||
PrintType::Omega,
|
|
||||||
"Connecting to {} ({})...",
|
|
||||||
self.host,
|
|
||||||
remote_addr
|
|
||||||
);
|
|
||||||
|
|
||||||
// Connect using epsilon_native wrapper
|
|
||||||
let (sender, receiver) = epsilon_native::client::connect(remote_addr)
|
|
||||||
.await
|
.await
|
||||||
.map_err(|e| format!("Connection failed: {}", e))?;
|
.map_err(|e| format!("Connection failed: {}", e))?;
|
||||||
|
|
||||||
log_in!(
|
log_in!(
|
||||||
0,
|
0,
|
||||||
PrintType::Omega,
|
PrintType::Omega,
|
||||||
"QUIC connection established to {} (via {})",
|
"QUIC connection established to {}",
|
||||||
addr_str,
|
addr_str
|
||||||
remote_addr
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// Store sender
|
// Store sender
|
||||||
|
|
|
||||||
|
|
@ -18,14 +18,10 @@ use std::sync::Arc;
|
||||||
pub async fn start(port: u16) {
|
pub async fn start(port: u16) {
|
||||||
let _ = aws_lc_rs::default_provider().install_default();
|
let _ = aws_lc_rs::default_provider().install_default();
|
||||||
|
|
||||||
let tls_cfg = load_tls().expect("TLS config failed");
|
let key_pem = load_file_vec("certs", "key.pem").unwrap();
|
||||||
|
let cert_pem = load_file_vec("certs", "cert.pem").unwrap();
|
||||||
|
|
||||||
let server_crypto = quinn::crypto::rustls::QuicServerConfig::try_from(tls_cfg)
|
let mut host: Host = epsilon_native::host(port, cert_pem, key_pem).await.unwrap();
|
||||||
.expect("Failed to convert to QuicServerConfig");
|
|
||||||
|
|
||||||
let server_cfg = ServerConfig::with_crypto(Arc::new(server_crypto));
|
|
||||||
|
|
||||||
let mut host: Host = epsilon_native::host(port, server_cfg).await.unwrap();
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
while let Some((sender, receiver)) = host.next().await {
|
while let Some((sender, receiver)) = host.next().await {
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
|
|
@ -34,22 +30,3 @@ pub async fn start(port: u16) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_tls() -> Option<CryptoConfig> {
|
|
||||||
let _ = aws_lc_rs::default_provider().install_default();
|
|
||||||
|
|
||||||
let mut cert_pem = load_file_buf("certs", "cert.pem").ok()?;
|
|
||||||
let cert_chain = rustls_pemfile::certs(&mut cert_pem)
|
|
||||||
.collect::<Result<Vec<_>, _>>()
|
|
||||||
.ok()?;
|
|
||||||
|
|
||||||
let key_pem = load_file_vec("certs", "key.pem").ok()?;
|
|
||||||
let key_der = rustls_pemfile::private_key(&mut &*key_pem).ok()??;
|
|
||||||
|
|
||||||
let cfg = CryptoConfig::builder()
|
|
||||||
.with_no_client_auth()
|
|
||||||
.with_single_cert(cert_chain, key_der)
|
|
||||||
.ok()?;
|
|
||||||
|
|
||||||
Some(cfg)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue