diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt index a52103ac..d610c679 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt @@ -264,6 +264,13 @@ object CoreOutboundBuilder { wireguard.reserved = profileItem.reserved?.takeIf { it.isNotBlank() }?.split(",")?.filter { it.isNotBlank() }?.map { it.trim().toInt() } } + if (!profileItem.finalMask.isNullOrBlank()) { + outboundBean?.streamSettings = OutboundBean.StreamSettingsBean() + outboundBean?.streamSettings?.let { + updateOutboundFinalMask(it, profileItem) + it.network = null + } + } return outboundBean } @@ -670,4 +677,16 @@ object CoreOutboundBuilder { } return resolvedIps.first() } + + fun updateOutboundFinalMask(streamSettings: OutboundBean.StreamSettingsBean, profileItem: ProfileItem) { + val finalMask = profileItem.finalMask + finalMask?.let { + val parsedFinalMask = JsonUtil.parseString(profileItem.finalMask) + if (parsedFinalMask != null) { + streamSettings.finalmask = parsedFinalMask + } else { + LogUtil.w("V2rayConfigManager", "Invalid finalMask JSON, keeping previously generated finalmask") + } + } + } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt index f305703d..f4876afb 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt @@ -108,7 +108,7 @@ data class V2rayConfig( } data class StreamSettingsBean( - var network: String = AppConfig.DEFAULT_NETWORK, + var network: String? = AppConfig.DEFAULT_NETWORK, var security: String? = null, var tcpSettings: TcpSettingsBean? = null, var kcpSettings: KcpSettingsBean? = null, diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerWireguardActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerWireguardActivity.kt index a198df4a..70a77b53 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerWireguardActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerWireguardActivity.kt @@ -69,6 +69,12 @@ class ServerWireguardActivity : BaseServerActivity() { { state.mtu = it }, keyboardType = KeyboardType.Number ) + + FormTextField( + stringResource(R.string.server_lab_final_mask), + state.finalMask, + { state.finalMask = it } + ) } }