From: Eric Leblond Date: Fri, 30 Nov 2012 16:33:38 +0000 (+0100) Subject: unix socket: implement command-list command X-Git-Tag: suricata-1.4.1~35 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fc7e6c4a3dceb51b098f11b96339082d940b6740;p=thirdparty%2Fsuricata.git unix socket: implement command-list command --- diff --git a/scripts/suricatasc/suricatasc.in b/scripts/suricatasc/suricatasc.in index 78fb78bed4..4aae2efe8e 100755 --- a/scripts/suricatasc/suricatasc.in +++ b/scripts/suricatasc/suricatasc.in @@ -27,7 +27,7 @@ if len(sys.argv) == 2: else: SOCKET_PATH = "@e_localstatedir@/suricata-command.socket" SIZE = 4096 -COMMANDS_REGEX = re.compile("^(?:shutdown|quit|reload-rules|pcap-file .+|pcap-file-number|pcap-file-list|iface-list|iface-stat .+)$") +COMMANDS_REGEX = re.compile("^(?:shutdown|quit|command-list|reload-rules|pcap-file .+|pcap-file-number|pcap-file-list|iface-list|iface-stat .+)$") socket = socket(AF_UNIX) socket.connect(SOCKET_PATH) diff --git a/src/unix-manager.c b/src/unix-manager.c index 8c42c42c5e..94995a5ed5 100644 --- a/src/unix-manager.c +++ b/src/unix-manager.c @@ -583,6 +583,41 @@ TmEcode UnixManagerShutdownCommand(json_t *cmd, SCReturnInt(TM_ECODE_OK); } +TmEcode UnixManagerListCommand(json_t *cmd, + json_t *answer, void *data) +{ + SCEnter(); + json_t *jdata; + json_t *jarray; + Command *lcmd = NULL; + UnixCommand *gcmd = (UnixCommand *) data; + int i = 0; + + jdata = json_object(); + if (jdata == NULL) { + json_object_set_new(answer, "message", + json_string("internal error at json object creation")); + return TM_ECODE_FAILED; + } + jarray = json_array(); + if (jarray == NULL) { + json_object_set_new(answer, "message", + json_string("internal error at json object creation")); + return TM_ECODE_FAILED; + } + + TAILQ_FOREACH(lcmd, &gcmd->commands, next) { + json_array_append(jarray, json_string(lcmd->name)); + i++; + } + + json_object_set_new(jdata, "count", json_integer(i)); + json_object_set_new(jdata, "commands", jarray); + json_object_set_new(answer, "message", jdata); + SCReturnInt(TM_ECODE_OK); +} + + #if 0 TmEcode UnixManagerReloadRules(json_t *cmd, json_t *server_msg, void *data) @@ -735,6 +770,7 @@ void *UnixManagerThread(void *td) /* Init Unix socket */ UnixManagerRegisterCommand("shutdown", UnixManagerShutdownCommand, NULL, 0); + UnixManagerRegisterCommand("command-list", UnixManagerListCommand, &command, 0); #if 0 UnixManagerRegisterCommand("reload-rules", UnixManagerReloadRules, NULL, 0); #endif