From d7ec611ff4dcada4b40d4ef526f2841b33512d7b Mon Sep 17 00:00:00 2001 From: albexk Date: Wed, 29 Nov 2023 16:55:17 +0300 Subject: [PATCH] Fix bugs in awg and wireguard protocols --- client/android/awg/src/main/kotlin/AwgConfig.kt | 5 ++--- .../amnezia/vpn/protocol/wireguard/Wireguard.kt | 2 +- .../vpn/protocol/wireguard/WireguardConfig.kt | 14 +++++++++++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/client/android/awg/src/main/kotlin/AwgConfig.kt b/client/android/awg/src/main/kotlin/AwgConfig.kt index e3554e60..372747f2 100644 --- a/client/android/awg/src/main/kotlin/AwgConfig.kt +++ b/client/android/awg/src/main/kotlin/AwgConfig.kt @@ -29,8 +29,8 @@ class AwgConfig private constructor( builder.h4 ) - override fun toWgUserspaceString(): String = with(StringBuilder()) { - append(super.toWgUserspaceString()) + override fun appendDeviceLine(sb: StringBuilder) = with(sb) { + super.appendDeviceLine(this) appendLine("jc=$jc") appendLine("jmin=$jmin") appendLine("jmax=$jmax") @@ -40,7 +40,6 @@ class AwgConfig private constructor( appendLine("h2=$h2") appendLine("h3=$h3") appendLine("h4=$h4") - return this.toString() } class Builder : WireguardConfig.Builder() { diff --git a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt index 8e1a58b0..25fcb210 100644 --- a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt +++ b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/Wireguard.kt @@ -65,7 +65,7 @@ open class Wireguard : Protocol() { val config = GoBackend.wgGetConfig(tunnelHandle) ?: return Statistics.EMPTY_STATISTICS return Statistics.build { var optsCount = 0 - config.splitToSequence("\\n").forEach { line -> + config.splitToSequence("\n").forEach { line -> with(line) { when { startsWith("rx_bytes=") -> setRxBytes(substring(9).toLong()).also { ++optsCount } diff --git a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/WireguardConfig.kt b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/WireguardConfig.kt index 86d6bf8a..05dc4591 100644 --- a/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/WireguardConfig.kt +++ b/client/android/wireguard/src/main/kotlin/org/amnezia/vpn/protocol/wireguard/WireguardConfig.kt @@ -24,9 +24,18 @@ open class WireguardConfig protected constructor( builder.privateKeyHex ) - open fun toWgUserspaceString(): String = with(StringBuilder()) { - appendLine("private_key=$privateKeyHex") + fun toWgUserspaceString(): String = with(StringBuilder()) { + appendDeviceLine(this) appendLine("replace_peers=true") + appendPeerLine(this) + return this.toString() + } + + open fun appendDeviceLine(sb: StringBuilder) = with(sb) { + appendLine("private_key=$privateKeyHex") + } + + open fun appendPeerLine(sb: StringBuilder) = with(sb) { appendLine("public_key=$publicKeyHex") routes.forEach { route -> appendLine("allowed_ip=$route") @@ -35,7 +44,6 @@ open class WireguardConfig protected constructor( if (persistentKeepalive != 0) appendLine("persistent_keepalive_interval=$persistentKeepalive") appendLine("preshared_key=$preSharedKeyHex") - return this.toString() } open class Builder : ProtocolConfig.Builder(true) {