* POSSIBILITY OF SUCH DAMAGE.
*/
-#include <ratbox_lib.h>
-#include <stdio.h>
-
-#include "setup.h"
-#include "common.h"
+#include "authd.h"
+#include "dns.h"
#define MAXPARA 10
-static rb_helper *authd_helper = NULL;
+static void handle_reload(int parc, char *parv[]);
+static void handle_stat(int parc, char *parv[]);
+
+rb_helper *authd_helper = NULL;
+authd_cmd_handler authd_cmd_handlers[256] = {
+ ['H'] = handle_reload,
+ ['D'] = resolve_dns,
+ ['S'] = handle_stat,
+};
+
+authd_stat_handler authd_stat_handlers[256] = {
+ ['D'] = enumerate_nameservers,
+};
+
+authd_reload_handler authd_reload_handlers[256] = {
+ ['D'] = reload_nameservers,
+};
+
+static void
+handle_stat(int parc, char *parv[])
+{
+ authd_stat_handler handler;
+
+ if(parc < 3)
+ /* XXX Should log this somehow */
+ return;
+
+ if (!(handler = authd_stat_handlers[(unsigned char)parv[2][0]]))
+ return;
+
+ handler(parv[1], parv[2][0]);
+}
+
+static void
+handle_reload(int parc, char *parv[])
+{
+ authd_reload_handler handler;
+
+ if(parc < 2)
+ /* XXX Should log this somehow */
+ return;
+
+ if (!(handler = authd_reload_handlers[(unsigned char)parv[1][0]]))
+ return;
+
+ handler(parv[1][0]);
+}
static void
parse_request(rb_helper *helper)
static char readbuf[READBUF_SIZE];
int parc;
int len;
+ authd_cmd_handler handler;
while((len = rb_helper_read(helper, readbuf, sizeof(readbuf))) > 0)
{
if(parc < 1)
continue;
- switch (parv[0][0])
- {
- default:
- break;
- }
+ handler = authd_cmd_handlers[(unsigned char)parv[0][0]];
+ if (handler != NULL)
+ handler(parc, parv);
}
}
exit(1);
}
-#ifndef WINDOWS
+#ifndef _WIN32
static void
dummy_handler(int sig)
{
static void
setup_signals(void)
{
-#ifndef WINDOWS
+#ifndef _WIN32
struct sigaction act;
act.sa_flags = 0;
exit(1);
}
+ rb_set_time();
+ setup_signals();
+ init_resolver();
+ rb_init_prng(NULL, RB_PRNG_DEFAULT);
+
rb_helper_loop(authd_helper, 0);
return 0;