]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
unix socket: implement command-list command
authorEric Leblond <eric@regit.org>
Fri, 30 Nov 2012 16:33:38 +0000 (17:33 +0100)
committerVictor Julien <victor@inliniac.net>
Tue, 26 Feb 2013 11:32:47 +0000 (12:32 +0100)
scripts/suricatasc/suricatasc.in
src/unix-manager.c

index 78fb78bed45ba8e3cc66d937e8969d16665cce47..4aae2efe8edf7a542aec0f924152e4e9d06a2a24 100755 (executable)
@@ -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)
index 8c42c42c5e9c7443c030254a2d092ae2e97e6621..94995a5ed55a25a535e17773b838be18c02bbc04 100644 (file)
@@ -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