implement match_only
This commit is contained in:
@@ -96,7 +96,7 @@ func (m *ConnectionManager) NewConnection(ctx context.Context, this N.Dialer, co
|
||||
remoteConn net.Conn
|
||||
err error
|
||||
)
|
||||
if len(metadata.DestinationAddresses) > 0 || metadata.Destination.IsIP() {
|
||||
if !metadata.IgnoreDestinationAddresses && (len(metadata.DestinationAddresses) > 0 || metadata.Destination.IsIP()) {
|
||||
remoteConn, err = dialer.DialSerialNetwork(ctx, this, N.NetworkTCP, metadata.Destination, metadata.DestinationAddresses, metadata.NetworkStrategy, metadata.NetworkType, metadata.FallbackNetworkType, metadata.FallbackDelay)
|
||||
} else {
|
||||
remoteConn, err = this.DialContext(ctx, N.NetworkTCP, metadata.Destination)
|
||||
|
||||
@@ -842,6 +842,7 @@ func (r *Router) actionResolve(ctx context.Context, metadata *adapter.InboundCon
|
||||
return err
|
||||
}
|
||||
metadata.DestinationAddresses = addresses
|
||||
metadata.IgnoreDestinationAddresses = action.MatchOnly
|
||||
r.logger.DebugContext(ctx, "resolved [", strings.Join(F.MapToString(metadata.DestinationAddresses), " "), "]")
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -111,6 +111,7 @@ func NewRuleAction(ctx context.Context, logger logger.ContextLogger, action opti
|
||||
Strategy: C.DomainStrategy(action.ResolveOptions.Strategy),
|
||||
DisableCache: action.ResolveOptions.DisableCache,
|
||||
RewriteTTL: action.ResolveOptions.RewriteTTL,
|
||||
MatchOnly: action.ResolveOptions.MatchOnly,
|
||||
ClientSubnet: action.ResolveOptions.ClientSubnet.Build(netip.Prefix{}),
|
||||
}, nil
|
||||
default:
|
||||
@@ -474,6 +475,7 @@ type RuleActionResolve struct {
|
||||
Server string
|
||||
Strategy C.DomainStrategy
|
||||
DisableCache bool
|
||||
MatchOnly bool
|
||||
RewriteTTL *uint32
|
||||
ClientSubnet netip.Prefix
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user