ldap

package module
v0.0.0-...-ae92e51 Latest Latest
Warning

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

Go to latest
Published: May 24, 2023 License: Apache-2.0 Imports: 18 Imported by: 0

README

ldap

Name

ldap - serves a zone from a ldap backend.

Description

The ldap plugin resolves A, AAAA y PTR RR from a ldap backend. To reduce load on the backend, you can enable cache by configuring cacheTimeout=30m.

Compilation

This package will always be compiled as part of CoreDNS and not in a standalone way. It will require you to use go get or as a dependency on plugin.cfg.

The manual will have more information about how to configure and extend the server with external plugins.

A simple way to consume this plugin, is by adding the following on plugin.cfg, and recompile it as detailed on coredns.io.

ldap:github.com/xoe-labs/coredns-ldap

After this you can compile coredns by:

go generate
go build

Or you can instead use make:

make

Syntax

ldap

Metrics

If monitoring is enabled (via the prometheus directive) the following metric is exported:

  • coredns_ldap_request_count_total{server} - query count to the ldap plugin.

The server label indicated which server handled the request, see the metrics plugin for details.

Ready

This plugin reports readiness to the ready plugin. It will be immediately ready.

Examples

In this configuration, we forward all queries to 9.9.9.9 and print "ldap" whenever we receive a query.

. {
  forward . 9.9.9.9
  ldap
}

Also See

See the manual.

Documentation

Overview

Package ldap is a CoreDNS plugin that resolves A, AAAA y PTR RR from a ldap backend.

It serves as a backend connector for autoritative zone data. Ldap is often used for bare metal inventories. This use is the main use case for this plugin. Other use cases might eventually be supported. fqdn and ip4 / ip6 information is mapped from it's respective ldap schema and served as DNS records over coredns. Mapping is configurable. To reduce load on the backend, a configurable cache is bundled.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SOA

func SOA(zone string) dns.RR

SOA returns a syntetic SOA record for a zone.

Types

type Ldap

type Ldap struct {
	Next     plugin.Handler
	Fall     fall.F
	Upstream *upstream.Upstream
	Client   ldap.Client
	Zones    file.Zones

	// Exported for mocking in test
	SearchRequest *ldap.SearchRequest
	FqdnAttr      string
	Ip4Attr       string
	Ip6Attr       string
	// contains filtered or unexported fields
}

Ldap is an ldap plugin to serve zone entries from a ldap backend.

func New

func New(zoneNames []string) *Ldap

New returns an initialized Ldap with defaults.

func ParseStanza

func ParseStanza(c *caddy.Controller) (*Ldap, error)

ParseStanza parses a ldap stanza. nolint: funlen, gocognit, gocyclo

func (*Ldap) InitClient

func (l *Ldap) InitClient() (err error)

InitClient initializes a Ldap client.

func (*Ldap) Name

func (l *Ldap) Name() string

Name implements the Handler interface.

func (*Ldap) Ready

func (l *Ldap) Ready() bool

Ready implements the ready.Readiness interface, once this flips to true CoreDNS assumes this plugin is ready for queries; it is not checked again.

func (*Ldap) Run

func (l *Ldap) Run(ctx context.Context) error

Run updates the zone from ldap.

func (*Ldap) ServeDNS

func (l *Ldap) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error)

ServeDNS implements the plugin.Handler interface.

func (*Ldap) UpdateZones

func (l *Ldap) UpdateZones() error

Jump to

Keyboard shortcuts

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