slapd-perl.5 revision 1.7 1 1.5 tron .lf 1 stdin
2 1.7 christos .TH SLAPD-PERL 5 "2025/05/22" "OpenLDAP 2.6.10"
3 1.5 tron .\" $OpenLDAP$
4 1.1 lukem .SH NAME
5 1.3 lukem slapd\-perl \- Perl backend to slapd
6 1.1 lukem .SH SYNOPSIS
7 1.1 lukem /etc/openldap/slapd.conf
8 1.1 lukem .SH DESCRIPTION
9 1.1 lukem The Perl backend to
10 1.1 lukem .BR slapd (8)
11 1.1 lukem works by embedding a
12 1.1 lukem .BR perl (1)
13 1.1 lukem interpreter into
14 1.1 lukem .BR slapd (8).
15 1.1 lukem Any perl database section of the configuration file
16 1.1 lukem .BR slapd.conf (5)
17 1.1 lukem must then specify what Perl module to use.
18 1.1 lukem .B Slapd
19 1.1 lukem then creates a new Perl object that handles all the requests for that
20 1.1 lukem particular instance of the backend.
21 1.1 lukem .LP
22 1.1 lukem You will need to create a method for each one of the
23 1.1 lukem following actions:
24 1.1 lukem .LP
25 1.1 lukem .nf
26 1.1 lukem * new # creates a new object,
27 1.1 lukem * search # performs the ldap search,
28 1.1 lukem * compare # does a compare,
29 1.1 lukem * modify # modifies an entry,
30 1.1 lukem * add # adds an entry to backend,
31 1.1 lukem * modrdn # modifies an entry's rdn,
32 1.1 lukem * delete # deletes an ldap entry,
33 1.5 tron * config # module-specific config directives,
34 1.1 lukem * init # called after backend is initialized.
35 1.1 lukem .fi
36 1.1 lukem .LP
37 1.1 lukem Unless otherwise specified, the methods return the result code
38 1.1 lukem which will be returned to the client. Unimplemented actions
39 1.1 lukem can just return unwillingToPerform (53).
40 1.1 lukem .TP
41 1.1 lukem .B new
42 1.1 lukem This method is called when the configuration file encounters a
43 1.1 lukem .B perlmod
44 1.1 lukem line.
45 1.1 lukem The module in that line is then effectively `use'd into the perl
46 1.1 lukem interpreter, then the \fBnew\fR method is called to create a new
47 1.1 lukem object.
48 1.1 lukem Note that multiple instances of that object may be instantiated, as
49 1.1 lukem with any perl object.
50 1.1 lukem .\" .LP
51 1.1 lukem The
52 1.1 lukem .B new
53 1.1 lukem method receives the class name as argument.
54 1.1 lukem .TP
55 1.1 lukem .B search
56 1.1 lukem This method is called when a search request comes from a client.
57 1.1 lukem It arguments are as follows:
58 1.1 lukem .nf
59 1.1 lukem * object reference
60 1.1 lukem * base DN
61 1.1 lukem * scope
62 1.1 lukem * alias dereferencing policy
63 1.1 lukem * size limit
64 1.1 lukem * time limit
65 1.1 lukem * filter string
66 1.1 lukem * attributes only flag (1 for yes)
67 1.1 lukem * list of attributes to return (may be empty)
68 1.1 lukem .fi
69 1.1 lukem .LP
70 1.1 lukem Return value: (resultcode, ldif-entry, ldif-entry, ...)
71 1.1 lukem .TP
72 1.1 lukem .B compare
73 1.1 lukem This method is called when a compare request comes from a client.
74 1.1 lukem Its arguments are as follows.
75 1.1 lukem .nf
76 1.1 lukem * object reference
77 1.1 lukem * dn
78 1.1 lukem * attribute assertion string
79 1.1 lukem .fi
80 1.1 lukem .LP
81 1.1 lukem .TP
82 1.1 lukem .B modify
83 1.1 lukem This method is called when a modify request comes from a client.
84 1.1 lukem Its arguments are as follows.
85 1.1 lukem .nf
86 1.1 lukem * object reference
87 1.1 lukem * dn
88 1.1 lukem * a list formatted as follows
89 1.1 lukem ({ "ADD" | "DELETE" | "REPLACE" },
90 1.1 lukem attributetype, value...)...
91 1.1 lukem .fi
92 1.1 lukem .LP
93 1.1 lukem .TP
94 1.1 lukem .B add
95 1.1 lukem This method is called when a add request comes from a client.
96 1.1 lukem Its arguments are as follows.
97 1.1 lukem .nf
98 1.1 lukem * object reference
99 1.1 lukem * entry in string format
100 1.1 lukem .fi
101 1.1 lukem .LP
102 1.1 lukem .TP
103 1.1 lukem .B modrdn
104 1.1 lukem This method is called when a modrdn request comes from a client.
105 1.1 lukem Its arguments are as follows.
106 1.1 lukem .nf
107 1.1 lukem * object reference
108 1.1 lukem * dn
109 1.1 lukem * new rdn
110 1.1 lukem * delete old dn flag (1 means yes)
111 1.1 lukem .fi
112 1.1 lukem .LP
113 1.1 lukem .TP
114 1.1 lukem .B delete
115 1.1 lukem This method is called when a delete request comes from a client.
116 1.1 lukem Its arguments are as follows.
117 1.1 lukem .nf
118 1.1 lukem * object reference
119 1.1 lukem * dn
120 1.1 lukem .fi
121 1.1 lukem .LP
122 1.1 lukem .TP
123 1.1 lukem .B config
124 1.5 tron This method is called once for each perlModuleConfig line in the
125 1.1 lukem .BR slapd.conf (5)
126 1.5 tron configuration file.
127 1.1 lukem Its arguments are as follows.
128 1.1 lukem .nf
129 1.1 lukem * object reference
130 1.1 lukem * array of arguments on line
131 1.1 lukem .fi
132 1.1 lukem .LP
133 1.1 lukem Return value: nonzero if this is not a valid option.
134 1.1 lukem .TP
135 1.1 lukem .B init
136 1.1 lukem This method is called after backend is initialized.
137 1.1 lukem Its argument is as follows.
138 1.1 lukem .nf
139 1.1 lukem * object reference
140 1.1 lukem .fi
141 1.1 lukem .LP
142 1.1 lukem Return value: nonzero if initialization failed.
143 1.1 lukem .SH CONFIGURATION
144 1.1 lukem These
145 1.1 lukem .B slapd.conf
146 1.1 lukem options apply to the PERL backend database.
147 1.1 lukem That is, they must follow a "database perl" line and come before any
148 1.1 lukem subsequent "backend" or "database" lines.
149 1.1 lukem Other database options are described in the
150 1.1 lukem .BR slapd.conf (5)
151 1.1 lukem manual page.
152 1.1 lukem .TP
153 1.1 lukem .B perlModulePath /path/to/libs
154 1.1 lukem Add the path to the @INC variable.
155 1.1 lukem .TP
156 1.1 lukem .B perlModule ModName
157 1.1 lukem `Use' the module name ModName from ModName.pm
158 1.1 lukem .TP
159 1.1 lukem .B filterSearchResults
160 1.1 lukem Search results are candidates that need to be filtered (with the
161 1.1 lukem filter in the search request), rather than search results to be
162 1.1 lukem returned directly to the client.
163 1.5 tron .TP
164 1.5 tron .B perlModuleConfig <arguments>
165 1.5 tron Invoke the module's config method with the given arguments.
166 1.1 lukem .SH EXAMPLE
167 1.3 lukem There is an example Perl module `SampleLDAP' in the slapd/back\-perl/
168 1.1 lukem directory in the OpenLDAP source tree.
169 1.1 lukem .SH ACCESS CONTROL
170 1.1 lukem The
171 1.5 tron .B perl
172 1.1 lukem backend does not honor any of the access control semantics described in
173 1.1 lukem .BR slapd.access (5);
174 1.1 lukem all access control is delegated to the underlying PERL scripting.
175 1.1 lukem Only
176 1.1 lukem .B read (=r)
177 1.1 lukem access to the
178 1.1 lukem .B entry
179 1.1 lukem pseudo-attribute and to the other attribute values of the entries
180 1.1 lukem returned by the
181 1.1 lukem .B search
182 1.1 lukem operation is honored, which is performed by the frontend.
183 1.1 lukem .SH WARNING
184 1.1 lukem The interface of this backend to the perl module MAY change.
185 1.1 lukem Any suggestions would greatly be appreciated.
186 1.5 tron
187 1.5 tron Note: in previous versions, any unrecognized lines in the slapd.conf
188 1.5 tron file were passed to the perl module's config method. This behavior is
189 1.5 tron deprecated (but still allowed for backward compatibility), and the
190 1.5 tron perlModuleConfig directive should instead be used to invoke the
191 1.5 tron module's config method. This compatibility feature will be removed at
192 1.5 tron some future date.
193 1.1 lukem .SH FILES
194 1.1 lukem .TP
195 1.1 lukem /etc/openldap/slapd.conf
196 1.1 lukem default slapd configuration file
197 1.1 lukem .SH SEE ALSO
198 1.1 lukem .BR slapd.conf (5),
199 1.1 lukem .BR slapd (8),
200 1.1 lukem .BR perl (1).
201