#
# Copyright (c) 2007-2008 Suretec Systems Ltd. - <http://www.suretecsystems.com/>
#
# Version: 3.1.5
#
# Changes:
# - Fixed wrong DESC - 07/05/2008
#
# Author: Gavin Henry - <ghenry@suretecsystems.com>
#
# Asterisk LDAP Schema ldif
#
# Digium root OID (http://www.iana.org/assignments/enterprise-numbers)
#
#  1.3.6.1.4.1.22736
#  1.3.6.1.4.1.22736.5      LDAP elements
#  1.3.6.1.4.1.22736.5.4    Attribute Types
#  1.3.6.1.4.1.22736.5.5    Object Classes
#
dn: cn=asterisk,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: asterisk
#
olcObjectIdentifier: AsteriskRoot 1.3.6.1.4.1.22736
olcObjectIdentifier: AsteriskLDAP AsteriskRoot:5
#
#############################################################################
# Attribute group OIDs.  e.g.: olcObjectIdentifier: AstAttrType AsteriskLDAP:4
#############################################################################
olcObjectIdentifier: AstAttrType AsteriskLDAP:4
#
#
#############################################################################
# Attribute OIDs e.g.: olcObjectIdentifier: AstContext AstAttrType:1
#############################################################################
olcObjectIdentifier: AstContext AstAttrType:1
olcObjectIdentifier: AstExtension AstAttrType:2
olcObjectIdentifier: AstPriority AstAttrType:3
olcObjectIdentifier: AstApplication AstAttrType:4
olcObjectIdentifier: AstApplicationData AstAttrType:5
olcObjectIdentifier: AstAccountAMAFlags AstAttrType:6
olcObjectIdentifier: AstAccountCallerID AstAttrType:7
olcObjectIdentifier: AstAccountContext AstAttrType:8
olcObjectIdentifier: AstAccountMailbox AstAttrType:9
olcObjectIdentifier: AstMD5secret AstAttrType:10
olcObjectIdentifier: AstAccountDeny AstAttrType:11
olcObjectIdentifier: AstAccountPermit AstAttrType:12
olcObjectIdentifier: AstAccountQualify AstAttrType:13
olcObjectIdentifier: AstAccountType AstAttrType:14
olcObjectIdentifier: AstAccountDisallowedCodec AstAttrType:15
olcObjectIdentifier: AstAccountExpirationTimestamp AstAttrType:16
olcObjectIdentifier: AstAccountRegistrationContext AstAttrType:17
olcObjectIdentifier: AstAccountRegistrationExten AstAttrType:18
olcObjectIdentifier: AstAccountNoTransfer AstAttrType:19
olcObjectIdentifier: AstAccountCallGroup AstAttrType:20
olcObjectIdentifier: AstAccountCanReinvite AstAttrType:21
olcObjectIdentifier: AstAccountDTMFMode AstAttrType:22
olcObjectIdentifier: AstAccountFromUser AstAttrType:23
olcObjectIdentifier: AstAccountFromDomain AstAttrType:24
olcObjectIdentifier: AstAccountFullContact AstAttrType:25
olcObjectIdentifier: AstAccountHost AstAttrType:26
olcObjectIdentifier: AstAccountInsecure AstAttrType:27
olcObjectIdentifier: AstAccountNAT AstAttrType:28
olcObjectIdentifier: AstAccountPickupGroup AstAttrType:29
olcObjectIdentifier: AstAccountPort AstAttrType:30
olcObjectIdentifier: AstAccountRestrictCID AstAttrType:31
olcObjectIdentifier: AstAccountRTPTimeout AstAttrType:32
olcObjectIdentifier: AstAccountRTPHoldTimeout AstAttrType:33
olcObjectIdentifier: AstAccountRealmedPassword AstAttrType:34
olcObjectIdentifier: AstAccountAllowedCodec AstAttrType:35
olcObjectIdentifier: AstAccountMusicOnHold AstAttrType:36
olcObjectIdentifier: AstAccountCanCallForward AstAttrType:37
olcObjectIdentifier: AstAccountSecret AstAttrType:38
olcObjectIdentifier: AstAccountName AstAttrType:39
olcObjectIdentifier: AstConfigFilename AstAttrType:40
olcObjectIdentifier: AstConfigCategory AstAttrType:41
olcObjectIdentifier: AstConfigCategoryMetric AstAttrType:42
olcObjectIdentifier: AstConfigVariableName AstAttrType:43
olcObjectIdentifier: AstConfigVariableValue AstAttrType:44
olcObjectIdentifier: AstConfigCommented AstAttrType:45
#
#
#############################################################################
# Object Class OIDs
#############################################################################
olcObjectIdentifier: AstObjectClass AsteriskLDAP:2
olcObjectIdentifier: AsteriskExtension AstObjectClass:1
olcObjectIdentifier: AsteriskIAXUser AstObjectClass:2
olcObjectIdentifier: AsteriskSIPUser AstObjectClass:3
olcObjectIdentifier: AsteriskConfig AstObjectClass:4
#
#
#############################################################################
# attribute definitions
#
# OID (the first arg) comes from the olcObjectIdentifier: defined above
#
# NAME should be the same as olcObjectIdentifier:
#
# DESC should be the description of the attribute
#
# EQUALITY is the rule to use when doing a search/compare for an
# attribute value.
#
# SUBSTR is the rule to use when doing a substring search (*foo*)
#
# SYNTAX is the syntax (i.e., type) of the attribute. We should
# probably stick to syntaxes:
#
#       1.3.6.1.4.1.1466.115.121.1.15   -> directoryString (UTF-8 string)
#       1.3.6.1.4.1.1466.115.121.1.26   -> IA5String (ASCII String)
#       1.3.6.1.4.1.1466.115.121.1.27   -> integer (Integer value)
#
# SINGLE-VALUE should be present if only one instance of this
# attribute is allowed within an entry.
#
# {32} is the allowed length
#
# e.g.:
# 
# olcAttributeTypes: ( AstExample
#    NAME ( 'AstExample' )
#    DESC 'Asterisk Example Attribute'
#    EQUALITY caseIgnoreMatch
#    SUBSTR caseIgnoreSubstringsMatch
#    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32} 
#    SINGLE-VALUE )
#
#############################################################################
#
olcAttributeTypes: ( AstContext
        NAME 'AstContext'
        DESC 'Asterisk Context'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstExtension
        NAME 'AstExtension'
        DESC 'Asterisk Extension'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#       
olcAttributeTypes: ( AstPriority
        NAME 'AstPriority'
        DESC 'Asterisk Priority'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstApplication 
        NAME 'AstApplication'
        DESC 'Asterisk Application'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstApplicationData 
        NAME 'AstApplicationData'
        DESC 'Asterisk Application Data'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#        
olcAttributeTypes: ( AstAccountAMAFlags 
        NAME 'AstAccountAMAFlags'
        DESC 'Asterisk Account AMA Flags'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountCallerID 
        NAME 'AstAccountCallerID'
        DESC 'Asterisk Account CallerID'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountContext 
        NAME 'AstAccountContext'
        DESC 'Asterisk Account Context'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#        
olcAttributeTypes: ( AstAccountMailbox 
        NAME 'AstAccountMailbox'
        DESC 'Asterisk Account Mailbox'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstMD5secret
        NAME 'AstMD5secret'
        DESC 'Asterisk Account MD5 Secret'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountDeny 
        NAME 'AstAccountDeny'
        DESC 'Asterisk Account Deny'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountPermit 
        NAME 'AstAccountPermit'
        DESC 'Asterisk Account Permit'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#       
olcAttributeTypes: ( AstAccountQualify 
        NAME 'AstAccountQualify'
        DESC 'Asterisk Account Qualify'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountType 
        NAME 'AstAccountType'
        DESC 'Asterisk Account Type'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountDisallowedCodec 
        NAME 'AstAccountDisallowedCodec'
        DESC 'Asterisk Account Disallowed Codec'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountExpirationTimestamp 
        NAME 'AstAccountExpirationTimestamp'
        DESC 'Asterisk Account Expiration Timestamp'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountRegistrationContext 
        NAME 'AstAccountRegistrationContext'
        DESC 'Asterisk Account Registration Context'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountRegistrationExten 
        NAME 'AstAccountRegistrationExten'
        DESC 'Asterisk Account Registration Extension'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountNoTransfer 
        NAME 'AstAccountNoTransfer'
        DESC 'Asterisk Account No Transfer'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#        
olcAttributeTypes: ( AstAccountCallGroup 
        NAME 'AstAccountCallGroup'
        DESC 'Asterisk Account Call Group'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountCanReinvite 
        NAME 'AstAccountCanReinvite'
        DESC 'Asterisk Account Can Reinvite'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#    
olcAttributeTypes: ( AstAccountDTMFMode 
        NAME 'AstAccountDTMFMode'
        DESC 'Asterisk Account DTMF Flags'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#            
olcAttributeTypes: ( AstAccountFromUser 
        NAME 'AstAccountFromUser'
        DESC 'Asterisk Account From User'
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#        
olcAttributeTypes: ( AstAccountFromDomain
        NAME 'AstAccountFromDomain'
        DESC 'Asterisk Account From Domain'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#        
olcAttributeTypes: ( AstAccountFullContact 
        NAME 'AstAccountFullContact'
        DESC 'Asterisk Account Full Contact'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountHost 
        NAME 'AstAccountHost'
        DESC 'Asterisk Account Host'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountInsecure
        NAME 'AstAccountInsecure'
        DESC 'Asterisk Account Insecure'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountNAT 
        NAME 'AstAccountNAT'
        DESC 'Asterisk Account NAT'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#     
olcAttributeTypes: ( AstAccountPickupGroup 
        NAME 'AstAccountPickupGroup'
        DESC 'Asterisk Account PickupGroup'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#      
olcAttributeTypes: ( AstAccountPort 
        NAME 'AstAccountPort'
        DESC 'Asterisk Account Port'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#      
olcAttributeTypes: ( AstAccountRestrictCID 
        NAME 'AstAccountRestrictCID'
        DESC 'Asterisk Account Restrict CallerID'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#            
olcAttributeTypes: ( AstAccountRTPTimeout 
        NAME 'AstAccountRTPTimeout'
        DESC 'Asterisk Account RTP Timeout'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#      
olcAttributeTypes: ( AstAccountRTPHoldTimeout 
        NAME 'AstAccountRTPHoldTimeout'
        DESC 'Asterisk Account RTP Hold Timeout'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#      
olcAttributeTypes: ( AstAccountRealmedPassword 
        NAME 'AstAccountRealmedPassword'
        DESC 'Asterisk Account Realmed Password'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountAllowedCodec 
        NAME 'AstAccountAllowedCodec' 
        DESC 'Asterisk Account Allowed Codec'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountMusicOnHold 
        NAME 'AstAccountMusicOnHold'
        DESC 'Asterisk Account Music On Hold'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountCanCallForward 
        NAME 'AstAccountCanCallForward'
        DESC 'Asterisk Account Can Call Forward' 
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountSecret 
        NAME 'AstAccountSecret'
        DESC 'Asterisk Account Secret' 
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#         
olcAttributeTypes: ( AstAccountName 
        NAME 'AstAccountName'
        DESC 'Asterisk Account Username'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstConfigFilename 
        NAME 'AstConfigFilename'
        DESC 'Asterisk LDAP Configuration Filename'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstConfigCategory
        NAME 'AstConfigCategory'
        DESC 'Asterisk LDAP Configuration Category'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstConfigCategoryMetric
        NAME 'AstConfigCategoryMetric'
        DESC 'Asterisk LDAP Configuration Category Metric'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstConfigVariableName
        NAME 'AstConfigVariableName'
        DESC 'Asterisk LDAP Configuration Variable Name'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstConfigVariableValue
        NAME 'AstConfigVariableValue'
        DESC 'Asterisk LDAP Configuration Variable Value'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstConfigCommented
        NAME 'AstConfigCommented'
        DESC 'Asterisk LDAP Configuration Commented'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
#############################################################################
# Object Class definitions
#
# This is where to define the object classes. Object classes are used
# to define which attribute MAY (optional) or MUST (required) belong
# to an entry.
#
# Classes can be AUXILIARY or STRUCTURAL. An entry in the directory
# must have one and only one structural class, but can have many
# AUXILIARY classes.
#
#############################################################################
#
olcObjectClasses: ( AsteriskExtension 
    NAME 'AsteriskExtension'
    DESC 'PBX Extension Information for Asterisk'
    SUP top AUXILIARY
    MUST cn
    MAY ( 
        AstContext $ 
        AstExtension $ 
        AstPriority $
        AstApplication $ 
        AstApplicationData
    ) 
    )
#
#############################################################################
#
# AsteriskIAXUser and AsteriskSIPUser extend AsteriskExtension. These
# represent real accounts in Asterisk.
#
# NOTE: They are defined as AUXILIARY in case they need to be mixed with an
# existing directory deployment.
#
#############################################################################
#       
olcObjectClasses: ( AsteriskIAXUser 
    NAME 'AsteriskIAXUser'
    DESC 'IAX2 User information for Asterisk'
    SUP AsteriskExtension AUXILIARY
    MUST cn
    MAY ( 
        AstAccountAMAFlags $ 
        AstAccountCallerID $ 
        AstAccountContext $ 
        AstAccountFullContact $ 
        AstAccountHost $ 
        AstAccountMailbox $ 
        AstMD5secret $ 
        AstAccountDeny $
        AstAccountPermit $ 
        AstAccountPort $ 
        AstAccountQualify $ 
        AstAccountType $
        AstAccountDisallowedCodec $ 
        AstAccountExpirationTimestamp $ 
        AstAccountRegistrationContext$
        AstAccountRegistrationExten $ 
        AstAccountNoTransfer $ 
        AstAccountName 
    )
    )
#       
olcObjectClasses: ( AsteriskSIPUser 
    NAME 'AsteriskSIPUser'
    DESC 'SIP User information for Asterisk'
    SUP AsteriskExtension AUXILIARY
    MUST cn
    MAY (
        AstAccountAMAFlags $ 
        AstAccountCallGroup $ 
        AstAccountCallerID $ 
        AstAccountCanReinvite $
        AstAccountContext $
        AstAccountDTMFMode $ 
        AstAccountFromUser $ 
        AstAccountFromDomain $     
        AstAccountFullContact $ 
        AstAccountHost $ 
        AstAccountInsecure $  
        AstAccountMailbox $    
        AstAccountRealmedPassword $ 
        AstAccountNAT $
        AstAccountDeny $ 
        AstAccountPermit $ 
        AstAccountPickupGroup $ 
        AstAccountPort $
        AstAccountQualify $ 
        AstAccountRestrictCID $ 
        AstAccountRTPTimeout $ 
        AstAccountRTPHoldTimeout $
        AstAccountType $ 
        AstAccountDisallowedCodec $ 
        AstAccountAllowedCodec $ 
        AstAccountMusicOnHold $
        AstAccountExpirationTimestamp $ 
        AstAccountRegistrationContext $ 
        AstAccountRegistrationExten $
        AstAccountCanCallForward $ 
        AstAccountSecret $ 
        AstAccountName 
    )
    )
#
#############################################################################
#
# AsteriskIAXUser and AsteriskSIPUser extend AsteriskExtension. These
# represent real accounts in Asterisk.
#
# NOTE: They are defined as AUXILIARY in case they need to be mixed with an
# existing directory deployment.
#
#############################################################################
#        
olcObjectClasses: ( AsteriskConfig 
    NAME 'AsteriskConfig'
    DESC 'Asterisk configuration Information'
    SUP top AUXILIARY
    MUST cn
    MAY ( 
        AstConfigFilename $ 
        AstConfigCategory $ 
        AstConfigCategoryMetric $
        AstConfigVariableName $ 
        AstConfigVariableValue $ 
        AstConfigCommented
    ) 
    )
#
