summaryrefslogtreecommitdiff
path: root/examples/py-flow-info
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-08-18 16:48:01 +0200
committerToni Uhlig <matzeton@googlemail.com>2020-08-18 16:48:01 +0200
commite6c2bc6373d9848cdef61919b1297a1c93e99dc4 (patch)
tree2d7af74b2213f5abfb82879604a3782cf6c0a3ba /examples/py-flow-info
parent230e96803ef1a3428e9b6a237a6b538207af82cd (diff)
merged code to reduce code duplicates
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'examples/py-flow-info')
-rwxr-xr-xexamples/py-flow-info/flow-info.py75
1 files changed, 12 insertions, 63 deletions
diff --git a/examples/py-flow-info/flow-info.py b/examples/py-flow-info/flow-info.py
index 96f2b0346..9704c7c7d 100755
--- a/examples/py-flow-info/flow-info.py
+++ b/examples/py-flow-info/flow-info.py
@@ -1,67 +1,16 @@
#!/usr/bin/env python3
-import json
-import re
+import os
import sys
-import socket
-
-HOST = '127.0.0.1'
-PORT = 7000
-NETWORK_BUFFER_MIN_SIZE = 5
-NETWORK_BUFFER_MAX_SIZE = 8192
-
-class nDPIsrvdSocket:
- def __init__(self, sock=None):
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
- def connect(self, host, port):
- self.sock.connect((host, port))
- self.buffer = bytes()
- self.msglen = 0
- self.digitlen = 0
-
- def receive(self):
- recvd = self.sock.recv(NETWORK_BUFFER_MAX_SIZE - len(self.buffer))
-
- if len(recvd) == 0:
- raise RuntimeError('socket connection broken')
- self.buffer += recvd
-
- retval = []
- while self.msglen + self.digitlen < len(self.buffer):
-
- if self.msglen == 0:
- starts_with_digits = re.match(r'(^\d+){', self.buffer[:NETWORK_BUFFER_MIN_SIZE].decode(errors='strict'))
- if starts_with_digits is None:
- if len(self.buffer) < NETWORK_BUFFER_MIN_SIZE:
- break
- raise RuntimeError('Invalid packet received: {}'.format(self.buffer))
- self.msglen = int(starts_with_digits[1])
- self.digitlen = len(starts_with_digits[1])
-
- if len(self.buffer) >= self.msglen + self.digitlen:
- recvd = self.buffer[self.digitlen:self.msglen + self.digitlen]
- self.buffer = self.buffer[self.msglen + self.digitlen:]
- retval += [(recvd,self.msglen,self.digitlen)]
-
- self.msglen = 0
- self.digitlen = 0
-
- return retval
-
-class TermColor:
- WARNING = '\033[93m'
- FAIL = '\033[91m'
- BOLD = '\033[1m'
- END = '\033[0m'
- BLINK = "\x1b[5m"
+
+sys.path.append(os.path.dirname(sys.argv[0]) + '/../../contrib')
+import nDPIsrvd
+from nDPIsrvd import nDPIsrvdSocket, TermColor
+
def parse_json_str(json_str):
- try:
- j = json.loads(json_str[0])
- except json.decoder.JSONDecodeError as exc:
- raise RuntimeError('JSON Exception: {}\n\nJSON String: {}\n'.format(str(exc), str(json_str)))
+ j = nDPIsrvd.JsonParseBytes(json_str[0])
if 'flow_event_name' in j:
event = j['flow_event_name'].lower()
@@ -101,7 +50,7 @@ def parse_json_str(json_str):
ndpi_frisk[:-2])
if j['l3_proto'] == 'ip4':
- print('{:>14}: [{:.>8}] [{}][{:.>5}] [{:.>15}]{} -> [{:.>15}]{} {}'.format(event_str,
+ print('{:>14}: [{:.>6}] [{}][{:.>5}] [{:.>15}]{} -> [{:.>15}]{} {}'.format(event_str,
j['flow_id'], j['l3_proto'], j['l4_proto'],
j['src_ip'].lower(),
'[{:.>5}]'.format(j['src_port']) if 'src_port' in j else '',
@@ -109,7 +58,7 @@ def parse_json_str(json_str):
'[{:.>5}]'.format(j['dst_port']) if 'dst_port' in j else '',
ndpi_proto_categ))
elif j['l3_proto'] == 'ip6':
- print('{:>14}: [{:.>8}] [{}][{:.>5}] [{:.>39}]{} -> [{:.>39}]{} {}'.format(event_str,
+ print('{:>14}: [{:.>6}] [{}][{:.>5}] [{:.>39}]{} -> [{:.>39}]{} {}'.format(event_str,
j['flow_id'], j['l3_proto'], j['l4_proto'],
j['src_ip'].lower(),
'[{:.>5}]'.format(j['src_port']) if 'src_port' in j else '',
@@ -124,8 +73,8 @@ def parse_json_str(json_str):
if __name__ == '__main__':
- host = HOST
- port = PORT
+ host = nDPIsrvd.DEFAULT_HOST
+ port = nDPIsrvd.DEFAULT_PORT
if len(sys.argv) == 1:
sys.stderr.write('usage: {} [host] [port]\n'.format(sys.argv[0]))
@@ -134,7 +83,7 @@ if __name__ == '__main__':
if len(sys.argv) > 2:
port = int(sys.argv[2])
- sys.stderr.write('Recv buffer size: {}\n'.format(NETWORK_BUFFER_MAX_SIZE))
+ sys.stderr.write('Recv buffer size: {}\n'.format(nDPIsrvd.NETWORK_BUFFER_MAX_SIZE))
sys.stderr.write('Connecting to {}:{} ..\n'.format(host, port))
nsock = nDPIsrvdSocket()