swap over to using websockets for proxy <-> backend connections

This commit is contained in:
DJMrTV 2025-06-30 10:47:48 +02:00
commit a3c58ee231
5 changed files with 39 additions and 13 deletions

View file

@ -1,4 +1,4 @@
use rust_nex::reggie::{RemoteController, UnitPacketRead};
use rust_nex::reggie::{RemoteController, UnitPacketRead, WebStreamSocket};
use log::{error, info};
use once_cell::sync::Lazy;
use rustls::client::danger::HandshakeSignatureValid;
@ -65,7 +65,15 @@ async fn main() {
let listen = TcpListener::bind(SocketAddrV4::new(*OWN_IP_PRIVATE, *SERVER_PORT)).await.unwrap();
while let Ok((stream, addr)) = listen.accept().await {
let Ok(websocket) = tokio_tungstenite::accept_async(stream).await else {
continue;
};
let stream = WebStreamSocket::new(websocket);
let mut stream = match acceptor.accept(stream).await {
Ok(v) => v,
Err(e) => {

View file

@ -1,6 +1,6 @@
use std::io::Cursor;
use rust_nex::rmc::structures::RmcSerialize;
use rust_nex::reggie::{RemoteController, UnitPacketRead};
use rust_nex::reggie::{RemoteController, UnitPacketRead, WebStreamSocket};
use std::net::SocketAddrV4;
use std::sync::Arc;
use std::sync::atomic::AtomicU32;
@ -50,6 +50,12 @@ async fn main() {
MatchmakeManager::initialize_garbage_collect_thread(weak_mmm).await;
while let Ok((stream, addr)) = listen.accept().await {
let Ok(websocket) = tokio_tungstenite::accept_async(stream).await else {
continue;
};
let stream = WebStreamSocket::new(websocket);
let mut stream = match acceptor.accept(stream).await {
Ok(v) => v,
Err(e) => {

View file

@ -1,5 +1,5 @@
use rust_nex::reggie::LocalProxy;
use rust_nex::reggie::{tls_connect_to, LocalProxy};
use std::env;
use std::ffi::CStr;
use std::io::{Read, Write};
@ -107,8 +107,11 @@ async fn main() {
return;
}
let mut stream
= establish_tls_connection_to(&dest, &dest).await;
let Ok(mut stream)
= tls_connect_to(&dest).await else {
error!("failed to connect");
return;
};
if let Err(e) = stream.send_buffer(&ConnectionInitData{
prudpsock_addr: conn.socket_addr,

View file

@ -13,7 +13,7 @@ use rust_nex::prudp::packet::VirtualPort;
use rust_nex::prudp::router::Router;
use rust_nex::prudp::secure::Secure;
use rust_nex::prudp::unsecure::Unsecure;
use rust_nex::reggie::{establish_tls_connection_to, ProxyManagement, RemoteController};
use rust_nex::reggie::{establish_tls_connection_to, tls_connect_to, ProxyManagement, RemoteController};
use rust_nex::rmc::response::ErrorCode;
use rust_nex::rnex_proxy_common::ConnectionInitData;
use rust_nex::reggie::ServerCluster::Auth;
@ -92,8 +92,11 @@ async fn main() {
return;
}
let mut stream
= establish_tls_connection_to(&dest, &dest).await;
let Ok(mut stream)
= tls_connect_to(&dest).await else {
error!("failed to connect");
return;
};
if let Err(e) = stream.send_buffer(&ConnectionInitData{
prudpsock_addr: conn.socket_addr,