From e37636949346a80575b4271f231b059b16a36e16 Mon Sep 17 00:00:00 2001 From: arm64v8a <48624112+arm64v8a@users.noreply.github.com> Date: Wed, 19 Jul 2023 11:35:38 +0900 Subject: [PATCH] chore: imporve parsing --- .../sagernet/fmt/socks/SOCKSFmt.kt | 1 + .../nekohasekai/sagernet/group/RawUpdater.kt | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/nekohasekai/sagernet/fmt/socks/SOCKSFmt.kt b/app/src/main/java/io/nekohasekai/sagernet/fmt/socks/SOCKSFmt.kt index b9fd409..b3aff52 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/fmt/socks/SOCKSFmt.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/fmt/socks/SOCKSFmt.kt @@ -20,6 +20,7 @@ fun parseSOCKS(link: String): SOCKSBean { link.startsWith("socks4a://") -> SOCKSBean.PROTOCOL_SOCKS4A else -> SOCKSBean.PROTOCOL_SOCKS5 } + name = url.fragment serverAddress = url.host serverPort = url.port username = url.username diff --git a/app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt b/app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt index 5182247..3cfbb48 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt @@ -328,9 +328,16 @@ object RawUpdater : GroupUpdater() { "tls" -> bean.security = if (opt.value.toString() == "true") "tls" else "" + "servername" -> bean.host = opt.value.toString() + "skip-cert-verify" -> bean.allowInsecure = opt.value.toString() == "true" + "alpn" -> { + val alpn = (opt.value as? (List)) + bean.alpn = alpn?.joinToString("\n") + } + "ws-path" -> bean.path = opt.value.toString() "ws-headers" -> for (wsHeader in (opt.value as Map)) { when (wsHeader.key.lowercase()) { @@ -360,7 +367,6 @@ object RawUpdater : GroupUpdater() { } } - "servername" -> bean.host = opt.value.toString() // The format of the VMessBean is wrong, so the `host` `path` has some strange transformations here. "h2-opts", "h2-opt" -> for (h2Opt in (opt.value as Map)) { when (h2Opt.key.lowercase()) { @@ -426,6 +432,11 @@ object RawUpdater : GroupUpdater() { "skip-cert-verify" -> bean.allowInsecure = opt.value.toString() == "true" + "alpn" -> { + val alpn = (opt.value as? (List)) + bean.alpn = alpn?.joinToString("\n") + } + "network" -> when (opt.value) { "ws", "grpc" -> bean.type = opt.value.toString() } @@ -457,12 +468,14 @@ object RawUpdater : GroupUpdater() { "hysteria" -> { val bean = HysteriaBean() + var hopPorts = "" for (opt in proxy) { if (opt.value == null) continue when (opt.key.replace("_", "-")) { "name" -> bean.name = opt.value.toString() "server" -> bean.serverAddress = opt.value as String "port" -> bean.serverPort = opt.value.toString().toInt() + "ports" -> hopPorts = opt.value.toString() "obfs" -> bean.obfuscation = opt.value.toString() @@ -500,6 +513,10 @@ object RawUpdater : GroupUpdater() { } } + if (hopPorts.isNotBlank()) { + bean.serverAddress = + bean.serverAddress.wrapIPV6Host() + ":" + hopPorts + } proxies.add(bean) }