diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt index 3f12160f..5204c0ca 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt @@ -6,7 +6,8 @@ enum class EConfigType(val value: Int, val protocolScheme: String) { SHADOWSOCKS(3, "ss://"), SOCKS(4, "socks://"), VLESS(5, "vless://"), - TROJAN(6, "trojan://"); + TROJAN(6, "trojan://"), + WIREGUARD(7, "wireguard://"); companion object { fun fromInt(value: Int) = values().firstOrNull { it.value == value } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt index db89c946..88a9a7ec 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt @@ -26,7 +26,7 @@ data class ServerConfig( vnext = listOf(V2rayConfig.OutboundBean.OutSettingsBean.VnextBean( users = listOf(V2rayConfig.OutboundBean.OutSettingsBean.VnextBean.UsersBean())))), streamSettings = V2rayConfig.OutboundBean.StreamSettingsBean())) - EConfigType.CUSTOM -> + EConfigType.CUSTOM, EConfigType.WIREGUARD -> return ServerConfig(configType = configType) EConfigType.SHADOWSOCKS, EConfigType.SOCKS, EConfigType.TROJAN -> return ServerConfig( diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt index 4617f4f6..cfc771b1 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt @@ -74,14 +74,18 @@ data class V2rayConfig( var response: Response? = null, /*DNS*/ val network: String? = null, - val address: String? = null, + val address: Any? = null, val port: Int? = null, /*Freedom*/ var domainStrategy: String? = null, val redirect: String? = null, val userLevel: Int? = null, /*Loopback*/ - val inboundTag: String? = null) { + val inboundTag: String? = null, + /*Wireguard*/ + val secretKey: String? = null, + val peers: List? = null, + ) { data class VnextBean(var address: String = "", var port: Int = DEFAULT_PORT, @@ -113,6 +117,9 @@ data class V2rayConfig( } data class Response(var type: String) + + data class WireGuardBean(var publicKey: String = "", + var endpoint: String = "") } data class StreamSettingsBean(var network: String = DEFAULT_NETWORK, @@ -286,6 +293,8 @@ data class V2rayConfig( || protocol.equals(EConfigType.SOCKS.name, true) || protocol.equals(EConfigType.TROJAN.name, true)) { return settings?.servers?.get(0)?.address + } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { + return settings?.peers?.get(0)?.endpoint?.substringBeforeLast(":") } return null } @@ -298,6 +307,8 @@ data class V2rayConfig( || protocol.equals(EConfigType.SOCKS.name, true) || protocol.equals(EConfigType.TROJAN.name, true)) { return settings?.servers?.get(0)?.port + } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { + return settings?.peers?.get(0)?.endpoint?.substringAfterLast(":")?.toInt() } return null } @@ -311,6 +322,8 @@ data class V2rayConfig( return settings?.servers?.get(0)?.password } else if (protocol.equals(EConfigType.SOCKS.name, true)) { return settings?.servers?.get(0)?.users?.get(0)?.pass + } else if (protocol.equals(EConfigType.WIREGUARD.name, true)) { + return settings?.secretKey } return null } @@ -426,12 +439,10 @@ data class V2rayConfig( fun getProxyOutbound(): OutboundBean? { outbounds.forEach { outbound -> - if (outbound.protocol.equals(EConfigType.VMESS.name, true) || - outbound.protocol.equals(EConfigType.VLESS.name, true) || - outbound.protocol.equals(EConfigType.SHADOWSOCKS.name, true) || - outbound.protocol.equals(EConfigType.SOCKS.name, true) || - outbound.protocol.equals(EConfigType.TROJAN.name, true)) { - return outbound + EConfigType.values().forEach { + if (outbound.protocol.equals(it.name, true)) { + return outbound + } } } return null 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 b93ac35f..5a58a8c4 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 @@ -486,7 +486,7 @@ object AngConfigManager { val json = Gson().toJson(vmessQRCode) Utils.encode(json) } - EConfigType.CUSTOM -> "" + EConfigType.CUSTOM, EConfigType.WIREGUARD -> "" EConfigType.SHADOWSOCKS -> { val remark = "#" + Utils.urlEncode(config.remarks) val pw = Utils.encode("${outbound.getSecurityEncryption()}:${outbound.getPassword()}")