diff --git a/docs-gen/mkdocs/gen_ref_pages.py b/docs-gen/mkdocs/gen_ref_pages.py index 47debaf9a..fa077ded7 100644 --- a/docs-gen/mkdocs/gen_ref_pages.py +++ b/docs-gen/mkdocs/gen_ref_pages.py @@ -13,7 +13,8 @@ for src in srcs: print(f"Generating reference pages for {src}") for path in sorted(src.rglob("*.py")): - if "/panther_ivy/" not in path.as_posix(): + if ("/panther_ivy/" not in path.as_posix() or + ("/panther_ivy/panther_ivy.py" in path.as_posix() or "/panther_ivy/config_schema.py" in path.as_posix())): module_path = ( path.relative_to(root).with_suffix("").as_posix().replace("/", ".") ) diff --git a/experiment-config/experiment_config.yaml b/experiment-config/experiment_config.yaml index 112e68fb1..87ef8f588 100644 --- a/experiment-config/experiment_config.yaml +++ b/experiment-config/experiment_config.yaml @@ -126,7 +126,7 @@ tests: name: "quic" version: "rfc9000" role: "client" - target: "ivy_client" + target: "ivy_server" ports: - "4443:4443" - "8080:8080" # Health check endpoint diff --git a/mkdocs.yaml b/mkdocs.yaml index b4402c925..4404027c0 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -1,6 +1,6 @@ -site_name: Panther Documentation +site_name: Panther-Ivy Documentation site_description: "Protocol formal Analysis and formal Network Threat Evaluation Resources." -repo_url: https://github.com/ElNiak/PANTHER +repo_url: https://github.com/ElNiak/PANTHER-Ivy edit_uri: edit/gh-pages/docs/ docs_dir: "docs/" watch: [mkdocs.yaml, README.md, CONTRIBUTING.md, CHANGELOG.md, panther] diff --git a/mkgendocs.yml b/mkgendocs.yml index 7cd4a3c50..39175948d 100644 --- a/mkgendocs.yml +++ b/mkgendocs.yml @@ -8,136 +8,36 @@ pages: functions: - display_banner - - page: "./panther/core/experiment_strategy.md" - source: "panther/core/experiment_strategy.py" - classes: - - TestExecutionStrategy - - SequentialExecutionStrategy - - ParallelExecutionStrategy - - - page: "./panther/core/experiment_manager.md" - source: "panther/core/experiment_manager.py" - classes: - - ExperimentManager - - - page: "./panther/core/utils/docker_builder.md" - source: "panther/core/utils/docker_builder.py" - classes: - - DockerBuilder - - - page: "./panther/core/observer/observer_interface.md" - source: "panther/core/observer/observer_interface.py" - classes: - - IObserver - - - page: "./panther/core/observer/experiment_observer.md" - source: "panther/core/observer/experiment_observer.py" - classes: - - ExperimentObserver - - - page: "./panther/core/observer/logger_observer.md" - source: "panther/core/observer/logger_observer.py" - classes: - - LoggerObserver - - - page: "./panther/core/observer/gui_observer.md" - source: "panther/core/observer/gui_observer.py" - classes: - - GUIObserver - - - page: "./panther/core/observer/event_manager.md" - source: "panther/core/observer/event_manager.py" - classes: - - EventManager - - - page: "./panther/core/observer/result_observer.md" - source: "panther/core/observer/result_observer.py" - classes: - - ResultObserver - - - page: "./panther/core/observer/event.md" - source: "panther/core/observer/event.py" - classes: - - Event - - - page: "./panther/core/test_cases/test_interface.md" - source: "panther/core/test_cases/test_interface.py" - classes: - - ITestCase - - - page: "./panther/core/test_cases/test_case.md" - source: "panther/core/test_cases/test_case.py" - classes: - - TestCase - - - page: "./panther/core/results/result_handler.md" - source: "panther/core/results/result_handler.py" - classes: - - ResultHandler - - - page: "./panther/core/results/result_collector.md" - source: "panther/core/results/result_collector.py" - classes: - - ResultCollector - - - page: "./panther/core/results/result_handlers/storage_handler.md" - source: "panther/core/results/result_handlers/storage_handler.py" - classes: - - StorageHandler - - - page: "./panther/core/results/result_handlers/parser_handler.md" - source: "panther/core/results/result_handlers/parser_handler.py" - classes: - - ParserHandler - - - page: "./panther/core/results/result_handlers/local_storage_handler.md" - source: "panther/core/results/result_handlers/local_storage_handler.py" - classes: - - LocalStorageHandler - - - page: "./panther/core/results/result_handlers/validation_handler.md" - source: "panther/core/results/result_handlers/validation_handler.py" - classes: - - ValidationHandler - - - page: "./panther/config/config_experiment_schema.md" - source: "panther/config/config_experiment_schema.py" - classes: - - StepConfig - - AssertionConfig - - TestConfig - - ExperimentConfig - - - page: "./panther/config/config_global_schema.md" - source: "panther/config/config_global_schema.py" - classes: - - LoggingConfig - - PathsConfig - - AdditionalPathsConfig - - DockerConfig - - FeatureConfig - - GlobalConfig + - page: "./panther/webapp/web_app.md" + source: "panther/webapp/web_app.py" + functions: + - create_app + - run - - page: "./panther/config/config_manager.md" - source: "panther/config/config_manager.py" - classes: - - ConfigLoader + - page: "./panther/webapp/experiment_setup.md" + source: "panther/webapp/experiment_setup.py" + functions: + - enum_to_choices + - type_to_field + - dataclass_to_form + - generate_form + - create_experiment - page: "./panther/plugins/plugin_loader.md" source: "panther/plugins/plugin_loader.py" classes: - PluginLoader - - page: "./panther/plugins/plugin_manager.md" - source: "panther/plugins/plugin_manager.py" - classes: - - PluginManager - - page: "./panther/plugins/plugin_interface.md" source: "panther/plugins/plugin_interface.py" classes: - IPlugin + - page: "./panther/plugins/plugin_manager.md" + source: "panther/plugins/plugin_manager.py" + classes: + - PluginManager + - page: "./panther/plugins/protocols/config_schema.md" source: "panther/plugins/protocols/config_schema.py" classes: @@ -149,6 +49,11 @@ pages: classes: - IProtocolManager + - page: "./panther/plugins/protocols/peer_to_peer/config_schema.md" + source: "panther/plugins/protocols/peer_to_peer/config_schema.py" + classes: + - PeerToPeerProtocol + - page: "./panther/plugins/protocols/client_server/config_schema.md" source: "panther/plugins/protocols/client_server/config_schema.py" classes: @@ -164,11 +69,6 @@ pages: classes: - MinipConfig - - page: "./panther/plugins/protocols/peer_to_peer/config_schema.md" - source: "panther/plugins/protocols/peer_to_peer/config_schema.py" - classes: - - PeerToPeerProtocol - - page: "./panther/plugins/services/config_schema.md" source: "panther/plugins/services/config_schema.py" classes: @@ -199,6 +99,83 @@ pages: classes: - IImplementationManager + - page: "./panther/plugins/services/iut/quic/quinn/config_schema.md" + source: "panther/plugins/services/iut/quic/quinn/config_schema.py" + classes: + - QuinnVersion + - QuinnConfig + + - page: "./panther/plugins/services/iut/quic/quinn/quinn.md" + source: "panther/plugins/services/iut/quic/quinn/quinn.py" + classes: + - QuinnServiceManager + + - page: "./panther/plugins/services/iut/quic/lsquic/lsquic.md" + source: "panther/plugins/services/iut/quic/lsquic/lsquic.py" + classes: + - LsquicServiceManager + + - page: "./panther/plugins/services/iut/quic/lsquic/config_schema.md" + source: "panther/plugins/services/iut/quic/lsquic/config_schema.py" + classes: + - LsquicVersion + - LsquicConfig + + - page: "./panther/plugins/services/iut/quic/quant/config_schema.md" + source: "panther/plugins/services/iut/quic/quant/config_schema.py" + classes: + - QuantVersion + - QuantConfig + + - page: "./panther/plugins/services/iut/quic/quant/quant.md" + source: "panther/plugins/services/iut/quic/quant/quant.py" + classes: + - QuantServiceManager + + - page: "./panther/plugins/services/iut/quic/mvfst/mvfst.md" + source: "panther/plugins/services/iut/quic/mvfst/mvfst.py" + classes: + - MvfstServiceManager + + - page: "./panther/plugins/services/iut/quic/mvfst/config_schema.md" + source: "panther/plugins/services/iut/quic/mvfst/config_schema.py" + classes: + - MvfstVersion + - MvfstConfig + + - page: "./panther/plugins/services/iut/quic/quiche/quiche.md" + source: "panther/plugins/services/iut/quic/quiche/quiche.py" + classes: + - QuicheServiceManager + + - page: "./panther/plugins/services/iut/quic/quiche/config_schema.md" + source: "panther/plugins/services/iut/quic/quiche/config_schema.py" + classes: + - QuicheVersion + - QuicheConfig + + - page: "./panther/plugins/services/iut/quic/picoquic_shadow/picoquic_shadow.md" + source: "panther/plugins/services/iut/quic/picoquic_shadow/picoquic_shadow.py" + classes: + - PicoquicShadowServiceManager + + - page: "./panther/plugins/services/iut/quic/picoquic_shadow/config_schema.md" + source: "panther/plugins/services/iut/quic/picoquic_shadow/config_schema.py" + classes: + - PicoquicShadowVersion + - PicoquicShadowConfig + + - page: "./panther/plugins/services/iut/quic/aioquic/config_schema.md" + source: "panther/plugins/services/iut/quic/aioquic/config_schema.py" + classes: + - AioquicVersion + - AioquicConfig + + - page: "./panther/plugins/services/iut/quic/aioquic/aioquic.md" + source: "panther/plugins/services/iut/quic/aioquic/aioquic.py" + classes: + - AioquicServiceManager + - page: "./panther/plugins/services/iut/quic/picoquic/config_schema.md" source: "panther/plugins/services/iut/quic/picoquic/config_schema.py" classes: @@ -210,16 +187,16 @@ pages: classes: - PicoquicServiceManager - - page: "./panther/plugins/services/iut/quic/picoquic_shadow/config_schema.md" - source: "panther/plugins/services/iut/quic/picoquic_shadow/config_schema.py" + - page: "./panther/plugins/services/iut/quic/quic_go/quic_go.md" + source: "panther/plugins/services/iut/quic/quic_go/quic_go.py" classes: - - PicoquicShadowVersion - - PicoquicShadowConfig + - QuicGoServiceManager - - page: "./panther/plugins/services/iut/quic/picoquic_shadow/picoquic_shadow.md" - source: "panther/plugins/services/iut/quic/picoquic_shadow/picoquic_shadow.py" + - page: "./panther/plugins/services/iut/quic/quic_go/config_schema.md" + source: "panther/plugins/services/iut/quic/quic_go/config_schema.py" classes: - - PicoquicShadowServiceManager + - QuicGoVersion + - QuicGoConfig - page: "./panther/plugins/services/iut/minip/ping_pong/config_schema.md" source: "panther/plugins/services/iut/minip/ping_pong/config_schema.py" @@ -242,25 +219,84 @@ pages: classes: - IEnvironmentPlugin - - page: "./panther/plugins/environments/execution_environment/execution_environment_interface.md" - source: "panther/plugins/environments/execution_environment/execution_environment_interface.py" + - page: "./panther/plugins/environments/network_environment/network_environment_interface.md" + source: "panther/plugins/environments/network_environment/network_environment_interface.py" classes: - - IExecutionEnvironment + - INetworkEnvironment + + - page: "./panther/plugins/environments/network_environment/config_schema.md" + source: "panther/plugins/environments/network_environment/config_schema.py" + classes: + - NetworkEnvironmentConfig + + - page: "./panther/plugins/environments/network_environment/shadow_ns/config_schema.md" + source: "panther/plugins/environments/network_environment/shadow_ns/config_schema.py" + classes: + - GeneralConfig + - ExperimentalConfig + - NetworkNodeConfig + - NetworkEdgeConfig + - NetworkGraphConfig + - NetworkConfig + - HostOptionDefaultsConfig + - HostConfig + - HostsConfig + - ShadowNsConfig + + - page: "./panther/plugins/environments/network_environment/shadow_ns/shadow_ns.md" + source: "panther/plugins/environments/network_environment/shadow_ns/shadow_ns.py" + classes: + - ShadowNsEnvironment + + - page: "./panther/plugins/environments/network_environment/docker_compose/docker_compose.md" + source: "panther/plugins/environments/network_environment/docker_compose/docker_compose.py" + classes: + - DockerComposeEnvironment + + - page: "./panther/plugins/environments/network_environment/docker_compose/config_schema.md" + source: "panther/plugins/environments/network_environment/docker_compose/config_schema.py" + classes: + - DockerComposeConfig + + - page: "./panther/plugins/environments/network_environment/localhost_single_container/config_schema.md" + source: "panther/plugins/environments/network_environment/localhost_single_container/config_schema.py" + classes: + - LocalhostSingleContainerConfig + + - page: "./panther/plugins/environments/network_environment/localhost_single_container/localhost_single_container.md" + source: "panther/plugins/environments/network_environment/localhost_single_container/localhost_single_container.py" + classes: + - LocalhostSingleContainerEnvironment - page: "./panther/plugins/environments/execution_environment/config_schema.md" source: "panther/plugins/environments/execution_environment/config_schema.py" classes: - ExecutionEnvironmentConfig - - page: "./panther/plugins/environments/execution_environment/gperf_cpu/config_schema.md" - source: "panther/plugins/environments/execution_environment/gperf_cpu/config_schema.py" + - page: "./panther/plugins/environments/execution_environment/execution_environment_interface.md" + source: "panther/plugins/environments/execution_environment/execution_environment_interface.py" classes: - - GperfCpuConfig + - IExecutionEnvironment - - page: "./panther/plugins/environments/execution_environment/gperf_cpu/gperf_cpu.md" - source: "panther/plugins/environments/execution_environment/gperf_cpu/gperf_cpu.py" + - page: "./panther/plugins/environments/execution_environment/iterations/config_schema.md" + source: "panther/plugins/environments/execution_environment/iterations/config_schema.py" classes: - - GperfCpuEnvironment + - StraceConfig + + - page: "./panther/plugins/environments/execution_environment/iterations/iterations.md" + source: "panther/plugins/environments/execution_environment/iterations/iterations.py" + classes: + - StraceEnvironment + + - page: "./panther/plugins/environments/execution_environment/strace/config_schema.md" + source: "panther/plugins/environments/execution_environment/strace/config_schema.py" + classes: + - StraceConfig + + - page: "./panther/plugins/environments/execution_environment/strace/strace.md" + source: "panther/plugins/environments/execution_environment/strace/strace.py" + classes: + - StraceEnvironment - page: "./panther/plugins/environments/execution_environment/gperf_heap/config_schema.md" source: "panther/plugins/environments/execution_environment/gperf_heap/config_schema.py" @@ -272,62 +308,153 @@ pages: classes: - GperfHeapEnvironment - - page: "./panther/plugins/environments/execution_environment/strace/config_schema.md" - source: "panther/plugins/environments/execution_environment/strace/config_schema.py" + - page: "./panther/plugins/environments/execution_environment/gperf_cpu/gperf_cpu.md" + source: "panther/plugins/environments/execution_environment/gperf_cpu/gperf_cpu.py" classes: - - StraceConfig + - GperfCpuEnvironment - - page: "./panther/plugins/environments/execution_environment/strace/strace.md" - source: "panther/plugins/environments/execution_environment/strace/strace.py" + - page: "./panther/plugins/environments/execution_environment/gperf_cpu/config_schema.md" + source: "panther/plugins/environments/execution_environment/gperf_cpu/config_schema.py" classes: - - StraceEnvironment + - GperfCpuConfig - - page: "./panther/plugins/environments/network_environment/config_schema.md" - source: "panther/plugins/environments/network_environment/config_schema.py" + - page: "./panther/config/config_manager.md" + source: "panther/config/config_manager.py" classes: - - NetworkEnvironmentConfig + - ConfigLoader - - page: "./panther/plugins/environments/network_environment/network_environment_interface.md" - source: "panther/plugins/environments/network_environment/network_environment_interface.py" + - page: "./panther/config/config_global_schema.md" + source: "panther/config/config_global_schema.py" classes: - - INetworkEnvironment + - LoggingConfig + - PathsConfig + - AdditionalPathsConfig + - DockerConfig + - FeatureConfig + - GlobalConfig - - page: "./panther/plugins/environments/network_environment/docker_compose/config_schema.md" - source: "panther/plugins/environments/network_environment/docker_compose/config_schema.py" + - page: "./panther/config/config_experiment_schema.md" + source: "panther/config/config_experiment_schema.py" classes: - - DockerComposeConfig + - StepConfig + - AssertionConfig + - TestConfig + - ExperimentConfig - - page: "./panther/plugins/environments/network_environment/docker_compose/docker_compose.md" - source: "panther/plugins/environments/network_environment/docker_compose/docker_compose.py" + - page: "./panther/core/experiment_manager.md" + source: "panther/core/experiment_manager.py" classes: - - DockerComposeEnvironment + - ExperimentManager - - page: "./panther/plugins/environments/network_environment/localhost_single_container/config_schema.md" - source: "panther/plugins/environments/network_environment/localhost_single_container/config_schema.py" + - page: "./panther/core/experiment_strategy.md" + source: "panther/core/experiment_strategy.py" classes: - - LocalhostSingleContainerConfig + - TestExecutionStrategy + - SequentialExecutionStrategy + - ParallelExecutionStrategy - - page: "./panther/plugins/environments/network_environment/localhost_single_container/localhost_single_container.md" - source: "panther/plugins/environments/network_environment/localhost_single_container/localhost_single_container.py" + - page: "./panther/core/exceptions/TesterPluginNotFound.md" + source: "panther/core/exceptions/TesterPluginNotFound.py" classes: - - LocalhostSingleContainerEnvironment + - TesterPluginNotFound - - page: "./panther/plugins/environments/network_environment/shadow_ns/config_schema.md" - source: "panther/plugins/environments/network_environment/shadow_ns/config_schema.py" + - page: "./panther/core/exceptions/EnvironmentPluginNotFound.md" + source: "panther/core/exceptions/EnvironmentPluginNotFound.py" classes: - - GeneralConfig - - ExperimentalConfig - - NetworkNodeConfig - - NetworkEdgeConfig - - NetworkGraphConfig - - NetworkConfig - - HostOptionDefaultsConfig - - HostConfig - - HostsConfig - - ShadowNsConfig + - EnvironmentPluginNotFound - - page: "./panther/plugins/environments/network_environment/shadow_ns/shadow_ns.md" - source: "panther/plugins/environments/network_environment/shadow_ns/shadow_ns.py" + - page: "./panther/core/exceptions/ServicePluginNotFound.md" + source: "panther/core/exceptions/ServicePluginNotFound.py" classes: - - ShadowNsEnvironment + - ServicePluginNotFound + + - page: "./panther/core/results/result_collector.md" + source: "panther/core/results/result_collector.py" + classes: + - ResultCollector + + - page: "./panther/core/results/result_handler.md" + source: "panther/core/results/result_handler.py" + classes: + - ResultHandler + + - page: "./panther/core/results/result_handlers/validation_handler.md" + source: "panther/core/results/result_handlers/validation_handler.py" + classes: + - ValidationHandler + + - page: "./panther/core/results/result_handlers/local_storage_handler.md" + source: "panther/core/results/result_handlers/local_storage_handler.py" + classes: + - LocalStorageHandler + + - page: "./panther/core/results/result_handlers/storage_handler.md" + source: "panther/core/results/result_handlers/storage_handler.py" + classes: + - StorageHandler + + - page: "./panther/core/results/result_handlers/parser_handler.md" + source: "panther/core/results/result_handlers/parser_handler.py" + classes: + - ParserHandler + + - page: "./panther/core/test_cases/test_interface.md" + source: "panther/core/test_cases/test_interface.py" + classes: + - ITestCase + + - page: "./panther/core/test_cases/test_case.md" + source: "panther/core/test_cases/test_case.py" + classes: + - TestCase + + - page: "./panther/core/utils/docker_builder.md" + source: "panther/core/utils/docker_builder.py" + classes: + - DockerBuilder + + - page: "./panther/core/utils/sequence_diagram/sequence_diagram.md" + source: "panther/core/utils/sequence_diagram/sequence_diagram.py" + classes: + - SequenceOn + - SequenceOff + functions: + - __init__ + - __del__ + - note + + - page: "./panther/core/observer/event.md" + source: "panther/core/observer/event.py" + classes: + - Event + + - page: "./panther/core/observer/logger_observer.md" + source: "panther/core/observer/logger_observer.py" + classes: + - LoggerObserver + + - page: "./panther/core/observer/gui_observer.md" + source: "panther/core/observer/gui_observer.py" + classes: + - GUIObserver + + - page: "./panther/core/observer/result_observer.md" + source: "panther/core/observer/result_observer.py" + classes: + - ResultObserver + + - page: "./panther/core/observer/observer_interface.md" + source: "panther/core/observer/observer_interface.py" + classes: + - IObserver + + - page: "./panther/core/observer/event_manager.md" + source: "panther/core/observer/event_manager.py" + classes: + - EventManager + + - page: "./panther/core/observer/experiment_observer.md" + source: "panther/core/observer/experiment_observer.py" + classes: + - ExperimentObserver diff --git a/panther/core/test_cases/test_case.py b/panther/core/test_cases/test_case.py index b2ceb0d9a..c41fef76e 100644 --- a/panther/core/test_cases/test_case.py +++ b/panther/core/test_cases/test_case.py @@ -249,7 +249,8 @@ def setup_implementations(self): - Loads the protocol plugins from the plugins/services/iut directory. - Creates a list of service managers that will be used to deploy the services. - Note: Some part of this function should be in the plugin loader module I think ? + Note: + Some part of this function should be in the plugin loader module I think ? The method logs the progress and details at each step, including: - The path where it looks for IUT plugins. @@ -590,7 +591,8 @@ def validate_assertions(self): the "service_responsive" assertion type, which checks if a specified service endpoint is responsive and returns the expected status code. - Note: This method should be moved to a separate module. + Note: + This method should be moved to a separate module. Raises: Exception: If any assertion fails during validation. diff --git a/panther/plugins/environments/network_environment/shadow_ns/shadow_ns.py b/panther/plugins/environments/network_environment/shadow_ns/shadow_ns.py index 3c9bf478a..43c97bd25 100644 --- a/panther/plugins/environments/network_environment/shadow_ns/shadow_ns.py +++ b/panther/plugins/environments/network_environment/shadow_ns/shadow_ns.py @@ -221,9 +221,11 @@ def generate_environment_services(self, paths: dict[str, str], timestamp: str): if other_service_name.service_name != service.service_name: # Shadow does not suport the _ in the service name -> replace by . # TODO use "." in the service name for all plugins - service.run_cmd["run_cmd"]["command_args"] = service.run_cmd[ - "run_cmd" - ]["command_args"].replace("_", ".") + if not "ivy" in service.service_name: + # TODO + service.run_cmd["run_cmd"]["command_args"] = service.run_cmd[ + "run_cmd" + ]["command_args"].replace("_", ".") for service in self.services_managers: service.environments = self.resolve_environment_variables( diff --git a/panther/plugins/services/testers/panther_ivy b/panther/plugins/services/testers/panther_ivy index eec18a1d5..f7dd81eb1 160000 --- a/panther/plugins/services/testers/panther_ivy +++ b/panther/plugins/services/testers/panther_ivy @@ -1 +1 @@ -Subproject commit eec18a1d5b1493deb7ee902b31ff804d928d9eb6 +Subproject commit f7dd81eb117c270203989058fba9bf0055ebcfe9 diff --git a/pyproject.toml b/pyproject.toml index 4a6c9d3e2..b80b7f8b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ panther = ['*.yml', ".yaml", "*.jinja", "*.sh", "plugins/services/iut/**", "plugins/services/testers/panther_ivy/ivy/**", "plugins/services/testers/panther_ivy/submodules/**", + "plugins/services/testers/panther_ivy/scripts/**", "plugins/services/testers/panther_ivy/protocol-testing/**/*.ivy", "plugins/services/testers/panther_ivy/protocol-testing/**/*.h", "plugins/services/testers/panther_ivy/protocol-testing/**/*.c", @@ -29,7 +30,7 @@ panther = ['*.yml', ".yaml", "*.jinja", "*.sh", # include = ["*.yaml", "*.yml", "panther"] [project] name = "panther-net" -version = "0.0.1" +version = "1.0.1" description = "Panther: Protocol formal Analysis and formal Network Threat Evaluation Resources" readme = "README.md" authors = [