ldapfilter

package module
v0.0.0-...-240e975 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 19, 2022 License: MIT Imports: 6 Imported by: 0

README

LDAP filter

A work-in-progress RFC4515 ldap filter parser

Only a few filters are implemented at the moment (And, Or, Equality)

Usage

import "github.com/janstuemmel/go-ldap-filter"

filter, err := ldapfilter.NewParser("|(name=Jon)(name=Foo)").Parse()

if err != nil {
  panic(err)
}

ok := filter.Match(map[string][]string{
  "name": {"Jon"}
})

fmt.Println(ok)

Documentation

Overview

Package ldapfilter provides functions for parsing ldap filters and validating ldap entries.

Index

Constants

View Source
const (
	// ILLEGAL Unknown token occured
	ILLEGAL int = iota
	// EOF End of file
	EOF
	// IDENT is the left or right of a ldap criteria
	IDENT

	// OPEN bracket
	OPEN
	// CLOSE bracket
	CLOSE

	// AND filter
	AND
	// OR filter
	OR
	// NEG negation filter
	NEG
	// EQUAL equality filter
	EQUAL
)

Variables

View Source
var ErrParser = errors.New("parser Error")

ErrParser error when parsing error happend

Functions

This section is empty.

Types

type AndFilter

type AndFilter struct {
	Type     string
	Children []Filter
}

AndFilter filters entries by and operation

func NewAndFilter

func NewAndFilter() *AndFilter

NewAndFilter inititalizes a new AndFilter

func (*AndFilter) Append

func (f *AndFilter) Append(filter Filter)

Append appends a new filter

func (*AndFilter) Match

func (f *AndFilter) Match(input Input) bool

Match matches entry input

type EqualityFilter

type EqualityFilter struct {
	Type  string
	Key   string
	Value string
}

EqualityFilter filters entries by equality

func NewEqualityFilter

func NewEqualityFilter() *EqualityFilter

NewEqualityFilter inititalizes a new EqualityFilter

func (*EqualityFilter) Append

func (f *EqualityFilter) Append(filter Filter)

Append does not appand anything here, because EqualityFilter is already a leaf

func (*EqualityFilter) Match

func (f *EqualityFilter) Match(input Input) bool

Match matches entry input

type Filter

type Filter interface {
	Match(input Input) bool
	Append(filter Filter)
}

type Input

type Input = map[string][]interface{}

type Lexer

type Lexer struct {
	// contains filtered or unexported fields
}

Lexer used for lexing ldap filter strings

func NewLexer

func NewLexer(reader io.Reader) *Lexer

NewLexer initializes a lexer

func (*Lexer) Lex

func (l *Lexer) Lex() Token

Lex emits next token

type OrFilter

type OrFilter struct {
	Type     string
	Children []Filter
}

OrFilter filters entries by or operation

func NewOrFilter

func NewOrFilter() *OrFilter

NewOrFilter inititalizes a new OrFilter

func (*OrFilter) Append

func (f *OrFilter) Append(filter Filter)

Append appends a new filter

func (*OrFilter) Match

func (f *OrFilter) Match(input Input) bool

Match matches entry input

type Parser

type Parser struct {
	// contains filtered or unexported fields
}

Parser used for parsing ldap filter strings

func NewParser

func NewParser(str string) *Parser

NewParser initializes a new Parser

func (*Parser) Parse

func (p *Parser) Parse() (Filter, error)

Parse parses the ldap filter string

type Token

type Token struct {
	Type int
	Lit  string
}

Token emited by the lexer

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL