summaryrefslogtreecommitdiffstats
path: root/source4/dsdb
diff options
context:
space:
mode:
authorMatthieu Patou <mat@matws.net>2010-04-23 17:27:05 +0400
committerStefan Metzmacher <metze@samba.org>2010-04-24 14:09:10 +0200
commitc88b83b7c1abc53866cda4e67c5183e11e31a910 (patch)
treefeaa08031a67a9352d5b8173df89a6a7d01737f3 /source4/dsdb
parentf25ebe37281f84608f13891e08d555e3db817963 (diff)
downloadsamba-c88b83b7c1abc53866cda4e67c5183e11e31a910.tar.gz
samba-c88b83b7c1abc53866cda4e67c5183e11e31a910.tar.xz
samba-c88b83b7c1abc53866cda4e67c5183e11e31a910.zip
s4 dns: Allow to specify static grant entries to be added to the dynamicaly generated named.conf.update
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source4/dsdb')
-rw-r--r--source4/dsdb/dns/dns_update.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/source4/dsdb/dns/dns_update.c b/source4/dsdb/dns/dns_update.c
index 0e8f141f3e..1420bb7f4b 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);