From e4726952e8adf6b3880a87f103f66f8d7a920bd2 Mon Sep 17 00:00:00 2001 From: arm64v8a <48624112+arm64v8a@users.noreply.github.com> Date: Wed, 19 Jul 2023 13:29:24 +0900 Subject: [PATCH] wireguard: reserved int list --- .../sagernet/fmt/wireguard/WireGuardFmt.kt | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/nekohasekai/sagernet/fmt/wireguard/WireGuardFmt.kt b/app/src/main/java/io/nekohasekai/sagernet/fmt/wireguard/WireGuardFmt.kt index 22a27c8..5fa7397 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/fmt/wireguard/WireGuardFmt.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/fmt/wireguard/WireGuardFmt.kt @@ -1,8 +1,31 @@ package io.nekohasekai.sagernet.fmt.wireguard import moe.matsuri.nb4a.SingBoxOptions +import moe.matsuri.nb4a.utils.Util import moe.matsuri.nb4a.utils.listByLineOrComma +fun genReserved(anyStr: String): String { + try { + val list = anyStr.listByLineOrComma() + val ba = ByteArray(3) + if (list.size == 3) { + list.forEachIndexed { index, s -> + val i = s + .replace("[", "") + .replace("]", "") + .replace(" ", "") + .toIntOrNull() ?: return anyStr + ba[index] = i.toByte() + } + return Util.b64EncodeOneLine(ba) + } else { + return anyStr + } + } catch (e: Exception) { + return anyStr + } +} + fun buildSingBoxOutboundWireguardBean(bean: WireGuardBean): SingBoxOptions.Outbound_WireGuardOptions { return SingBoxOptions.Outbound_WireGuardOptions().apply { type = "wireguard" @@ -13,6 +36,6 @@ fun buildSingBoxOutboundWireguardBean(bean: WireGuardBean): SingBoxOptions.Outbo peer_public_key = bean.peerPublicKey pre_shared_key = bean.peerPreSharedKey mtu = bean.mtu - if (bean.reserved.isNotBlank()) reserved = bean.reserved + if (bean.reserved.isNotBlank()) reserved = genReserved(bean.reserved) } }