UNTESTED REFACTORING:
Move more functionality into Metadata Model classes to ensure data is available and better passable between functions.
This commit is contained in:
@@ -36,5 +36,3 @@ def set_device_mac_address(mac_addr: str, file_path: Path):
|
||||
with file_path.open('w') as f:
|
||||
json.dump(data, f)
|
||||
return ReturnCodes.SUCCESS
|
||||
|
||||
# TODO finnish for other fields in capture metadata
|
||||
|
||||
44
code/iottb/utils/capture_utils.py
Normal file
44
code/iottb/utils/capture_utils.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import uuid
|
||||
from pathlib import Path
|
||||
from iottb.models.device_metadata_model import dir_contains_device_metadata
|
||||
from iottb.utils.utils import get_iso_date
|
||||
|
||||
|
||||
def get_capture_uuid():
|
||||
return str(uuid.uuid4())
|
||||
|
||||
|
||||
def get_capture_date_folder(device_root: Path):
|
||||
today_iso = get_iso_date()
|
||||
today_folder = device_root / today_iso
|
||||
if dir_contains_device_metadata(device_root):
|
||||
if not today_folder.is_dir():
|
||||
try:
|
||||
today_folder.mkdir()
|
||||
except FileExistsError:
|
||||
print(f"Folder {today_folder} already exists")
|
||||
return today_folder
|
||||
raise FileNotFoundError(f"Given path {device_root} is not a device root directory")
|
||||
|
||||
|
||||
def get_capture_src_folder(device_folder: Path):
|
||||
assert device_folder.is_dir(), f"Given path {device_folder} is not a folder"
|
||||
today_iso = get_iso_date()
|
||||
max_sequence_number = 1
|
||||
for d in device_folder.iterdir():
|
||||
if d.is_dir() and d.name.startswith(f'{today_iso}_capture_'):
|
||||
name = d.name
|
||||
num = int(name.split("_")[2])
|
||||
max_sequence_number = max(max_sequence_number, num)
|
||||
|
||||
next_sequence_number = max_sequence_number + 1
|
||||
return device_folder.joinpath(f"{today_iso}_capture_{next_sequence_number:03}")
|
||||
|
||||
|
||||
def make_capture_src_folder(capture_src_folder: Path):
|
||||
try:
|
||||
capture_src_folder.mkdir()
|
||||
except FileExistsError:
|
||||
print(f"Folder {capture_src_folder} already exists")
|
||||
finally:
|
||||
return capture_src_folder
|
||||
@@ -47,3 +47,5 @@ def update_device_type(device_type: str, file_path: Path):
|
||||
with file_path.open('w') as file:
|
||||
json.dump(metadata, file)
|
||||
return ReturnCodes.SUCCESS
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import ipaddress
|
||||
import shutil
|
||||
import subprocess
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def check_installed() -> bool:
|
||||
@@ -24,5 +26,16 @@ def list_interfaces() -> str:
|
||||
return ""
|
||||
|
||||
|
||||
def start_tcpdump():
|
||||
return None
|
||||
def is_valid_ipv4(ip: str) -> bool:
|
||||
try:
|
||||
ipaddress.IPv4Address(ip)
|
||||
return True
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
def str_to_ipv4(ip: str) -> (bool, Optional[ipaddress]):
|
||||
try:
|
||||
address = ipaddress.IPv4Address(ip)
|
||||
return address == ipaddress.IPv4Address(ip), address
|
||||
except ipaddress.AddressValueError:
|
||||
return False, None
|
||||
|
||||
18
code/iottb/utils/utils.py
Normal file
18
code/iottb/utils/utils.py
Normal file
@@ -0,0 +1,18 @@
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from iottb.definitions import TODAY_DATE_STRING, DEVICE_METADATA_FILE, CAPTURE_METADATA_FILE
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def get_iso_date():
|
||||
return datetime.now().strftime('%Y-%m-%d')
|
||||
|
||||
|
||||
def subfolder_exists(parent: Path, child: str):
|
||||
return parent.joinpath(child).exists()
|
||||
|
||||
|
||||
def generate_unique_string_with_prefix(prefix: str):
|
||||
return prefix + "_" + str(uuid.uuid4())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user