Add authority for gRPC

This commit is contained in:
yuhan6665 committed 2024-03-13 12:57:08 -04:00
1 parent c34f332771
commit 92d3136a23
10 files changed
+35 -24

No files matched your search

@@ -223,10 +223,12 @@ data class V2rayConfig(
} }
data class GrpcSettingsBean(var serviceName: String = "", data class GrpcSettingsBean(var serviceName: String = "",
var authority: String? = null,
var multiMode: Boolean? = null) var multiMode: Boolean? = null)
fun populateTransportSettings(transport: String, headerType: String?, host: String?, path: String?, seed: String?, fun populateTransportSettings(transport: String, headerType: String?, host: String?, path: String?, seed: String?,
quicSecurity: String?, key: String?, mode: String?, serviceName: String?): String { quicSecurity: String?, key: String?, mode: String?, serviceName: String?,
authority: String?): String {
var sni = "" var sni = ""
network = transport network = transport
when (network) { when (network) {
@@ -290,7 +292,8 @@ data class V2rayConfig(
val grpcSetting = GrpcSettingsBean() val grpcSetting = GrpcSettingsBean()
grpcSetting.multiMode = mode == "multi" grpcSetting.multiMode = mode == "multi"
grpcSetting.serviceName = serviceName ?: "" grpcSetting.serviceName = serviceName ?: ""
sni = host ?: "" grpcSetting.authority = authority ?: ""
sni = authority ?: ""
grpcSettings = grpcSetting grpcSettings = grpcSetting
} }
} }
@@ -421,7 +424,7 @@ data class V2rayConfig(
"grpc" -> { "grpc" -> {
val grpcSetting = streamSettings?.grpcSettings ?: return null val grpcSetting = streamSettings?.grpcSettings ?: return null
listOf(if (grpcSetting.multiMode == true) "multi" else "gun", listOf(if (grpcSetting.multiMode == true) "multi" else "gun",
"", grpcSetting.authority ?: "",
grpcSetting.serviceName) grpcSetting.serviceName)
} }
else -> null else -> null
@@ -504,7 +504,8 @@ class ServerActivity : BaseActivity() {
quicSecurity = requestHost, quicSecurity = requestHost,
key = path, key = path,
mode = transportTypes(networks[network])[type], mode = transportTypes(networks[network])[type],
serviceName = path serviceName = path,
authority = requestHost,
) )
if (sniField.isNotBlank()) { if (sniField.isNotBlank()) {
sni = sniField sni = sniField
@@ -176,7 +176,8 @@ object AngConfigManager {
vmessBean.requestHost, vmessBean.requestHost,
vmessBean.path, vmessBean.path,
vmessBean.headerType, vmessBean.headerType,
vmessBean.path vmessBean.path,
vmessBean.requestHost,
) )
val allowInsecure = if (vmessBean.allowInsecure.isBlank()) { val allowInsecure = if (vmessBean.allowInsecure.isBlank()) {
settingsStorage?.decodeBool(AppConfig.PREF_ALLOW_INSECURE) ?: false settingsStorage?.decodeBool(AppConfig.PREF_ALLOW_INSECURE) ?: false
@@ -275,7 +276,8 @@ object AngConfigManager {
vmessQRCode.host, vmessQRCode.host,
vmessQRCode.path, vmessQRCode.path,
vmessQRCode.type, vmessQRCode.type,
vmessQRCode.path vmessQRCode.path,
vmessQRCode.host
) )
val fingerprint = vmessQRCode.fp ?: streamSetting.tlsSettings?.fingerprint val fingerprint = vmessQRCode.fp ?: streamSetting.tlsSettings?.fingerprint
@@ -383,7 +385,8 @@ object AngConfigManager {
queryParam["quicSecurity"], queryParam["quicSecurity"],
queryParam["key"], queryParam["key"],
queryParam["mode"], queryParam["mode"],
queryParam["serviceName"] queryParam["serviceName"],
queryParam["authority"]
) )
fingerprint = queryParam["fp"] ?: "" fingerprint = queryParam["fp"] ?: ""
config.outboundBean?.streamSettings?.populateTlsSettings( config.outboundBean?.streamSettings?.populateTlsSettings(
@@ -411,7 +414,6 @@ object AngConfigManager {
.associate { it.split("=").let { (k, v) -> k to Utils.urlDecode(v) } } .associate { it.split("=").let { (k, v) -> k to Utils.urlDecode(v) } }
config = ServerConfig.create(EConfigType.VLESS) config = ServerConfig.create(EConfigType.VLESS)
val streamSetting = config.outboundBean?.streamSettings ?: return -1 val streamSetting = config.outboundBean?.streamSettings ?: return -1
var fingerprint = streamSetting.tlsSettings?.fingerprint
config.remarks = Utils.urlDecode(uri.fragment ?: "") config.remarks = Utils.urlDecode(uri.fragment ?: "")
config.outboundBean?.settings?.vnext?.get(0)?.let { vnext -> config.outboundBean?.settings?.vnext?.get(0)?.let { vnext ->
@@ -431,15 +433,18 @@ object AngConfigManager {
queryParam["quicSecurity"], queryParam["quicSecurity"],
queryParam["key"], queryParam["key"],
queryParam["mode"], queryParam["mode"],
queryParam["serviceName"] queryParam["serviceName"],
queryParam["authority"]
) )
fingerprint = queryParam["fp"] ?: ""
val pbk = queryParam["pbk"] ?: ""
val sid = queryParam["sid"] ?: ""
val spx = Utils.urlDecode(queryParam["spx"] ?: "")
streamSetting.populateTlsSettings( streamSetting.populateTlsSettings(
queryParam["security"] ?: "", allowInsecure, queryParam["security"] ?: "",
queryParam["sni"] ?: sni, fingerprint, queryParam["alpn"], pbk, sid, spx allowInsecure,
queryParam["sni"] ?: sni,
queryParam["fp"] ?: "",
queryParam["alpn"],
queryParam["pbk"] ?: "",
queryParam["sid"] ?: "",
queryParam["spx"] ?: ""
) )
} else if (str.startsWith(EConfigType.WIREGUARD.protocolScheme)) { } else if (str.startsWith(EConfigType.WIREGUARD.protocolScheme)) {
val uri = URI(Utils.fixIllegalUrl(str)) val uri = URI(Utils.fixIllegalUrl(str))
@@ -520,7 +525,8 @@ object AngConfigManager {
queryParam["security"], queryParam["security"],
queryParam["key"], queryParam["key"],
queryParam["mode"], queryParam["mode"],
queryParam["serviceName"]) queryParam["serviceName"],
queryParam["authority"])
streamSetting.populateTlsSettings( streamSetting.populateTlsSettings(
if (tls) TLS else "", allowInsecure, sni, fingerprint, null, if (tls) TLS else "", allowInsecure, sni, fingerprint, null,
null, null, null null, null, null
@@ -758,7 +764,8 @@ object AngConfigManager {
"grpc" -> { "grpc" -> {
dicQuery["mode"] = transportDetails[0] dicQuery["mode"] = transportDetails[0]
dicQuery["serviceName"] = transportDetails[2] dicQuery["authority"] = Utils.urlEncode(transportDetails[1])
dicQuery["serviceName"] = Utils.urlEncode(transportDetails[2])
} }
} }
} }
@@ -44,7 +44,7 @@
<string name="server_lab_more_function">النقل</string> <string name="server_lab_more_function">النقل</string>
<string name="server_lab_head_type">نوع الرأس</string> <string name="server_lab_head_type">نوع الرأس</string>
<string name="server_lab_mode_type">وضع gRPC</string> <string name="server_lab_mode_type">وضع gRPC</string>
<string name="server_lab_request_host">طلب الاستضافة (host/ws host/h2 host)/QUIC security</string> <string name="server_lab_request_host">طلب الاستضافة (host/ws host/h2 host)/QUIC security/gRPC Authority</string>
<string name="server_lab_path">المسار (ws path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string> <string name="server_lab_path">المسار (ws path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string>
<string name="server_lab_stream_security">TLS</string> <string name="server_lab_stream_security">TLS</string>
<string name="server_lab_allow_insecure">allowInsecure</string> <string name="server_lab_allow_insecure">allowInsecure</string>
@@ -46,7 +46,7 @@
<string name="server_lab_more_function">انتقال</string> <string name="server_lab_more_function">انتقال</string>
<string name="server_lab_head_type">نوع head</string> <string name="server_lab_head_type">نوع head</string>
<string name="server_lab_mode_type">حالت gRPC</string> <string name="server_lab_mode_type">حالت gRPC</string>
<string name="server_lab_request_host">میزبان درخواست (host/host ws/host h2)/امنیت QUIC</string> <string name="server_lab_request_host">gRPC Authority/میزبان درخواست (host/host ws/host h2)/امنیت QUIC</string>
<string name="server_lab_path">مسیر (مسیر ws/ مسیر h2) کلید QUIC/دانه kcp/نام‌خدمات gRPC</string> <string name="server_lab_path">مسیر (مسیر ws/ مسیر h2) کلید QUIC/دانه kcp/نام‌خدمات gRPC</string>
<string name="server_lab_stream_security">TLS</string> <string name="server_lab_stream_security">TLS</string>
<string name="server_lab_allow_insecure">مجوز ناامن</string> <string name="server_lab_allow_insecure">مجوز ناامن</string>
@@ -46,7 +46,7 @@
<string name="server_lab_more_function">Другие параметры</string> <string name="server_lab_more_function">Другие параметры</string>
<string name="server_lab_head_type">Тип заголовка</string> <string name="server_lab_head_type">Тип заголовка</string>
<string name="server_lab_mode_type">Режим gRPC</string> <string name="server_lab_mode_type">Режим gRPC</string>
<string name="server_lab_request_host">Запрос узла (WS/H2) / Шифрование QUIC</string> <string name="server_lab_request_host">Запрос узла (WS/H2) / Шифрование QUIC/gRPC Authority</string>
<string name="server_lab_path">Путь (WS/H2) / Ключ QUIC / Сид KCP / Сервис gRPC</string> <string name="server_lab_path">Путь (WS/H2) / Ключ QUIC / Сид KCP / Сервис gRPC</string>
<string name="server_lab_stream_security">TLS</string> <string name="server_lab_stream_security">TLS</string>
<string name="server_lab_allow_insecure">Разрешать небезопасные</string> <string name="server_lab_allow_insecure">Разрешать небезопасные</string>
@@ -46,7 +46,7 @@
<string name="server_lab_more_function">Nâng cao</string> <string name="server_lab_more_function">Nâng cao</string>
<string name="server_lab_head_type">Kiểu ngụy trang (type)</string> <string name="server_lab_head_type">Kiểu ngụy trang (type)</string>
<string name="server_lab_mode_type">Chế độ gRPC</string> <string name="server_lab_mode_type">Chế độ gRPC</string>
<string name="server_lab_request_host">Yêu cầu host(host/ws host/h2 host)/QUIC security</string> <string name="server_lab_request_host">Yêu cầu host(host/ws host/h2 host)/QUIC security/gRPC Authority</string>
<string name="server_lab_path">path(ws path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string> <string name="server_lab_path">path(ws path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string>
<string name="server_lab_stream_security">TLS</string> <string name="server_lab_stream_security">TLS</string>
<string name="server_lab_allow_insecure">allowInsecure</string> <string name="server_lab_allow_insecure">allowInsecure</string>
@@ -46,7 +46,7 @@
<string name="server_lab_more_function">底层传输方式(transport)</string> <string name="server_lab_more_function">底层传输方式(transport)</string>
<string name="server_lab_head_type">伪装类型(type)</string> <string name="server_lab_head_type">伪装类型(type)</string>
<string name="server_lab_mode_type">gRPC 传输模式(mode)</string> <string name="server_lab_mode_type">gRPC 传输模式(mode)</string>
<string name="server_lab_request_host">伪装域名(host)(host/ws host/httpupgrade host/h2 host)/QUIC 加密方式</string> <string name="server_lab_request_host">伪装域名(host)(host/ws host/httpupgrade host/h2 host)/QUIC 加密方式/gRPC Authority</string>
<string name="server_lab_path">path(ws path/httpupgrade path/h2 path)/QUIC 加密密钥/kcp seed/gRPC serviceName</string> <string name="server_lab_path">path(ws path/httpupgrade path/h2 path)/QUIC 加密密钥/kcp seed/gRPC serviceName</string>
<string name="server_lab_stream_security">传输层安全(TLS)</string> <string name="server_lab_stream_security">传输层安全(TLS)</string>
<string name="server_lab_allow_insecure">跳过证书验证(allowInsecure)</string> <string name="server_lab_allow_insecure">跳过证书验证(allowInsecure)</string>
@@ -46,7 +46,7 @@
<string name="server_lab_more_function">底層傳輸方式 (transport)</string> <string name="server_lab_more_function">底層傳輸方式 (transport)</string>
<string name="server_lab_head_type">標頭類型</string> <string name="server_lab_head_type">標頭類型</string>
<string name="server_lab_mode_type">gRPC 傳輸模式 (mode)</string> <string name="server_lab_mode_type">gRPC 傳輸模式 (mode)</string>
<string name="server_lab_request_host">要求主機 (host)(host/ws host/httpupgrade host/h2 host)/QUIC 加密方式</string> <string name="server_lab_request_host">要求主機 (host)(host/ws host/httpupgrade host/h2 host)/QUIC 加密方式/gRPC Authority</string>
<string name="server_lab_path">path(ws path/httpupgrade path/h2 path)/QUIC 加密金鑰/kcp seed/gRPC serviceName</string> <string name="server_lab_path">path(ws path/httpupgrade path/h2 path)/QUIC 加密金鑰/kcp seed/gRPC serviceName</string>
<string name="server_lab_stream_security">傳輸層安全 (TLS)</string> <string name="server_lab_stream_security">傳輸層安全 (TLS)</string>
<string name="server_lab_allow_insecure">跳過憑證驗證 (allowInsecure)</string> <string name="server_lab_allow_insecure">跳過憑證驗證 (allowInsecure)</string>
+1 -1
View File
@@ -47,7 +47,7 @@
<string name="server_lab_more_function">Transport</string> <string name="server_lab_more_function">Transport</string>
<string name="server_lab_head_type">head type</string> <string name="server_lab_head_type">head type</string>
<string name="server_lab_mode_type">gRPC mode</string> <string name="server_lab_mode_type">gRPC mode</string>
<string name="server_lab_request_host">request host(host/ws host/httpupgrade host/h2 host)/QUIC security</string> <string name="server_lab_request_host">request host(host/ws host/httpupgrade host/h2 host)/QUIC security/gRPC Authority</string>
<string name="server_lab_path">path(ws path/httpupgrade path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string> <string name="server_lab_path">path(ws path/httpupgrade path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string>
<string name="server_lab_stream_security">TLS</string> <string name="server_lab_stream_security">TLS</string>
<string name="server_lab_stream_fingerprint" translatable="false">Fingerprint</string> <string name="server_lab_stream_fingerprint" translatable="false">Fingerprint</string>