]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
suricatasc: implement autoreconnect
authorEric Leblond <eric@regit.org>
Tue, 2 Dec 2014 16:37:23 +0000 (17:37 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 31 Jan 2018 13:25:13 +0000 (14:25 +0100)
Implement a basic autoreconnect support. It tries to reconnect once
when connection has been lost. If it fails, it discards the command
and try again to connect at next command.

scripts/suricatasc/src/suricatasc.py

index a5389479719341d2deb31489b20006345078cef8..03483f37c2ce5d6dc23e067253cdfb42000a1541 100644 (file)
@@ -375,7 +375,17 @@ class SuricataSC:
                 except SuricataCommandException as err:
                     print(err)
                     continue
-                cmdret = self.send_command(cmd, arguments)
+                try:
+                    cmdret = self.send_command(cmd, arguments)
+                except IOError as err:
+                    # try to reconnect and resend command
+                    print("Connection lost, trying to reconnect")
+                    try:
+                        self.connect()
+                    except SuricataNetException as err:
+                        print("Can't reconnect to suricata socket, discarding command")
+                        continue
+                    cmdret = self.send_command(cmd, arguments)
                 #decode json message
                 if cmdret["return"] == "NOK":
                     print("Error:")