diff options
author | foobar <sniper@php.net> | 2003-06-13 13:30:46 +0000 |
---|---|---|
committer | foobar <sniper@php.net> | 2003-06-13 13:30:46 +0000 |
commit | bb37952bc231f7495eda3ff5c972a9d60ff9cb21 (patch) | |
tree | f653633faf9d854e6991e7b18546f78e2608d577 | |
parent | f25ff93cc6701e69ee98f7d0dcd5466f7b04b456 (diff) | |
download | php-git-bb37952bc231f7495eda3ff5c972a9d60ff9cb21.tar.gz |
Fixed the SASL config check.
-rw-r--r-- | ext/ldap/config.m4 | 63 | ||||
-rw-r--r-- | ext/ldap/ldap.c | 16 | ||||
-rw-r--r-- | ext/ldap/php_ldap.h | 2 |
3 files changed, 76 insertions, 5 deletions
diff --git a/ext/ldap/config.m4 b/ext/ldap/config.m4 index 685b4f437a..39fac5a2d7 100644 --- a/ext/ldap/config.m4 +++ b/ext/ldap/config.m4 @@ -18,9 +18,56 @@ AC_DEFUN(PHP_LDAP_CHECKS, [ fi ]) +AC_DEFUN(PHP_LDAP_SASL_CHECKS, [ + if test "$1" = "yes"; then + SEARCH_DIRS="/usr/local /usr" + else + SEARCH_DIRS=$1 + fi + + for i in $SEARCH_DIRS; do + if test -f $i/include/sasl/sasl.h; then + LDAP_SASL_DIR=$i + AC_DEFINE(HAVE_LDAP_SASL_SASL_H,1,[ ]) + break + elif test -f $i/include/sasl.h; then + LDAP_SASL_DIR=$i + AC_DEFINE(HAVE_LDAP_SASL_H,1,[ ]) + break + fi + done + + if test "$LDAP_SASL_DIR"; then + LDAP_SASL_INCDIR=$LDAP_SASL_DIR/include + LDAP_SASL_LIBDIR=$LDAP_SASL_DIR/lib + else + AC_MSG_ERROR([sasl.h not found!]) + fi + + if test "$PHP_LDAP_SASL" = "yes"; then + SASL_LIB="-lsasl2" + else + SASL_LIB="-L$LDAP_SASL_LIBDIR -lsasl2" + fi + + PHP_CHECK_LIBRARY(ldap, sasl_version, + [ + PHP_ADD_INCLUDE($LDAP_SASL_INCDIR) + PHP_ADD_LIBRARY_WITH_PATH(sasl2, $LDAP_SASL_LIBDIR, LDAP_SHARED_LIBADD) + AC_DEFINE(HAVE_LDAP_SASL, 1, [LDAP SASL support]) + ], [ + AC_MSG_ERROR([LDAP SASL check failed. Please check config.log for more information.]) + ], [ + $LDAP_SHARED_LIBADD $SASL_LIB + ]) +]) + PHP_ARG_WITH(ldap,for LDAP support, [ --with-ldap[=DIR] Include LDAP support.]) +PHP_ARG_WITH(ldap-sasl,for LDAP Cyrus SASL support, +[ --with-ldap-sasl[=DIR] LDAP: Include Cyrus SASL support.], no, no) + if test "$PHP_LDAP" != "no"; then PHP_NEW_EXTENSION(ldap, ldap.c, $ext_shared) @@ -121,5 +168,19 @@ if test "$PHP_LDAP" != "no"; then dnl Solaris 2.8 claims to be 2004 API, but doesn't have dnl ldap_parse_reference() nor ldap_start_tls_s() - AC_CHECK_FUNCS([ldap_parse_reference ldap_start_tls_s ldap_sasl_interactive_bind_s]) + AC_CHECK_FUNCS([ldap_parse_reference ldap_start_tls_s]) + + dnl + dnl SASL check + dnl + if test "$PHP_LDAP_SASL" != "no"; then + PHP_LDAP_SASL_CHECKS([$PHP_LDAP_SASL]) + fi + + dnl + dnl Sanity check + dnl + AC_CHECK_FUNC(ldap_bind_s, [], [ + AC_MSG_ERROR([LDAP build check failed. Please check config.log for more information.]) + ]) fi diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 12b44ed430..a148e5767e 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -59,6 +59,12 @@ #include "ext/standard/php_string.h" #include "ext/standard/info.h" +#ifdef HAVE_LDAP_SASL_H +#include <sasl.h> +#elif defined(HAVE_LDAP_SASL_SASL_H) +#include <sasl/sasl.h> +#endif + typedef struct { LDAP *link; #if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) @@ -88,7 +94,7 @@ function_entry ldap_functions[] = { PHP_FE(ldap_connect, NULL) PHP_FALIAS(ldap_close, ldap_unbind, NULL) PHP_FE(ldap_bind, NULL) -#ifdef HAVE_LDAP_SASL_INTERACTIVE_BIND_S +#ifdef HAVE_LDAP_SASL PHP_FE(ldap_sasl_bind, NULL) #endif PHP_FE(ldap_unbind, NULL) @@ -335,6 +341,10 @@ PHP_MINFO_FUNCTION(ldap) php_info_print_table_row(2, "Level of Encryption", tmp); #endif +#ifdef HAVE_LDAP_SASL + php_info_print_table_row(2, "SASL Support", "Enabled"); +#endif + php_info_print_table_end(); } /* }}} */ @@ -466,7 +476,7 @@ PHP_FUNCTION(ldap_bind) } /* }}} */ -#ifdef HAVE_LDAP_SASL_INTERACTIVE_BIND_S +#ifdef HAVE_LDAP_SASL /* {{{ _php_sasl_interact Interact function for SASL */ static int _php_sasl_interact(LDAP *ld, unsigned flags, void *defaults, void *in) @@ -505,7 +515,7 @@ PHP_FUNCTION(ldap_sasl_bind) } } /* }}} */ -#endif /* HAVE_LDAP_SASL_INTERACTIVE_BIND_S */ +#endif /* HAVE_LDAP_SASL */ /* {{{ proto bool ldap_unbind(resource link) Unbind from LDAP directory */ diff --git a/ext/ldap/php_ldap.h b/ext/ldap/php_ldap.h index 4c622ed403..211a63f70c 100644 --- a/ext/ldap/php_ldap.h +++ b/ext/ldap/php_ldap.h @@ -38,7 +38,7 @@ PHP_MINFO_FUNCTION(ldap); PHP_FUNCTION(ldap_connect); PHP_FUNCTION(ldap_bind); -#ifdef HAVE_LDAP_SASL_INTERACTIVE_BIND_S +#ifdef HAVE_LDAP_SASL PHP_FUNCTION(ldap_sasl_bind); #endif PHP_FUNCTION(ldap_unbind); |