From: Matthieu Patou Date: Fri, 23 Apr 2010 13:27:05 +0000 (+0400) Subject: s4 dns: Allow to specify static grant entries to be added to the dynamicaly generated... X-Git-Tag: samba-3.6.0pre1~2574 X-Git-Url: http://git.samba.org/?p=samba.git;a=commitdiff_plain;h=c88b83b7c1abc53866cda4e67c5183e11e31a910 s4 dns: Allow to specify static grant entries to be added to the dynamicaly generated named.conf.update Signed-off-by: Stefan Metzmacher --- diff --git a/source4/dsdb/dns/dns_update.c b/source4/dsdb/dns/dns_update.c index 0e8f141f3e8..1420bb7f4b0 100644 --- a/source4/dsdb/dns/dns_update.c +++ b/source4/dsdb/dns/dns_update.c @@ -93,8 +93,10 @@ static void dnsupdate_rndc_done(struct tevent_req *subreq) static void dnsupdate_rebuild(struct dnsupdate_service *service) { int ret; + size_t size; struct ldb_result *res; - const char *tmp_path, *path; + const char *tmp_path, *path, *path_static; + char *static_policies; int fd; unsigned int i; const char *attrs[] = { "sAMAccountName", NULL }; @@ -119,13 +121,20 @@ static void dnsupdate_rebuild(struct dnsupdate_service *service) path = private_path(tmp_ctx, service->task->lp_ctx, "named.conf.update"); } + path_static = lp_parm_string(service->task->lp_ctx, NULL, "dnsupdate", "extra_static_grant_rules"); + if (path_static == NULL) { + path_static = private_path(tmp_ctx, service->task->lp_ctx, "named.conf.update.static"); + } + tmp_path = talloc_asprintf(tmp_ctx, "%s.tmp", path); - if (path == NULL || tmp_path == NULL) { - DEBUG(0,(__location__ ": Unable to get paths")); + if (path == NULL || tmp_path == NULL || path_static == NULL ) { + DEBUG(0,(__location__ ": Unable to get paths\n")); talloc_free(tmp_ctx); return; } + static_policies = file_load(path_static, &size, 0, tmp_ctx); + unlink(tmp_path); fd = open(tmp_path, O_CREAT|O_TRUNC|O_WRONLY, 0444); if (fd == -1) { @@ -136,6 +145,11 @@ static void dnsupdate_rebuild(struct dnsupdate_service *service) dprintf(fd, "/* this file is auto-generated - do not edit */\n"); dprintf(fd, "update-policy {\n"); + if( static_policies != NULL ) { + dprintf(fd, "/* Start of static entries */\n"); + dprintf(fd, "%s\n",static_policies); + dprintf(fd, "/* End of static entries */\n"); + } dprintf(fd, "\tgrant %s ms-self * A AAAA;\n", realm); dprintf(fd, "\tgrant administrator@%s wildcard * A AAAA SRV CNAME TXT;\n", realm);