feat: add whitelist support

This commit is contained in:
Christian Groschupp 2024-04-15 21:43:09 +02:00
parent 25dcf536c6
commit 77a8f28edc
4 changed files with 23 additions and 1 deletions

View File

@ -235,11 +235,17 @@ func (bp *localBypass) Contains(ctx context.Context, network, addr string, opts
b := !bp.options.whitelist && matched ||
bp.options.whitelist && !matched
if b {
bp.options.logger.Debugf("bypass: %s", addr)
bp.options.logger.Debugf("bypass: %s, whitelist: %t", addr, bp.options.whitelist)
} else {
bp.options.logger.Debugf("pass: %s, whitelist: %t", addr, bp.options.whitelist)
}
return b
}
func (p *localBypass) IsWhitelist() bool {
return p.options.whitelist
}
func (bp *localBypass) parseLine(s string) string {
if n := strings.IndexByte(s, '#'); n >= 0 {
s = s[:n]

View File

@ -75,3 +75,7 @@ func (p *grpcPlugin) Close() error {
}
return nil
}
func (p *grpcPlugin) IsWhitelist() bool {
return false
}

View File

@ -96,3 +96,7 @@ func (p *httpPlugin) Contains(ctx context.Context, network, addr string, opts ..
}
return res.OK
}
func (p *httpPlugin) IsWhitelist() bool {
return false
}

View File

@ -37,3 +37,11 @@ func (w *bypassWrapper) Contains(ctx context.Context, network, addr string, opts
}
return bp.Contains(ctx, network, addr, opts...)
}
func (p *bypassWrapper) IsWhitelist() bool {
bp := p.r.get(p.name)
if bp == nil {
return false
}
return bp.IsWhitelist()
}