1 1.1.1.4 tron # $OpenLDAP$ 2 1.1 lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>. 3 1.1 lukem ## 4 1.1.1.10 christos ## Copyright 1998-2024 The OpenLDAP Foundation. 5 1.1 lukem ## All rights reserved. 6 1.1 lukem ## 7 1.1 lukem ## Redistribution and use in source and binary forms, with or without 8 1.1 lukem ## modification, are permitted only as authorized by the OpenLDAP 9 1.1 lukem ## Public License. 10 1.1 lukem ## 11 1.1 lukem ## A copy of this license is available in the file LICENSE in the 12 1.1 lukem ## top-level directory of the distribution or, alternatively, at 13 1.1 lukem ## <http://www.OpenLDAP.org/license.html>. 14 1.1 lukem # 15 1.1 lukem # 16 1.1 lukem # OpenLDAP Project's directory schema items 17 1.1 lukem # 18 1.1 lukem # depends upon: 19 1.1 lukem # core.schema 20 1.1 lukem # cosine.schema 21 1.1 lukem # inetorgperson.schema 22 1.1 lukem # 23 1.1 lukem # These are provided for informational purposes only. 24 1.1 lukem # 25 1.1 lukem # This openldap.ldif file is provided as a demonstration of how to 26 1.1 lukem # convert a *.schema file into *.ldif format. The key points: 27 1.1 lukem # In LDIF, a blank line terminates an entry. Blank lines in a *.schema 28 1.1 lukem # file should be replaced with a single '#' to turn them into 29 1.1 lukem # comments, or they should just be removed. 30 1.1 lukem # In addition to the actual schema directives, the file needs a small 31 1.1 lukem # header to make it a valid LDAP entry. This header must provide the 32 1.1 lukem # dn of the entry, the objectClass, and the cn, as shown here: 33 1.1 lukem # 34 1.1 lukem dn: cn=openldap,cn=schema,cn=config 35 1.1 lukem objectClass: olcSchemaConfig 36 1.1 lukem cn: openldap 37 1.1 lukem # 38 1.1 lukem # The schema directives need to be changed to LDAP Attributes. 39 1.1 lukem # First a basic string substitution can be done on each of the keywords: 40 1.1 lukem # objectIdentifier -> olcObjectIdentifier: 41 1.1 lukem # objectClass -> olcObjectClasses: 42 1.1 lukem # attributeType -> olcAttributeTypes: 43 1.1 lukem # Then leading whitespace must be fixed. The slapd.conf format allows 44 1.1 lukem # tabs or spaces to denote line continuation, while LDIF only allows 45 1.1 lukem # the space character. 46 1.1 lukem # Also slapd.conf preserves the continuation character, while LDIF strips 47 1.1 lukem # it out. So a single TAB/SPACE in slapd.conf must be replaced with 48 1.1 lukem # two SPACEs in LDIF, otherwise the continued text may get joined as 49 1.1 lukem # a single word. 50 1.1 lukem # The directives must be listed in a proper sequence: 51 1.1 lukem # All olcObjectIdentifiers must be first, so they may be referenced by 52 1.1 lukem # any following definitions. 53 1.1 lukem # All olcAttributeTypes must be next, so they may be referenced by any 54 1.1 lukem # following objectClass definitions. 55 1.1 lukem # All olcObjectClasses must be after the olcAttributeTypes. 56 1.1 lukem # And of course, any superior must occur before anything that inherits 57 1.1 lukem # from it. 58 1.1 lukem # 59 1.1 lukem olcObjectIdentifier: OpenLDAProot 1.3.6.1.4.1.4203 60 1.1 lukem # 61 1.1 lukem olcObjectIdentifier: OpenLDAP OpenLDAProot:1 62 1.1 lukem olcObjectIdentifier: OpenLDAPattributeType OpenLDAP:3 63 1.1 lukem olcObjectIdentifier: OpenLDAPobjectClass OpenLDAP:4 64 1.1 lukem # 65 1.1 lukem olcObjectClasses: ( OpenLDAPobjectClass:3 66 1.1 lukem NAME 'OpenLDAPorg' 67 1.1 lukem DESC 'OpenLDAP Organizational Object' 68 1.1 lukem SUP organization 69 1.1 lukem MAY ( buildingName $ displayName $ labeledURI ) ) 70 1.1 lukem # 71 1.1 lukem olcObjectClasses: ( OpenLDAPobjectClass:4 72 1.1 lukem NAME 'OpenLDAPou' 73 1.1 lukem DESC 'OpenLDAP Organizational Unit Object' 74 1.1 lukem SUP organizationalUnit 75 1.1 lukem MAY ( buildingName $ displayName $ labeledURI $ o ) ) 76 1.1 lukem # 77 1.1 lukem olcObjectClasses: ( OpenLDAPobjectClass:5 78 1.1 lukem NAME 'OpenLDAPperson' 79 1.1 lukem DESC 'OpenLDAP Person' 80 1.1 lukem SUP ( pilotPerson $ inetOrgPerson ) 81 1.1 lukem MUST ( uid $ cn ) 82 1.1 lukem MAY ( givenName $ labeledURI $ o ) ) 83 1.1 lukem # 84 1.1 lukem olcObjectClasses: ( OpenLDAPobjectClass:6 85 1.1 lukem NAME 'OpenLDAPdisplayableObject' 86 1.1 lukem DESC 'OpenLDAP Displayable Object' 87 1.1 lukem AUXILIARY 88 1.1 lukem MAY displayName ) 89