Re: Using DLZ-LDAP with the dNSZone schema
Rob Butler <[email protected]> Fri, 29 May 2009 05:19:56 -0700 (PDT)
| Newsgroups | gmane.network.dns.bind9.dlz |
|---|---|
| Message-ID | <[email protected]> |
Yes, this patch is needed to use DLZ LDAP driver. Sorry, I'm just to busy to keep up with DLZ at the moment (patches, updates, etc) Rob Sent from my iPhone On May 28, 2009, at 5:55 PM, mathgl <[email protected]> wrote: Andreas Heinlein wrote: I have not tried yet, but I am pretty sure that at least the debian lenny packages are built with (partial) DLZ support included. Hi, I've tried ldap driver on debian lenny and the package is built with dlz ldap support. But DLZ ldap driver have been broken by a change in libldap url validation. ("%" is not allowed in RFC3986) http://www.openldap.org/lists/openldap-bugs/200702/msg00087.html I wrote a patch to change "%" by "$". But only for the ldap driver, so no configuration change will be need by users of the others drivers. I sent it to Bind9 bug tracker but i've not received an answer at the moment. Mathieu. >From a4847f27225e1a062723173ba100906fa7f1cd74 Mon Sep 17 00:00:00 2001 From: Mathieu Gauthier-Lafaye Date: Sat, 18 Apr 2009 14:05:08 +0200 Subject: [PATCH] ldap correction 1 --- contrib/dlz/drivers/dlz_ldap_driver.c | 8 ++-- contrib/dlz/drivers/include/dlz/sdlz_helper.h | 13 +++++--- contrib/dlz/drivers/sdlz_helper.c | 39 +++++++++++++------------ 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/contrib/dlz/drivers/dlz_ldap_driver.c b/contrib/dlz/drivers/dlz_ldap_driver.c index 35d7548..fc83bd3 100644 --- a/contrib/dlz/drivers/dlz_ldap_driver.c +++ b/contrib/dlz/drivers/dlz_ldap_driver.c @@ -1094,22 +1094,22 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[], /* how many queries were passed in from config file? */ switch(argc) { case 9: - result = build_sqldbinstance(ns_g_mctx, NULL, NULL, + result = build_sqldbinstance2(ns_g_mctx, "$", NULL, NULL, NULL, argv[7], argv[8], NULL, &dbi); break; case 10: - result = build_sqldbinstance(ns_g_mctx, NULL, NULL, + result = build_sqldbinstance2(ns_g_mctx, "$", NULL, NULL, argv[9], argv[7], argv[8], NULL, &dbi); break; case 11: - result = build_sqldbinstance(ns_g_mctx, argv[10], NULL, + result = build_sqldbinstance2(ns_g_mctx, "$", argv[10], NULL, argv[9], argv[7], argv[8], NULL, &dbi); break; case 12: - result = build_sqldbinstance(ns_g_mctx, argv[10], + result = build_sqldbinstance2(ns_g_mctx, "$", argv[10], argv[11], argv[9], argv[7], argv[8], NULL, &dbi); diff --git a/contrib/dlz/drivers/include/dlz/sdlz_helper.h b/contrib/dlz/drivers/include/dlz/sdlz_helper.h index 764a05a..53dd563 100644 --- a/contrib/dlz/drivers/include/dlz/sdlz_helper.h +++ b/contrib/dlz/drivers/include/dlz/sdlz_helper.h @@ -95,10 +95,11 @@ char * sdlzh_build_query string(isc_mem_t *mctx, query_list_t *querylist); isc_result_t -sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *allnodes_str, - const char *allowxfr_str, const char *authority_str, - const char *findzone_str, const char *lookup_str, - const char *countzone_str, dbinstance_t **dbi); +sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char * split_str, + const char *allnodes_str, const char *allowxfr_str, + const char *authority_str, const char *findzone_str, + const char *lookup_str, const char *countzone_str, + dbinstance_t **dbi); void sdlzh_destroy_sqldbinstance(dbinstance_t *dbi); @@ -109,9 +110,11 @@ sdlzh_get_parameter_value(isc_mem_t *mctx, const char *input, const char* key); /* Compatability with existing DLZ drivers */ #define build_querystring sdlzh_build_querystring -#define build_sqldbinstance sdlzh_build_sqldbinstance #define destroy_sqldbinstance sdlzh_destroy_sqldbinstance +#define build_sqldbinstance(mc,an,ax,at,fz,lk,cz,di) s dlzh_build_sqldbinstance(mc,"%",an,ax,at,fz,lk,cz,di) +#define build_sqldbinstance2 sdlzh_build_sqldbinstance + #define getParameterValue(x,y) sdlzh_get_parameter_value(ns_g_mctx, (x), (y)) #endif /* SDLZHELPER_H */ diff --git a/contrib/dlz/drivers/sdlz_helper.c b/contrib/dlz/drivers/sdlz_helper.c index ea33db1..c19658a 100644 --- a/contrib/dlz/drivers/sdlz_helper.c +++ b/contrib/dlz/drivers/sdlz_helper.c @@ -107,8 +107,8 @@ destroy_querylist(isc_mem_t *mctx, query_list_t **querylist) /*% constructs a query list by parsing a string into query segments */ static isc_result_t -build_querylist(isc_mem_t *mctx, const char *query_str, char **zone, - char **record, char **client, query_list_t **querylist, +build_querylist(isc_mem_t *mctx, const char *split_str, const char *query_str, + char **zone, char **record, char **client, query_list_t **querylist, unsigned int flags) { isc_result_t result; @@ -171,7 +171,7 @@ build_querylist(i sc_mem_t *mctx, const char *query_str, char **zone, */ tseg->sql = isc_mem_strdup(mctx, isc_string_separate(&right_str, - "%")); + split_str)); if (tseg->sql == NULL) { /* no memory, clean everything up. */ result = ISC_R_NOMEMORY; @@ -337,10 +337,11 @@ sdlzh_build_querystring(isc_mem_t *mctx, query_list_t *querylist) /*% constructs a sql dbinstance (DBI) */ isc_result_t -sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *allnodes_str, - const char *allowxfr_str, const char *authority_str, - const char *findzone_str, const char *lookup_str, - const char *countzone_str, dbinstance_t **dbi) +sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *split_str, + const char *allnodes_str, const char *allowxfr_str, + const char *authority_str, const char *findzone_str, + const char *lookup_str, const char *countzone_str, + dbinstance_t **dbi) { isc_result_t result; @@ -385,8 +386,8 @@ sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *allno des_str, } /* build the all nodes query list */ - result = build_querylist(mctx, allnodes_str, &db->zone, - &db->record, &db->client, + result = build_querylist(mctx, split_str, allnodes_str, + &db->zone, &db->record, &db->client, &db->allnodes_q, SDLZH_REQUIRE_ZONE); /* if unsuccessful, log err msg and cleanup */ if (result != ISC_R_SUCCESS) { @@ -397,8 +398,8 @@ sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *allnodes_str, } /* build the allow zone transfer query list */ - result = build_querylist(mctx, allowxfr_str, &db->zone, - &db->record, &db->client, + result = build_querylist(mctx, split_str, allowxfr_str, + &db->zone, &db->record, &db->client, &db->allowxfr_q, SDLZH_REQUIRE_ZONE | SDLZH_REQUIRE_CLIENT); /* if unsuccessful, log err msg and cleanup */ @@ -410,8 +411,8 @@ sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *allnodes_str, } /* build the authority query, query list */ - result = build_querylist(mctx, authority_str, &db- >zone, - &db->record, &db->client, + result = build_querylist(mctx, split_str, authority_str, + &db->zone, &db->record, &db->client, &db->authority_q, SDLZH_REQUIRE_ZONE); /* if unsuccessful, log err msg and cleanup */ if (result != ISC_R_SUCCESS) { @@ -422,8 +423,8 @@ sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *allnodes_str, } /* build findzone query, query list */ - result = build_querylist(mctx, findzone_str, &db->zone, - &db->record, &db->client, + result = build_querylist(mctx, split_str, findzone_str, + &db->zone, &db->record, &db->client, &db->findzone_q, SDLZH_REQUIRE_ZONE); /* if unsuccessful, log err msg and cleanup */ if (result != ISC_R_SUCCESS) { @@ -434,8 +435,8 @@ sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *allnodes_str, } /* build countzone query, query list */ - result = build_querylist(mctx, countzone_str, &db->zone, - &db->record, &db->client, + result = build_querylist(mctx, split_str, countz one_str, + &db->zone, &db->record, &db->client, &db->countzone_q, SDLZH_REQUIRE_ZONE); /* if unsuccessful, log err msg and cleanup */ if (result != ISC_R_SUCCESS) { @@ -446,8 +447,8 @@ sdlzh_build_sqldbinstance(isc_mem_t *mctx, const char *allnodes_str, } /* build lookup query, query list */ - result = build_querylist(mctx, lookup_str, &db->zone, - &db->record, &db->client, + result = build_querylist(mctx, split_str, lookup_str, + &db->zone, &db->record, &db->client, &db->lookup_q, SDLZH_REQUIRE_RECORD); /* if unsuccessful, log err msg and cleanup */ if (result != ISC_R_SUCCESS) { -- 1.5.6.3 ------------------------------------------------------------------------------ Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers & brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, & iPhoneDevCamp as they present alongside digital heavyweights like Barbarian Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com _______________________________________________ Bind-dlz-testers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/bind-dlz-testers ------------------------------------------------------------------------------ Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers & brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, & iPhoneDevCamp as they present alongside digital heavyweights like Barbarian Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com