package fcldap; use strict; use Net::LDAP; use Net::LDAP::LDIF; use MDK::Common; use vars qw(@ISA @EXPORT); use Exporter; @ISA = qw(Exporter); @EXPORT = qw(cnx_ldap_ano cnx_ldap_user find_user_posix add_user_posix create_rootdse create_rootdse_file add_ou toto ); sub cnx_ldap_ano { my ($u) = @_; my $ldap = Net::LDAP->new($u->{var}{srv}) or die $@; my $mesg = $ldap->bind; return $ldap; } sub cnx_ldap_user { my ($u) = @_; print "cnx_ldap_user not connect\n"; my $ldap = Net::LDAP->new($u->{var}{srv}) or die $@; print "cnx_ldap_user \n"; print "$u->{var}{rootdn} \n"; print "$u->{var}{rootdse} \n"; print "$u->{var}{rootpass} \n"; my $mesg = $ldap->bind( $u->{var}{rootdn}, $u->{var}{rootdse}, password => $u->{var}{rootpass}, ); print "$ldap \n"; return $ldap; } sub create_rootdse_file { my ($u) = @_; output('/tmp/rootdse.ldif', <{var}{rootdse} objectclass: dcObject objectclass: organization o: Example Company dc: $u->{var}{dom} dn: cn=$u->{var}{rootdn},$u->{var}{rootdse} objectclass: organizationalRole cn: $u->{var}{rootdn} dn: ou=$u->{var}{defou},$u->{var}{rootdse} objectClass: top objectClass: organizationalUnit ou: $u->{var}{defou} description: $u->{var}{defou} EOF } sub create_rootdse { my ($u) = @_; create_rootdse_file($u); print "$u->{var}{rootdse}\n"; print "$u->{var}{rootdn}\n"; print "$u->{var}{rootpass}\n"; print "$u->{var}{defou}\n"; print "$u->{var}{dom}\n"; my $mesg = system("ldapadd -x -D 'cn=$u->{var}{rootdn},$u->{var}{rootdse}' -f /tmp/rootdse.ldif -w $u->{var}{rootpass}"); return $mesg; } sub find_user_posix { my ($u) = @_; my $dn; my $ldap = cnx_ldap_ano('loki'); my $mesg = $ldap->search(base => $u->{var}{basedn}, scope => $u->{var}{scope}, filter => "(&(objectclass=posixAccount)(uid=$u->{var}{uid})", ); foreach my $entry ($mesg->all_entries) { my $dn = $entry->dn; print "$dn \n"; } } sub add_ou { my ($u) = @_; print "add_ou \n"; my $ldap = cnx_ldap_user($u); print "add_ou \n"; my $result = $ldap->add( "ou=$u->{var}{defou}, $u->{var}{rootdse}", attr => [ objectclass => ["top", "organizationalUnit"], ou => $u->{var}{defou}, description => $u->{var}{defou}, ] ); print "Create Default OU=$u->{var}{defou} \n"; # $result->code && warn "failed to add entry:", $result->error; my $mesg = $ldap->unbind; # take down session } sub add_user_posix { my ($u) = @_; $u->{var}{defou} = "users,ou=$u->{var}{defou}"; $u->{var}{rootdse} = "dc=mdkc,dc=com"; my $srvhost = "localhost"; output('/tmp/addusr.ldif', <{var}{uid},ou=$u->{var}{defou},$u->{var}{rootdse} objectClass: top objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson sn: $u->{var}{sn} uid: $u->{var}{uid} cn: $u->{var}{cn} userPassword: $u->{var}{uidpass} loginShell: $u->{var}{lshell} uidNumber: $u->{var}{uidnb} gidNumber: $u->{var}{guidnb} homeDirectory:$u->{var}{home} shadowMin: -1 shadowMax: 999999 shadowWarning: 7 shadowInactive: -1 shadowExpire: -1 EOF my $mesg = system("ldapadd -x -h $srvhost -D 'cn=$u->{var}{rootdn},$u->{var}{rootdse}' -f /tmp/addusr.ldif -w $u->{var}{rootpass}"); return $mesg; #$result->code && warn "failed to add entry: ", $result->error; #$mesg = $ldap->unbind; # take down session } 1;