home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _44a40704c1b93db0f529c37ab2ebbdb6 < prev    next >
Text File  |  2000-03-23  |  25KB  |  631 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>Net::LDAP -- Lightweight Directory Access Protocol</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> Net::LDAP -- Lightweight Directory Access Protocol</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#constructor">CONSTRUCTOR</A></LI>
  26.     <LI><A HREF="#methods">METHODS</A></LI>
  27.     <LI><A HREF="#controls">CONTROLS</A></LI>
  28.     <LI><A HREF="#callbacks">CALLBACKS</A></LI>
  29.     <LI><A HREF="#ldap error codes">LDAP ERROR CODES</A></LI>
  30.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  31.     <LI><A HREF="#acknowledgements">ACKNOWLEDGEMENTS</A></LI>
  32.     <LI><A HREF="#author">AUTHOR</A></LI>
  33.     <LI><A HREF="#copyright">COPYRIGHT</A></LI>
  34. </UL>
  35. <!-- INDEX END -->
  36.  
  37. <HR>
  38. <P>
  39. <H1><A NAME="name">NAME</A></H1>
  40. <P>Net::LDAP -- Lightweight Directory Access Protocol</P>
  41. <P>
  42. <HR>
  43. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  44. <UL>
  45. <LI>Linux</LI>
  46. <LI>Solaris</LI>
  47. <LI>Windows</LI>
  48. </UL>
  49. <HR>
  50. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  51. <PRE>
  52.  use Net::LDAP;</PRE>
  53. <PRE>
  54.  $ldap = Net::LDAP->new('ldap.bigfoot.com') or die "$@";</PRE>
  55. <PRE>
  56.  $ldap->bind ;    # an anonymous bind</PRE>
  57. <PRE>
  58.  $mesg = $ldap->search (  # perform a search
  59.                         base   => "c=US",
  60.                         filter => "(&(sn=Barr) (o=Texas Instruments))"
  61.                        );</PRE>
  62. <PRE>
  63.  $mesg->code && die $mesg->error;</PRE>
  64. <PRE>
  65.  foreach $entry ($mesg->all_entries) { $entry->dump; }</PRE>
  66. <PRE>
  67.  $ldap->unbind;   # take down session
  68. </PRE>
  69. <PRE>
  70.  
  71.  $ldap = Net::LDAP->new('ldap.umich.edu');</PRE>
  72. <PRE>
  73.  
  74.  $ldap->bind (   # bind to a directory with dn and password
  75.               dn       => 'cn=root, o=University of Michigan, c=us',
  76.               password => 'secret'
  77.              );</PRE>
  78. <PRE>
  79.  $result = $ldap->add (
  80.               dn   => 'cn = Barbara Jensen, o=University of Michigan, c=us',
  81.               attr => [ 'cn'   => ['Barbara Jensen', 'Barbs Jensen'],
  82.                         'sn    => 'Jensen',
  83.                         'mail' => 'b.jensen@umich.edu'
  84.                       ]
  85.             );
  86.   $result->code && warn "failed to add entry: ", $result->error ;</PRE>
  87. <P>
  88. <HR>
  89. <H1><A NAME="description">DESCRIPTION</A></H1>
  90. <P><STRONG>Net::LDAP</STRONG> is a collection of modules that implements a LDAP services API
  91. for Perl programs. The module may be used to search directories or
  92. perform maintenance functions such as add, deleting or modify entries in
  93. an LDAP directory.</P>
  94. <P>This document assumes that the reader has some knowledge of the LDAP
  95. protocol.</P>
  96. <P>
  97. <HR>
  98. <H1><A NAME="constructor">CONSTRUCTOR</A></H1>
  99. <DL>
  100. <DT><STRONG><A NAME="item_new">new ( HOST [, OPTIONS ] )</A></STRONG><BR>
  101. <DD>
  102. Creates a new <STRONG>Net::LDAP</STRONG> object and opens a connection to the named host.
  103. OPTIONS is a list of key-value pairs, valid options are :-
  104. <DL>
  105. <DT><STRONG><A NAME="item_port">port</A></STRONG><BR>
  106. <DD>
  107. Port to connect to on the remote server.
  108. <P></P>
  109. <DT><STRONG><A NAME="item_timeout">timeout</A></STRONG><BR>
  110. <DD>
  111. Timeout passed to <CODE>IO::Socket</CODE> when connecting the remote server.
  112. (Default: 120)
  113. <P></P>
  114. <DT><STRONG><A NAME="item_debug">debug</A></STRONG><BR>
  115. <DD>
  116. If passed a non-zero value then debug data will be sent to <CODE>STDERR</CODE>. The
  117. bits of this value are :-
  118. <PRE>
  119.  1   Show outgoing packets.
  120.  2   Show incoming packets.</PRE>
  121. <P></P>
  122. <DT><STRONG><A NAME="item_async">async</A></STRONG><BR>
  123. <DD>
  124. Perform all operations asynchronously if passed a <EM>true</EM> value.
  125. <P></P></DL>
  126. <P>Example</P>
  127. <PRE>
  128.   $ldap = Net::LDAP->new('remote.host', async => 1);</PRE>
  129. </DL>
  130. <P>
  131. <HR>
  132. <H1><A NAME="methods">METHODS</A></H1>
  133. <P>Each of the following methods take as arguments some number of fixed
  134. parameters followed by options, these options are passed in a named
  135. fashion, for example</P>
  136. <PRE>
  137.   $mesg = $ldap->bind( "me", password => "mypasswd");</PRE>
  138. <P>The return value from these methods is an object derived from the
  139. <A HREF="../../../site/lib/Net/LDAP/Message.html">the Net::LDAP::Message manpage</A> class. The methods of this class allow
  140. you to examine the status of request.</P>
  141. <DL>
  142. <DT><STRONG><A NAME="item_abandon">abandon ( ID [, OPTIONS ] )</A></STRONG><BR>
  143. <DD>
  144. Request server to abandon a request. The id to abandon may be passed as the
  145. first parameter or as part of the options list. The <CODE>ID</CODE> may be a number
  146. or a object which is a sub-class of <CODE>Net::LDAP::Message</CODE>, returned from
  147. a previous method call.
  148. <DL>
  149. <DT><STRONG><A NAME="item_id">id</A></STRONG><BR>
  150. <DD>
  151. This option is here for <STRONG>compatibility only</STRONG>, and may be removed in future.
  152. Previous releases did not take the <CODE>ID</CODE> argument which replaces this option.
  153. <P></P>
  154. <DT><STRONG><A NAME="item_control">control</A></STRONG><BR>
  155. <DD>
  156. See <A HREF="#controls">CONTROLS</A> below
  157. <P></P>
  158. <DT><STRONG><A NAME="item_callback">callback</A></STRONG><BR>
  159. <DD>
  160. See <A HREF="#callbacks">CALLBACKS</A> below
  161. <P></P></DL>
  162. <P><STRONG>Example</STRONG></P>
  163. <PRE>
  164.   $mesg = $ldap->search( @search_args );
  165. </PRE>
  166. <PRE>
  167.  
  168.   $ldap->abandon( $mesg ); # This could be written as $mesg->abandon</PRE>
  169. <DT><STRONG><A NAME="item_add">add ( DN [, OPTIONS ] )</A></STRONG><BR>
  170. <DD>
  171. Add an entry to the directory. The <CODE>DN</CODE> argument can be either a
  172. <A HREF="../../../site/lib/Net/LDAP/Entry.html">the Net::LDAP::Entry manpage</A> object or a string.
  173. <DL>
  174. <DT><STRONG><A NAME="item_dn">dn</A></STRONG><BR>
  175. <DD>
  176. This option is here for <STRONG>compatibility only</STRONG>, and may be removed in future.
  177. Previous releases did not take the <CODE>DN</CODE> argument which replaces this option.
  178. <P></P>
  179. <DT><STRONG><A NAME="item_attrs">attrs</A></STRONG><BR>
  180. <DD>
  181. This argument is a reference to a list of attribute-value pairs. Attributes
  182. with multiple values can be added as either multiple entries or the value
  183. could be a reference to a list of values.
  184. <P>This argument is not used if <CODE>DN</CODE> is a <A HREF="../../../site/lib/Net/LDAP/Entry.html">the Net::LDAP::Entry manpage</A> object.</P>
  185. <P></P>
  186. <DT><STRONG>control</STRONG><BR>
  187. <DD>
  188. See <A HREF="#controls">CONTROLS</A> below
  189. <P></P>
  190. <DT><STRONG>callback</STRONG><BR>
  191. <DD>
  192. See <A HREF="#callbacks">CALLBACKS</A> below
  193. <P></P></DL>
  194. <P><STRONG>Example</STRONG></P>
  195. <PRE>
  196.   # $entry is an object of class Net::LDAP::Entry
  197.   $mesg = $ldap->add( $entry );
  198. </PRE>
  199. <PRE>
  200.  
  201.   $mesg = $ldap->add( $DN,
  202.     attrs => [
  203.       name  => 'Graham Barr',
  204.       attr  => 'value1',
  205.       attr  => 'value2',
  206.       multi => [qw(value1 value2)]
  207.     ]
  208.   );</PRE>
  209. <DT><STRONG><A NAME="item_bind">bind ( [ DN [, OPTIONS ]] )</A></STRONG><BR>
  210. <DD>
  211. Bind to the server. <CODE>DN</CODE> is the DN to bind as. An anonymous bind may be done
  212. by calling bind without any arguments.
  213. <DL>
  214. <DT><STRONG>dn</STRONG><BR>
  215. <DD>
  216. This option is here for <STRONG>compatibility only</STRONG>, and may be removed in future.
  217. Previous releases did not take the <CODE>DN</CODE> argument which replaces this option.
  218. <P></P>
  219. <DT><STRONG>control</STRONG><BR>
  220. <DD>
  221. See <A HREF="#controls">CONTROLS</A> below
  222. <P></P>
  223. <DT><STRONG>callback</STRONG><BR>
  224. <DD>
  225. See <A HREF="#callbacks">CALLBACKS</A> below
  226. <P></P></DL>
  227. <P>Only one of the following should be given, if none are given then <A HREF="#item_noauth"><CODE>noauth</CODE></A>
  228. is assumed.</P>
  229. <DL>
  230. <DT><STRONG><A NAME="item_noauth">noauth</A></STRONG><BR>
  231. <DD>
  232. Bind without any password, the value passed with this option is ignored. This
  233. is the default if no password option is given.
  234. <P></P>
  235. <DT><STRONG><A NAME="item_password">password</A></STRONG><BR>
  236. <DD>
  237. Bind with the given password.
  238. <P></P>
  239. <DT><STRONG><A NAME="item_kerberos41">kerberos41</A></STRONG><BR>
  240. <DD>
  241. Bind using Kerberos V4.1 <EM>not supported</EM>.
  242. <P></P>
  243. <DT><STRONG><A NAME="item_kerberos42">kerberos42</A></STRONG><BR>
  244. <DD>
  245. Bind using Kerberos V4.2 <EM>not supported</EM>.
  246. <P></P>
  247. <DT><STRONG><A NAME="item_sasl">sasl</A></STRONG><BR>
  248. <DD>
  249. Bind using a SASL mechanism. The argument given should be a sub-class
  250. of <A HREF="../../../site/lib/Authen/SASL.html">the Authen::SASL manpage</A>.
  251. <P></P></DL>
  252. <P><STRONG>Example</STRONG></P>
  253. <PRE>
  254.   $ldap->bind; # Anonymous bind
  255. </PRE>
  256. <PRE>
  257.  
  258.   $ldap->bind( $DN, password => $password);</PRE>
  259. <PRE>
  260.  
  261.   # $sasl is an object of class Authen::SASL
  262.   $ldap->bind( $DN, sasl => $sasl, version => 3);</PRE>
  263. <DT><STRONG><A NAME="item_compare">compare ( DN, OPTIONS )</A></STRONG><BR>
  264. <DD>
  265. Perform a comparison on the server.  <CODE>DN</CODE> is the DN which the comparison is
  266. to be performed. <CODE>DN</CODE> May be a string or a <A HREF="../../../site/lib/Net/LDAP/Entry.html">the Net::LDAP::Entry manpage</A>
  267. object.
  268. <DL>
  269. <DT><STRONG>dn</STRONG><BR>
  270. <DD>
  271. This option is here for <STRONG>compatibility only</STRONG>, and may be removed in future.
  272. Previous releases did not take the <CODE>DN</CODE> argument which replaces this option.
  273. <P></P>
  274. <DT><STRONG><A NAME="item_attr">attr</A></STRONG><BR>
  275. <DD>
  276. The name of the attribute to compare.
  277. <P></P>
  278. <DT><STRONG><A NAME="item_value">value</A></STRONG><BR>
  279. <DD>
  280. The value to compare with.
  281. <P></P>
  282. <DT><STRONG>control</STRONG><BR>
  283. <DD>
  284. See <A HREF="#controls">CONTROLS</A> below.
  285. <P></P>
  286. <DT><STRONG>callback</STRONG><BR>
  287. <DD>
  288. See <A HREF="#callbacks">CALLBACKS</A> below.
  289. <P></P></DL>
  290. <P><STRONG>Example</STRONG></P>
  291. <PRE>
  292.   $ldap->compare( $DN,
  293.     attr  => 'cn',
  294.     value => 'Graham Barr'
  295.   );</PRE>
  296. <DT><STRONG><A NAME="item_delete">delete ( DN [, OPTIONS ] )</A></STRONG><BR>
  297. <DD>
  298. Delete <CODE>DN</CODE> from the server. <CODE>DN</CODE> May be a string or a <A HREF="../../../site/lib/Net/LDAP/Entry.html">the Net::LDAP::Entry manpage</A>
  299. object.
  300. <DL>
  301. <DT><STRONG>dn</STRONG><BR>
  302. <DD>
  303. This option is here for <STRONG>compatibility only</STRONG>, and may be removed in future.
  304. Previous releases did not take the <CODE>DN</CODE> argument which replaces this option.
  305. <P></P>
  306. <DT><STRONG>control</STRONG><BR>
  307. <DD>
  308. See <A HREF="#controls">CONTROLS</A> below.
  309. <P></P>
  310. <DT><STRONG>callback</STRONG><BR>
  311. <DD>
  312. See <A HREF="#callbacks">CALLBACKS</A> below.
  313. <P></P></DL>
  314. <P><STRONG>Example</STRONG></P>
  315. <PRE>
  316.  $ldap->delete( $dn );</PRE>
  317. <DT><STRONG><A NAME="item_moddn">moddn ( DN, OPTIONS )</A></STRONG><BR>
  318. <DD>
  319. Modify the DN for <CODE>DN</CODE> on the server. <CODE>DN</CODE> May be a string or a
  320. <A HREF="../../../site/lib/Net/LDAP/Entry.html">the Net::LDAP::Entry manpage</A> object.
  321. <DL>
  322. <DT><STRONG>dn</STRONG><BR>
  323. <DD>
  324. This option is here for <STRONG>compatibility only</STRONG>, and may be removed in future.
  325. Previous releases did not take the <CODE>DN</CODE> argument which replaces this option.
  326. <P></P>
  327. <DT><STRONG><A NAME="item_newrdn">newrdn</A></STRONG><BR>
  328. <DD>
  329. This value should be a new RDN to assign to <CODE>DN</CODE>.
  330. <P></P>
  331. <DT><STRONG><A NAME="item_deleteoldrdn">deleteoldrdn</A></STRONG><BR>
  332. <DD>
  333. This value should be <EM>true</EM> if the existing RDN is to be deleted.
  334. <P></P>
  335. <DT><STRONG><A NAME="item_newsuperior">newsuperior</A></STRONG><BR>
  336. <DD>
  337. If given this value should be the DN of the new superior for <CODE>DN</CODE>.
  338. <P></P>
  339. <DT><STRONG>control</STRONG><BR>
  340. <DD>
  341. See <A HREF="#controls">CONTROLS</A> below.
  342. <P></P>
  343. <DT><STRONG>callback</STRONG><BR>
  344. <DD>
  345. See <A HREF="#callbacks">CALLBACKS</A> below.
  346. <P></P></DL>
  347. <P><STRONG>Example</STRONG></P>
  348. <PRE>
  349.  $ldap->moddn( $dn, newrdn => 'cn=Graham Barr');</PRE>
  350. <DT><STRONG><A NAME="item_modify">modify ( DN, OPTIONS )</A></STRONG><BR>
  351. <DD>
  352. Modify the contents of <CODE>DN</CODE> on the server. <CODE>DN</CODE> May be a string or a
  353. <A HREF="../../../site/lib/Net/LDAP/Entry.html">the Net::LDAP::Entry manpage</A> object.
  354. <DL>
  355. <DT><STRONG>dn</STRONG><BR>
  356. <DD>
  357. This option is here for <STRONG>compatibility only</STRONG>, and may be removed in future.
  358. Previous releases did not take the <CODE>DN</CODE> argument which replaces this option.
  359. <P></P>
  360. <DT><STRONG>add</STRONG><BR>
  361. <DD>
  362. The <A HREF="#item_add"><CODE>add</CODE></A> option should be a reference to a HASH. The values of the
  363. HASH are the attributes to add, and the values may be a string or a reference
  364. to a list of values.
  365. <P></P>
  366. <DT><STRONG>delete</STRONG><BR>
  367. <DD>
  368. A reference to an ARRAY of attributes to delete or a reference to a
  369. HASH (as in <A HREF="#item_add"><CODE>add</CODE></A>) if only specific values should be deleted. If the
  370. value for any attribute in the HASH is a reference to an empty ARRAY
  371. the all instances of the attribute will be deleted.
  372. <P></P>
  373. <DT><STRONG><A NAME="item_replace">replace</A></STRONG><BR>
  374. <DD>
  375. The <replace> option takes a argument in the same form as <A HREF="#item_add"><CODE>add</CODE></A>, but will
  376. cause any existing attributes with the same name to be replaced. If the
  377. value for any attribute in the HASH is a reference to an empty ARRAY
  378. the all instances of the attribute will be deleted.
  379. <P></P>
  380. <DT><STRONG><A NAME="item_changes">changes</A></STRONG><BR>
  381. <DD>
  382. This is an alternative to <A HREF="#item_add"><CODE>add</CODE></A>, <A HREF="#item_delete"><CODE>delete</CODE></A> and <A HREF="#item_replace"><CODE>replace</CODE></A> where the
  383. whole operation can be given in a single argument. The argument should
  384. be a reference to an ARRAY.
  385. <P>Values in the ARRAY are used in pairs, the first is the operation
  386. <A HREF="#item_add"><CODE>add</CODE></A>, <A HREF="#item_delete"><CODE>delete</CODE></A> or <A HREF="#item_replace"><CODE>replace</CODE></A> and the second is a reference to an
  387. ARRAY of attribute values.</P>
  388. <P>The attribute value list is also used in pairs. The first value in each
  389. pair is the attribute name and the second is a reference to a list of values.</P>
  390. <P>Use this form if you want to control the order in which the operations will
  391. be performed.</P>
  392. <P></P>
  393. <DT><STRONG>control</STRONG><BR>
  394. <DD>
  395. See <A HREF="#controls">CONTROLS</A> below.
  396. <P></P>
  397. <DT><STRONG>callback</STRONG><BR>
  398. <DD>
  399. See <A HREF="#callbacks">CALLBACKS</A> below.
  400. <P></P></DL>
  401. <P><STRONG>Example</STRONG></P>
  402. <PRE>
  403.  $ldap->modify( $dn, add => { sn => 'Barr' } );
  404. </PRE>
  405. <PRE>
  406.  
  407.  $ldap->modify( $dn, delete => [qw(faxNumber)]);</PRE>
  408. <PRE>
  409.  
  410.  $ldap->modify( $dn, delete => { 'telephoneNumber' => '911' });</PRE>
  411. <PRE>
  412.  
  413.  $ldap->modify( $dn, replace => { 'email' => 'gbarr@pobox.com' });</PRE>
  414. <PRE>
  415.  
  416.  $ldap->modify( $dn,
  417.    changes => [
  418.      add     => [ sn => 'Barr' ],              # Add sn=Barr
  419.      delete  => [ faxNumber => []],            # Delete all fax numbers
  420.      delete  => [ telephoneNumber => ['911']], # delete phone number 911
  421.      replace => [ email => 'gbarr@pobox.com']  # change email address
  422.    ]
  423.  );</PRE>
  424. <DT><STRONG><A NAME="item_search">search ( OPTIONS )</A></STRONG><BR>
  425. <DD>
  426. The search method will return an object of class <A HREF="../../../site/lib/Net/LDAP/Search.html">the Net::LDAP::Search manpage</A>.
  427. <DL>
  428. <DT><STRONG><A NAME="item_base">base</A></STRONG><BR>
  429. <DD>
  430. The base DN to start the search.
  431. <P></P>
  432. <DT><STRONG><A NAME="item_scope">scope</A></STRONG><BR>
  433. <DD>
  434. The scope for the search. This can be one of <A HREF="#item_base"><CODE>base</CODE></A>, <CODE>one</CODE> or <A HREF="../../../lib/Pod/perlfunc.html#item_sub"><CODE>sub</CODE></A> or
  435. it can be the numeric value for each of these 0,1,2 respectively. The default
  436. is <A HREF="../../../lib/Pod/perlfunc.html#item_sub"><CODE>sub</CODE></A>.
  437. <P></P>
  438. <DT><STRONG><A NAME="item_deref">deref</A></STRONG><BR>
  439. <DD>
  440. What to do when a reference is found. This value can be one of <CODE>never</CODE>,
  441. <A HREF="#item_search"><CODE>search</CODE></A>, <CODE>find</CODE> or <CODE>always</CODE>. Or it can be the numeric value fro each
  442. of these. The default is <CODE>find</CODE>.
  443. <P></P>
  444. <DT><STRONG><A NAME="item_sizelimit">sizelimit</A></STRONG><BR>
  445. <DD>
  446. Set the size limit for the response. zero means no limit. The default is
  447. no limit.
  448. <P></P>
  449. <DT><STRONG><A NAME="item_timelimit">timelimit</A></STRONG><BR>
  450. <DD>
  451. Set the time limit for the response. zero means no limit. The default is
  452. no limit.
  453. <P></P>
  454. <DT><STRONG><A NAME="item_typesonly">typesonly</A></STRONG><BR>
  455. <DD>
  456. If <EM>true</EM> then only the attribute type will be returned. Default is <EM>false</EM>.
  457. <P></P>
  458. <DT><STRONG><A NAME="item_filter">filter</A></STRONG><BR>
  459. <DD>
  460. The filter to use for the search. This may be a string or a <Net::LDAP::Filter>
  461. object.
  462. <P></P>
  463. <DT><STRONG>attrs</STRONG><BR>
  464. <DD>
  465. A reference to a list of attributes to be returned from the server. If not
  466. specified then all attributes will be returned.
  467. <P></P>
  468. <DT><STRONG>control</STRONG><BR>
  469. <DD>
  470. See <A HREF="#controls">CONTROLS</A> below.
  471. <P></P>
  472. <DT><STRONG>callback</STRONG><BR>
  473. <DD>
  474. See <A HREF="#callbacks">CALLBACKS</A> below.
  475. <P></P></DL>
  476. <P><STRONG>Example</STRONG></P>
  477. <PRE>
  478.  $mesg = $ldap->search(
  479.    base   => $base_dn,
  480.    scope  => 'sub',
  481.    filter => '(|(objectclass=rfc822mailgroup)(sn=jones))'
  482.  );
  483. </PRE>
  484. <PRE>
  485.  
  486.  Net::LDAP::LDIF->new(\*STDOUT,"w")->write($mesg->entries);</PRE>
  487. <DT><STRONG><A NAME="item_unbind">unbind</A></STRONG><BR>
  488. <DD>
  489. The unbind method does not take any parameters and will unbind you
  490. from the server. You may then either re-bind with another DN and password
  491. or close the connection.
  492. <P><STRONG>Example</STRONG></P>
  493. <PRE>
  494.  $ldap->unbind;</PRE>
  495. <P></P></DL>
  496. <P>The following methods are for convenience.</P>
  497. <DL>
  498. <DT><STRONG>async</STRONG><BR>
  499. <DD>
  500. Returns <EM>true</EM> if the LDAP operations are being performed asynchronously.
  501. <P></P>
  502. <DT><STRONG>debug ( [ VALUE ] )</STRONG><BR>
  503. <DD>
  504. If <CODE>VALUE</CODE> is given the debug bit-value will be set to <CODE>VALUE</CODE> and the
  505. previous value will be returned. If not given the bit-value will remain
  506. unchanged and will be returned.
  507. <P></P>
  508. <DT><STRONG><A NAME="item_sync">sync ( [ MESG ] )</A></STRONG><BR>
  509. <DD>
  510. Calling this method will synchronize the client with the server. It will
  511. not return until all requests have been completed, or id <CODE>MESG</CODE> is given
  512. it will return when <CODE>MESG</CODE> has been completed.
  513. <P>Returns an error code defined in <A HREF="../../../site/lib/Net/LDAP/Constant.html">the Net::LDAP::Constant manpage</A>.</P>
  514. <P></P>
  515. <DT><STRONG><A NAME="item_version">version</A></STRONG><BR>
  516. <DD>
  517. Returns the version of the LDAP protocol that is being used.
  518. <P></P></DL>
  519. <P>
  520. <HR>
  521. <H1><A NAME="controls">CONTROLS</A></H1>
  522. <P>Many of the methods described above accept a <A HREF="#item_control"><CODE>control</CODE></A> option.
  523. This allows the user to pass controls to the server as described
  524. in LDAPv3. The value to the <A HREF="#item_control"><CODE>control</CODE></A> argument may be either a
  525. HASH reference to a reference to an array of HASH references.</P>
  526. <P>The HASH, or each HASH in the array may contain three elements.</P>
  527. <DL>
  528. <DT><STRONG><A NAME="item_type">type</A></STRONG><BR>
  529. <DD>
  530. This element must be present and is the name of the type of control
  531. being requested.
  532. <P></P>
  533. <DT><STRONG><A NAME="item_critical">critical</A></STRONG><BR>
  534. <DD>
  535. <A HREF="#item_critical"><CODE>critical</CODE></A> is optional and should be a boolean value, if it is not specified
  536. then it is assumed to be <EM>false</EM>.
  537. <P></P>
  538. <DT><STRONG>value</STRONG><BR>
  539. <DD>
  540. If the control being requested requires a value then this element should
  541. hold the value for the server.
  542. <P></P></DL>
  543. <P>
  544. <HR>
  545. <H1><A NAME="callbacks">CALLBACKS</A></H1>
  546. <P>Most of the above commands accept a <A HREF="#item_callback"><CODE>callback</CODE></A> option. This option
  547. should be a reference to a subroutine. This subroutine will be called
  548. for each packet received from the server as a response to the request
  549. sent.</P>
  550. <P>When the subroutine is called the first argument will be the
  551. <A HREF="../../../site/lib/Net/LDAP/Message.html">the Net::LDAP::Message manpage</A> object which was returned from the method.</P>
  552. <P>If the request is a search then multiple packets can be received from
  553. the server. Each entry is received as a separate packet. For each of these
  554. the subroutine will be called with a <A HREF="../../../site/lib/Net/LDAP/Entry.html">the Net::LDAP::Entry manpage</A> object as the second
  555. argument.</P>
  556. <P>During a search the server may also send a list of references. When such
  557. a list is received then the subroutine will be called with a
  558. <A HREF="../../../site/lib/Net/LDAP/Reference.html">the Net::LDAP::Reference manpage</A> object as the second argument.</P>
  559. <P>
  560. <HR>
  561. <H1><A NAME="ldap error codes">LDAP ERROR CODES</A></H1>
  562. <P><STRONG>Net::LDAP</STRONG> also exports constants for the error codes that can be received
  563. from the server, see <A HREF="../../../site/lib/Net/LDAP/Constant.html">the Net::LDAP::Constant manpage</A>.</P>
  564. <P>
  565. <HR>
  566. <H1><A NAME="see also">SEE ALSO</A></H1>
  567. <P><A HREF="../../../site/lib/Net/LDAP/BER.html">the Net::LDAP::BER manpage</A>,
  568. <A HREF="../../../site/lib/Net/LDAP/Constant.html">the Net::LDAP::Constant manpage</A>,
  569. <A HREF="../../../site/lib/Net/LDAP/Entry.html">the Net::LDAP::Entry manpage</A>,
  570. <A HREF="../../../site/lib/Net/LDAP/Filter.html">the Net::LDAP::Filter manpage</A>,
  571. <A HREF="../../../site/lib/Net/LDAP/Message.html">the Net::LDAP::Message manpage</A>,
  572. <A HREF="../../../site/lib/Net/LDAP/Reference.html">the Net::LDAP::Reference manpage</A>,
  573. <A HREF="../../../site/lib/Net/LDAP/Search.html">the Net::LDAP::Search manpage</A>,
  574. <A HREF="../../../site/lib/URI/URL/ldap.html">the URI::URL::ldap manpage</A>,</P>
  575. <P>The LDAP protocol is defined in the following RFC's</P>
  576. <DL>
  577. <DT><STRONG><A NAME="item_RFC%2D2251%7Chttp%3A%2F%2Finfo%2Einternet%2Eisi%2E"><EM>RFC-2251</EM></A></STRONG><BR>
  578. <DD>
  579. Lightweight Directory Access Protocol (v3).
  580. <P></P>
  581. <DT><STRONG><A NAME="item_RFC%2D2252%7Chttp%3A%2F%2Finfo%2Einternet%2Eisi%2E"><EM>RFC-2252</EM></A></STRONG><BR>
  582. <DD>
  583. Attribute Syntax Definitions.
  584. <P></P>
  585. <DT><STRONG><A NAME="item_RFC%2D2253%7Chttp%3A%2F%2Finfo%2Einternet%2Eisi%2E"><EM>RFC-2253</EM></A></STRONG><BR>
  586. <DD>
  587. UTF-8 String Representation of Distinguished Names.
  588. <P></P>
  589. <DT><STRONG><A NAME="item_RFC%2D2254%7Chttp%3A%2F%2Finfo%2Einternet%2Eisi%2E"><EM>RFC-2254</EM></A></STRONG><BR>
  590. <DD>
  591. The String Representation of LDAP Search Filters.
  592. <P></P>
  593. <DT><STRONG><A NAME="item_RFC%2D2255%7Chttp%3A%2F%2Finfo%2Einternet%2Eisi%2E"><EM>RFC-2255</EM></A></STRONG><BR>
  594. <DD>
  595. The LDAP URL Format.
  596. <P></P>
  597. <DT><STRONG><A NAME="item_RFC%2D2256%7Chttp%3A%2F%2Finfo%2Einternet%2Eisi%2E"><EM>RFC-2256</EM></A></STRONG><BR>
  598. <DD>
  599. A Summary of the X.500(96) User Schema for use with LDAPv3.
  600. <P></P></DL>
  601. <P>The homepage for the perl-ldap modules can be found at 
  602. <A HREF="http://www.pobox.com/~gbarr/perl-ldap/">http://www.pobox.com/~gbarr/perl-ldap/</A>.</P>
  603. <P>
  604. <HR>
  605. <H1><A NAME="acknowledgements">ACKNOWLEDGEMENTS</A></H1>
  606. <P>This document is based on a document originally written by Russell Fulton
  607. <<EM><A HREF="mailto:r.fulton@auckland.ac.nz">r.fulton@auckland.ac.nz</A></EM>>.</P>
  608. <P>Chris Ridd @isode.com for the many hours spent testing and contribution
  609. of the ldap* command line utilities.</P>
  610. <P>
  611. <HR>
  612. <H1><A NAME="author">AUTHOR</A></H1>
  613. <P>Graham Barr <EM><EM><<A HREF="mailto:gbarr@pobox.com">gbarr@pobox.com</A>></EM></EM></P>
  614. <P>Please report any bugs, or post any suggestions, to the perl-ldap mailing list
  615. <EM><EM><<A HREF="mailto:perl-ldap@mail.med.cornell.edu">perl-ldap@mail.med.cornell.edu</A>></EM></EM>.</P>
  616. <P>
  617. <HR>
  618. <H1><A NAME="copyright">COPYRIGHT</A></H1>
  619. <P>Copyright (c) 1997-1999 Graham Barr. All rights reserved. This program is
  620. free software; you can redistribute it and/or modify it under the same
  621. terms as Perl itself.</P>
  622. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  623. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  624. <STRONG><P CLASS=block> Net::LDAP -- Lightweight Directory Access Protocol</P></STRONG>
  625. </TD></TR>
  626. </TABLE>
  627.  
  628. </BODY>
  629.  
  630. </HTML>
  631.