diff -Naur rabl_server-1.0.0/rabl_server.c rabl_server-1.0.0.new/rabl_server.c --- rabl_server-1.0.0/rabl_server.c 2005-07-23 05:08:34.000000000 +0200 +++ rabl_server-1.0.0.new/rabl_server.c 2006-05-24 08:28:37.918941000 +0200 @@ -125,6 +125,7 @@ pthread_rwlock_init(&config->lock, NULL); config->log = NULL; config->doscmd = NULL; + config->dns_reload_cmd = NULL; config->zone_template = NULL; config->zone_output = NULL; config->auth = btree_create(); @@ -242,6 +243,11 @@ cmd = strtok(NULL, "\""); if (cmd != NULL) config->doscmd = strdup(cmd); + } else if (!strcasecmp(token, "DNSRELOADCMD")) { + char *cmd; + cmd = strtok(NULL, "\""); + if (cmd != NULL) + config->dns_reload_cmd = strdup(cmd); } else if (!strcasecmp(token, "ZONETEMPLATE")) { char *filename; filename = strtok(NULL, "\t \n"); @@ -296,6 +302,7 @@ free(config->log); free(config->doscmd); + free(config->dns_reload_cmd); free(config->zone_template); free(config->zone_output); ht_destroy(config->conn_count); @@ -735,6 +742,15 @@ } if (out) fclose(out); + + /* run DNS reload cmd */ + if (config->dns_reload_cmd != NULL) { +#ifdef DEBUG + printf("calling: %s\n", config->dns_reload_cmd); +#endif + system(config->dns_reload_cmd); + } + pthread_rwlock_unlock(&config->rabl_ipv4->lock); if (pthread_rwlock_wrlock(&config->rabl_ipv6->lock)) @@ -1263,6 +1279,11 @@ cmd = strtok(NULL, "\""); if (cmd != NULL) config->doscmd = strdup(cmd); + } else if (!strcmp(token, "DNSRELOADCMD")) { + char *cmd; + cmd = strtok(NULL, "\""); + if (cmd != NULL) + config->dns_reload_cmd = strdup(cmd); } } diff -Naur rabl_server-1.0.0/rabl_server.conf rabl_server-1.0.0.new/rabl_server.conf --- rabl_server-1.0.0/rabl_server.conf 2005-07-23 05:04:22.000000000 +0200 +++ rabl_server-1.0.0.new/rabl_server.conf 2006-05-24 08:48:08.580102750 +0200 @@ -23,6 +23,9 @@ # Command to execute if being DoSed DoSCMD "echo 'block in quick from %s/32 to any' | ipf -f -" +# Command to execute every Cleanup Interval for reloading DNS server +DNSReloadCMD "/usr/sbin/rndc -k /etc/bind/rabl.mydomain.com.key refresh rabl.mydomain.com" + # Zone file writing ZoneTemplate /var/named/rabl.mydomain.com.template ZoneOutput /var/named/rabl.mydomain.com diff -Naur rabl_server-1.0.0/rabl_server.h rabl_server-1.0.0.new/rabl_server.h --- rabl_server-1.0.0/rabl_server.h 2005-07-23 04:58:06.000000000 +0200 +++ rabl_server-1.0.0.new/rabl_server.h 2006-05-24 07:35:19.139029750 +0200 @@ -51,6 +51,7 @@ unsigned long life; /* Blacklist life */ char *log; /* Logfile */ char *doscmd; /* DoS Cmd */ + char *dns_reload_cmd; /* Name server reload Cmd */ char *zone_template; char *zone_output; pthread_rwlock_t lock; /* Lock for reloading */