=head1 NAME Net::LDAP::Schema - Load and manipulate an LDAP v3 Schema =head1 SYNOPSIS use Net::LDAP; use Net::LDAP::Schema; # # Read schema from server # $ldap = Net::LDAP->new ( $server ); $ldap->bind ( ); $schema = $ldap->schema ( ); # # Load from LDIF # $schema = Net::LDAP::Schema->new; $schema->parse ( "schema.ldif" ) or die $schema->error; =head1 DESCRIPTION C provides a means to load an LDAP schema and query it for information regarding supported objectclasses, attributes and syntaxes. =head1 METHODS Where a method is stated as taking the 'name or oid' of a schema item (which may be an object class, attribute or syntax) then a case-insensitive name or raw oid (object identifier, in dotted numeric string form, e.g. 2.5.4.0) may be supplied. Each returned item of schema (eg an attribute definition) is returned in a HASH. The keys in the returned HASH are lowercased versions of the keys read from the server. Here's a partial list (not all HASHes define all keys) although note that RFC 2252 permits other keys as well: name desc obsolete sup equality ordering substr syntax single-value collective no-user-modification usage abstract structural auxiliary must may applies aux not oc form =over 4 =item all_attributes ( ) =item all_ditcontentrules ( ) =item all_ditstructurerules ( ) =item all_matchingrules ( ) =item all_matchingruleuses ( ) =item all_nameforms ( ) =item all_objectclasses ( ) =item all_syntaxes ( ) Returns a list of all the requested types in the schema. =item attribute ( NAME ) =item ditcontentrule ( NAME ) =item ditstructurerule ( NAME ) =item matchingrule ( NAME ) =item matchingruleuse ( NAME ) =item nameform ( NAME ) =item objectclass ( NAME ) =item syntax ( NAME ) Returns a reference to a hash, or C if the schema item does not exist. C can be a name or an OID. $attr_href = $schema->attribute( "attrname" ); =item dump ( ) Dump the raw schema information to standard out. =item dump ( FILENAME ) Dump the raw schema information to a file. $result = $schema->dump ( "./schema.dump" ); If no schema data is returned from directory server, the method will return undefined. Otherwise a value of 1 is always returned. =item error ( ) Returns the last error encountered when parsing the schema. =item may ( OBJECTCLASS ) Given an argument which is the name or oid of a known object class, returns a list of HASHes describing the attributes which are optional in the class. @may = $schema->may ( $oc ); # First optional attr has the name '$may[0]->{name}' =item must ( OBJECTCLASS ) Given an argument which is the name or oid of a known object class, returns a list of HASHes describing the attributes which are mandatory in the class. @must = $schema->must ( $oc ); =item parse ( MESG ) =item parse ( ENTRY ) =item parse ( FILENAME ) Takes a single argument which can be any of, a message object returned from an LDAP search, a C object or the name of a file containing an LDIF form of the schema. If the argument is a message result from a search, C will parse the schema from the first entry returned. Returns true on success and C on error. =item superclass ( NAME ) Given an argument which is the name or oid of a known objectclass, returns the list of names of the immediate superclasses. =item matchingrule_for_attribute ( NAME, RULE ) Given an attribute name and a matching rule (C, C, etc), return the actual rule taking into account attribute supertypes. =back =head1 SEE ALSO L, L =head1 AUTHORS Graham Barr Egbarr@pobox.comE John Berthels Ejjb@nexor.co.ukE Please report any bugs, or post any suggestions, to the perl-ldap mailing list Eperl-ldap@perl.orgE. =head1 COPYRIGHT Copyright (c) 1998-2004 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut