1 # This is a sample Perl module for the OpenLDAP server slapd.
5 # Usage: Add something this to slapd.conf:
8 # suffix "o=AnyOrg, c=US"
9 # perlModulePath /path/to/this/file
10 # perlModule SampleLDAP
22 print STDERR "Here in new\n";
23 print STDERR "Posix Var " . BUFSIZ . " and " . FILENAME_MAX . "\n";
35 my($base, $scope, $deref, $sizeLim, $timeLim, $filterStr, $attrOnly, @attrs ) = @_;
36 print STDERR "====$filterStr====\n";
37 $filterStr =~ s/\(|\)//g;
38 $filterStr =~ s/=/: /;
41 foreach my $dn ( keys %$this ) {
42 if ( $this->{ $dn } =~ /$filterStr/im ) {
44 last if ( scalar @match_dn == $sizeLim );
49 my @match_entries = ();
51 foreach my $dn ( @match_dn ) {
52 push @match_entries, $this->{ $dn };
55 return ( 0 , @match_entries );
62 my ( $dn, $avaStr ) = @_;
63 my $rc = 5; # LDAP_COMPARE_FALSE
67 if ( $this->{ $dn } =~ /$avaStr/im ) {
68 $rc = 6; # LDAP_COMPARE_TRUE
78 my ( $dn, @list ) = @_;
81 my $action = shift @list;
82 my $key = shift @list;
83 my $value = shift @list;
85 if( $action eq "ADD" ) {
86 $this->{ $dn } .= "$key: $value\n";
89 elsif( $action eq "DELETE" ) {
90 $this->{ $dn } =~ s/^$key:\s*$value\n//mi ;
93 elsif( $action eq "REPLACE" ) {
94 $this->{ $dn } =~ s/$key: .*$/$key: $value/im ;
105 my ( $entryStr ) = @_;
107 my ( $dn ) = ( $entryStr =~ /dn:\s(.*)$/m );
110 # This needs to be here until a normalized dn is
111 # passed to this routine.
117 $this->{$dn} = $entryStr;
126 my ( $dn, $newdn, $delFlag ) = @_;
128 $this->{ $newdn } = $this->{ $dn };
131 delete $this->{ $dn };
143 print STDERR "XXXXXX $dn XXXXXXX\n";