Skip to content

Commit

Permalink
Fix hysteria subscription
Browse files Browse the repository at this point in the history
  • Loading branch information
arm64v8a committed Sep 9, 2023
1 parent fea5437 commit 02da17b
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ data class ProxyEntity(

is HysteriaBean -> {
append("\n\n")
append(bean.buildHysteriaConfig(port, null))
append(bean.buildHysteria1Config(port, null))
}

is TuicBean -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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")
}
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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") -> {
Expand Down
16 changes: 12 additions & 4 deletions app/src/main/java/io/nekohasekai/sagernet/ktx/Formats.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
}
Expand Down

0 comments on commit 02da17b

Please sign in to comment.