265 lines
7.2 KiB
Text
265 lines
7.2 KiB
Text
=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
|
|
|
|
B<Net::LDAP::Schema> 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.
|
|
|
|
=over 4
|
|
|
|
=item attributes
|
|
|
|
With no arguments, returns a list of the names all attributes in the schema.
|
|
|
|
@atts = $schema->attributes();
|
|
|
|
If called with an argument which is the name or oid of a known object class,
|
|
returns a list of the attributes which may (or must) be present in the OC.
|
|
|
|
@person_atts = $schema->attributes( "person" );
|
|
|
|
Return value is an array or array reference depending on calling context, or
|
|
empty list on error.
|
|
|
|
=item ditstructurerules
|
|
|
|
Returns a list of the names of all ditstructurerules in the schema.
|
|
|
|
@dts = $schema->ditstructurerules();
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=item ditcontentrules
|
|
|
|
Returns a list of the names of all ditcontentrules in the schema.
|
|
|
|
@dtc = $schema->ditcontentrules();
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=item dump
|
|
|
|
Given an argument which is the name of a file, and the file or
|
|
directory has write permission, will dump the raw schema
|
|
information to a file. If no argument is given the raw schema
|
|
information is dumped to standard out.
|
|
|
|
$result = $schema->dump( "./schema.dump" );
|
|
|
|
or
|
|
|
|
$result = $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.
|
|
|
|
=item is_objectclass, is_attribute, is_syntax, is_matchingrule
|
|
|
|
Given the name or oid of a schema item (object class, attribute,
|
|
syntax or matchingrule respectively) returns the assoicated OID
|
|
or undef if the name or oid is not of the appropriate type.
|
|
|
|
# Is foo a known OC?
|
|
$oid = $schema->is_objectclass( "foo" );
|
|
# No? Bale out.
|
|
die( "Not an objectclass" ) unless $oid;
|
|
# Yes...so we can do this
|
|
@must = $schema->must( $oid );
|
|
|
|
|
|
=item is_matchingruleuse, is_ditstructurerule, is_ditcontentrule, is_nameform
|
|
|
|
Given the name or oid of a schema item (matchingruleuse, ditstructurerule,
|
|
ditcontentrule or nameform respectively) returns the assoicated OID
|
|
or undef if the name or oid is not of the appropriate type.
|
|
|
|
# Is foo a known OC?
|
|
$oid = $schema->is_nameform( "foo" );
|
|
# No? Bale out.
|
|
die( "Not a nameform" ) unless $oid;
|
|
|
|
=item item
|
|
|
|
Given two arguments, first of which is the name or oid of a known
|
|
object class or attribute and second of which is the name of the
|
|
item, returns the item's data value. The item's value may be
|
|
undefined.
|
|
|
|
@item = $schema->item( $oid, "desc" );
|
|
|
|
Return value is an array or a value depending on calling context.
|
|
|
|
If the first argument is a name and there is more than one item in the
|
|
schema with that name then undef, or the empty list, will be returned.
|
|
|
|
=item items
|
|
|
|
Given an argument which is the name or oid of a known object class or
|
|
attribute, returns the items available for this attribute or object class.
|
|
The returned item name may have an undefined value.
|
|
|
|
@items = $schema->items( $oid );
|
|
|
|
Return value is a list or array reference depending on calling context.
|
|
|
|
If the argument given is a name and there is more than one item in the
|
|
schema with that name then undef, or the empty list, will be returned.
|
|
|
|
=item matchingrules
|
|
|
|
Returns a list of the names of all matchingrules in the schema.
|
|
|
|
@mrs = $schema->matchingrules();
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=item matchingruleuse
|
|
|
|
Returns a list of the names of all matchingruleuse in the schema.
|
|
|
|
@mru = $schema->matchingruleuse();
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=item may
|
|
|
|
Given an argument which is the name or oid of a known object class, returns
|
|
the name of the attributes which are optional in the class.
|
|
|
|
@may = $schema->may( $oc );
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=item must
|
|
|
|
Given an argument which is the name or oid of a known object class, returns
|
|
the name of the attributes which are mandatory in the class
|
|
|
|
@must = $schema->must( $oc );
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=item name
|
|
|
|
Given an argument which is the name or oid of an item,
|
|
returns the items canonical name or undef if the name or oid is not known.
|
|
|
|
If the argument given is a name and there is more than one item in the
|
|
schema with that name then undef will be returned.
|
|
|
|
=item name2oid
|
|
|
|
Given the name of a schema item (object class, attribute or syntax) returns
|
|
the assoicated OID or undef if it is not recognised.
|
|
|
|
It is possible that two objects, of different types, have the same name.
|
|
In this case C<name2oid> will return a list of OIDs in an array context.
|
|
In a scalar context it will return undef if there is more than one object
|
|
with the given name.
|
|
|
|
=item nameforms
|
|
|
|
Returns a list of the names of all nameforms in the schema.
|
|
|
|
@nfm = $schema->nameforms();
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=item objectclasses
|
|
|
|
Returns a list of the names of all objectclasses in the schema.
|
|
|
|
@ocs = $schema->objectclasses();
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=item parse
|
|
|
|
Takes a single argument which can be any of, A message objected returned from
|
|
an LDAP search, a Net::LDAP::Entry object or the name of a file containing
|
|
an LDIF form of the schema.
|
|
|
|
If the argument is a message result from a search, Net::LDAP::Schema will parse
|
|
the schema from the first entry returned.
|
|
|
|
Returns true on success and C<undef> on error.
|
|
|
|
=item superclass
|
|
|
|
Given an argument which is the name or oid of a known objectclass, returns
|
|
the list of names of the immediate superclasses.
|
|
|
|
=item syntax
|
|
|
|
Given an argument which is the name or oid of a known attribute, returns the
|
|
name of the attribute's syntax (or the syntax of the attributes superior
|
|
if the syntax is inherited).
|
|
|
|
$name_syntax = $schema->syntax( "commonName" );
|
|
|
|
=item syntaxes
|
|
|
|
Returns a list of the names of all ldapSyntaxes in the schema. (The name of
|
|
a syntax is not well defined. It may be an OID or abbreviated description).
|
|
|
|
@syns = $schema->syntaxes();
|
|
|
|
Return value is an array or array reference depending on calling context.
|
|
|
|
=back
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<Net::LDAP>,
|
|
L<Net::LDAP::RFC>
|
|
|
|
=head1 AUTHORS
|
|
|
|
Graham Barr <gbarr@pobox.com>
|
|
John Berthels <jjb@nexor.co.uk>
|
|
|
|
Please report any bugs, or post any suggestions, to the perl-ldap mailing list
|
|
<perl-ldap-dev@lists.sourceforge.net>.
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
Copyright (c) 1998-2000 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.
|
|
|
|
=for html <hr>
|
|
|
|
I<$Id$>
|
|
|
|
=cut
|