hy2内核支持sniff设置

This commit is contained in:
wyx2685
2025-03-02 23:19:27 +09:00
parent 96baa0a99c
commit d71df3a0df
6 changed files with 72 additions and 30 deletions

View File

@@ -18,6 +18,8 @@ import (
"github.com/apernet/hysteria/extras/v2/masq"
"github.com/apernet/hysteria/extras/v2/obfs"
"github.com/apernet/hysteria/extras/v2/outbounds"
"github.com/apernet/hysteria/extras/v2/sniff"
eUtils "github.com/apernet/hysteria/extras/v2/utils"
"go.uber.org/zap"
)
@@ -161,6 +163,29 @@ func (n *Hysteria2node) getBandwidthConfig(info *panel.NodeInfo) *server.Bandwid
return band
}
func (n *Hysteria2node) getRequestHook(c *serverConfig) (server.RequestHook, error) {
if c.Sniff.Enable {
s := &sniff.Sniffer{
Timeout: c.Sniff.Timeout,
RewriteDomain: c.Sniff.RewriteDomain,
}
if c.Sniff.TCPPorts != "" {
s.TCPPorts = eUtils.ParsePortUnion(c.Sniff.TCPPorts)
if s.TCPPorts == nil {
return nil, fmt.Errorf("sniff.tcpPorts: invalid port union")
}
}
if c.Sniff.UDPPorts != "" {
s.UDPPorts = eUtils.ParsePortUnion(c.Sniff.UDPPorts)
if s.UDPPorts == nil {
return nil, fmt.Errorf("sniff.udpPorts: invalid port union")
}
}
return s, nil
}
return nil, nil
}
func (n *Hysteria2node) getOutboundConfig(c *serverConfig) (server.Outbound, error) {
// Resolver, ACL, actual outbound are all implemented through the Outbound interface.
// Depending on the config, we build a chain like this:
@@ -368,6 +393,10 @@ func (n *Hysteria2node) getHyConfig(info *panel.NodeInfo, config *conf.Options,
if err != nil {
return nil, err
}
sniff, err := n.getRequestHook(c)
if err != nil {
return nil, err
}
Outbound, err := n.getOutboundConfig(c)
if err != nil {
return nil, err
@@ -380,6 +409,7 @@ func (n *Hysteria2node) getHyConfig(info *panel.NodeInfo, config *conf.Options,
TLSConfig: *tls,
QUICConfig: *quic,
Conn: conn,
RequestHook: sniff,
Outbound: Outbound,
BandwidthConfig: *n.getBandwidthConfig(info),
IgnoreClientBandwidth: info.Hysteria2.Ignore_Client_Bandwidth,