From 98fb28cbbc97cb164378507dd2bac120ea67f391 Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Wed, 21 Feb 2024 18:19:16 +0000 Subject: [PATCH] #2257: setting up application and service docs --- docs/source/configuration/simulation.rst | 10 ------ .../common/common_host_node_attributes.rst | 22 ++++-------- .../simulation/software/applications.rst | 29 ++++++++++++--- .../applications/data_manipulation_bot.rst | 8 +++++ .../software/applications/database_client.rst | 8 +++++ .../software/applications/dos_bot.rst | 8 +++++ .../software/applications/web_browser.rst | 8 +++++ .../software/common/system_software.rst | 12 +++++++ .../simulation/software/services.rst | 35 ++++++++++++++++--- .../software/services/database_service.rst | 8 +++++ .../software/services/dns_client.rst | 8 +++++ .../software/services/dns_server.rst | 8 +++++ .../software/services/ftp_client.rst | 8 +++++ .../software/services/ftp_server.rst | 8 +++++ .../software/services/ntp_client.rst | 8 +++++ .../software/services/ntp_server.rst | 8 +++++ .../software/services/web_server.rst | 8 +++++ src/primaite/game/game.py | 2 ++ .../network/hardware/nodes/host/host_node.py | 30 +++++++--------- 19 files changed, 185 insertions(+), 51 deletions(-) create mode 100644 docs/source/configuration/simulation/software/applications/data_manipulation_bot.rst create mode 100644 docs/source/configuration/simulation/software/applications/database_client.rst create mode 100644 docs/source/configuration/simulation/software/applications/dos_bot.rst create mode 100644 docs/source/configuration/simulation/software/applications/web_browser.rst create mode 100644 docs/source/configuration/simulation/software/common/system_software.rst create mode 100644 docs/source/configuration/simulation/software/services/database_service.rst create mode 100644 docs/source/configuration/simulation/software/services/dns_client.rst create mode 100644 docs/source/configuration/simulation/software/services/dns_server.rst create mode 100644 docs/source/configuration/simulation/software/services/ftp_client.rst create mode 100644 docs/source/configuration/simulation/software/services/ftp_server.rst create mode 100644 docs/source/configuration/simulation/software/services/ntp_client.rst create mode 100644 docs/source/configuration/simulation/software/services/ntp_server.rst create mode 100644 docs/source/configuration/simulation/software/services/web_server.rst diff --git a/docs/source/configuration/simulation.rst b/docs/source/configuration/simulation.rst index d8497212..7bb079e9 100644 --- a/docs/source/configuration/simulation.rst +++ b/docs/source/configuration/simulation.rst @@ -20,16 +20,6 @@ e.g. links: ... -**nodes:** - * ``type``: one of ``router``, ``switch``, ``computer``, or ``server``, this affects what other sub-options should be defined. - * ``hostname`` - a non-unique name used for logging and outputs. - * ``num_ports`` (optional, routers and switches only): number of network interfaces present on the device. - * ``ports`` (optional, routers and switches only): configuration for each network interface, including IP address and subnet mask. - * ``acl`` (Router only): Define the ACL rules at each index of the ACL on the router. the possible options are: ``action`` (PERMIT or DENY), ``src_port``, ``dst_port``, ``protocol``, ``src_ip``, ``dst_ip``. Any options left blank default to none which usually means that it will apply across all options. For example leaving ``src_ip`` blank will apply the rule to all IP addresses. - * ``services`` (computers and servers only): a list of services to install on the node. They must define a ``ref``, ``type``, and ``options`` that depend on which ``type`` was selected. - * ``applications`` (computer and servers only): Similar to services. A list of application to install on the node. - * ``network_interfaces`` (computers and servers only): If the node has multiple networking devices, the second, third, fourth, etc... must be defined here with an ``ip_address`` and ``subnet_mask``. - ``nodes`` --------- diff --git a/docs/source/configuration/simulation/nodes/common/common_host_node_attributes.rst b/docs/source/configuration/simulation/nodes/common/common_host_node_attributes.rst index 265c7106..a95f98d4 100644 --- a/docs/source/configuration/simulation/nodes/common/common_host_node_attributes.rst +++ b/docs/source/configuration/simulation/nodes/common/common_host_node_attributes.rst @@ -3,39 +3,29 @@ © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK ``ip_address`` -^^^^^^^^^^^^^^ +-------------- The IP address of the |NODE| in the network. ``subnet_mask`` -^^^^^^^^^^^^^^^ +--------------- Optional. Default value is ``255.255.255.0``. The subnet mask for the |NODE| to use. ``default_gateway`` -^^^^^^^^^^^^^^^^^^^ +------------------- The IP address that the |NODE| will use as the default gateway. Typically, this is the IP address of the closest router that the |NODE| is connected to. ``dns_server`` -^^^^^^^^^^^^^^ +-------------- Optional. Default value is ``None`` The IP address of the node which holds an instance of the DNS server. Some applications may use a domain name e.g. the WebBrowser (TODO: WebBrowser page) -``applications`` -^^^^^^^^^^^^^^^^ +.. include:: ../software/applications.rst -A list of applications which are not considered system software that need to be installed on the |NODE|. - -See :ref:`Applications ` - -``services`` -^^^^^^^^^^^^ - -A list of services which are not considered system software that need to be installed on the |NODE|. - -See :ref:`Services ` +.. include:: ../software/services.rst diff --git a/docs/source/configuration/simulation/software/applications.rst b/docs/source/configuration/simulation/software/applications.rst index 75e0c64c..7acde817 100644 --- a/docs/source/configuration/simulation/software/applications.rst +++ b/docs/source/configuration/simulation/software/applications.rst @@ -2,9 +2,30 @@ © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK -.. _applications_config: - ``applications`` -================ +---------------- -apps +List of available applications that can be installed on a |NODE|: + +.. toctree:: + :maxdepth: 1 + + ../software/applications/data_manipulation_bot.rst + ../software/applications/database_client.rst + ../software/applications/dos_bot.rst + ../software/applications/web_browser.rst + +More info :py:mod:`primaite.game.game.APPLICATION_TYPES_MAPPING` + +.. include:: ../software/common/system_software.rst + + +.. toctree:: + :maxdepth: 1 + + ../software/applications/web_browser.rst + +More info :py:mod:`primaite.simulator.network.hardware.nodes.host.host_node.SYSTEM_SOFTWARE` + +.. |SOFTWARE_TYPE| replace:: application +.. |SOFTWARE_TYPES| replace:: applications diff --git a/docs/source/configuration/simulation/software/applications/data_manipulation_bot.rst b/docs/source/configuration/simulation/software/applications/data_manipulation_bot.rst new file mode 100644 index 00000000..6b650cf7 --- /dev/null +++ b/docs/source/configuration/simulation/software/applications/data_manipulation_bot.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``DataManipulationBot`` +----------------------- + +test diff --git a/docs/source/configuration/simulation/software/applications/database_client.rst b/docs/source/configuration/simulation/software/applications/database_client.rst new file mode 100644 index 00000000..81e827bc --- /dev/null +++ b/docs/source/configuration/simulation/software/applications/database_client.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``DatabaseClient`` +------------------ + +test diff --git a/docs/source/configuration/simulation/software/applications/dos_bot.rst b/docs/source/configuration/simulation/software/applications/dos_bot.rst new file mode 100644 index 00000000..98939e5b --- /dev/null +++ b/docs/source/configuration/simulation/software/applications/dos_bot.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``DoSBot`` +---------- + +test diff --git a/docs/source/configuration/simulation/software/applications/web_browser.rst b/docs/source/configuration/simulation/software/applications/web_browser.rst new file mode 100644 index 00000000..4af0d7b7 --- /dev/null +++ b/docs/source/configuration/simulation/software/applications/web_browser.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``WebBrowser`` +-------------- + +test diff --git a/docs/source/configuration/simulation/software/common/system_software.rst b/docs/source/configuration/simulation/software/common/system_software.rst new file mode 100644 index 00000000..64248272 --- /dev/null +++ b/docs/source/configuration/simulation/software/common/system_software.rst @@ -0,0 +1,12 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``system software`` +""""""""""""""""""" + +Some |SOFTWARE_TYPES| are pre installed on nodes - this is similar to how some |SOFTWARE_TYPES| are included with the Operating System. + +The |SOFTWARE_TYPE| may not be configured as needed, in which case, follow the steps above to configure them. + +The list of |SOFTWARE_TYPES| that are considered system software are: diff --git a/docs/source/configuration/simulation/software/services.rst b/docs/source/configuration/simulation/software/services.rst index 5f1783af..383f9de4 100644 --- a/docs/source/configuration/simulation/software/services.rst +++ b/docs/source/configuration/simulation/software/services.rst @@ -2,9 +2,36 @@ © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK -.. _services_config: - ``services`` -============ +------------ -services +List of available services that can be installed on a |NODE|: + +.. toctree:: + :maxdepth: 1 + + ../software/services/database_service.rst + ../software/services/dns_client.rst + ../software/services/dns_server.rst + ../software/services/ftp_client.rst + ../software/services/ftp_server.rst + ../software/services/ntp_client.rst + ../software/services/ntp_server.rst + ../software/services/web_server.rst + +More info :py:mod:`primaite.game.game.SERVICE_TYPES_MAPPING` + +.. include:: ../software/common/system_software.rst + + +.. toctree:: + :maxdepth: 1 + + ../software/services/dns_client.rst + ../software/services/ftp_client.rst + ../software/services/ntp_client.rst + +More info :py:mod:`primaite.simulator.network.hardware.nodes.host.host_node.SYSTEM_SOFTWARE` + +.. |SOFTWARE_TYPE| replace:: service +.. |SOFTWARE_TYPES| replace:: services diff --git a/docs/source/configuration/simulation/software/services/database_service.rst b/docs/source/configuration/simulation/software/services/database_service.rst new file mode 100644 index 00000000..f03fde70 --- /dev/null +++ b/docs/source/configuration/simulation/software/services/database_service.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``DatabaseService`` +------------------- + +test diff --git a/docs/source/configuration/simulation/software/services/dns_client.rst b/docs/source/configuration/simulation/software/services/dns_client.rst new file mode 100644 index 00000000..d9b8008d --- /dev/null +++ b/docs/source/configuration/simulation/software/services/dns_client.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``DNSClient`` +------------- + +test diff --git a/docs/source/configuration/simulation/software/services/dns_server.rst b/docs/source/configuration/simulation/software/services/dns_server.rst new file mode 100644 index 00000000..a342967f --- /dev/null +++ b/docs/source/configuration/simulation/software/services/dns_server.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``DNSServer`` +------------- + +test diff --git a/docs/source/configuration/simulation/software/services/ftp_client.rst b/docs/source/configuration/simulation/software/services/ftp_client.rst new file mode 100644 index 00000000..d51a3dc1 --- /dev/null +++ b/docs/source/configuration/simulation/software/services/ftp_client.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``FTPClient`` +------------- + +test diff --git a/docs/source/configuration/simulation/software/services/ftp_server.rst b/docs/source/configuration/simulation/software/services/ftp_server.rst new file mode 100644 index 00000000..c7f92340 --- /dev/null +++ b/docs/source/configuration/simulation/software/services/ftp_server.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``FTPServer`` +------------- + +test diff --git a/docs/source/configuration/simulation/software/services/ntp_client.rst b/docs/source/configuration/simulation/software/services/ntp_client.rst new file mode 100644 index 00000000..51b2e061 --- /dev/null +++ b/docs/source/configuration/simulation/software/services/ntp_client.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``NTPClient`` +------------- + +test diff --git a/docs/source/configuration/simulation/software/services/ntp_server.rst b/docs/source/configuration/simulation/software/services/ntp_server.rst new file mode 100644 index 00000000..2efbdf1a --- /dev/null +++ b/docs/source/configuration/simulation/software/services/ntp_server.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``NTPServer`` +------------- + +test diff --git a/docs/source/configuration/simulation/software/services/web_server.rst b/docs/source/configuration/simulation/software/services/web_server.rst new file mode 100644 index 00000000..4fab660d --- /dev/null +++ b/docs/source/configuration/simulation/software/services/web_server.rst @@ -0,0 +1,8 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +``WebServer`` +------------- + +test diff --git a/src/primaite/game/game.py b/src/primaite/game/game.py index 909b27a4..7a17a03d 100644 --- a/src/primaite/game/game.py +++ b/src/primaite/game/game.py @@ -41,6 +41,7 @@ APPLICATION_TYPES_MAPPING = { "DataManipulationBot": DataManipulationBot, "DoSBot": DoSBot, } +"""List of available applications that can be installed on nodes in the PrimAITE Simulation.""" SERVICE_TYPES_MAPPING = { "DNSClient": DNSClient, @@ -52,6 +53,7 @@ SERVICE_TYPES_MAPPING = { "NTPClient": NTPClient, "NTPServer": NTPServer, } +"""List of available services that can be installed on nodes in the PrimAITE Simulation.""" class PrimaiteGameOptions(BaseModel): diff --git a/src/primaite/simulator/network/hardware/nodes/host/host_node.py b/src/primaite/simulator/network/hardware/nodes/host/host_node.py index 3f34f736..6db1e036 100644 --- a/src/primaite/simulator/network/hardware/nodes/host/host_node.py +++ b/src/primaite/simulator/network/hardware/nodes/host/host_node.py @@ -261,6 +261,17 @@ class NIC(IPWiredNetworkInterface): return f"Port {self.port_num}: {self.mac_address}/{self.ip_address}" +SYSTEM_SOFTWARE = { + "HostARP": HostARP, + "ICMP": ICMP, + "DNSClient": DNSClient, + "FTPClient": FTPClient, + "NTPClient": NTPClient, + "WebBrowser": WebBrowser, +} +"""List of system software that is automatically installed on nodes.""" + + class HostNode(Node): """ Represents a host node in the network. @@ -321,23 +332,8 @@ class HostNode(Node): This method equips the host with essential network services and applications, preparing it for various network-related tasks and operations. """ - # ARP Service - self.software_manager.install(HostARP) - - # ICMP Service - self.software_manager.install(ICMP) - - # DNS Client - self.software_manager.install(DNSClient) - - # FTP Client - self.software_manager.install(FTPClient) - - # NTP Client - self.software_manager.install(NTPClient) - - # Web Browser - self.software_manager.install(WebBrowser) + for _, software_class in SYSTEM_SOFTWARE.items(): + self.software_manager.install(software_class) super()._install_system_software()