App-LDAP
view release on metacpan or search on metacpan
lib/App/LDAP/Command/Init.pm view on Meta::CPAN
package App::LDAP::Command::Init;
use Modern::Perl;
use Moose;
with qw( App::LDAP::Role::Command
App::LDAP::Role::Bindable );
use Authen::SASL;
use IO::String;
use Net::LDAP::LDIF;
our $schemas = {};
sub run {
my ($self, ) = @_;
my $ldap = Net::LDAP->new("ldapi://");
my $sasl = Authen::SASL->new(mechanism => "EXTERNAL")
->client_new("ldap", "localhost");
$ldap->bind(undef, sasl => $sasl);
for my $schema (keys %{$schemas}) {
my $file = IO::String->new($schemas->{$schema});
my $entry = Net::LDAP::LDIF->new($file, "r", onerror => "die")->read_entry();
my $msg = $ldap->add($entry);
die $msg->error if $msg->code;
}
ldap()->add($self->create_gidnext);
ldap()->add($self->create_uidnext);
}
$schemas->{idnext} = <<'IDNEXT';
dn: cn=idnext,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: idnext
olcObjectClasses: {0}( 1.3.6.1.4.1.7165.1.2.2.3
NAME 'uidNext' SUP top STRUCTURAL
DESC 'Next available UNIX uid'
MUST ( uidNumber $ cn ) )
olcObjectClasses: {1}( 1.3.6.1.4.1.7165.1.2.2.4
NAME 'gidNext' SUP top STRUCTURAL
DESC 'Next available UNIX gid'
MUST ( gidNumber $ cn ) )
IDNEXT
$schemas->{sudo} = <<'SUDO';
dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s)
who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMa
tch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s)
who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMat
ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {2}( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Comma
nd(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1
466.115.121.1.26 )
( run in 0.712 second using v1.01-cache-2.11-cpan-5b529ec07f3 )