dect
/
asterisk
Archived
13
0
Fork 0

Add res_config_ldap for realtime LDAP engine.

(closes issue #5768)
 Reported by: mguesdon
 Patches: 
       res_config_ldap-v0.7.tar.gz uploaded by mguesdon (license 121)
       res_ldap.conf.sample uploaded by suretec (license 70)
       asterisk-v3.1.4.ldif uploaded by suretec (license 70)
       asterisk-v3.1.4.schema uploaded by suretec (license 70)
 Tested by: oej, mguesdon, suretec, cthorner


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99696 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
tilghman 2008-01-22 22:33:20 +00:00
parent 395fa10a4b
commit 533d426fef
11 changed files with 3209 additions and 10 deletions

View File

@ -463,6 +463,8 @@ Miscellaneous New Modules
to retrieve, create, update, and delete realtime information from a remote
web server. Note that this module requires func_curl.so to be loaded for
backend functionality.
* Added a new module, res_config_ldap, which permits the use of an LDAP
server for realtime data access.
Miscellaneous
-------------

View File

@ -13,6 +13,7 @@ IMAP_TK=@PBX_IMAP_TK@
ISDNNET=@PBX_ISDNNET@
IXJUSER=@PBX_IXJUSER@
JACK=@PBX_JACK@
LDAP=@PBX_LDAP@
LTDL=@PBX_LTDL@
LUA=@PBX_LUA@
MISDN=@PBX_MISDN@

View File

@ -0,0 +1,141 @@
;
; Configuration file for res_config_ldap
;
; Sample Asterisk config file for res_config_ldap
; in extconfig.conf you can use it like this:
; sipusers = ldap,"dc=myDomain,dc=myDomainExt",sip
; sippeers = ldap,"dc=myDomain,dc=myDomainExt",sip
; extensions = ldap,"dc=myDomain,dc=myDomainExt",extensions
; sip.conf = ldap,"dc=myDomain,dc=myDomainExt",config
[_general]
;host=192.168.1.1,ldap.mydomain.com ; LDAP host(s)
;protocol=3 ; Version of the LDAP protocol to use default is 3.
;basedn=MyRootDN ; Base DN
;pass=MyPassword ; Bind password
;user=MyDN ; Bind DN
; Configuration Table
[config]
; addtional filter - This specifies an additional set of criteria to be used
; when querying the LDAP server.
additionalFilter=(objectClass=PBXConfig)
; Attributes mapping (asterisk variable name = ldap attribute name)
; When Asterisk requests the variable by the name of the value on the left,
; this module will look up the attribute listed on the right.
filename = PBXConfigFilename
category = PBXConfigCategory
variable_name = PBXConfigVariableName
variable_value = PBXConfigVariableValue
cat_metric = PBXConfigCategoryMetric
commented = PBXConfigCommented
; Extensions Table
[extensions]
context = PBXExtensionContext
exten = PBXExtensionExten
priority = PBXExtensionPriority
app = PBXExtensionApplication
appdata = PBXExtensionApplicationData
additionalFilter=(objectClass=PBXExtension)
; Sip Users Table
[sip]
name = uid
amaflags = PBXAccountAMAFlags
callgroup = PBXAccountCallGroup
callerid = PBXAccountCallerID
canreinvite = PBXAccountCanReinvite
context = PBXAccountContext
dtmfmode = PBXAccountDTMFMode
fromuser = PBXAccountFromUser
fromdomain = PBXAccountFromDomain
fullcontact = PBXAccountFullContact
fullcontact = gecos
host = PBXAccountHost
insecure = PBXAccountInsecure
mailbox = PBXAccountMailbox
md5secret = realmedPassword
nat = PBXAccountNAT
deny = PBXAccountDeny
permit = PBXAccountPermit
pickupgroup = PBXAccountPickupGroup
port = PBXAccountPort
qualify = PBXAccountQualify
restrictcid = PBXAccountRestrictCID
rtptimeout = PBXAccountRTPTimeout
rtpholdtimeout = PBXAccountRTPHoldTimeout
type = PBXAccountType
disallow = PBXAccountDisallowedCodec
allow = PBXAccountAllowedCodec
MusicOnHold = PBXAccountMusicOnHold
regseconds = PBXAccountExpirationTimestamp
regcontext = PBXAccountRegistrationContext
regexten = PBXAccountRegistrationExten
CanCallForward = PBXAccountCanCallForward
additionalFilter=(objectClass=PBXAccountSIP)
; IAX Users Table
[iax]
amaflags = PBXAccountAMAFlags
callerid = PBXAccountCallerID
context = PBXAccountContext
fullcontact = PBXAccountFullContact
fullcontact = gecos
host = PBXAccountHost
mailbox = PBXAccountMailbox
md5secret = realmedPassword
deny = PBXAccountDeny
permit = PBXAccountPermit
port = PBXAccountPort
qualify = PBXAccountQualify
type = PBXAccountType
disallow = PBXAccountDisallowedCodec
allow = PBXAccountAllowedCodec
regseconds = PBXAccountExpirationTimestamp
regcontext = PBXAccountRegistrationContext
regexten = PBXAccountRegistrationExten
notransfer = PBXAccountNoTransfer
additionalFilter=(objectClass=PBXAccountIAX)
; A Test Family
[testfamily]
MyUSERID = uid
additionalFilter=(objectClass=*)
[accounts]
amaflags = PBXAccountAMAFlags
callgroup = PBXAccountCallGroup
callerid = PBXAccountCallerID
canreinvite = PBXAccountCanReinvite
context = PBXAccountContext
dtmfmode = PBXAccountDTMFMode
fromuser = PBXAccountFromUser
fromdomain = PBXAccountFromDomain
fullcontact = PBXAccountFullContact
fullcontact = gecos
host = PBXAccountHost
insecure = PBXAccountInsecure
mailbox = PBXAccountMailbox
md5secret = realmedPassword
nat = PBXAccountNAT
deny = PBXAccountDeny
permit = PBXAccountPermit
pickupgroup = PBXAccountPickupGroup
port = PBXAccountPort
qualify = PBXAccountQualify
restrictcid = PBXAccountRestrictCID
rtptimeout = PBXAccountRTPTimeout
rtpholdtimeout = PBXAccountRTPHoldTimeout
type = PBXAccountType
disallow = PBXAccountDisallowedCodec
allow = PBXAccountAllowedCodec
MusicOnHold = PBXAccountMusicOnHold
regseconds = PBXAccountExpirationTimestamp
regcontext = PBXAccountRegistrationContext
regexten = PBXAccountRegistrationExten
CanCallForward = PBXAccountCanCallForward
additionalFilter=(objectClass=PBXAccount)

319
configure vendored
View File

@ -1,5 +1,5 @@
#! /bin/sh
# From configure.ac Revision: 98971 .
# From configure.ac Revision: 98985 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for asterisk 1.4.
#
@ -777,6 +777,10 @@ JACK_LIB
JACK_INCLUDE
JACK_DIR
PBX_JACK
LDAP_LIB
LDAP_INCLUDE
LDAP_DIR
PBX_LDAP
LTDL_LIB
LTDL_INCLUDE
LTDL_DIR
@ -1587,6 +1591,7 @@ Optional Packages:
--with-imap=PATH use UW IMAP Toolkit files in PATH
--with-isdnnet=PATH use ISDN4Linux Library files in PATH
--with-jack=PATH use Jack Audio Connection Kit files in PATH
--with-ldap=PATH use OpenLDAP files in PATH
--with-ltdl=PATH use libtool files in PATH
--with-lua=PATH use Lua files in PATH
--with-misdn=PATH use mISDN User Library files in PATH
@ -8329,6 +8334,34 @@ fi
LDAP_DESCRIP="OpenLDAP"
LDAP_OPTION="ldap"
# Check whether --with-ldap was given.
if test "${with_ldap+set}" = set; then
withval=$with_ldap;
case ${withval} in
n|no)
USE_LDAP=no
;;
y|ye|yes)
ac_mandatory_list="${ac_mandatory_list} LDAP"
;;
*)
LDAP_DIR="${withval}"
ac_mandatory_list="${ac_mandatory_list} LDAP"
;;
esac
fi
PBX_LDAP=0
LTDL_DESCRIP="libtool"
LTDL_OPTION="ltdl"
@ -33193,6 +33226,268 @@ fi
if test "x${PBX_LDAP}" != "x1" -a "${USE_LDAP}" != "no"; then
pbxlibdir=""
# if --with-LDAP=DIR has been specified, use it.
if test "x${LDAP_DIR}" != "x"; then
if test -d ${LDAP_DIR}/lib; then
pbxlibdir="-L${LDAP_DIR}/lib"
else
pbxlibdir="-L${LDAP_DIR}"
fi
fi
pbxfuncname="ldap_first_attribute"
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
AST_LDAP_FOUND=yes
else
as_ac_Lib=`echo "ac_cv_lib_ldap_${pbxfuncname}" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lldap" >&5
echo $ECHO_N "checking for ${pbxfuncname} in -lldap... $ECHO_C" >&6; }
if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lldap ${pbxlibdir} $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char ${pbxfuncname} ();
int
main ()
{
return ${pbxfuncname} ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
eval "$as_ac_Lib=yes"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Lib=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
ac_res=`eval echo '${'$as_ac_Lib'}'`
{ echo "$as_me:$LINENO: result: $ac_res" >&5
echo "${ECHO_T}$ac_res" >&6; }
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
AST_LDAP_FOUND=yes
else
AST_LDAP_FOUND=no
fi
fi
# now check for the header.
if test "${AST_LDAP_FOUND}" = "yes"; then
LDAP_LIB="${pbxlibdir} -lldap "
# if --with-LDAP=DIR has been specified, use it.
if test "x${LDAP_DIR}" != "x"; then
LDAP_INCLUDE="-I${LDAP_DIR}/include"
fi
LDAP_INCLUDE="${LDAP_INCLUDE} "
if test "xldap.h" = "x" ; then # no header, assume found
LDAP_HEADER_FOUND="1"
else # check for the header
saved_cppflags="${CPPFLAGS}"
CPPFLAGS="${CPPFLAGS} ${LDAP_INCLUDE} "
if test "${ac_cv_header_ldap_h+set}" = set; then
{ echo "$as_me:$LINENO: checking for ldap.h" >&5
echo $ECHO_N "checking for ldap.h... $ECHO_C" >&6; }
if test "${ac_cv_header_ldap_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
{ echo "$as_me:$LINENO: result: $ac_cv_header_ldap_h" >&5
echo "${ECHO_T}$ac_cv_header_ldap_h" >&6; }
else
# Is the header compilable?
{ echo "$as_me:$LINENO: checking ldap.h usability" >&5
echo $ECHO_N "checking ldap.h usability... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
#include <ldap.h>
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6; }
# Is the header present?
{ echo "$as_me:$LINENO: checking ldap.h presence" >&5
echo $ECHO_N "checking ldap.h presence... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <ldap.h>
_ACEOF
if { (ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6; }
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
{ echo "$as_me:$LINENO: WARNING: ldap.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: ldap.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: ldap.h: proceeding with the compiler's result" >&5
echo "$as_me: WARNING: ldap.h: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
{ echo "$as_me:$LINENO: WARNING: ldap.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: ldap.h: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: ldap.h: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: ldap.h: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: ldap.h: see the Autoconf documentation" >&5
echo "$as_me: WARNING: ldap.h: see the Autoconf documentation" >&2;}
{ echo "$as_me:$LINENO: WARNING: ldap.h: section \"Present But Cannot Be Compiled\"" >&5
echo "$as_me: WARNING: ldap.h: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: ldap.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: ldap.h: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: ldap.h: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: ldap.h: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## ------------------------------- ##
## Report this to www.asterisk.org ##
## ------------------------------- ##
_ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
{ echo "$as_me:$LINENO: checking for ldap.h" >&5
echo $ECHO_N "checking for ldap.h... $ECHO_C" >&6; }
if test "${ac_cv_header_ldap_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_cv_header_ldap_h=$ac_header_preproc
fi
{ echo "$as_me:$LINENO: result: $ac_cv_header_ldap_h" >&5
echo "${ECHO_T}$ac_cv_header_ldap_h" >&6; }
fi
if test $ac_cv_header_ldap_h = yes; then
LDAP_HEADER_FOUND=1
else
LDAP_HEADER_FOUND=0
fi
CPPFLAGS="${saved_cppflags}"
fi
if test "x${LDAP_HEADER_FOUND}" = "x0" ; then
LDAP_LIB=""
LDAP_INCLUDE=""
else
if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
LDAP_LIB=""
fi
PBX_LDAP=1
# XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED
cat >>confdefs.h <<_ACEOF
#define HAVE_LDAP 1
_ACEOF
cat >>confdefs.h <<_ACEOF
#define HAVE_LDAP_VERSION
_ACEOF
fi
fi
fi
if test "x${PBX_MISDN}" != "x1" -a "${USE_MISDN}" != "no"; then
pbxlibdir=""
# if --with-MISDN=DIR has been specified, use it.
@ -49415,6 +49710,10 @@ JACK_LIB!$JACK_LIB$ac_delim
JACK_INCLUDE!$JACK_INCLUDE$ac_delim
JACK_DIR!$JACK_DIR$ac_delim
PBX_JACK!$PBX_JACK$ac_delim
LDAP_LIB!$LDAP_LIB$ac_delim
LDAP_INCLUDE!$LDAP_INCLUDE$ac_delim
LDAP_DIR!$LDAP_DIR$ac_delim
PBX_LDAP!$PBX_LDAP$ac_delim
LTDL_LIB!$LTDL_LIB$ac_delim
LTDL_INCLUDE!$LTDL_INCLUDE$ac_delim
LTDL_DIR!$LTDL_DIR$ac_delim
@ -49448,10 +49747,6 @@ UNIXODBC_INCLUDE!$UNIXODBC_INCLUDE$ac_delim
UNIXODBC_DIR!$UNIXODBC_DIR$ac_delim
PBX_UNIXODBC!$PBX_UNIXODBC$ac_delim
OGG_LIB!$OGG_LIB$ac_delim
OGG_INCLUDE!$OGG_INCLUDE$ac_delim
OGG_DIR!$OGG_DIR$ac_delim
PBX_OGG!$PBX_OGG$ac_delim
OSPTK_LIB!$OSPTK_LIB$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@ -49493,6 +49788,10 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
OGG_INCLUDE!$OGG_INCLUDE$ac_delim
OGG_DIR!$OGG_DIR$ac_delim
PBX_OGG!$PBX_OGG$ac_delim
OSPTK_LIB!$OSPTK_LIB$ac_delim
OSPTK_INCLUDE!$OSPTK_INCLUDE$ac_delim
OSPTK_DIR!$OSPTK_DIR$ac_delim
PBX_OSPTK!$PBX_OSPTK$ac_delim
@ -49586,10 +49885,6 @@ VPB_DIR!$VPB_DIR$ac_delim
PBX_VPB!$PBX_VPB$ac_delim
X11_LIB!$X11_LIB$ac_delim
X11_INCLUDE!$X11_INCLUDE$ac_delim
X11_DIR!$X11_DIR$ac_delim
PBX_X11!$PBX_X11$ac_delim
ZLIB_LIB!$ZLIB_LIB$ac_delim
ZLIB_INCLUDE!$ZLIB_INCLUDE$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@ -49631,6 +49926,10 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
X11_DIR!$X11_DIR$ac_delim
PBX_X11!$PBX_X11$ac_delim
ZLIB_LIB!$ZLIB_LIB$ac_delim
ZLIB_INCLUDE!$ZLIB_INCLUDE$ac_delim
ZLIB_DIR!$ZLIB_DIR$ac_delim
PBX_ZLIB!$PBX_ZLIB$ac_delim
ZAPTEL_LIB!$ZAPTEL_LIB$ac_delim
@ -49699,7 +49998,7 @@ CURL_CONFIG!$CURL_CONFIG$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 66; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 70; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View File

@ -216,6 +216,7 @@ AST_EXT_LIB_SETUP([IKSEMEL], [Iksemel Jabber Library], [iksemel])
AST_EXT_LIB_SETUP([IMAP_TK], [UW IMAP Toolkit], [imap])
AST_EXT_LIB_SETUP([ISDNNET], [ISDN4Linux Library], [isdnnet])
AST_EXT_LIB_SETUP([JACK], [Jack Audio Connection Kit], [jack])
AST_EXT_LIB_SETUP([LDAP], [OpenLDAP], [ldap])
AST_EXT_LIB_SETUP([LTDL], [libtool], [ltdl])
AST_EXT_LIB_SETUP([LUA], [Lua], [lua])
AST_EXT_LIB_SETUP([MISDN], [mISDN User Library], [misdn])
@ -814,6 +815,8 @@ AST_EXT_LIB_CHECK([JACK], [jack], [jack_activate], [jack/jack.h])
# Needed by unixodbc
AST_EXT_LIB_CHECK([LTDL], [ltdl], [lt_dlinit], [ltdl.h], [])
AST_EXT_LIB_CHECK([LDAP], [ldap], [ldap_first_attribute], [ldap.h])
AST_EXT_LIB_CHECK([MISDN], [mISDN], [mISDN_open], [mISDNuser/mISDNlib.h])
if test "${PBX_MISDN}" = 1; then

View File

@ -0,0 +1,562 @@
#
# Copyright (c) 2007 Suretec Systems Ltd. - <http://www.suretecsystems.com/>
#
# Asterisk LDAP Schema
#
# 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
#
objectIdentifier AsteriskRoot 1.3.6.1.4.1.22736
objectIdentifier AsteriskLDAP AsteriskRoot:5
#############################################################################
# Attribute group OIDs. e.g.: objectIdentifier AstAttrType AsteriskLDAP:4
#############################################################################
objectIdentifier AstAttrType AsteriskLDAP:4
#############################################################################
# Attribute OIDs e.g.: objectIdentifier AstContext AstAttrType:1
#############################################################################
objectIdentifier AstContext AstAttrType:1
objectIdentifier AstExtension AstAttrType:2
objectIdentifier AstPriority AstAttrType:3
objectIdentifier AstApplication AstAttrType:4
objectIdentifier AstApplicationData AstAttrType:5
objectIdentifier AstAccountAMAFlags AstAttrType:6
objectIdentifier AstAccountCallerID AstAttrType:7
objectIdentifier AstAccountContext AstAttrType:8
objectIdentifier AstAccountMailbox AstAttrType:9
objectIdentifier AstMD5secret AstAttrType:10
objectIdentifier AstAccountDeny AstAttrType:11
objectIdentifier AstAccountPermit AstAttrType:12
objectIdentifier AstAccountQualify AstAttrType:13
objectIdentifier AstAccountType AstAttrType:14
objectIdentifier AstAccountDisallowedCodec AstAttrType:15
objectIdentifier AstAccountExpirationTimestamp AstAttrType:16
objectIdentifier AstAccountRegistrationContext AstAttrType:17
objectIdentifier AstAccountRegistrationExten AstAttrType:18
objectIdentifier AstAccountNoTransfer AstAttrType:19
objectIdentifier AstAccountCallGroup AstAttrType:20
objectIdentifier AstAccountCanReinvite AstAttrType:21
objectIdentifier AstAccountDTMFMode AstAttrType:22
objectIdentifier AstAccountFromUser AstAttrType:23
objectIdentifier AstAccountFromDomain AstAttrType:24
objectIdentifier AstAccountFullContact AstAttrType:25
objectIdentifier AstAccountHost AstAttrType:26
objectIdentifier AstAccountInsecure AstAttrType:27
objectIdentifier AstAccountNAT AstAttrType:28
objectIdentifier AstAccountPickupGroup AstAttrType:29
objectIdentifier AstAccountPort AstAttrType:30
objectIdentifier AstAccountRestrictCID AstAttrType:31
objectIdentifier AstAccountRTPTimeout AstAttrType:32
objectIdentifier AstAccountRTPHoldTimeout AstAttrType:33
objectIdentifier AstAccountRealmedPassword AstAttrType:34
objectIdentifier AstAccountAllowedCodec AstAttrType:35
objectIdentifier AstAccountMusicOnHold AstAttrType:36
objectIdentifier AstAccountCanCallForward AstAttrType:37
objectIdentifier AstAccountSecret AstAttrType:38
objectIdentifier AstAccountName AstAttrType:39
objectIdentifier AstConfigFilename AstAttrType:40
objectIdentifier AstConfigCategory AstAttrType:41
objectIdentifier AstConfigCategoryMetric AstAttrType:42
objectIdentifier AstConfigVariableName AstAttrType:43
objectIdentifier AstConfigVariableValue AstAttrType:44
objectIdentifier AstConfigCommented AstAttrType:45
#############################################################################
# Object Class OIDs
#############################################################################
objectIdentifier AstObjectClass AsteriskLDAP:2
objectIdentifier AsteriskExtension AstObjectClass:1
objectIdentifier AsteriskIAXUser AstObjectClass:2
objectIdentifier AsteriskSIPUser AstObjectClass:3
objectIdentifier AsteriskConfig AstObjectClass:4
#############################################################################
# attribute definitions
#
# OID (the first arg) comes from the objectIdentifier defined above
#
# NAME should be the same as objectIdentifier
#
# 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.:
#
# attributetype ( 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 )
#
#############################################################################
attributetype ( AstContext
NAME 'AstContext'
DESC 'Asterisk Context'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstExtension
NAME 'AstExtension'
DESC 'Asterisk Extension'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstPriority
NAME 'AstPriority'
DESC 'Asterisk Priority'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstApplication
NAME 'AstApplication'
DESC 'Asterisk Application'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstApplicationData
NAME 'AstApplicationData'
DESC 'Asterisk Application Data'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountAMAFlags
NAME 'AstAccountAMAFlags'
DESC 'Asterisk Account AMA Flags'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountCallerID
NAME 'AstAccountCallerID'
DESC 'Asterisk Account CallerID'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountContext
NAME 'AstAccountContext'
DESC 'Asterisk Account Context'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountMailbox
NAME 'AstAccountMailbox'
DESC 'Asterisk Account Mailbox'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstMD5secret
NAME 'AstMD5secret'
DESC 'Asterisk Account MD5 Secret'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountDeny
NAME 'AstAccountDeny'
DESC 'Asterisk Account Deny'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountPermit
NAME 'AstAccountPermit'
DESC 'Asterisk Account Permit'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountQualify
NAME 'AstAccountQualify'
DESC 'Asterisk Account Qualify'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountType
NAME 'AstAccountType'
DESC 'Asterisk Account Type'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountDisallowedCodec
NAME 'AstAccountDisallowedCodec'
DESC 'Asterisk Account Disallowed Codec'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountExpirationTimestamp
NAME 'AstAccountExpirationTimestamp'
DESC 'Asterisk Account Allowed Codec'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountRegistrationContext
NAME 'AstAccountRegistrationContext'
DESC 'Asterisk Account AMA Flags'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountRegistrationExten
NAME 'AstAccountRegistrationExten'
DESC 'Asterisk Account AMA Flags'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountNoTransfer
NAME 'AstAccountNoTransfer'
DESC 'Asterisk Account AMA Flags'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountCallGroup
NAME 'AstAccountCallGroup'
DESC 'Asterisk Account Call Group'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountCanReinvite
NAME 'AstAccountCanReinvite'
DESC 'Asterisk Account Can Reinvite'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountDTMFMode
NAME 'AstAccountDTMFMode'
DESC 'Asterisk Account DTMF Flags'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountFromUser
NAME 'AstAccountFromUser'
DESC 'Asterisk Account From User'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountFromDomain
NAME 'AstAccountFromDomain'
DESC 'Asterisk Account From Domain'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountFullContact
NAME 'AstAccountFullContact'
DESC 'Asterisk Account Full Contact'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountHost
NAME 'AstAccountHost'
DESC 'Asterisk Account Host'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountInsecure
NAME 'AstAccountInsecure'
DESC 'Asterisk Account Insecure'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountNAT
NAME 'AstAccountNAT'
DESC 'Asterisk Account NAT'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountPickupGroup
NAME 'AstAccountPickupGroup'
DESC 'Asterisk Account PickupGroup'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountPort
NAME 'AstAccountPort'
DESC 'Asterisk Account Port'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountRestrictCID
NAME 'AstAccountRestrictCID'
DESC 'Asterisk Restrict CallerID'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountRTPTimeout
NAME 'AstAccountRTPTimeout'
DESC 'Asterisk RTP Timeout'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountRTPHoldTimeout
NAME 'AstAccountRTPHoldTimeout'
DESC 'Asterisk RTP Hold Timeout'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountRealmedPassword
NAME 'AstAccountRealmedPassword'
DESC 'Asterisk RTP Hold Timeout'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountAllowedCodec
NAME 'AstAccountAllowedCodec'
DESC 'Asterisk Account Allowed Codec'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountMusicOnHold
NAME 'AstAccountMusicOnHold'
DESC 'Asterisk Account Allowed Codec'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountCanCallForward
NAME 'AstAccountCanCallForward'
DESC 'Asterisk Can CAll Forward'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountSecret
NAME 'AstAccountSecret'
DESC 'Asterisk Can CAll Forward'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstAccountName
NAME 'AstAccountName'
DESC 'Asterisk Account Username'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstConfigFilename
NAME 'AstConfigFilename'
DESC 'Asterisk LDAP Configuration Filename'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( AstConfigCategory
NAME 'AstConfigCategory'
DESC 'Asterisk LDAP Configuration Category'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
attributetype ( 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)
attributetype ( 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)
attributetype ( 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)
attributetype ( 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.
#
#############################################################################
objectclass ( 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.
#
#############################################################################
objectclass ( 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
)
)
objectclass ( 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.
#
#############################################################################
objectclass ( AsteriskConfig
NAME 'AsteriskConfig'
DESC 'Asterisk configuration Information'
SUP top AUXILIARY
MUST cn
MAY (
AstConfigFilename $
AstConfigCategory $
AstConfigCategoryMetric $
AstConfigVariableName $
AstConfigVariableValue $
AstConfigCommented
)
)

View File

@ -0,0 +1,567 @@
#
# Copyright (c) 2007 Suretec Systems Ltd. - <http://www.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 Allowed Codec'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountRegistrationContext
NAME 'AstAccountRegistrationContext'
DESC 'Asterisk Account AMA Flags'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountRegistrationExten
NAME 'AstAccountRegistrationExten'
DESC 'Asterisk Account AMA Flags'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountNoTransfer
NAME 'AstAccountNoTransfer'
DESC 'Asterisk Account AMA Flags'
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 Restrict CallerID'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountRTPTimeout
NAME 'AstAccountRTPTimeout'
DESC 'Asterisk RTP Timeout'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountRTPHoldTimeout
NAME 'AstAccountRTPHoldTimeout'
DESC 'Asterisk 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 RTP Hold Timeout'
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 Allowed Codec'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
#
olcAttributeTypes: ( AstAccountCanCallForward
NAME 'AstAccountCanCallForward'
DESC 'Asterisk 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 Can CAll Forward'
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
)
)
#

65
doc/ldap.txt Normal file
View File

@ -0,0 +1,65 @@
Asterisk Realtime LDAP Driver
---------------------------
With this driver Asterisk can retrieve information from a LDAP drectory, including
sip/iax users, extensions and configuration.
See configs/res_ldap.conf.sample for a configuration file sample
Here is a LDAP dif sample:
# Base SIP Phones Entry
dn: uid=phone-base,dc=myDomain,dc=myDomainExt
objectClass: top
objectClass: AstAccount
objectClass: AstAccountSIP
uid: phone-base
AstAccountAccountingCode: baseacccode
AstAccountHost: dynamic
preferredLanguage: FR
AstAccountAMAFlags: billing
AstAccountContext: ldaptest
# A Phone. realmedPassword md5 hash should be the result of
# echo -n "UID:SIPRealm:Password" | md5sum
dn: uid=phone-test,dc=myDomain,dc=myDomainExt
objectClass: top
objectClass: AstAccount
objectClass: AstAccountSIP
uid: phone-test
AstAccountAccountingCode: acc-phone-base
AstAccountFullContact: Noone <1234>
AstAccountCallerID: 1234
AstAccountBaseDN: uid=phone-base,dc=myDomain,dc=myDomainExt
realmedPassword: {MD5}f67965da780bf9c70d6e337f938cee6f
# extensions,
dn: ou=extensions,dc=myDomain,dc=myDomainExt
ou: extensions
objectClass: top
objectClass: organizationalUnit
# Extension 100 Priority 1 in context ldaptest
dn: cn=100-1,ou=extensions,dc=myDomain,dc=myDomainExt
AstExtensionApplication: NoOp
AstExtensionApplicationData: TEST LDAP
objectClass: top
objectClass: AstExtension
AstExtensionExten: 100
AstExtensionContext: ldaptest
cn: 100-1
AstExtensionPriority: 1
# Extension 100 Priority 1 in context ldaptest
dn: cn=100-2,ou=extensions,dc=myDomain,dc=myDomainExt
objectClass: top
objectClass: AstExtension
AstExtensionExten: 100
AstExtensionContext: ldaptest
cn: 100-2
AstExtensionPriority: 2
AstExtensionApplication: hangup

View File

@ -373,6 +373,12 @@
/* Define to indicate the ${JACK_DESCRIP} library version */
#undef HAVE_JACK_VERSION
/* Define this to indicate the ${LDAP_DESCRIP} library */
#undef HAVE_LDAP
/* Define to indicate the ${LDAP_DESCRIP} library version */
#undef HAVE_LDAP_VERSION
/* Define to 1 if you have the <libintl.h> header file. */
#undef HAVE_LIBINTL_H

View File

@ -102,6 +102,9 @@ IMAP_TK_LIB=@IMAP_TK_LIB@
JACK_INCLUDE=@JACK_INCLUDE@
JACK_LIB=@JACK_LIB@
LDAP_INCLUDE=@LDAP_INCLUDE@
LDAP_LIB=@LDAP_LIB@
LUA_INCLUDE=@LUA_INCLUDE@
LUA_LIB=@LUA_LIB@

1550
res/res_config_ldap.c Normal file

File diff suppressed because it is too large Load Diff