From: Howard Chu Date: Wed, 27 May 2009 12:41:09 +0000 (+0000) Subject: ITS#6147 add sasl-auxprop config, default to "slapd" X-Git-Tag: ACLCHECK_0~542 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=374331c2b1a1c49a4e67b3bf0a383af0b1b4944d;p=openldap ITS#6147 add sasl-auxprop config, default to "slapd" --- diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index bb35481386..10d9cf033c 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -530,6 +530,14 @@ static ConfigTable config_back_cf_table[] = { "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL }, { "sasl-authz-policy", NULL, 2, 2, 0, ARG_MAGIC|CFG_AZPOLICY, &config_generic, NULL, NULL, NULL }, + { "sasl-auxprops", NULL, 2, 0, 0, +#ifdef HAVE_CYRUS_SASL + ARG_STRING|ARG_UNIQUE, &slap_sasl_auxprops, +#else + ARG_IGNORED, NULL, +#endif + "( OLcfgGlAt:89 NAME 'olcSaslAuxprops' " + "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL }, { "sasl-host", "host", 2, 2, 0, #ifdef HAVE_CYRUS_SASL ARG_STRING|ARG_UNIQUE, &sasl_host, diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index f8212bc7e8..3abb391e0b 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -1944,6 +1944,7 @@ LDAP_SLAPD_V (char *) global_host; LDAP_SLAPD_V (struct berval) global_host_bv; LDAP_SLAPD_V (char *) global_realm; LDAP_SLAPD_V (char *) sasl_host; +LDAP_SLAPD_V (char *) slap_sasl_auxprops; LDAP_SLAPD_V (char **) default_passwd_hash; LDAP_SLAPD_V (int) lber_debug; LDAP_SLAPD_V (int) ldap_syslog; diff --git a/servers/slapd/sasl.c b/servers/slapd/sasl.c index 459d38ce61..14e3d25b6e 100644 --- a/servers/slapd/sasl.c +++ b/servers/slapd/sasl.c @@ -63,8 +63,29 @@ typedef struct sasl_ctx { static struct berval ext_bv = BER_BVC( "EXTERNAL" ); +char *slap_sasl_auxprops; + #ifdef HAVE_CYRUS_SASL +/* Just use our internal auxprop by default */ +static int +slap_sasl_getopt( + void *context, + const char *plugin_name, + const char *option, + const char **result, + unsigned *len) +{ + if ( strcmp( option, "auxprop_plugin" )) { + return SASL_FAIL; + } + if ( slap_sasl_auxprops ) + *result = slap_sasl_auxprops; + else + *result = "slapd"; + return SASL_OK; +} + int slap_sasl_log( void *context, @@ -1078,6 +1099,7 @@ int slap_sasl_init( void ) int rc; static sasl_callback_t server_callbacks[] = { { SASL_CB_LOG, &slap_sasl_log, NULL }, + { SASL_CB_GETOPT, &slap_sasl_getopt, NULL }, { SASL_CB_LIST_END, NULL, NULL } }; #endif