#2676: Update naming of NMNE class

This commit is contained in:
Nick Todd
2024-07-02 11:15:31 +01:00
parent 4796cee2dc
commit dbc1d73c34
2 changed files with 15 additions and 9 deletions

View File

@@ -23,7 +23,7 @@ from primaite.simulator.network.hardware.nodes.network.firewall import Firewall
from primaite.simulator.network.hardware.nodes.network.router import Router
from primaite.simulator.network.hardware.nodes.network.switch import Switch
from primaite.simulator.network.hardware.nodes.network.wireless_router import WirelessRouter
from primaite.simulator.network.nmne import set_nmne_config
from primaite.simulator.network.nmne import store_nmne_config, NmneData
from primaite.simulator.network.transmission.transport_layer import Port
from primaite.simulator.sim_container import Simulation
from primaite.simulator.system.applications.database_client import DatabaseClient
@@ -113,6 +113,9 @@ class PrimaiteGame:
self._reward_calculation_order: List[str] = [name for name in self.agents]
"""Agent order for reward evaluation, as some rewards can be dependent on other agents' rewards."""
self.nmne_config: NmneData = None
""" Config data from Number of Malicious Network Events."""
def step(self):
"""
Perform one step of the simulation/agent loop.
@@ -496,10 +499,11 @@ class PrimaiteGame:
# Validate that if any agents are sharing rewards, they aren't forming an infinite loop.
game.setup_reward_sharing()
# Set the NMNE capture config
set_nmne_config(network_config.get("nmne_config", {}))
game.update_agents(game.get_sim_state())
# Set the NMNE capture config
game.nmne_config = store_nmne_config(network_config.get("nmne_config", {}))
return game
def setup_reward_sharing(self):
@@ -539,3 +543,6 @@ class PrimaiteGame:
# sort the agents so the rewards that depend on other rewards are always evaluated later
self._reward_calculation_order = topological_sort(graph)
def get_nmne_config(self) -> NmneData:
return self.nmne_config

View File

@@ -4,7 +4,7 @@ from typing import Dict, List
@dataclass
class nmne_data:
class NmneData:
"""Store all the information to perform NMNE operations."""
capture_nmne: bool = True
@@ -23,10 +23,9 @@ class nmne_data:
"""Captures should be filtered and categorised based on specific keywords."""
def set_nmne_config(nmne_config: Dict) -> nmne_data:
def store_nmne_config(nmne_config: Dict) -> NmneData:
"""
Sets the configuration for capturing Malicious Network Events (MNEs) based on a provided
dictionary.
Store configuration for capturing Malicious Network Events (MNEs).
This function updates global settings related to NMNE capture, including whether to capture
NMNEs and what keywords to use for identifying NMNEs.
@@ -41,7 +40,7 @@ def set_nmne_config(nmne_config: Dict) -> nmne_data:
"nmne_capture_keywords" (list of strings) to specify keywords for NMNE identification.
:rvar dataclass with data read from config file.
"""
nmne_capture_keywords = []
nmne_capture_keywords: List[str] = []
# Update the NMNE capture flag, defaulting to False if not specified or if the type is incorrect
capture_nmne = nmne_config.get("capture_nmne", False)
if not isinstance(capture_nmne, bool):
@@ -52,4 +51,4 @@ def set_nmne_config(nmne_config: Dict) -> nmne_data:
if not isinstance(nmne_capture_keywords, list):
nmne_capture_keywords = [] # Reset to empty list if the provided value is not a list
return nmne_data(capture_nmne=capture_nmne, nmne_capture_keywords=nmne_capture_keywords)
return NmneData(capture_nmne=capture_nmne, nmne_capture_keywords=nmne_capture_keywords)