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 76e410cb..5cdaf5d9 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 @@ -68,17 +68,17 @@ data class V2rayConfig( data class OutSettingsBean(var vnext: List? = null, var servers: List? = null, - /*Blackhole*/ + /*Blackhole*/ var response: Response? = null, - /*DNS*/ + /*DNS*/ val network: String? = null, val address: String? = null, val port: Int? = null, - /*Freedom*/ + /*Freedom*/ val domainStrategy: String? = null, val redirect: String? = null, val userLevel: Int? = null, - /*Loopback*/ + /*Loopback*/ val inboundTag: String? = null) { data class VnextBean(var address: String = "", @@ -99,6 +99,8 @@ data class V2rayConfig( var password: String = "", var port: Int = DEFAULT_PORT, var level: Int = DEFAULT_LEVEL, + val email: String? = null, + val flow: String? = null, var users: List? = null) { @@ -172,15 +174,20 @@ data class V2rayConfig( var sni = "" network = transport when (network) { - "tcp" -> if (headerType == HTTP) { + "tcp" -> { val tcpSetting = TcpSettingsBean() - tcpSetting.header.type = HTTP - if (!TextUtils.isEmpty(host) || !TextUtils.isEmpty(path)) { - val requestObj = TcpSettingsBean.HeaderBean.RequestBean() - requestObj.headers.Host = (host ?: "").split(",").map { it.trim() } - requestObj.path = (path ?: "").split(",").map { it.trim() } - tcpSetting.header.request = requestObj - sni = requestObj.headers.Host.getOrNull(0) ?: sni + if (headerType == HTTP) { + tcpSetting.header.type = HTTP + if (!TextUtils.isEmpty(host) || !TextUtils.isEmpty(path)) { + val requestObj = TcpSettingsBean.HeaderBean.RequestBean() + requestObj.headers.Host = (host ?: "").split(",").map { it.trim() } + requestObj.path = (path ?: "").split(",").map { it.trim() } + tcpSetting.header.request = requestObj + sni = requestObj.headers.Host.getOrNull(0) ?: sni + } + } else { + tcpSetting.header.type = "none" + sni = host ?: "" } tcpSettings = tcpSetting } @@ -286,7 +293,7 @@ data class V2rayConfig( if (protocol.equals(EConfigType.VMESS.name, true) || protocol.equals(EConfigType.VLESS.name, true)) { val transport = streamSettings?.network ?: return null - return when(transport) { + return when (transport) { "tcp" -> { val tcpSetting = streamSettings?.tcpSettings ?: return null listOf(tcpSetting.header.type, @@ -387,8 +394,9 @@ data class V2rayConfig( fun toPrettyPrinting(): String { return GsonBuilder() .setPrettyPrinting() + .disableHtmlEscaping() .registerTypeAdapter( // custom serialiser is needed here since JSON by default parse number as Double, core will fail to start - object: TypeToken() {}.type, + object : TypeToken() {}.type, JsonSerializer { src: Double?, _: Type?, _: JsonSerializationContext? -> JsonPrimitive(src?.toInt()) } ) .create() diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt index 26161149..7146a217 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt @@ -48,7 +48,7 @@ class MainRecyclerAdapter(val activity: MainActivity) : RecyclerView.Adapter 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 5becce11..0ace879a 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 @@ -65,7 +65,7 @@ object AngConfigManager { AppConfig.PREF_V2RAY_ROUTING_AGENT, AppConfig.PREF_V2RAY_ROUTING_BLOCKED, AppConfig.PREF_V2RAY_ROUTING_DIRECT,).forEach { key -> - settingsStorage?.encode(key, sharedPreferences.getString(key, "")) + settingsStorage?.encode(key, sharedPreferences.getString(key, null)) } listOf(AppConfig.PREF_SPEED_ENABLED, AppConfig.PREF_SNIFFING_ENABLED, diff --git a/V2rayNG/app/src/main/res/values/arrays.xml b/V2rayNG/app/src/main/res/values/arrays.xml index 8965f0ac..755bb1d6 100644 --- a/V2rayNG/app/src/main/res/values/arrays.xml +++ b/V2rayNG/app/src/main/res/values/arrays.xml @@ -5,6 +5,7 @@ aes-128-gcm auto none + zero aes-256-cfb @@ -98,6 +99,7 @@ xtls-rprx-direct xtls-rprx-direct-udp443 xtls-rprx-splice + xtls-rprx-splice-udp443