Fix os scan action
This commit is contained in:
@@ -37,15 +37,18 @@ class NodeAbstractAction(AbstractAction, ABC):
|
|||||||
return ["network", "node", config.node_name, config.verb]
|
return ["network", "node", config.node_name, config.verb]
|
||||||
|
|
||||||
|
|
||||||
class NodeOSScanAction(NodeAbstractAction, discriminator="node-os-scan"):
|
class NodeOSScanAction(AbstractAction, discriminator="node-os-scan"):
|
||||||
"""Action which scans a node's OS."""
|
"""Action which scans a node's OS."""
|
||||||
|
|
||||||
config: "NodeOSScanAction.ConfigSchema"
|
class ConfigSchema(AbstractAction.ConfigSchema, ABC):
|
||||||
|
"""Base Configuration schema for Node actions."""
|
||||||
|
|
||||||
class ConfigSchema(NodeAbstractAction.ConfigSchema):
|
node_name: str
|
||||||
"""Configuration schema for NodeOSScanAction."""
|
|
||||||
|
|
||||||
verb: ClassVar[str] = "scan"
|
@classmethod
|
||||||
|
def form_request(cls, config: ConfigSchema) -> RequestFormat:
|
||||||
|
"""Return the action formatted as a request which can be ingested by the PrimAITE simulation."""
|
||||||
|
return ["network", "node", config.node_name, "os", "scan"]
|
||||||
|
|
||||||
|
|
||||||
class NodeShutdownAction(NodeAbstractAction, discriminator="node-shutdown"):
|
class NodeShutdownAction(NodeAbstractAction, discriminator="node-shutdown"):
|
||||||
|
|||||||
@@ -1534,6 +1534,9 @@ class Node(SimComponent, ABC):
|
|||||||
_registry: ClassVar[Dict[str, Type["Node"]]] = {}
|
_registry: ClassVar[Dict[str, Type["Node"]]] = {}
|
||||||
"""Registry of application types. Automatically populated when subclasses are defined."""
|
"""Registry of application types. Automatically populated when subclasses are defined."""
|
||||||
|
|
||||||
|
node_scan_countdown: int = 0
|
||||||
|
"Time steps until scan is complete"
|
||||||
|
|
||||||
# TODO: this should not be set for abstract classes.
|
# TODO: this should not be set for abstract classes.
|
||||||
_discriminator: ClassVar[str]
|
_discriminator: ClassVar[str]
|
||||||
"""discriminator for this particular class, used for printing and logging. Each subclass redefines this."""
|
"""discriminator for this particular class, used for printing and logging. Each subclass redefines this."""
|
||||||
@@ -1570,9 +1573,6 @@ class Node(SimComponent, ABC):
|
|||||||
node_scan_duration: int = 10
|
node_scan_duration: int = 10
|
||||||
"How many timesteps until the whole node is scanned. Default 10 time steps."
|
"How many timesteps until the whole node is scanned. Default 10 time steps."
|
||||||
|
|
||||||
node_scan_countdown: int = 0
|
|
||||||
"Time steps until scan is complete"
|
|
||||||
|
|
||||||
red_scan_countdown: int = 0
|
red_scan_countdown: int = 0
|
||||||
"Time steps until reveal to red scan is complete."
|
"Time steps until reveal to red scan is complete."
|
||||||
|
|
||||||
@@ -2019,10 +2019,10 @@ class Node(SimComponent, ABC):
|
|||||||
# time steps which require the node to be on
|
# time steps which require the node to be on
|
||||||
if self.operating_state == NodeOperatingState.ON:
|
if self.operating_state == NodeOperatingState.ON:
|
||||||
# node scanning
|
# node scanning
|
||||||
if self.config.node_scan_countdown > 0:
|
if self.node_scan_countdown > 0:
|
||||||
self.config.node_scan_countdown -= 1
|
self.node_scan_countdown -= 1
|
||||||
|
|
||||||
if self.config.node_scan_countdown == 0:
|
if self.node_scan_countdown == 0:
|
||||||
# scan everything!
|
# scan everything!
|
||||||
for process_id in self.processes:
|
for process_id in self.processes:
|
||||||
self.processes[process_id].scan()
|
self.processes[process_id].scan()
|
||||||
@@ -2098,7 +2098,7 @@ class Node(SimComponent, ABC):
|
|||||||
|
|
||||||
to the red agent.
|
to the red agent.
|
||||||
"""
|
"""
|
||||||
self.config.node_scan_countdown = self.config.node_scan_duration
|
self.node_scan_countdown = self.config.node_scan_duration
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def reveal_to_red(self) -> bool:
|
def reveal_to_red(self) -> bool:
|
||||||
@@ -2114,7 +2114,7 @@ class Node(SimComponent, ABC):
|
|||||||
|
|
||||||
`revealed_to_red` to `True`.
|
`revealed_to_red` to `True`.
|
||||||
"""
|
"""
|
||||||
self.config.red_scan_countdown = self.config.node_scan_duration
|
self.red_scan_countdown = self.config.node_scan_duration
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def power_on(self) -> bool:
|
def power_on(self) -> bool:
|
||||||
|
|||||||
Reference in New Issue
Block a user