From 314edaa170bb956891c487691afa04c8d815bf92 Mon Sep 17 00:00:00 2001 From: Safa Safari Date: Sat, 6 May 2023 22:47:13 +0330 Subject: [PATCH] Add ech_config options --- common/tls/ech_client.go | 9 ++++++--- docs/configuration/shared/tls.md | 3 ++- docs/configuration/shared/tls.zh.md | 3 ++- option/tls.go | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/common/tls/ech_client.go b/common/tls/ech_client.go index 57b9ca9a..475366bc 100644 --- a/common/tls/ech_client.go +++ b/common/tls/ech_client.go @@ -14,7 +14,7 @@ import ( cftls "github.com/sagernet/cloudflare-tls" "github.com/sagernet/sing-box/adapter" "github.com/sagernet/sing-box/option" - "github.com/sagernet/sing-dns" + dns "github.com/sagernet/sing-dns" E "github.com/sagernet/sing/common/exceptions" mDNS "github.com/miekg/dns" @@ -179,13 +179,16 @@ func NewECHClient(router adapter.Router, serverAddress string, options option.Ou } tlsConfig.ClientECHConfigs = clientConfig } else { - tlsConfig.GetClientECHConfigs = fetchECHClientConfig(router) + tlsConfig.GetClientECHConfigs = fetchECHClientConfig(router, options.ECH.EchDomain) } return &ECHClientConfig{&tlsConfig}, nil } -func fetchECHClientConfig(router adapter.Router) func(ctx context.Context, serverName string) ([]cftls.ECHConfig, error) { +func fetchECHClientConfig(router adapter.Router, EchDomain string) func(ctx context.Context, serverName string) ([]cftls.ECHConfig, error) { return func(ctx context.Context, serverName string) ([]cftls.ECHConfig, error) { + if EchDomain != "" { + serverName = EchDomain + } message := &mDNS.Msg{ MsgHdr: mDNS.MsgHdr{ RecursionDesired: true, diff --git a/docs/configuration/shared/tls.md b/docs/configuration/shared/tls.md index 7b39a045..e2600ad1 100644 --- a/docs/configuration/shared/tls.md +++ b/docs/configuration/shared/tls.md @@ -62,7 +62,8 @@ "enabled": false, "pq_signature_schemes_enabled": false, "dynamic_record_sizing_disabled": false, - "config": "" + "config": "", + "ech_domain": "" }, "utls": { "enabled": false, diff --git a/docs/configuration/shared/tls.zh.md b/docs/configuration/shared/tls.zh.md index 21620c49..73634bdb 100644 --- a/docs/configuration/shared/tls.zh.md +++ b/docs/configuration/shared/tls.zh.md @@ -62,7 +62,8 @@ "enabled": false, "pq_signature_schemes_enabled": false, "dynamic_record_sizing_disabled": false, - "config": "" + "config": "", + "ech_domain": "" }, "utls": { "enabled": false, diff --git a/option/tls.go b/option/tls.go index 2ff5f2e4..8fcefb4f 100644 --- a/option/tls.go +++ b/option/tls.go @@ -50,6 +50,7 @@ type OutboundECHOptions struct { PQSignatureSchemesEnabled bool `json:"pq_signature_schemes_enabled,omitempty"` DynamicRecordSizingDisabled bool `json:"dynamic_record_sizing_disabled,omitempty"` Config string `json:"config,omitempty"` + EchDomain string `json:"ech_domain,omitempty"` } type OutboundUTLSOptions struct {