mirror of
https://github.com/MatsuriDayo/NekoBoxForAndroid.git
synced 2025-12-19 06:30:05 +08:00
Fix hysteria subscription
This commit is contained in:
parent
fea54375d3
commit
02da17bea6
@ -9,7 +9,7 @@ import io.nekohasekai.sagernet.database.ProxyEntity
|
||||
import io.nekohasekai.sagernet.fmt.ConfigBuildResult
|
||||
import io.nekohasekai.sagernet.fmt.buildConfig
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.HysteriaBean
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.buildHysteriaConfig
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.buildHysteria1Config
|
||||
import io.nekohasekai.sagernet.fmt.naive.NaiveBean
|
||||
import io.nekohasekai.sagernet.fmt.naive.buildNaiveConfig
|
||||
import io.nekohasekai.sagernet.fmt.trojan_go.TrojanGoBean
|
||||
@ -75,7 +75,7 @@ abstract class BoxInstance(
|
||||
|
||||
is HysteriaBean -> {
|
||||
initPlugin("hysteria-plugin")
|
||||
pluginConfigs[port] = profile.type to bean.buildHysteriaConfig(port) {
|
||||
pluginConfigs[port] = profile.type to bean.buildHysteria1Config(port) {
|
||||
File(
|
||||
app.cacheDir, "hysteria_" + SystemClock.elapsedRealtime() + ".ca"
|
||||
).apply {
|
||||
|
||||
@ -278,7 +278,7 @@ data class ProxyEntity(
|
||||
|
||||
is HysteriaBean -> {
|
||||
append("\n\n")
|
||||
append(bean.buildHysteriaConfig(port, null))
|
||||
append(bean.buildHysteria1Config(port, null))
|
||||
}
|
||||
|
||||
is TuicBean -> {
|
||||
|
||||
@ -11,10 +11,7 @@ import java.io.File
|
||||
|
||||
|
||||
// hysteria://host:port?auth=123456&peer=sni.domain&insecure=1|0&upmbps=100&downmbps=100&alpn=hysteria&obfs=xplus&obfsParam=123456#remarks
|
||||
fun parseHysteria(url: String): HysteriaBean {
|
||||
if (url.startsWith("hysteria2:") || url.startsWith("hy2:")) {
|
||||
return parseHysteria2(url)
|
||||
}
|
||||
fun parseHysteria1(url: String): HysteriaBean {
|
||||
val link = url.replace("hysteria://", "https://").toHttpUrlOrNull() ?: error(
|
||||
"invalid hysteria link $url"
|
||||
)
|
||||
@ -167,7 +164,7 @@ fun HysteriaBean.toUri(): String {
|
||||
return builder.toLink(if (protocolVersion == 2) "hy2" else "hysteria")
|
||||
}
|
||||
|
||||
fun JSONObject.parseHysteria(): HysteriaBean {
|
||||
fun JSONObject.parseHysteria1Json(): HysteriaBean {
|
||||
// TODO parse HY2 JSON+YAML
|
||||
return HysteriaBean().apply {
|
||||
protocolVersion = 1
|
||||
@ -205,7 +202,7 @@ fun JSONObject.parseHysteria(): HysteriaBean {
|
||||
}
|
||||
}
|
||||
|
||||
fun HysteriaBean.buildHysteriaConfig(port: Int, cacheFile: (() -> File)?): String {
|
||||
fun HysteriaBean.buildHysteria1Config(port: Int, cacheFile: (() -> File)?): String {
|
||||
if (protocolVersion != 1) {
|
||||
throw Exception("error version: $protocolVersion")
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ import io.nekohasekai.sagernet.database.*
|
||||
import io.nekohasekai.sagernet.fmt.AbstractBean
|
||||
import io.nekohasekai.sagernet.fmt.http.HttpBean
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.HysteriaBean
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.parseHysteria
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.parseHysteria1Json
|
||||
import io.nekohasekai.sagernet.fmt.shadowsocks.ShadowsocksBean
|
||||
import io.nekohasekai.sagernet.fmt.shadowsocks.parseShadowsocks
|
||||
import io.nekohasekai.sagernet.fmt.socks.SOCKSBean
|
||||
@ -465,6 +465,7 @@ object RawUpdater : GroupUpdater() {
|
||||
|
||||
"hysteria" -> {
|
||||
val bean = HysteriaBean()
|
||||
bean.protocolVersion = 1
|
||||
var hopPorts = ""
|
||||
for (opt in proxy) {
|
||||
if (opt.value == null) continue
|
||||
@ -666,7 +667,7 @@ object RawUpdater : GroupUpdater() {
|
||||
if (json is JSONObject) {
|
||||
when {
|
||||
json.has("server") && (json.has("up") || json.has("up_mbps")) -> {
|
||||
return listOf(json.parseHysteria())
|
||||
return listOf(json.parseHysteria1Json())
|
||||
}
|
||||
|
||||
json.has("method") -> {
|
||||
|
||||
@ -4,7 +4,8 @@ import com.google.gson.JsonParser
|
||||
import io.nekohasekai.sagernet.fmt.AbstractBean
|
||||
import io.nekohasekai.sagernet.fmt.Serializable
|
||||
import io.nekohasekai.sagernet.fmt.http.parseHttp
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.parseHysteria
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.parseHysteria1
|
||||
import io.nekohasekai.sagernet.fmt.hysteria.parseHysteria2
|
||||
import io.nekohasekai.sagernet.fmt.naive.parseNaive
|
||||
import io.nekohasekai.sagernet.fmt.parseUniversal
|
||||
import io.nekohasekai.sagernet.fmt.shadowsocks.parseShadowsocks
|
||||
@ -181,10 +182,17 @@ suspend fun parseProxies(text: String): List<AbstractBean> {
|
||||
}.onFailure {
|
||||
Logs.w(it)
|
||||
}
|
||||
} else if (startsWith("hysteria://") || startsWith("hysteria2://") || startsWith("hy2://")) {
|
||||
Logs.d("Try parse hysteria link: $this")
|
||||
} else if (startsWith("hysteria://")) {
|
||||
Logs.d("Try parse hysteria1 link: $this")
|
||||
runCatching {
|
||||
entities.add(parseHysteria(this))
|
||||
entities.add(parseHysteria1(this))
|
||||
}.onFailure {
|
||||
Logs.w(it)
|
||||
}
|
||||
} else if (startsWith("hysteria2://") || startsWith("hy2://")) {
|
||||
Logs.d("Try parse hysteria2 link: $this")
|
||||
runCatching {
|
||||
entities.add(parseHysteria2(this))
|
||||
}.onFailure {
|
||||
Logs.w(it)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user