diff --git a/adapter/outbound/mieru.go b/adapter/outbound/mieru.go index fca7ede4..8ef9cfd7 100644 --- a/adapter/outbound/mieru.go +++ b/adapter/outbound/mieru.go @@ -28,15 +28,16 @@ type Mieru struct { type MieruOption struct { BasicOption - Name string `proxy:"name"` - Server string `proxy:"server"` - Port int `proxy:"port,omitempty"` - PortRange string `proxy:"port-range,omitempty"` - Transport string `proxy:"transport"` - UDP bool `proxy:"udp,omitempty"` - UserName string `proxy:"username"` - Password string `proxy:"password"` - Multiplexing string `proxy:"multiplexing,omitempty"` + Name string `proxy:"name"` + Server string `proxy:"server"` + Port int `proxy:"port,omitempty"` + PortRange string `proxy:"port-range,omitempty"` + Transport string `proxy:"transport"` + UDP bool `proxy:"udp,omitempty"` + UserName string `proxy:"username"` + Password string `proxy:"password"` + Multiplexing string `proxy:"multiplexing,omitempty"` + HandshakeMode string `proxy:"handshake-mode,omitempty"` } // DialContext implements C.ProxyAdapter @@ -245,6 +246,9 @@ func buildMieruClientConfig(option MieruOption) (*mieruclient.ClientConfig, erro Level: mierupb.MultiplexingLevel(multiplexing).Enum(), } } + if handshakeMode, ok := mierupb.HandshakeMode_value[option.HandshakeMode]; ok { + config.Profile.HandshakeMode = (*mierupb.HandshakeMode)(&handshakeMode) + } return config, nil } @@ -294,6 +298,11 @@ func validateMieruOption(option MieruOption) error { return fmt.Errorf("invalid multiplexing level: %s", option.Multiplexing) } } + if option.HandshakeMode != "" { + if _, ok := mierupb.HandshakeMode_value[option.HandshakeMode]; !ok { + return fmt.Errorf("invalid handshake mode: %s", option.HandshakeMode) + } + } return nil } diff --git a/docs/config.yaml b/docs/config.yaml index e4c5e753..6c905be6 100644 --- a/docs/config.yaml +++ b/docs/config.yaml @@ -933,6 +933,8 @@ proxies: # socks5 password: password # 可以使用的值包括 MULTIPLEXING_OFF, MULTIPLEXING_LOW, MULTIPLEXING_MIDDLE, MULTIPLEXING_HIGH。其中 MULTIPLEXING_OFF 会关闭多路复用功能。默认值为 MULTIPLEXING_LOW。 # multiplexing: MULTIPLEXING_LOW + # 如果想开启 0-RTT 握手,请设置为 HANDSHAKE_NO_WAIT,否则请设置为 HANDSHAKE_STANDARD。默认值为 HANDSHAKE_STANDARD + # handshake-mode: HANDSHAKE_STANDARD # anytls - name: anytls