def close(self):
self.socket.close()
+ def parse_command(self, command):
+ arguments = None
+ if command.split(' ', 2)[0] in self.cmd_list:
+ if "pcap-file " in command:
+ try:
+ [cmd, filename, output] = command.split(' ', 2)
+ except:
+ raise SuricataCommandException("Arguments to command '%s' is missing" % (command))
+ if cmd != "pcap-file":
+ raise SuricataCommandException("Invalid command '%s'" % (command))
+ else:
+ arguments = {}
+ arguments["filename"] = filename
+ arguments["output-dir"] = output
+ elif "iface-stat" in command:
+ try:
+ [cmd, iface] = command.split(' ', 1)
+ except:
+ raise SuricataCommandException("Unable to split command '%s'" % (command))
+ if cmd != "iface-stat":
+ raise SuricataCommandException("Invalid command '%s'" % (command))
+ else:
+ arguments = {}
+ arguments["iface"] = iface
+ elif "conf-get" in command:
+ try:
+ [cmd, variable] = command.split(' ', 1)
+ except:
+ raise SuricataCommandException("Unable to split command '%s'" % (command))
+ if cmd != "conf-get":
+ raise SuricataCommandException("Invalid command '%s'" % (command))
+ else:
+ arguments = {}
+ arguments["variable"] = variable
+ else:
+ cmd = command
+ else:
+ raise SuricataCommandException("Unknown command '%s'" % (command))
+ return (cmd, arguments)
+
def interactive(self):
print "Command list: " + ", ".join(self.cmd_list)
try:
readline.parse_and_bind('tab: complete')
while True:
command = raw_input(">>> ").strip()
- arguments = None
- if command.split(' ', 2)[0] in self.cmd_list:
- if command == "quit":
- break;
- if "pcap-file " in command:
- try:
- [cmd, filename, output] = command.split(' ', 2)
- except:
- print "Error: arguments to command '%s' is missing" % (command)
- continue
- if cmd != "pcap-file":
- print "Error: invalid command '%s'" % (command)
- continue
- else:
- arguments = {}
- arguments["filename"] = filename
- arguments["output-dir"] = output
- elif "iface-stat" in command:
- try:
- [cmd, iface] = command.split(' ', 1)
- except:
- print "Error: unable to split command '%s'" % (command)
- continue
- if cmd != "iface-stat":
- print "Error: invalid command '%s'" % (command)
- continue
- else:
- arguments = {}
- arguments["iface"] = iface
- elif "conf-get" in command:
- try:
- [cmd, variable] = command.split(' ', 1)
- except:
- print "Error: unable to split command '%s'" % (command)
- continue
- if cmd != "conf-get":
- print "Error: invalid command '%s'" % (command)
- continue
- else:
- arguments = {}
- arguments["variable"] = variable
- else:
- cmd = command
- else:
- print "Error: unknown command '%s'" % (command)
+ if command == "quit":
+ break;
+ try:
+ (cmd, arguments) = self.parse_command(command)
+ except SuricataCommandException, err:
+ print err
continue
-
cmdret = self.send_command(cmd, arguments)
#decode json message
if cmdret["return"] == "NOK":