From 3b8a47e087fba2cdf22f3ee5d8f63ec6cf707c7a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Fri, 21 Apr 2006 08:58:17 +0000 Subject: [PATCH] Add support for apache-2.2 git-svn-id: svn://svn.debian.org/svn/modvhostldap/mod-vhost-ldap@39 4dd36cbf-e3fd-0310-983d-db0e06859cf4 --- ChangeLog | 8 +++++++ VERSION | 2 +- mod_vhost_ldap.c | 56 ++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 54 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index decc89c..23c4839 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-04-21 Bart Vanbrabant + * VERSION: 1.0.1 release + * mod_vhost_ldap.c: add support for apache-2.2.x + +2006-01-30 Ondřej Surý + * VERSION: 1.0.0 release + * Fix small memory leak when used in subrequest (e.g. fastcgi) + 2005-10-03 Ondřej Surý * mod_vhost_ldap.c: add support for running from subrequest (ie. mod_fastcgi) * VERSION: 0.2.9 release diff --git a/VERSION b/VERSION index 3eefcb9..7dea76e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0 +1.0.1 diff --git a/mod_vhost_ldap.c b/mod_vhost_ldap.c index ff8a61d..2b1dc81 100644 --- a/mod_vhost_ldap.c +++ b/mod_vhost_ldap.c @@ -34,7 +34,7 @@ #include "apr_reslist.h" #include "util_ldap.h" -#ifndef APU_HAS_LDAP +#if !defined(APU_HAS_LDAP) && !defined(APR_HAS_LDAP) #error mod_vhost_ldap requires APR-util to have LDAP support built in #endif @@ -93,6 +93,27 @@ typedef struct mod_vhost_ldap_request_t { char *attributes[] = { "apacheServerName", "apacheDocumentRoot", "apacheScriptAlias", "apacheSuexecUid", "apacheSuexecGid", "apacheServerAdmin", 0 }; +#ifdef APR_HAS_LDAP +static APR_OPTIONAL_FN_TYPE(uldap_connection_close) *util_ldap_connection_close; +static APR_OPTIONAL_FN_TYPE(uldap_connection_find) *util_ldap_connection_find; +static APR_OPTIONAL_FN_TYPE(uldap_cache_comparedn) *util_ldap_cache_comparedn; +static APR_OPTIONAL_FN_TYPE(uldap_cache_compare) *util_ldap_cache_compare; +static APR_OPTIONAL_FN_TYPE(uldap_cache_checkuserid) *util_ldap_cache_checkuserid; +static APR_OPTIONAL_FN_TYPE(uldap_cache_getuserdn) *util_ldap_cache_getuserdn; +static APR_OPTIONAL_FN_TYPE(uldap_ssl_supported) *util_ldap_ssl_supported; + +static void ImportULDAPOptFn(void) +{ + util_ldap_connection_close = APR_RETRIEVE_OPTIONAL_FN(uldap_connection_close); + util_ldap_connection_find = APR_RETRIEVE_OPTIONAL_FN(uldap_connection_find); + util_ldap_cache_comparedn = APR_RETRIEVE_OPTIONAL_FN(uldap_cache_comparedn); + util_ldap_cache_compare = APR_RETRIEVE_OPTIONAL_FN(uldap_cache_compare); + util_ldap_cache_checkuserid = APR_RETRIEVE_OPTIONAL_FN(uldap_cache_checkuserid); + util_ldap_cache_getuserdn = APR_RETRIEVE_OPTIONAL_FN(uldap_cache_getuserdn); + util_ldap_ssl_supported = APR_RETRIEVE_OPTIONAL_FN(uldap_ssl_supported); +} +#endif + static int mod_vhost_ldap_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { /* make sure that mod_ldap (util_ldap) is loaded */ @@ -185,6 +206,7 @@ static const char *mod_vhost_ldap_parse_url(cmd_parms *cmd, { int result; apr_ldap_url_desc_t *urld; + apr_ldap_err_t *result_err; mod_vhost_ldap_config_t *conf = (mod_vhost_ldap_config_t *)ap_get_module_config(cmd->server->module_config, @@ -194,21 +216,28 @@ static const char *mod_vhost_ldap_parse_url(cmd_parms *cmd, cmd->server, "[mod_vhost_ldap.c] url parse: `%s'", url); +#ifdef APR_HAS_LDAP /* for apache >= 2.2 */ + result = apr_ldap_url_parse(cmd->pool, url, &(urld), &(result_err)); + if (result != LDAP_SUCCESS) { + return result_err->reason; + } +#else result = apr_ldap_url_parse(url, &(urld)); if (result != LDAP_SUCCESS) { switch (result) { - case LDAP_URL_ERR_NOTLDAP: - return "LDAP URL does not begin with ldap://"; - case LDAP_URL_ERR_NODN: - return "LDAP URL does not have a DN"; - case LDAP_URL_ERR_BADSCOPE: - return "LDAP URL has an invalid scope"; - case LDAP_URL_ERR_MEM: - return "Out of memory parsing LDAP URL"; - default: - return "Could not parse LDAP URL"; + case LDAP_URL_ERR_NOTLDAP: + return "LDAP URL does not begin with ldap://"; + case LDAP_URL_ERR_NODN: + return "LDAP URL does not have a DN"; + case LDAP_URL_ERR_BADSCOPE: + return "LDAP URL has an invalid scope"; + case LDAP_URL_ERR_MEM: + return "Out of memory parsing LDAP URL"; + default: + return "Could not parse LDAP URL"; } } +#endif conf->url = apr_pstrdup(cmd->pool, url); ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, @@ -278,7 +307,9 @@ static const char *mod_vhost_ldap_parse_url(cmd_parms *cmd, } conf->have_ldap_url = 1; +#ifdef APU_HAS_LDAP /* free only required for older apr */ apr_ldap_free_urldesc(urld); +#endif return NULL; } @@ -608,6 +639,9 @@ mod_vhost_ldap_register_hooks (apr_pool_t * p) #ifdef HAVE_UNIX_SUEXEC ap_hook_get_suexec_identity(mod_vhost_ldap_get_suexec_id_doer, NULL, NULL, APR_HOOK_MIDDLE); #endif +#ifdef APR_HAS_LDAP + ap_hook_optional_fn_retrieve(ImportULDAPOptFn,NULL,NULL,APR_HOOK_MIDDLE); +#endif } module AP_MODULE_DECLARE_DATA vhost_ldap_module = { -- 2.45.0