NAME
Footprintless::Plugin::Ldap::Ldap; - The ldap client implementation
VERSION
version 1.00
SYNOPSIS
Standard way of getting an ldap client:
use Footprintless;
my $ldap = Footprintless->new()->ldap('proj.env');
# Export:
$ldap->with_connection(sub { $ldap->export_ldif('/tmp/export.ldif') });
# Import:
$ldap->with_connection(sub { $ldap->import_ldif('/tmp/export.ldif') });
# Search:
eval {
$ldap->connect()->bind();
my @foo_users = $ldap->search_for_list({filter => '(mail=*@foo.com)'});
# do other things...
};
my $error = $@;
eval {$ldap->disconnect()};
die($error) if ($error);
DESCRIPTION
This module is a convenience wrapper around Net::LDAP
that integrates with Footprintless and provides a bunch of useful LDAP manipulation functions.
ENTITIES
A simple LDAP entity:
ldap => {
# An admin user with permission to manipulate entries
bind_dn => 'uid=admin,ou=system',
# Password for bind_dn
# password can also be specified directly at the top level...
bind_options => { password => 'secret' },
# Base dn to use for all operations when not explicitly specified
# by the operation options
default_base => 'dc=foo,dc=com'
# The hostname of the server
hostname => 'public-ldap.foo.com',
# The port (default 389 if secure == 0, 636 otherwise)
port => 389,
# O for LDAP (default), 1 for LDAPS
secure => 0,
# Optional ssh tunnel configuration, uses Footprintless::Tunnel
tunnel_destination_hostname => 'internal-ldap.foo.com',
tunnel_hostname => 'bastion-gateway.foo.com',
tunnel_username => 'automationuser',
},
METHODS
add($entry)
Adds $entry
.
add_or_update($entry)
Adds $entry
if it does not exist, updates it otherwise.
base_dn(@rdns)
Returns a dn by combining all of the @rdns
.
bind($dn, %options)
Binds to $dn
. If %options
are provided, they will be used in place to the configured connection options.
connect(%connect_options)
Connects to the server (does not perfom a bind). The %connect_options
are passed through to the Net::LDAP or Net::LDAPS constructor.
canonical_dn($dn, %options)
Passes through to "canonical_dn" in Net::LDAP::Util.
delete($base, %options)
If %options
are provided, the options filter
and scope
will be used together with $base
to search for, and then delete entries. Otherwise, $base
will be deleted.
disconnect()
Disconnects from the server.
exploded_dn($dn, %options)
Passes through to "ldap_explode_dn" in Net::LDAP::Util.
export_ldif($to, %options)
Exports the data to $to
, which must be one of:
- SCALARREF
-
A refrence to a scalar to hold the LDIF data.
- string
-
The name of a file to write the LDIF data to.
The supported options are, base
, scope
, filter
, and attrs
. They are used to search for the entries to export.
import_ldif($from, %options)
Imports the data from $from
, which must be one of:
- GLOBREF
-
A reference to a file handle to read LDIF data from.
- SCALARREF
-
A refrence to a scalar to holding the LDIF data.
- string
-
An LDIF filename.
The supported options are:
- each_entry
-
A sub that gets run on each entry instead of add_or_update.
is_connected()
Returns a truthy value if currently connected.
modify($dn, %options)
Modifies the entry at $dn
according to %options
. The %options
are specified by modify in Net::Ldap
search($search_args, $each_entry_callback)
Searches for all entries matching $search_args
and calls $each_entry_callback
for each result.
search_for_containers($base)
Returns an ARRAY
of dn
's of all the containers under $base
.
search_for_list($search_args, $entry_mapper)
Searches for all entries matching $search_args
. If $entry_mapper
is supplied it will be called for each entry. Otherwise, the entry itself will be used. All results will be aggregated into an ARRAY
or ARRAYREF
(depending on wantarray
) and returned.
search_for_map($search_args, $entry_mapper)
Searches for all entries matching $search_args
. If $entry_mapper
is supplied it will be called for each entry and will be expected to return a tuple (ARRAY
of length 2), representing a key value pair. Otherwise, the entry dn
and the entry itself will be used as the key value pair. All results will be aggregated into a HASHREF
and returned.
search_for_scalar($search_args, $entry_mapper)
Searches for a single entry matching $search_args
. If $entry_mapper
is supplied, it will be called with the entry, and the value returned will be returned. Otherwise, the entry itself will be returned.
to_string()
Prints out a string containing connection information useful for debugging.
unbind()
Unbinds the connection to the server.
update($entry)
Updates $entry
on the server.
with_connection($sub)
Opens a connection, binds, calls $sub
, and disconnects. If an error occurred the disconnect will be executed and the error will be re-died.
AUTHOR
Lucas Theisen <lucastheisen@pastdev.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Lucas Theisen.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
SEE ALSO
Please see those modules/websites for more information related to this module.