From 9b85c6dc1909bb66b5712558afbe88005ccb4555 Mon Sep 17 00:00:00 2001 From: Ember Moth Date: Tue, 21 Apr 2026 23:41:20 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9AAdd=20ECH=20Support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adapter/adapter.go | 2 ++ adapter/client.go | 4 ++++ internal/model/node/server.go | 2 ++ internal/types/types.go | 2 ++ 4 files changed, 10 insertions(+) diff --git a/adapter/adapter.go b/adapter/adapter.go index b915bd0c..8c9ff552 100644 --- a/adapter/adapter.go +++ b/adapter/adapter.go @@ -156,6 +156,8 @@ func (adapter *Adapter) Proxies(servers []*node.Node) ([]Proxy, error) { EncryptionPrivateKey: protocol.EncryptionPrivateKey, EncryptionClientPadding: protocol.EncryptionClientPadding, EncryptionPassword: protocol.EncryptionPassword, + EchEnable: protocol.EchEnable, + EchServerName: protocol.EchServerName, Ratio: protocol.Ratio, CertMode: protocol.CertMode, CertDNSProvider: protocol.CertDNSProvider, diff --git a/adapter/client.go b/adapter/client.go index d267c120..e3f476cf 100644 --- a/adapter/client.go +++ b/adapter/client.go @@ -77,6 +77,10 @@ type Proxy struct { EncryptionClientPadding string // encryption client padding EncryptionPassword string // encryption password + // ECH + EchEnable bool // ECH enable + EchServerName string // ECH SNI + Ratio float64 // Traffic ratio, default is 1 CertMode string // Certificate mode, `none`|`http`|`dns`|`self` CertDNSProvider string // DNS provider for certificate diff --git a/internal/model/node/server.go b/internal/model/node/server.go index 00e433e6..01bd7a85 100644 --- a/internal/model/node/server.go +++ b/internal/model/node/server.go @@ -144,6 +144,8 @@ type Protocol struct { EncryptionPrivateKey string `json:"encryption_private_key,omitempty"` // encryption private key EncryptionClientPadding string `json:"encryption_client_padding,omitempty"` // encryption client padding EncryptionPassword string `json:"encryption_password,omitempty"` // encryption password + EchEnable bool `json:"ech_enable,omitempty"` // ECH enable + EchServerName string `json:"ech_server_name,omitempty"` // ECH SNI Ratio float64 `json:"ratio,omitempty"` // Traffic ratio, default is 1 CertMode string `json:"cert_mode,omitempty"` // Certificate mode, `none`|`http`|`dns`|`self` diff --git a/internal/types/types.go b/internal/types/types.go index 45c46c9f..737d4777 100644 --- a/internal/types/types.go +++ b/internal/types/types.go @@ -1529,6 +1529,8 @@ type Protocol struct { EncryptionPrivateKey string `json:"encryption_private_key,omitempty"` // encryption private key EncryptionClientPadding string `json:"encryption_client_padding,omitempty"` // encryption client padding EncryptionPassword string `json:"encryption_password,omitempty"` // encryption password + EchEnable bool `json:"ech_enable,omitempty"` // ECH enable + EchServerName string `json:"ech_server_name,omitempty"` // ECH server name Ratio float64 `json:"ratio,omitempty"` // Traffic ratio, default is 1 CertMode string `json:"cert_mode,omitempty"` // Certificate mode, `none`|`http`|`dns`|`self` CertDNSProvider string `json:"cert_dns_provider,omitempty"` // DNS provider for certificate