summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfoobar <sniper@php.net>2003-06-13 13:30:46 +0000
committerfoobar <sniper@php.net>2003-06-13 13:30:46 +0000
commitbb37952bc231f7495eda3ff5c972a9d60ff9cb21 (patch)
treef653633faf9d854e6991e7b18546f78e2608d577
parentf25ff93cc6701e69ee98f7d0dcd5466f7b04b456 (diff)
downloadphp-git-bb37952bc231f7495eda3ff5c972a9d60ff9cb21.tar.gz
Fixed the SASL config check.
-rw-r--r--ext/ldap/config.m463
-rw-r--r--ext/ldap/ldap.c16
-rw-r--r--ext/ldap/php_ldap.h2
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);