fix more warnings and add script to check all editions
All checks were successful
Build and Test / friends (push) Successful in 2m56s
Build and Test / splatoon (push) Successful in 3m38s

This commit is contained in:
Maple 2026-04-26 13:48:26 +02:00
commit 7f27ad0a3c
14 changed files with 38 additions and 91 deletions

View file

@ -5,9 +5,8 @@ fi
# comma seperated list of features for the specified version # comma seperated list of features for the specified version
source ./buildscripts/common.sh source ./buildscripts/common.sh
echo building $EDITION
echo FEATURES: echo FEATURES:
echo $EDITION_FEATURES echo $EDITION_FEATURES
echo ENV SETTINGS:
env
OPENSSL_LIB_DIR=/usr/lib OPENSSL_INCLUDE_DIR=/usr/include/openssl OPENSSL_STATIC=1 RUSTFLAGS="-C relocation-model=static -C linker=ld.lld" cargo build --release --features "$EDITION_FEATURES" --target x86_64-unknown-linux-musl OPENSSL_LIB_DIR=/usr/lib OPENSSL_INCLUDE_DIR=/usr/include/openssl OPENSSL_STATIC=1 RUSTFLAGS="-C relocation-model=static -C linker=ld.lld" cargo build --release --features "$EDITION_FEATURES" --target x86_64-unknown-linux-musl

View file

@ -1,4 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e pipefail
TMP_FEATURES_TRAILINGCOMMA=$(yq ea ".$EDITION.features" editions.yaml | sed 's/- //g' | tr '\n' ',') TMP_FEATURES_TRAILINGCOMMA=$(yq ea ".$EDITION.features" editions.yaml | sed 's/- //g' | tr '\n' ',')
export EDITION_FEATURES=${TMP_FEATURES_TRAILINGCOMMA::-1} export EDITION_FEATURES=${TMP_FEATURES_TRAILINGCOMMA::-1}
SETTINGS=$(yq ea ".$EDITION.settings" editions.yaml | yq 'keys[]') SETTINGS=$(yq ea ".$EDITION.settings" editions.yaml | yq 'keys[]')

7
check-all.sh Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
SETTINGS=$(yq ea "." editions.yaml | yq 'keys[]')
IFS=$'\n'
while IFS=$'\n' read -r EDITION; do
./check-edition.sh $EDITION
done <<< "$SETTINGS"

12
check-edition.sh Executable file
View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
if [ -z ${EDITION+x} ]; then
EDITION=$1
fi
# comma seperated list of features for the specified version
source ./buildscripts/common.sh
echo CHECKING $EDITION
echo FEATURES:
echo $EDITION_FEATURES
cargo check --features "$EDITION_FEATURES"

View file

@ -8,16 +8,6 @@ splatoon:
RNEX_VIRTUAL_PORT_SECURE: "1:10" RNEX_VIRTUAL_PORT_SECURE: "1:10"
RNEX_DEFAULT_PORT: 6000 RNEX_DEFAULT_PORT: 6000
RNEX_ACCESS_KEY: "6f599f81" RNEX_ACCESS_KEY: "6f599f81"
splatoon2:
features:
- v4-3-11
- prudplite
- nx
settings:
AUTH_REPORT_VERSION: "branch:origin/project/wup-agmj build:3_8_15_2004_0"
RNEX_VIRTUAL_PORT_INSECURE: "1:10"
RNEX_VIRTUAL_PORT_SECURE: "1:10"
RNEX_DEFAULT_PORT: 6000
friends: friends:
features: features:
- friends - friends

View file

@ -1,17 +0,0 @@
use once_cell::sync::Lazy;
use std::env;
use std::net::SocketAddrV4;
pub static EDGE_NODE_HOLDER: Lazy<SocketAddrV4> = Lazy::new(|| {
env::var("EDGE_NODE_HOLDER")
.ok()
.and_then(|s| s.parse().ok())
.expect("EDGE_NODE_HOLDER not set")
});
pub static FORWARD_DESTINATION: Lazy<SocketAddrV4> = Lazy::new(|| {
env::var("FORWARD_DESTINATION")
.ok()
.and_then(|s| s.parse().ok())
.expect("FORWARD_DESTINATION not set")
});

