]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-perl/SampleLDAP.pm
return structuralObjectClass errors
[openldap] / servers / slapd / back-perl / SampleLDAP.pm
index 24fd78edc209abc58b8eb6d6fcb2da1c030a7789..9d668982914fc10f8f49259101d74838db8cc926 100644 (file)
-
-=head1 Introduction
-
-This is a sample Perl module for the OpenLDAP server slapd.
-It also contains the documentation that you will need to
-get up and going.
-
-WARNING: the interfaces of this backen to the perl module
-MAY change.  Any suggestions would greatly be appreciated.
-
-
-=head1 Overview
-
-The Perl back end works by embedding a Perl interpreter into
-the slapd backend. Then when the configuration file indicates
-that we are going to be using a Perl backend it will get an
-option that tells it what module to use.  It then creates a 
-new Perl object that handles all the request for that particular
-instance of the back end.
-
-
-=head1 Interface
-
-You will need to create a method for each one of the
-following actions that you wish to handle.
-
-   * new        # Creates a new object.
-   * search     # Performs the ldap search
-   * compare    # does a compare
-   * modify     # modify's and entry
-   * add        # adds an entry to back end
-   * modrdn     # modifies a an entries rdn
-   * delete     # deletes an ldap entry
-   * config     # process unknow config file lines
-
-=head2 new
-
-This method is called when the config file encounters a 
-B<perlmod> line. The module in that line is then effectively
-used into the perl interpreter, then the new method is called
-to create a new object.  Note that multiple instances of that
-object may be instantiated, as with any perl object.
-
-The new method doesn't receive any arguments other than the
-class name.
-
-RETURN: 
-
-=head2 search
-
-This method is called when a search request comes from a client.
-It arguments are as follow.
-
-  * obj reference
-  * filter string
-  * size limit
-  * time limit
-  * attributes only flag ( 1 for yes )
-  * list of attributes that are to be returned. (could be empty)
-
-RETURN:
-
-=head2 compare
-
-This method is called when a compare request comes from a client.
-Its arguments are as follows.
-
-  * obj reference
-  * dn
-  * attribute assertion string
-
-RETURN:
-
-=head2 modify
-
-This method is called when a modify request comes from a client.
-Its arguments are as follows.
-
-  * obj reference
-  * dn
-  * lists formatted as follows
-   { ADD | DELETE | REPLACE }, key, value
-
-RETURN:
-
-=head2 add
-
-This method is called when a add request comes from a client.
-Its arguments are as follows.
-
-  * obj reference
-  * entry in string format.
-
-RETURN:
-
-=head2 modrdn
-
-This method is called when a modrdn request comes from a client.
-Its arguments are as follows.
-
-  * obj reference
-  * dn
-  * new rdn
-  * delete old dn flage ( 1 means yes )
-
-RETURN:
-
-=head2 delete
-
-This method is called when a delete request comes from a client.
-Its arguments are as follows.
-
-  * obj reference
-  * dn
-
-RETURN:
-
-=head2 config
-
-  * obj reference
-  * arrray of arguments on line
-
-RETURN: non zero value if this is not a valid option.
-
-=head1 Configuration
-
-The perl section of the config file recognizes the following 
-options.  It should also be noted that any option not recoginized
-will be sent to the B<config> method of the perl module as noted
-above.
-
-  database perl         # startn section for the perl database
-
-  suffix          "o=AnyOrg, c=US"
-
-  perlModulePath /path/to/libs  # addes the path to @INC variable same
-                             # as "use lib '/path/to/libs'"
-
-  perlModule ModName       # use the module name ModName from ModName.pm
-
-
-
-=cut
+# This is a sample Perl module for the OpenLDAP server slapd.
+# $OpenLDAP$
+## This work is part of OpenLDAP Software <http://www.openldap.org/>.
+##
+## Copyright 1998-2006 The OpenLDAP Foundation.
+## Portions Copyright 1999 John C. Quillan.
+## All rights reserved.
+##
+## Redistribution and use in source and binary forms, with or without
+## modification, are permitted only as authorized by the OpenLDAP
+## Public License.
+##
+## A copy of this license is available in the file LICENSE in the
+## top-level directory of the distribution or, alternatively, at
+## <http://www.OpenLDAP.org/license.html>.
+#
+# Usage: Add something like this to slapd.conf:
+#
+#      database        perl
+#      suffix          "o=AnyOrg,c=US"
+#      perlModulePath  /path/to/this/file
+#      perlModule      SampleLDAP
 
 package SampleLDAP;
 
@@ -157,10 +36,15 @@ sub new
        return $this;
 }
 
+sub init
+{
+       return 0;
+}
+
 sub search
 {
        my $this = shift;
-       my( $filterStr, $sizeLim, $timeLim, $attrOnly, @attrs ) = @_;
+       my($base, $scope, $deref, $sizeLim, $timeLim, $filterStr, $attrOnly, @attrs ) = @_;
         print STDERR "====$filterStr====\n";
        $filterStr =~ s/\(|\)//g;
        $filterStr =~ s/=/: /;
@@ -188,12 +72,12 @@ sub compare
 {
        my $this = shift;
        my ( $dn, $avaStr ) = @_;
-       my $rc = 0;
+       my $rc = 5; # LDAP_COMPARE_FALSE
 
        $avaStr =~ s/=/: /;
 
        if ( $this->{ $dn } =~ /$avaStr/im ) {
-               $rc = 1;
+               $rc = 6; # LDAP_COMPARE_TRUE
        }
 
        return $rc;
@@ -235,7 +119,7 @@ sub add
        my ( $dn ) = ( $entryStr =~ /dn:\s(.*)$/m );
 
        #
-       # This needs to be here untill a normalize dn is
+       # This needs to be here until a normalized dn is
        # passed to this routine.
        #
        $dn = uc( $dn );
@@ -284,5 +168,3 @@ sub config
 }
 
 1;
-
-