From cf6c814eb42c2bf2d062b211766199be7d7098f3 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 16 Jan 2024 18:49:00 +0800 Subject: [PATCH] Add share 4 Wireguard --- .../com/v2ray/ang/util/AngConfigManager.kt | 59 +++++++++++++++---- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt index b54b8ef2..7b1cf159 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt @@ -571,7 +571,11 @@ object AngConfigManager { try { val config = MmkvManager.decodeServerConfig(guid) ?: return "" val outbound = config.getProxyOutbound() ?: return "" - val streamSetting = outbound.streamSettings ?: return "" + val streamSetting = + outbound.streamSettings ?: V2rayConfig.OutboundBean.StreamSettingsBean() + if (config.configType != EConfigType.WIREGUARD) { + if (outbound.streamSettings == null) return "" + } return config.configType.protocolScheme + when (config.configType) { EConfigType.VMESS -> { val vmessQRCode = VmessQRCode() @@ -600,7 +604,8 @@ object AngConfigManager { Utils.encode(json) } - EConfigType.CUSTOM, EConfigType.WIREGUARD -> "" + EConfigType.CUSTOM -> "" + EConfigType.SHADOWSOCKS -> { val remark = "#" + Utils.urlEncode(config.remarks) val pw = @@ -736,6 +741,36 @@ object AngConfigManager { ) url + query + remark } + + EConfigType.WIREGUARD -> { + val remark = "#" + Utils.urlEncode(config.remarks) + + val dicQuery = HashMap() + dicQuery["publickey"] = + Utils.urlEncode(outbound.settings?.peers?.get(0)?.publicKey.toString()) + dicQuery["reserved"] = Utils.urlEncode( + Utils.removeWhiteSpace(outbound.settings?.reserved?.joinToString()) + .toString() + ) + dicQuery["address"] = Utils.urlEncode( + Utils.removeWhiteSpace((outbound.settings?.address as List<*>).joinToString()) + .toString() + ) + if (outbound.settings?.mtu != null) { + dicQuery["mtu"] = outbound.settings?.mtu.toString() + } + val query = "?" + dicQuery.toList().joinToString( + separator = "&", + transform = { it.first + "=" + it.second }) + + val url = String.format( + "%s@%s:%s", + Utils.urlEncode(outbound.getPassword().toString()), + Utils.getIpv6Address(outbound.getServerAddress()!!), + outbound.getServerPort() + ) + url + query + remark + } } } catch (e: Exception) { e.printStackTrace() @@ -861,17 +896,19 @@ object AngConfigManager { return 0 } val removedSelectedServer = - if (!TextUtils.isEmpty(subid) && !append) { - MmkvManager.decodeServerConfig(mainStorage?.decodeString(KEY_SELECTED_SERVER) ?: "")?.let { - if (it.subscriptionId == subid) { - return@let it - } - return@let null + if (!TextUtils.isEmpty(subid) && !append) { + MmkvManager.decodeServerConfig( + mainStorage?.decodeString(KEY_SELECTED_SERVER) ?: "" + )?.let { + if (it.subscriptionId == subid) { + return@let it } - } else { - null + return@let null } - if(!append) { + } else { + null + } + if (!append) { MmkvManager.removeServerViaSubid(subid) } // var servers = server