# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-import simplejson as json
+try:
+ import simplejson as json
+except:
+ import json
import re
import readline
from socket import socket, AF_UNIX, error
if state == 0:
self.generator = self.complete(text)
try:
- return self.generator.next()
+ return next(self.generator)
except StopIteration:
return None
return None
data = ""
while i < 5:
i += 1
- data += self.socket.recv(SIZE)
+ if sys.version < '3':
+ data += self.socket.recv(SIZE)
+ else:
+ data += self.socket.recv(SIZE).decode('iso-8859-1')
try:
cmdret = json.loads(data)
break
- except json.decoder.JSONDecodeError:
+ except:
sleep(0.3)
return cmdret
if (arguments != None):
cmdmsg['arguments'] = arguments
if self.verbose:
- print "SND: " + json.dumps(cmdmsg)
- self.socket.send(json.dumps(cmdmsg))
+ print("SND: " + json.dumps(cmdmsg))
+ if sys.version < '3':
+ self.socket.send(json.dumps(cmdmsg))
+ else:
+ self.socket.send(bytes(json.dumps(cmdmsg), 'iso-8859-1'))
cmdret = self.json_recv()
if cmdret == None:
raise SuricataReturnException("Unable to get message from server")
if self.verbose:
- print "RCV: "+ json.dumps(cmdret)
+ print("RCV: "+ json.dumps(cmdret))
return cmdret
try:
self.socket = socket(AF_UNIX)
self.socket.connect(self.sck_path)
- except error, err:
+ except error as err:
raise SuricataNetException(err)
self.socket.settimeout(10)
#send version
if self.verbose:
- print "SND: " + json.dumps({"version": VERSION})
- self.socket.send(json.dumps({"version": VERSION}))
+ print("SND: " + json.dumps({"version": VERSION}))
+ if sys.version < '3':
+ self.socket.send(json.dumps({"version": VERSION}))
+ else:
+ self.socket.send(bytes(json.dumps({"version": VERSION}), 'iso-8859-1'))
# get return
cmdret = self.json_recv()
raise SuricataReturnException("Unable to get message from server")
if self.verbose:
- print "RCV: "+ json.dumps(cmdret)
+ print("RCV: "+ json.dumps(cmdret))
if cmdret["return"] == "NOK":
raise SuricataReturnException("Error: %s" % (cmdret["message"]))
return (cmd, arguments)
def interactive(self):
- print "Command list: " + ", ".join(self.cmd_list)
+ print("Command list: " + ", ".join(self.cmd_list))
try:
readline.set_completer(SuricataCompleter(self.cmd_list))
readline.set_completer_delims(";")
readline.parse_and_bind('tab: complete')
while True:
- command = raw_input(">>> ").strip()
+ if sys.version < '3':
+ command = raw_input(">>> ").strip()
+ else:
+ command = input(">>> ").strip()
if command == "quit":
break;
try:
(cmd, arguments) = self.parse_command(command)
- except SuricataCommandException, err:
- print err
+ except SuricataCommandException as err:
+ print(err)
continue
cmdret = self.send_command(cmd, arguments)
#decode json message
if cmdret["return"] == "NOK":
- print "Error:"
- print json.dumps(cmdret["message"], sort_keys=True, indent=4, separators=(',', ': '))
+ print("Error:")
+ print(json.dumps(cmdret["message"], sort_keys=True, indent=4, separators=(',', ': ')))
else:
- print "Success:"
- print json.dumps(cmdret["message"], sort_keys=True, indent=4, separators=(',', ': '))
+ print("Success:")
+ print(json.dumps(cmdret["message"], sort_keys=True, indent=4, separators=(',', ': ')))
except KeyboardInterrupt:
- print "[!] Interrupted"
+ print("[!] Interrupted")
sc = SuricataSC(SOCKET_PATH, verbose=args.verbose)
try:
sc.connect()
-except SuricataNetException, err:
- print "Unable to connect to socket %s: %s" % (SOCKET_PATH, err)
+except SuricataNetException as err:
+ print("Unable to connect to socket %s: %s" % (SOCKET_PATH, err))
sys.exit(1)
-except SuricataReturnException, err:
- print "Unable to negotiate version with server: %s" % (err)
+except SuricataReturnException as err:
+ print("Unable to negotiate version with server: %s" % (err))
sys.exit(1)
if args.command:
(command, arguments) = sc.parse_command(args.command)
- print sc.send_command(command, arguments)
+ print(sc.send_command(command, arguments))
sc.close()
sys.exit(0)
try:
sc.interactive()
-except SuricataNetException, err:
- print "Communication error: %s" % (err)
+except SuricataNetException as err:
+ print("Communication error: %s" % (err))
sys.exit(1)
-except SuricataReturnException, err:
- print "Invalid return from server: %s" % (err)
+except SuricataReturnException as err:
+ print("Invalid return from server: %s" % (err))
sys.exit(1)
-print "[+] Quit command client"
+print("[+] Quit command client")
sc.close()