View file

@ -1,3 +1,2 @@
pub mod common;
pub mod proxy_insecure; pub mod proxy_insecure;
pub mod proxy_secure; pub mod proxy_secure;

View file

@ -1,45 +1,19 @@
use crate::executables::common::{EDGE_NODE_HOLDER, FORWARD_DESTINATION};
use crate::prudp::router::Router; use crate::prudp::router::Router;
use crate::prudp::unsecure::Unsecure; use crate::prudp::unsecure::Unsecure;
use log::error; use log::error;
use rnex_core::common::setup; use proxy_common::{ProxyStartupParam, RNEX_ACCESS_KEY};
use rnex_core::executables::common::{OWN_IP_PRIVATE, OWN_IP_PUBLIC, SERVER_PORT};
use rnex_core::prudp::virtual_port::VirtualPort; use rnex_core::prudp::virtual_port::VirtualPort;
use rnex_core::reggie::EdgeNodeHolderConnectOption::Register;
use rnex_core::reggie::RemoteEdgeNodeHolder;
use rnex_core::reggie::UnitPacketRead; use rnex_core::reggie::UnitPacketRead;
use rnex_core::reggie::UnitPacketWrite; use rnex_core::reggie::UnitPacketWrite;
use rnex_core::rmc::protocols::{OnlyRemote, new_rmc_gateway_connection};
use rnex_core::rmc::structures::RmcSerialize; use rnex_core::rmc::structures::RmcSerialize;
use rnex_core::rnex_proxy_common::ConnectionInitData; use rnex_core::rnex_proxy_common::ConnectionInitData;
use rnex_core::util::SplittableBufferConnection;
use std::net::SocketAddrV4;
use std::sync::Arc;
use std::time::Duration; use std::time::Duration;
use tokio::net::TcpStream; use tokio::net::TcpStream;
use tokio::task; use tokio::task;
use tokio::time::sleep; use tokio::time::sleep;
use proxy_common::RNEX_ACCESS_KEY;
pub async fn start() { pub async fn start(param: ProxyStartupParam) {
/*let conn = tokio::net::TcpStream::connect(&*EDGE_NODE_HOLDER) let (router_secure, _) = Router::new(param.self_private)
.await
.unwrap();
let conn: SplittableBufferConnection = conn.into();
conn.send(
Register(SocketAddrV4::new(*OWN_IP_PUBLIC, *SERVER_PORT))
.to_data()
.unwrap(),
)
.await;
let conn = new_rmc_gateway_connection(conn, |r| {
Arc::new(OnlyRemote::<RemoteEdgeNodeHolder>::new(r))
});*/
let (router_secure, _) = Router::new(SocketAddrV4::new(*OWN_IP_PRIVATE, *SERVER_PORT))
.await .await
.expect("unable to start router"); .expect("unable to start router");
@ -48,8 +22,6 @@ pub async fn start() {
.await .await
.expect("unable to add socket"); .expect("unable to add socket");
// let conn = socket_secure.connect(auth_sockaddr).await.unwrap();
loop { loop {
let Some(mut conn) = socket_secure.accept().await else { let Some(mut conn) = socket_secure.accept().await else {
error!("server crashed"); error!("server crashed");
@ -57,7 +29,7 @@ pub async fn start() {
}; };
task::spawn(async move { task::spawn(async move {
let mut stream = match TcpStream::connect(*FORWARD_DESTINATION).await { let mut stream = match TcpStream::connect(param.forward_destination).await {
Ok(v) => v, Ok(v) => v,
Err(e) => { Err(e) => {
error!("unable to connect: {}", e); error!("unable to connect: {}", e);

View file

@ -1,30 +1,20 @@
use crate::executables::common::{EDGE_NODE_HOLDER, FORWARD_DESTINATION};
use crate::prudp::router::Router; use crate::prudp::router::Router;
use crate::prudp::secure::Secure; use crate::prudp::secure::Secure;
use log::error; use log::error;
use rnex_core::common::setup; use proxy_common::{ProxyStartupParam, RNEX_ACCESS_KEY};
use rnex_core::executables::common::{ use rnex_core::executables::common::SECURE_SERVER_ACCOUNT;
OWN_IP_PRIVATE, OWN_IP_PUBLIC, SECURE_SERVER_ACCOUNT, SERVER_PORT,
};
use rnex_core::prudp::virtual_port::VirtualPort; use rnex_core::prudp::virtual_port::VirtualPort;
use rnex_core::reggie::EdgeNodeHolderConnectOption::Register;
use rnex_core::reggie::RemoteEdgeNodeHolder;
use rnex_core::reggie::UnitPacketRead; use rnex_core::reggie::UnitPacketRead;
use rnex_core::reggie::UnitPacketWrite; use rnex_core::reggie::UnitPacketWrite;
use rnex_core::rmc::protocols::{OnlyRemote, new_rmc_gateway_connection};
use rnex_core::rmc::structures::RmcSerialize; use rnex_core::rmc::structures::RmcSerialize;
use rnex_core::rnex_proxy_common::ConnectionInitData; use rnex_core::rnex_proxy_common::ConnectionInitData;
use rnex_core::util::SplittableBufferConnection;
use std::net::SocketAddrV4;
use std::sync::Arc;
use std::time::Duration; use std::time::Duration;
use tokio::net::TcpStream; use tokio::net::TcpStream;
use tokio::task; use tokio::task;
use tokio::time::sleep; use tokio::time::sleep;
use proxy_common::RNEX_ACCESS_KEY;
pub async fn start() { pub async fn start(param: ProxyStartupParam) {
let (router_secure, _) = Router::new(SocketAddrV4::new(*OWN_IP_PRIVATE, *SERVER_PORT)) let (router_secure, _) = Router::new(param.self_private)
.await .await
.expect("unable to start router"); .expect("unable to start router");
@ -36,8 +26,6 @@ pub async fn start() {
.await .await
.expect("unable to add socket"); .expect("unable to add socket");
// let conn = socket_secure.connect(auth_sockaddr).await.unwrap();
loop { loop {
let Some(mut conn) = socket_secure.accept().await else { let Some(mut conn) = socket_secure.accept().await else {
error!("server crashed"); error!("server crashed");
@ -45,7 +33,7 @@ pub async fn start() {
}; };
task::spawn(async move { task::spawn(async move {
let mut stream = match TcpStream::connect(*FORWARD_DESTINATION).await { let mut stream = match TcpStream::connect(param.forward_destination).await {
Ok(v) => v, Ok(v) => v,
Err(e) => { Err(e) => {
error!("unable to connect: {}", e); error!("unable to connect: {}", e);

View file

@ -1,14 +1,14 @@
cfg_if::cfg_if! { cfg_if::cfg_if! {
if #[cfg(feature = "prudpv1")]{ if #[cfg(feature = "prudpv1")]{
use proxy_common::{ProxyStartupParam, setup_edge_node_connection}; use proxy_common::ProxyStartupParam;
pub mod executables; pub mod executables;
pub mod prudp; pub mod prudp;
pub async fn start_secure(param: ProxyStartupParam) { pub async fn start_secure(param: ProxyStartupParam) {
executables::proxy_secure::start().await; executables::proxy_secure::start(param).await;
} }
pub async fn start_insecure(param: ProxyStartupParam) { pub async fn start_insecure(param: ProxyStartupParam) {
executables::proxy_insecure::start().await; executables::proxy_insecure::start(param).await;
} }
} }
} }

View file

@ -14,7 +14,7 @@ use rnex_core::prudp::socket_addr::PRUDPSockAddr;
use rnex_core::prudp::types_flags::TypesFlags; use rnex_core::prudp::types_flags::TypesFlags;
use rnex_core::prudp::types_flags::flags::ACK; use rnex_core::prudp::types_flags::flags::ACK;
use rnex_core::prudp::virtual_port::VirtualPort; use rnex_core::prudp::virtual_port::VirtualPort;
use std::fmt::{Debug, Formatter}; use std::fmt::Debug;
use std::io; use std::io;
use std::io::{Cursor, Read, Seek, Write}; use std::io::{Cursor, Read, Seek, Write};
use std::net::SocketAddr; use std::net::SocketAddr;

View file

@ -1,18 +1,13 @@
use crate::prudp::packet::PRUDPV1Packet; use crate::prudp::packet::PRUDPV1Packet;
use crate::prudp::socket::{CryptoHandler, CryptoHandlerConnectionInstance}; use crate::prudp::socket::{CryptoHandler, CryptoHandlerConnectionInstance};
use hmac::digest::consts::U32; use hmac::digest::consts::U32;
use log::error;
use rc4::cipher::StreamCipherCoreWrapper; use rc4::cipher::StreamCipherCoreWrapper;
use rc4::consts::U16;
use rc4::{KeyInit, Rc4, Rc4Core, StreamCipher}; use rc4::{KeyInit, Rc4, Rc4Core, StreamCipher};
use rnex_core::kerberos::{TicketInternalData, derive_key};
use rnex_core::nex::account::Account; use rnex_core::nex::account::Account;
use rnex_core::prudp::encryption::EncryptionPair; use rnex_core::prudp::encryption::EncryptionPair;
use rnex_core::prudp::ticket::read_secure_connection_data; use rnex_core::prudp::ticket::read_secure_connection_data;
use rnex_core::rmc::structures::RmcSerialize; use rnex_core::rmc::structures::RmcSerialize;
use std::io::Cursor;
use typenum::U5; use typenum::U5;
use v_byte_helpers::{IS_BIG_ENDIAN, ReadExtensions};
type Rc4U32 = StreamCipherCoreWrapper<Rc4Core<U32>>; type Rc4U32 = StreamCipherCoreWrapper<Rc4Core<U32>>;
@ -52,6 +47,7 @@ pub struct SecureInstance {
session_key: [u8; 32], session_key: [u8; 32],
streams: Vec<EncryptionPair<Rc4<U32>>>, streams: Vec<EncryptionPair<Rc4<U32>>>,
self_signature: [u8; 16], self_signature: [u8; 16],
#[allow(dead_code)]
remote_signature: [u8; 16], remote_signature: [u8; 16],
pid: u32, pid: u32,
} }

View file

@ -1,7 +1,6 @@
use crate::prudp::packet::PRUDPV1Packet; use crate::prudp::packet::PRUDPV1Packet;
use crate::prudp::socket::{CryptoHandler, CryptoHandlerConnectionInstance}; use crate::prudp::socket::{CryptoHandler, CryptoHandlerConnectionInstance};
use once_cell::sync::Lazy; use rc4::{KeyInit, Rc4, StreamCipher};
use rc4::{Key, KeyInit, Rc4, StreamCipher};
use rnex_core::prudp::encryption::{DEFAULT_KEY, EncryptionPair}; use rnex_core::prudp::encryption::{DEFAULT_KEY, EncryptionPair};
use typenum::U5; use typenum::U5;
@ -11,6 +10,7 @@ pub struct UnsecureInstance {
key: &'static str, key: &'static str,
streams: Vec<EncryptionPair<Rc4<U5>>>, streams: Vec<EncryptionPair<Rc4<U5>>>,
self_signature: [u8; 16], self_signature: [u8; 16],
#[allow(dead_code)]
remote_signature: [u8; 16], remote_signature: [u8; 16],
} }

View file

@ -1,6 +1,5 @@
use cfg_if::cfg_if; use cfg_if::cfg_if;
use rnex_core::common::setup; use rnex_core::common::setup;
use rnex_core::executables::friends_backend::start_friends_backend;
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
@ -8,6 +7,7 @@ async fn main() {
cfg_if! { cfg_if! {
if #[cfg(feature = "friends")]{ if #[cfg(feature = "friends")]{
use rnex_core::executables::friends_backend::start_friends_backend;
start_friends_backend().await; start_friends_backend().await;
} else { } else {
use rnex_core::executables::regular_backend; use rnex_core::executables::regular_backend;