From 7342f45fa03d61f908bf797135c22a5e1cba17ac Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sat, 29 Nov 2025 15:47:58 -0600 Subject: [PATCH 01/13] change threadrng --- PKGBUILD | 33 +++++++++++++++++++++++++++++++ vopono_core/src/util/wireguard.rs | 4 +++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 PKGBUILD diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..3ea4b2c --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,33 @@ + # Maintainer: Your Name + pkgname=voponotest + pkgver=0.10.15 + pkgrel=1 + pkgdesc='Run applications through VPN connections in network namespaces' + arch=('any') + url="https://github.com/Schwarzen/voponotest" + license=('GPL3') +makedepends=('git' 'rust') +optdepends=('openvpn: for OpenVPN connections' 'wireguard-tools: for Wireguard connections' 'shadowsocks-libev: for Shadowsocks support (Mullvad)' 'openfortivpn: for FortiClient VPN connections' 'libnatpmp: for ProtonVPN port forwarding support' 'trojan: for Trojan Wireguard forwarding support') +source=("git+${url}.git") + +provides=('voponotest') +conflicts=('voponotest') + sha256sums=('SKIP') + + pkgver() { + cd "${srcdir}/${pkgname%-git}" + git describe --long --tags | sed 's/\([^-]*-\)g/\1r/;s/\([^-]*\)-\([^-]*\)/\1.\2/' + } + + build() { + cd "$pkgname-$pkgver" + + CFLAGS+=" -ffat-lto-objects" cargo build --release +} + +package() { + cd "$pkgname-$pkgver" + + install -Dm755 target/release/${pkgname} "${pkgdir}/usr/bin/${pkgname}" + install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index 5005dca..9041693 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -5,6 +5,7 @@ use base64::{ use serde::Deserialize; use std::fmt::Display; +use rand::thread_rng; use x25519_dalek::{PublicKey, StaticSecret}; const B64_ENGINE: GeneralPurpose = general_purpose::STANDARD; @@ -42,7 +43,8 @@ impl Display for WgPeer { pub fn generate_keypair() -> anyhow::Result { // Generate new keypair - let private = StaticSecret::random_from_rng(&mut rand::rng()); + let mut rng = thread_rng(); + let private = StaticSecret::random_from_rng(&mut rng); let public = PublicKey::from(&private); let public_key = B64_ENGINE.encode(public.as_bytes()); let private_key = B64_ENGINE.encode(private.to_bytes()); From 9a62dc3cc919b837835dd4dcac84ecb2b69be78d Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sat, 29 Nov 2025 23:47:15 -0600 Subject: [PATCH 02/13] thread to crypto --- vopono_core/src/util/wireguard.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index 9041693..600c020 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -5,7 +5,7 @@ use base64::{ use serde::Deserialize; use std::fmt::Display; -use rand::thread_rng; +use rand::rngs::OsRng; use x25519_dalek::{PublicKey, StaticSecret}; const B64_ENGINE: GeneralPurpose = general_purpose::STANDARD; @@ -43,7 +43,7 @@ impl Display for WgPeer { pub fn generate_keypair() -> anyhow::Result { // Generate new keypair - let mut rng = thread_rng(); + let mut csprng = OsRng; let private = StaticSecret::random_from_rng(&mut rng); let public = PublicKey::from(&private); let public_key = B64_ENGINE.encode(public.as_bytes()); From 6d6bfe83d29232def8a2a730bea44ec456b474f6 Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 00:02:06 -0600 Subject: [PATCH 03/13] define crypto variable --- vopono_core/src/util/wireguard.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index 600c020..f4d7522 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -5,7 +5,8 @@ use base64::{ use serde::Deserialize; use std::fmt::Display; -use rand::rngs::OsRng; +use rand_core::{CryptoRng, RngCore}; +use rand_core::OsRng; use x25519_dalek::{PublicKey, StaticSecret}; const B64_ENGINE: GeneralPurpose = general_purpose::STANDARD; @@ -43,7 +44,7 @@ impl Display for WgPeer { pub fn generate_keypair() -> anyhow::Result { // Generate new keypair - let mut csprng = OsRng; + let mut rng = OsRng; let private = StaticSecret::random_from_rng(&mut rng); let public = PublicKey::from(&private); let public_key = B64_ENGINE.encode(public.as_bytes()); From 7d4968a8bf80e7c52adf72e66e48f1543dc878c0 Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 00:03:40 -0600 Subject: [PATCH 04/13] change pkgver --- PKGBUILD | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index 3ea4b2c..1d7e361 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: Your Name pkgname=voponotest - pkgver=0.10.15 + pkgver=0.10.15.1 pkgrel=1 pkgdesc='Run applications through VPN connections in network namespaces' arch=('any') @@ -14,11 +14,6 @@ provides=('voponotest') conflicts=('voponotest') sha256sums=('SKIP') - pkgver() { - cd "${srcdir}/${pkgname%-git}" - git describe --long --tags | sed 's/\([^-]*-\)g/\1r/;s/\([^-]*\)-\([^-]*\)/\1.\2/' - } - build() { cd "$pkgname-$pkgver" From 2646be036658714c9d147707e972196b0939a91e Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 00:14:01 -0600 Subject: [PATCH 05/13] back to csprng --- vopono_core/src/util/wireguard.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index f4d7522..a9255dd 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -5,8 +5,9 @@ use base64::{ use serde::Deserialize; use std::fmt::Display; -use rand_core::{CryptoRng, RngCore}; -use rand_core::OsRng; +use rand::RngCore; + +use rand::rngs::OsRng; use x25519_dalek::{PublicKey, StaticSecret}; const B64_ENGINE: GeneralPurpose = general_purpose::STANDARD; @@ -44,7 +45,7 @@ impl Display for WgPeer { pub fn generate_keypair() -> anyhow::Result { // Generate new keypair - let mut rng = OsRng; + let mut csprng = OsRng; let private = StaticSecret::random_from_rng(&mut rng); let public = PublicKey::from(&private); let public_key = B64_ENGINE.encode(public.as_bytes()); From d524c5cdceb4d268076522eef48948d04b3d91a5 Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 00:20:24 -0600 Subject: [PATCH 06/13] swap rng var to csprng --- vopono_core/src/util/wireguard.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index a9255dd..e252ec5 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -5,7 +5,6 @@ use base64::{ use serde::Deserialize; use std::fmt::Display; -use rand::RngCore; use rand::rngs::OsRng; use x25519_dalek::{PublicKey, StaticSecret}; @@ -46,7 +45,7 @@ impl Display for WgPeer { pub fn generate_keypair() -> anyhow::Result { // Generate new keypair let mut csprng = OsRng; - let private = StaticSecret::random_from_rng(&mut rng); + let private = StaticSecret::random_from_rng(&mut csprng); let public = PublicKey::from(&private); let public_key = B64_ENGINE.encode(public.as_bytes()); let private_key = B64_ENGINE.encode(private.to_bytes()); From cf2259f432da3f4c90d7877e83f93cc2901979aa Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 00:31:04 -0600 Subject: [PATCH 07/13] non mutable osrng --- vopono_core/src/util/wireguard.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index e252ec5..1613014 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -45,7 +45,7 @@ impl Display for WgPeer { pub fn generate_keypair() -> anyhow::Result { // Generate new keypair let mut csprng = OsRng; - let private = StaticSecret::random_from_rng(&mut csprng); + let private = StaticSecret::random_from_rng(csprng); let public = PublicKey::from(&private); let public_key = B64_ENGINE.encode(public.as_bytes()); let private_key = B64_ENGINE.encode(private.to_bytes()); From 8ba19e1800d64df68b6112e707548dd669456748 Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 00:40:26 -0600 Subject: [PATCH 08/13] swapping around use vars --- vopono_core/src/util/wireguard.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index 1613014..ecd851b 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -6,7 +6,8 @@ use base64::{ use serde::Deserialize; use std::fmt::Display; -use rand::rngs::OsRng; +use rand_core::{CryptoRng, RngCore}; +use rand_core::OsRng; use x25519_dalek::{PublicKey, StaticSecret}; const B64_ENGINE: GeneralPurpose = general_purpose::STANDARD; @@ -44,8 +45,8 @@ impl Display for WgPeer { pub fn generate_keypair() -> anyhow::Result { // Generate new keypair - let mut csprng = OsRng; - let private = StaticSecret::random_from_rng(csprng); + let mut rng = OsRng; + let private = StaticSecret::random_from_rng(&mut rng); let public = PublicKey::from(&private); let public_key = B64_ENGINE.encode(public.as_bytes()); let private_key = B64_ENGINE.encode(private.to_bytes()); From 311cdfb160f540ac7c4447b70905dab0e5951432 Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 01:10:19 -0600 Subject: [PATCH 09/13] change rand version --- vopono_core/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vopono_core/Cargo.toml b/vopono_core/Cargo.toml index 0f9542f..ce7c9d9 100644 --- a/vopono_core/Cargo.toml +++ b/vopono_core/Cargo.toml @@ -32,8 +32,8 @@ walkdir = "2" # Stuck on rand 0.6 due to x25519-dalek: # https://github.com/dalek-cryptography/curve25519-dalek/issues/731 # https://github.com/dalek-cryptography/curve25519-dalek/pull/729 -rand = "0.9" -rand_core = { version = "0.9" } +rand = "0.10" +rand_core = { version = "0.10" } toml = "0.9" ipnet = { version = "2", features = ["serde"] } reqwest = { default-features = false, version = "0.12", features = [ From b1f96ad945332a5eab1b7aab07bde7a490ee1764 Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 01:15:16 -0600 Subject: [PATCH 10/13] change rand version again --- vopono_core/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vopono_core/Cargo.toml b/vopono_core/Cargo.toml index ce7c9d9..6097f1b 100644 --- a/vopono_core/Cargo.toml +++ b/vopono_core/Cargo.toml @@ -32,8 +32,8 @@ walkdir = "2" # Stuck on rand 0.6 due to x25519-dalek: # https://github.com/dalek-cryptography/curve25519-dalek/issues/731 # https://github.com/dalek-cryptography/curve25519-dalek/pull/729 -rand = "0.10" -rand_core = { version = "0.10" } +rand = "0.10.0-rc.2" +rand_core = { version = "0.10.0-rc.2" } toml = "0.9" ipnet = { version = "2", features = ["serde"] } reqwest = { default-features = false, version = "0.12", features = [ From 928135f3690cf888064e68b1877c97acddd204f1 Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 01:22:21 -0600 Subject: [PATCH 11/13] small syntax change in use var --- vopono_core/src/util/wireguard.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index ecd851b..06a6f40 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -5,9 +5,7 @@ use base64::{ use serde::Deserialize; use std::fmt::Display; - -use rand_core::{CryptoRng, RngCore}; -use rand_core::OsRng; +use rand::rngs::OsRng; use x25519_dalek::{PublicKey, StaticSecret}; const B64_ENGINE: GeneralPurpose = general_purpose::STANDARD; From bca0aa7bbd7cb15b42a12eb07fdb36e8337be67a Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 01:27:57 -0600 Subject: [PATCH 12/13] back to threadrng --- vopono_core/src/util/wireguard.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/vopono_core/src/util/wireguard.rs b/vopono_core/src/util/wireguard.rs index 06a6f40..5005dca 100644 --- a/vopono_core/src/util/wireguard.rs +++ b/vopono_core/src/util/wireguard.rs @@ -5,7 +5,6 @@ use base64::{ use serde::Deserialize; use std::fmt::Display; -use rand::rngs::OsRng; use x25519_dalek::{PublicKey, StaticSecret}; const B64_ENGINE: GeneralPurpose = general_purpose::STANDARD; @@ -43,8 +42,7 @@ impl Display for WgPeer { pub fn generate_keypair() -> anyhow::Result { // Generate new keypair - let mut rng = OsRng; - let private = StaticSecret::random_from_rng(&mut rng); + let private = StaticSecret::random_from_rng(&mut rand::rng()); let public = PublicKey::from(&private); let public_key = B64_ENGINE.encode(public.as_bytes()); let private_key = B64_ENGINE.encode(private.to_bytes()); From fff6f732ddffa9244fcd1aea39130251ef535006 Mon Sep 17 00:00:00 2001 From: Schwarzen Date: Sun, 30 Nov 2025 02:17:43 -0600 Subject: [PATCH 13/13] removed PKGBUILD file --- PKGBUILD | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 PKGBUILD diff --git a/PKGBUILD b/PKGBUILD deleted file mode 100644 index 1d7e361..0000000 --- a/PKGBUILD +++ /dev/null @@ -1,28 +0,0 @@ - # Maintainer: Your Name - pkgname=voponotest - pkgver=0.10.15.1 - pkgrel=1 - pkgdesc='Run applications through VPN connections in network namespaces' - arch=('any') - url="https://github.com/Schwarzen/voponotest" - license=('GPL3') -makedepends=('git' 'rust') -optdepends=('openvpn: for OpenVPN connections' 'wireguard-tools: for Wireguard connections' 'shadowsocks-libev: for Shadowsocks support (Mullvad)' 'openfortivpn: for FortiClient VPN connections' 'libnatpmp: for ProtonVPN port forwarding support' 'trojan: for Trojan Wireguard forwarding support') -source=("git+${url}.git") - -provides=('voponotest') -conflicts=('voponotest') - sha256sums=('SKIP') - - build() { - cd "$pkgname-$pkgver" - - CFLAGS+=" -ffat-lto-objects" cargo build --release -} - -package() { - cd "$pkgname-$pkgver" - - install -Dm755 target/release/${pkgname} "${pkgdir}/usr/bin/${pkgname}" - install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" -}