Documentation ¶
Overview ¶
Package wbeforexl provides a simple xlistd.List implementation that can be used to check on a white list before checking on a blacklist.
This package is a work in progress and makes no API stability promises.
Index ¶
Examples ¶
Constants ¶
View Source
const ComponentClass = "wbefore"
ComponentClass registered.
Variables ¶
This section is empty.
Functions ¶
func Builder ¶
func Builder(defaultCfg Config) xlistd.BuildListFn
Builder returns a builder function.
Types ¶
type List ¶
type List struct {
// contains filtered or unexported fields
}
List implements a composite RBL that checks a whtelist before checking the blacklist. This means that if the checked resource exists in the whitelist, then it returns immediately with a negative result. If not in the whitelist, then returns the response of the blacklist.
Example ¶
package main import ( "context" "fmt" "log" "github.com/luids-io/api/xlist" "github.com/luids-io/xlist/pkg/xlistd/components/mockxl" "github.com/luids-io/xlist/pkg/xlistd/components/wbeforexl" ) func main() { resources := []xlist.Resource{xlist.IPv4} white := &mockxl.List{ Identifier: "whitelist", ResourceList: resources, Results: []bool{true, false}, } black := &mockxl.List{ Identifier: "blacklist", ResourceList: resources, Results: []bool{true}, } //constructs wbefore rbl rbl := wbeforexl.New("test", white, black, resources, wbeforexl.Config{Reason: "hello"}) //in the first check, whitelist returns true -> return false resp, err := rbl.Check(context.Background(), "10.10.10.10", xlist.IPv4) if err != nil && resp.Result { log.Fatalln("this should not happen") } fmt.Println("check 1:", resp.Result) //in the second check, whitelist returns false -> blacklist is checked // and blacklist allways returns true -> return true resp, err = rbl.Check(context.Background(), "10.10.10.10", xlist.IPv4) if err != nil && !resp.Result { log.Fatalln("this should not happen") } fmt.Println("check 2:", resp.Result, resp.Reason) }
Output: check 1: false check 2: true hello
func New ¶
New constructs a new "white before" RBL, it receives the resource list that RBL supports.
Click to show internal directories.
Click to hide internal directories.