Skip to content

Commit 985ec0e

Browse files
committed
Merge branch 'feature/history'
2 parents 17cad94 + a59ef9d commit 985ec0e

File tree

3 files changed

+54
-31
lines changed

3 files changed

+54
-31
lines changed

docker-compose.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ services:
88
# the settings appropriately.
99
#
1010

11+
# To run a NetFlow v5 simulator, use:
12+
# $ docker run --net=host --name nflow networkstatic/nflow-generator -t 127.0.0.1 -p 2055
13+
# (replace the port appropriately)
14+
1115
netflowbot:
1216
# If you wish to load an explicit version, change the next line. For example:
1317
# image: grafolean/grafolean-netflow-bot:v1.0.0

netflowcollector.py

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -63,36 +63,54 @@ def process_netflow(netflow_port, named_pipe_filename):
6363
"ts": ts,
6464
"client": client_ip,
6565
"seq": export.header.sequence,
66-
"flows": [{
67-
"IN_BYTES": data["IN_BYTES"],
68-
"PROTOCOL": data["PROTOCOL"],
69-
"DIRECTION": data["DIRECTION"],
70-
"INPUT_SNMP": data["INPUT_SNMP"],
71-
"OUTPUT_SNMP": data["OUTPUT_SNMP"],
72-
"L4_DST_PORT": data["L4_DST_PORT"],
73-
"L4_SRC_PORT": data["L4_SRC_PORT"],
74-
"IPV4_DST_ADDR": data["IPV4_DST_ADDR"],
75-
"IPV4_SRC_ADDR": data["IPV4_SRC_ADDR"],
76-
} for data in flows_data],
66+
"flows": [[
67+
# "IN_BYTES":
68+
data["IN_BYTES"],
69+
# "PROTOCOL":
70+
data["PROTOCOL"],
71+
# "DIRECTION":
72+
data["DIRECTION"],
73+
# "L4_DST_PORT":
74+
data["L4_DST_PORT"],
75+
# "L4_SRC_PORT":
76+
data["L4_SRC_PORT"],
77+
# "INPUT_SNMP":
78+
data["INPUT_SNMP"],
79+
# "OUTPUT_SNMP":
80+
data["OUTPUT_SNMP"],
81+
# "IPV4_DST_ADDR":
82+
data["IPV4_DST_ADDR"],
83+
# "IPV4_SRC_ADDR":
84+
data["IPV4_SRC_ADDR"],
85+
] for data in flows_data],
7786
}
7887
elif export.header.version == 5:
7988
entry = {
8089
"ts": ts,
8190
"client": client_ip,
8291
"seq": export.header.sequence,
83-
"flows": [{
84-
"IN_BYTES": data["IN_OCTETS"],
85-
"PROTOCOL": data["PROTO"],
86-
"DIRECTION": DIRECTION_INGRESS,
87-
"INPUT_SNMP": data["INPUT"],
88-
"OUTPUT_SNMP": data["OUTPUT"],
89-
"L4_DST_PORT": data["DST_PORT"],
90-
"L4_SRC_PORT": data["SRC_PORT"],
92+
"flows": [[
93+
# "IN_BYTES":
94+
data["IN_OCTETS"],
95+
# "PROTOCOL":
96+
data["PROTO"],
97+
# "DIRECTION":
98+
DIRECTION_INGRESS,
99+
# "L4_DST_PORT":
100+
data["DST_PORT"],
101+
# "L4_SRC_PORT":
102+
data["SRC_PORT"],
103+
# "INPUT_SNMP":
104+
data["INPUT"],
105+
# "OUTPUT_SNMP":
106+
data["OUTPUT"],
91107
# netflow v5 IP addresses are decoded to integers, which is less suitable for us - pack
92108
# them back to bytes and transform them to strings:
93-
"IPV4_DST_ADDR": socket.inet_ntoa(struct.pack('!I', data["IPV4_DST_ADDR"])),
94-
"IPV4_SRC_ADDR": socket.inet_ntoa(struct.pack('!I', data["IPV4_SRC_ADDR"])),
95-
} for data in flows_data],
109+
# "IPV4_DST_ADDR":
110+
socket.inet_ntoa(struct.pack('!I', data["IPV4_DST_ADDR"])),
111+
# "IPV4_SRC_ADDR":
112+
socket.inet_ntoa(struct.pack('!I', data["IPV4_SRC_ADDR"])),
113+
] for data in flows_data],
96114
}
97115
else:
98116
log.error(f"Only Netflow v5 and v9 currently supported, ignoring record (version: [{export.header.version}])")

netflowwriter.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,16 @@ def _get_data(record_db_seq, flows):
8585
for flow in flows:
8686
yield (
8787
record_db_seq,
88-
flow.get('IN_BYTES'),
89-
flow.get('PROTOCOL'),
90-
flow.get('DIRECTION'),
91-
flow.get('L4_DST_PORT'),
92-
flow.get('L4_SRC_PORT'),
93-
flow.get('INPUT_SNMP'),
94-
flow.get('OUTPUT_SNMP'),
95-
flow.get('IPV4_DST_ADDR'),
96-
flow.get('IPV4_SRC_ADDR'),
88+
*flow,
89+
# flow.get('IN_BYTES'),
90+
# flow.get('PROTOCOL'),
91+
# flow.get('DIRECTION'),
92+
# flow.get('L4_DST_PORT'),
93+
# flow.get('L4_SRC_PORT'),
94+
# flow.get('INPUT_SNMP'),
95+
# flow.get('OUTPUT_SNMP'),
96+
# flow.get('IPV4_DST_ADDR'),
97+
# flow.get('IPV4_SRC_ADDR'),
9798
)
9899
data_iterator = _get_data(record_db_seq, j['flows'])
99100
psycopg2.extras.execute_values(

0 commit comments

Comments
 (0)