29 lines
842 B
Python
29 lines
842 B
Python
|
#!/usr/bin/env python3
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
from dateutil.parser import parse
|
||
|
from csv import DictReader
|
||
|
from io import BytesIO, StringIO
|
||
|
from typing import Tuple, Generator
|
||
|
from datetime import datetime
|
||
|
|
||
|
|
||
|
def parse_raw_file(self, f: BytesIO) -> Generator[Tuple[str, datetime], None, None]:
|
||
|
default_ts = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
|
||
|
reader = DictReader(StringIO(f.getvalue().decode()))
|
||
|
for row in reader:
|
||
|
if 'timestamp' in row:
|
||
|
ts = parse(row['timestamp'])
|
||
|
else:
|
||
|
ts = default_ts
|
||
|
|
||
|
if 'ip' in row:
|
||
|
ip = row['ip']
|
||
|
elif 'src_ip' in row:
|
||
|
# For sinkhole6_http
|
||
|
ip = row['src_ip']
|
||
|
else:
|
||
|
self.logger.critical(f'No IPs in the list {self.source}.')
|
||
|
break
|
||
|
yield ip, ts
|