New commits:
commit 3bde8160d5d18b18f5b789af8e43c4e7a801d4d0
Author: Eric Sandall <sandalle AT sourcemage.org>
Commit: Eric Sandall <sandalle AT sourcemage.org>
openldap, evolution-data-server: Add support to enable Exchange support
When building evolution-data-server (and evolution-exchange), one
receives this warning:
configure: WARNING:
No NTLM support in OpenLDAP; Plaintext password authentication will be
used when connecting to the Exchange Global Catalog server. Consider
installing the evo-openldap package, or building OpenLDAP with the
patch in servers/exchange/docs/openldap-ntlm.diff
And evolution-data-server's ./configure notes:
Exchange support: no
With this patch, the warning goes away for both and
evolution-data-server's ./configure notes:
Exchange support: yes
I still cannot seem to get the Exchange Plugin to load in Evolution and
allow me access to OWA (I can select Exchange, but cannot enter the OWA
URL, see
commit c11a6e4b365a809f58f3893a482d9b66b86e3244
Author: Eric Sandall <sandalle AT sourcemage.org>
Commit: Eric Sandall <sandalle AT sourcemage.org>
evolution-exchange: Removed duplicate dependency on evolution-exchange
Second dependency includes -sub LDAP
diff --git a/collab/openldap/CONFIGURE b/collab/openldap/CONFIGURE
index 38022a5..b4e2bb0 100755
--- a/collab/openldap/CONFIGURE
+++ b/collab/openldap/CONFIGURE
@@ -16,5 +16,7 @@ if echo $OPENLDAP_SLAPD | grep -q enable; then
'--enable-aci' '--disable-aci'
fi &&
+config_query OPENLDAP_NTLM "Enable NTLM API support (needed for Evolution
Exchange plugin)?" n &&
+
message "${MESSAGE_COLOR}If you care about security, check out http://timof.qipc.org/ldap/libldap.html .$DEFAULT_COLOR" &&
message "${MESSAGE_COLOR}The patch is not in the spell anymore because of
version mismatch...$DEFAULT_COLOR."
diff --git a/collab/openldap/HISTORY b/collab/openldap/HISTORY
index 3b62c9b..48f09a6 100644
--- a/collab/openldap/HISTORY
+++ b/collab/openldap/HISTORY
@@ -1,3 +1,13 @@
+2009-02-18 Eric Sandall <sandalle AT sourcemage.org>
+ * CONFIGURE: Query if we want openldap-2.4-ntlm.patch applied
+ * PRE_BUILD: Apply openldap-2.4-ntlm.patch if requested
+ * {PRE_,}SUB_DEPENDS: Allow forcing openldap-2.4-ntlm.patch
+ * openldap-2.4-ntlm.patch: Patch to provide more NTLM API calls for
+ evolution-data-server to use for Exchange support
+ This patch was obtained from
+ http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/openldap-ntlm.diff and
+ updated to openldap 2.4.14
+
2009-02-15 Ladislav Hagara <hgr AT vabo.cz>
* DETAILS: 2.4.14
diff --git a/collab/openldap/PRE_BUILD b/collab/openldap/PRE_BUILD
new file mode 100755
index 0000000..b598fd0
--- /dev/null
+++ b/collab/openldap/PRE_BUILD
@@ -0,0 +1,7 @@
+default_pre_build &&
+
+if [[ "$OPENLDAP_NTLM" == "y" ]]
+then
+ cd $SOURCE_DIRECTORY &&
+ patch -p1 < $SCRIPT_DIRECTORY/openldap-2.4-ntlm.patch
+fi
diff --git a/collab/openldap/PRE_SUB_DEPENDS b/collab/openldap/PRE_SUB_DEPENDS
index bcf947c..3625961 100755
--- a/collab/openldap/PRE_SUB_DEPENDS
+++ b/collab/openldap/PRE_SUB_DEPENDS
@@ -1,5 +1,6 @@
case $THIS_SUB_DEPENDS in
SASL) is_depends_enabled $SPELL cyrus-sasl;;
+ NTLM) [[ OPENLDAP_NTLM == "y" ]] && return 0;;
*) message "${PROBLEM_COLOR}bogus sub_depends: $SPELL
$THIS_SUB_DEPENDS${DEFAULT_COLOR}"
return 1;;
esac
diff --git a/collab/openldap/SUB_DEPENDS b/collab/openldap/SUB_DEPENDS
index 69b3687..391032f 100755
--- a/collab/openldap/SUB_DEPENDS
+++ b/collab/openldap/SUB_DEPENDS
@@ -1,6 +1,8 @@
case $THIS_SUB_DEPENDS in
SASL) message "OpenLDAP with SASL support requested, forcing cyrus-sasl
dependency" &&
depends cyrus-sasl "--with-cyrus-sasl";;
+ NTLM) message "OpenLDAP with NTLM support requested, forcing NTLM patch"
&&
+ OPENLDAP_NTLM=y ;;
*) message "${PROBLEM_COLOR}bogus sub_depends: $SPELL
$THIS_SUB_DEPENDS${DEFAULT_COLOR}"
return 1;;
esac
diff --git a/collab/openldap/openldap-2.4-ntlm.patch
b/collab/openldap/openldap-2.4-ntlm.patch
new file mode 100644
index 0000000..1f1e8f2
--- /dev/null
+++ b/collab/openldap/openldap-2.4-ntlm.patch
@@ -0,0 +1,203 @@
+(Note that this patch is not useful on its own... it just adds some
+hooks to work with the LDAP authentication process at a lower level
+than the API otherwise allows. The code that calls these hooks and
+actually drives the NTLM authentication process is in
+lib/e2k-global-catalog.c, and the code that actually implements the
+NTLM algorithms is in xntlm/.)
+
+This is a patch against OpenLDAP 2.2.6. Apply with -p0
+
+This patch was obtained from http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/openldap-ntlm.diff and
updated to openldap 2.4.14. Apply with -p1.
+
+diff -Naur openldap-2.4.14.orig/include/ldap.h openldap-2.4.14/include/ldap.h
+--- openldap-2.4.14.orig/include/ldap.h 2009-02-18 03:43:05.491974110
-0800
++++ openldap-2.4.14/include/ldap.h 2009-02-18 03:43:16.327725135 -0800
+@@ -2461,5 +2461,26 @@
+ LDAPControl **ctrls,
+ LDAPDerefRes **drp ));
+
++/*
++ * hacks for NTLM
++ */
++#define LDAP_AUTH_NTLM_REQUEST ((ber_tag_t) 0x8aU)
++#define LDAP_AUTH_NTLM_RESPONSE ((ber_tag_t) 0x8bU)
++LDAP_F( int )
++ldap_ntlm_bind LDAP_P((
++ LDAP *ld,
++ LDAP_CONST char *dn,
++ ber_tag_t tag,
++ struct berval *cred,
++ LDAPControl **sctrls,
++ LDAPControl **cctrls,
++ int *msgidp ));
++LDAP_F( int )
++ldap_parse_ntlm_bind_result LDAP_P((
++ LDAP *ld,
++ LDAPMessage *res,
++ struct berval *challenge));
++
++
+ LDAP_END_DECL
+ #endif /* _LDAP_H */
+diff -Naur openldap-2.4.14.orig/libraries/libldap/Makefile.in
openldap-2.4.14/libraries/libldap/Makefile.in
+--- openldap-2.4.14.orig/libraries/libldap/Makefile.in 2009-02-18
03:43:05.489975043 -0800
++++ openldap-2.4.14/libraries/libldap/Makefile.in 2009-02-18
03:43:16.327725135 -0800
+@@ -20,7 +20,7 @@
+ SRCS = bind.c open.c result.c error.c compare.c search.c \
+ controls.c messages.c references.c extended.c cyrus.c \
+ modify.c add.c modrdn.c delete.c abandon.c \
+- sasl.c gssapi.c sbind.c unbind.c cancel.c \
++ sasl.c gssapi.c ntlm.c sbind.c unbind.c cancel.c \
+ filter.c free.c sort.c passwd.c whoami.c \
+ getdn.c getentry.c getattr.c getvalues.c addentry.c \
+ request.c os-ip.c url.c pagectrl.c sortctrl.c vlvctrl.c \
+@@ -33,7 +33,7 @@
+ OBJS = bind.lo open.lo result.lo error.lo compare.lo search.lo \
+ controls.lo messages.lo references.lo extended.lo cyrus.lo \
+ modify.lo add.lo modrdn.lo delete.lo abandon.lo \
+- sasl.lo gssapi.lo sbind.lo unbind.lo cancel.lo \
++ sasl.lo gssapi.lo ntlm.lo sbind.lo unbind.lo cancel.lo \
+ filter.lo free.lo sort.lo passwd.lo whoami.lo \
+ getdn.lo getentry.lo getattr.lo getvalues.lo addentry.lo \
+ request.lo os-ip.lo url.lo pagectrl.lo sortctrl.lo vlvctrl.lo \
+diff -Naur openldap-2.4.14.orig/libraries/libldap/ntlm.c
openldap-2.4.14/libraries/libldap/ntlm.c
+--- openldap-2.4.14.orig/libraries/libldap/ntlm.c 1969-12-31
16:00:00.000000000 -0800
++++ openldap-2.4.14/libraries/libldap/ntlm.c 2009-02-18 03:43:16.328725611
-0800
+@@ -0,0 +1,137 @@
++/* $OpenLDAP: pkg/ldap/libraries/libldap/ntlm.c,v 1.1.4.10 2002/01/04
20:38:21 kurt Exp $ */
++/*
++ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
++ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
++ */
++
++/* Mostly copied from sasl.c */
++
++#include "portable.h"
++
++#include <stdlib.h>
++#include <stdio.h>
++
++#include <ac/socket.h>
++#include <ac/string.h>
++#include <ac/time.h>
++#include <ac/errno.h>
++
++#include "ldap-int.h"
++
++int
++ldap_ntlm_bind(
++ LDAP *ld,
++ LDAP_CONST char *dn,
++ ber_tag_t tag,
++ struct berval *cred,
++ LDAPControl **sctrls,
++ LDAPControl **cctrls,
++ int *msgidp )
++{
++ BerElement *ber;
++ int rc;
++ ber_int_t id;
++
++ Debug( LDAP_DEBUG_TRACE, "ldap_ntlm_bind\n", 0, 0, 0 );
++
++ assert( ld != NULL );
++ assert( LDAP_VALID( ld ) );
++ assert( msgidp != NULL );
++
++ if( msgidp == NULL ) {
++ ld->ld_errno = LDAP_PARAM_ERROR;
++ return ld->ld_errno;
++ }
++
++ /* create a message to send */
++ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) {
++ ld->ld_errno = LDAP_NO_MEMORY;
++ return ld->ld_errno;
++ }
++
++ assert( LBER_VALID( ber ) );
++
++ LDAP_NEXT_MSGID( ld, id );
++ rc = ber_printf( ber, "{it{istON}" /*}*/,
++ id, LDAP_REQ_BIND,
++ ld->ld_version, dn, tag,
++ cred );
++
++ /* Put Server Controls */
++ if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) {
++ ber_free( ber, 1 );
++ return ld->ld_errno;
++ }
++
++ if ( ber_printf( ber, /*{*/ "N}" ) == -1 ) {
++ ld->ld_errno = LDAP_ENCODING_ERROR;
++ ber_free( ber, 1 );
++ return ld->ld_errno;
++ }
++
++ /* send the message */
++ *msgidp = ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber, id );
++
++ if(*msgidp < 0)
++ return ld->ld_errno;
++
++ return LDAP_SUCCESS;
++}
++
++int
++ldap_parse_ntlm_bind_result(
++ LDAP *ld,
++ LDAPMessage *res,
++ struct berval *challenge)
++{
++ ber_int_t errcode;
++ ber_tag_t tag;
++ BerElement *ber;
++ ber_len_t len;
++
++ Debug( LDAP_DEBUG_TRACE, "ldap_parse_ntlm_bind_result\n", 0, 0, 0 );
++
++ assert( ld != NULL );
++ assert( LDAP_VALID( ld ) );
++ assert( res != NULL );
++
++ if ( ld == NULL || res == NULL ) {
++ return LDAP_PARAM_ERROR;
++ }
++
++ if( res->lm_msgtype != LDAP_RES_BIND ) {
++ ld->ld_errno = LDAP_PARAM_ERROR;
++ return ld->ld_errno;
++ }
++
++ if ( ld->ld_error ) {
++ LDAP_FREE( ld->ld_error );
++ ld->ld_error = NULL;
++ }
++ if ( ld->ld_matched ) {
++ LDAP_FREE( ld->ld_matched );
++ ld->ld_matched = NULL;
++ }
++
++ /* parse results */
++
++ ber = ber_dup( res->lm_ber );
++
++ if( ber == NULL ) {
++ ld->ld_errno = LDAP_NO_MEMORY;
++ return ld->ld_errno;
++ }
++
++ tag = ber_scanf( ber, "{ioa" /*}*/,
++ &errcode, challenge, &ld->ld_error );
++ ber_free( ber, 0 );
++
++ if( tag == LBER_ERROR ) {
++ ld->ld_errno = LDAP_DECODING_ERROR;
++ return ld->ld_errno;
++ }
++
++ ld->ld_errno = errcode;
++
++ return( ld->ld_errno );
++}
diff --git a/gnome2-libs/evolution-data-server/HISTORY
b/gnome2-libs/evolution-data-server/HISTORY
index 2915210..29931ea 100644
--- a/gnome2-libs/evolution-data-server/HISTORY
+++ b/gnome2-libs/evolution-data-server/HISTORY
@@ -1,3 +1,7 @@
+2009-02-18 Eric Sandall <sandalle AT sourcemage.org>
+ * {PRE_,}SUB_DEPENDS: In order for Exchange support to be built,
+ openldap needs to be built with the NTLM patch
+
2009-02-09 George Sherwood <gsherwood AT sourcemage.org>
* DETAILS: Updated to verison 2.24.4.1
diff --git a/gnome2-libs/evolution-exchange/HISTORY
b/gnome2-libs/evolution-exchange/HISTORY
index 12e2701..32b9cb5 100644
--- a/gnome2-libs/evolution-exchange/HISTORY
+++ b/gnome2-libs/evolution-exchange/HISTORY
@@ -1,3 +1,7 @@
+2009-02-18 Eric Sandall <sandalle AT sourcemage.org>
+ * DEPENDS: Removed duplicate dependency on evolution-exchange
+ Second dependency includes -sub LDAP
+
2008-11-30 Robin Cook <rcook AT wyrms.net>
* DETAILS: updated VERSION to 2.24.2
[SM-Commit] GIT changes to master grimoire by Eric Sandall (3bde8160d5d18b18f5b789af8e43c4e7a801d4d0),
Eric Sandall, 02/20/2009