troubadix 24.9.4__tar.gz → 24.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {troubadix-24.9.4 → troubadix-24.10.0}/PKG-INFO +1 -1
- {troubadix-24.9.4 → troubadix-24.10.0}/pyproject.toml +1 -1
- troubadix-24.10.0/tests/plugins/test_spaces_before_dots.py +103 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/__version__.py +1 -1
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/__init__.py +2 -0
- troubadix-24.10.0/troubadix/plugins/spaces_before_dots.py +130 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/LICENSE +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/README.md +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/helper/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/helper/test_linguistic_exception_handler.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/helper/test_patterns.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/fail.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/fail2.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_badwords.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_copyright_text.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_copyright_year.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_creation_date.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_cve_format.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_cvss_format.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_dependencies.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_dependency_category_order.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_deprecated_dependency.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_deprecated_functions.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_double_end_points.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_duplicate_oid.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_duplicated_script_tags.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_encoding.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/fail_bad_new_line.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/fail_badwords.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/fail_name_and_copyright_newline.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/fail_name_newline.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/fail_permissions.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/fail_spelling.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/fail.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/fail_badwords.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/fail_name_and_copyright_newline.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/fail_name_newline.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/fail_solution_template.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/runner/fail.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/runner/fail2.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/runner/test.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/runner/test_valid_oid.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/test.inc +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/test.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/warning.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/ok_permissions.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/test_oid.nasl +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_forking_nasl_functions.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_get_kb_on_services.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_grammar.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_http_links_in_tags.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_illegal_characters.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_log_messages.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_malformed_dependencies.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_misplaced_compare_in_if.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_missing_desc_exit.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_missing_tag_solution.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_multiple_re_parameters.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_newlines.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_overlong_description_lines.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_overlong_script_tags.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_prod_svc_detect_in_vulnvt.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_qod.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_reporting_consistency.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_add_preference_type.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_calls_empty_values.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_calls_recommended.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_category.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_copyright.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_family.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_tag_form.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_tag_whitespaces.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_tags_mandatory.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_version_and_last_modification_tags.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_xref_form.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_script_xref_url.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_security_messages.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_set_get_kb_calls.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_solution_text.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_solution_type.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_spaces_in_filename.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_spelling.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_tabs.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_todo_tbd.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_trailing_spaces_tabs.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_using_display.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_valid_oid.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_valid_script_tag_names.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_variable_redefinition_in_foreach.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_vt_file_permissions.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_vt_placement.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/markers/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/markers/test_added_epoch.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/markers/test_added_release.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/markers/test_added_udeb.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/markers/test_changed_update.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/markers/test_dropped_architecture.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/test_changed_packages.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/test_package.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/test_changed_cves.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/test_changed_oid.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/test_deprecate_vts.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/test_file_extensions.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/test_last_modification.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/test_no_solution.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/test_version_updated.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/test_argparser.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/test_helper.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/test_naslinter.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/test_reporter.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/test_results.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/tests/test_runner.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/argparser.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/codespell/codespell.additions +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/codespell/codespell.exclude +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/codespell/codespell.ignore +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/helper/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/helper/helper.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/helper/linguistic_exception_handler.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/helper/patterns.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugin.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/badwords.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/copyright_text.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/copyright_year.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/creation_date.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/cve_format.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/cvss_format.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/dependencies.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/dependency_category_order.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/deprecated_dependency.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/deprecated_functions.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/double_end_points.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/duplicate_oid.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/duplicated_script_tags.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/encoding.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/forking_nasl_functions.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/get_kb_on_services.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/grammar.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/http_links_in_tags.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/illegal_characters.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/log_messages.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/malformed_dependencies.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/misplaced_compare_in_if.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/missing_desc_exit.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/missing_tag_solution.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/multiple_re_parameters.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/newlines.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/overlong_description_lines.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/overlong_script_tags.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/prod_svc_detect_in_vulnvt.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/qod.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/reporting_consistency.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_add_preference_type.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_calls_empty_values.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_calls_recommended.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_category.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_copyright.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_family.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_tag_form.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_tag_whitespaces.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_tags_mandatory.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_version_and_last_modification_tags.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_xref_form.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/script_xref_url.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/security_messages.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/set_get_kb_calls.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/solution_text.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/solution_type.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/spaces_in_filename.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/spelling.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/tabs.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/todo_tbd.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/trailing_spaces_tabs.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/using_display.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/valid_oid.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/valid_script_tag_names.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/variable_assigned_in_if.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/variable_redefinition_in_foreach.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/vt_file_permissions.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/vt_placement.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/reporter.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/results.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/runner.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/allowed_rev_diff.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_cves.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_oid.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/changed_packages.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/marker/__init__.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/marker/added_epoch.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/marker/added_release.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/marker/added_udeb.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/marker/changed_update.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/marker/dropped_architecture.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/marker/marker.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/package.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/common.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/deprecate_vts.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/file_extensions.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/last_modification.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/no_solution.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/version_updated.py +0 -0
- {troubadix-24.9.4 → troubadix-24.10.0}/troubadix/troubadix.py +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
# SPDX-FileCopyrightText: 2024 Greenbone AG
|
|
3
|
+
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
from tests.plugins import PluginTestCase
|
|
7
|
+
from troubadix.helper import CURRENT_ENCODING
|
|
8
|
+
from troubadix.plugin import LinterFix
|
|
9
|
+
from troubadix.plugins.spaces_before_dots import CheckSpacesBeforeDots
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class TestSpacesBeforeDots(PluginTestCase):
|
|
13
|
+
|
|
14
|
+
def test_ok(self):
|
|
15
|
+
nasl_file = Path("/some/fake/directory/test.nasl")
|
|
16
|
+
content = """
|
|
17
|
+
script_tag(name:"summary", value:"Foo Bar.");
|
|
18
|
+
script_tag(name:"solution", value:"Foo .NET.");
|
|
19
|
+
script_tag(name:"insight", value:"Foo Bar ...");
|
|
20
|
+
"""
|
|
21
|
+
fake_context = self.create_file_plugin_context(
|
|
22
|
+
nasl_file=nasl_file, file_content=content
|
|
23
|
+
)
|
|
24
|
+
plugin = CheckSpacesBeforeDots(fake_context)
|
|
25
|
+
results = list(plugin.run())
|
|
26
|
+
self.assertEqual(len(results), 0)
|
|
27
|
+
|
|
28
|
+
def test_fail(self):
|
|
29
|
+
nasl_file = Path("/some/fake/directory/test.nasl")
|
|
30
|
+
content = (
|
|
31
|
+
"""
|
|
32
|
+
script_tag(name:"summary", value:"Foo Bar .");
|
|
33
|
+
script_tag(name:"vuldetect", value:"Foo Bar .");
|
|
34
|
+
script_tag(name:"insight", value:"Foo Bar .");
|
|
35
|
+
script_tag(name:"impact", value:"Foo . Bar . Foo");
|
|
36
|
+
"""
|
|
37
|
+
'script_tag(name:"affected", value:"Foo\n.\nBar.");'
|
|
38
|
+
'script_tag(name:"solution", value:"Foo Bar\n.");'
|
|
39
|
+
)
|
|
40
|
+
fake_context = self.create_file_plugin_context(
|
|
41
|
+
nasl_file=nasl_file, file_content=content
|
|
42
|
+
)
|
|
43
|
+
plugin = CheckSpacesBeforeDots(fake_context)
|
|
44
|
+
results = list(plugin.run())
|
|
45
|
+
self.assertEqual(len(results), 7)
|
|
46
|
+
self.assertEqual(
|
|
47
|
+
results[0].message,
|
|
48
|
+
"value of script_tag summary has at least one occurence of excess"
|
|
49
|
+
" whitespace before a dot:\n"
|
|
50
|
+
" 'script_tag(name:"
|
|
51
|
+
'"summary", value:"Foo Bar .");'
|
|
52
|
+
"'",
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def test_ignore(self):
|
|
56
|
+
nasl_file = Path("/some/fake/directory/test.inc")
|
|
57
|
+
fake_context = self.create_file_plugin_context(nasl_file=nasl_file)
|
|
58
|
+
plugin = CheckSpacesBeforeDots(fake_context)
|
|
59
|
+
|
|
60
|
+
results = list(plugin.run())
|
|
61
|
+
|
|
62
|
+
self.assertEqual(len(results), 0)
|
|
63
|
+
|
|
64
|
+
def test_fix(self):
|
|
65
|
+
with self.create_directory() as tempdir:
|
|
66
|
+
path = tempdir / "file.nasl"
|
|
67
|
+
content = (
|
|
68
|
+
"""
|
|
69
|
+
script_tag(name:"summary", value:"Foo Bar .");
|
|
70
|
+
script_tag(name:"vuldetect", value:"Foo Bar .");
|
|
71
|
+
script_tag(name:"insight", value:"Foo .Net Bar .");
|
|
72
|
+
script_tag(name:"impact", value:"Foo . Bar . Foo");
|
|
73
|
+
"""
|
|
74
|
+
'script_tag(name:"affected", value:"Foo\n.\nBar.");'
|
|
75
|
+
'script_tag(name:"solution", value:"Foo Bar\n.");'
|
|
76
|
+
)
|
|
77
|
+
expected_modified_content = (
|
|
78
|
+
"""
|
|
79
|
+
script_tag(name:"summary", value:"Foo Bar.");
|
|
80
|
+
script_tag(name:"vuldetect", value:"Foo Bar.");
|
|
81
|
+
script_tag(name:"insight", value:"Foo .Net Bar.");
|
|
82
|
+
script_tag(name:"impact", value:"Foo. Bar. Foo");
|
|
83
|
+
"""
|
|
84
|
+
'script_tag(name:"affected", value:"Foo.\nBar.");'
|
|
85
|
+
'script_tag(name:"solution", value:"Foo Bar.");'
|
|
86
|
+
)
|
|
87
|
+
path.write_text(content, encoding=CURRENT_ENCODING)
|
|
88
|
+
|
|
89
|
+
fake_context = self.create_file_plugin_context(
|
|
90
|
+
nasl_file=path, file_content=content
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
plugin = CheckSpacesBeforeDots(fake_context)
|
|
94
|
+
|
|
95
|
+
# keep list() to consume the iterator
|
|
96
|
+
list(plugin.run())
|
|
97
|
+
|
|
98
|
+
results = list(plugin.fix())
|
|
99
|
+
self.assertEqual(len(results), 1)
|
|
100
|
+
|
|
101
|
+
self.assertIsInstance(results[0], LinterFix)
|
|
102
|
+
modified_content = path.read_text(encoding=CURRENT_ENCODING)
|
|
103
|
+
self.assertEqual(modified_content, expected_modified_content)
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
from typing import Iterable, List
|
|
19
19
|
|
|
20
20
|
from troubadix.plugin import FilePlugin, FilesPlugin, Plugin
|
|
21
|
+
from troubadix.plugins.spaces_before_dots import CheckSpacesBeforeDots
|
|
21
22
|
|
|
22
23
|
from .badwords import CheckBadwords
|
|
23
24
|
from .copyright_text import CheckCopyrightText
|
|
@@ -140,6 +141,7 @@ _FILE_PLUGINS = [
|
|
|
140
141
|
CheckVTFilePermissions,
|
|
141
142
|
CheckVTPlacement,
|
|
142
143
|
CheckWrongSetGetKBCalls,
|
|
144
|
+
CheckSpacesBeforeDots,
|
|
143
145
|
]
|
|
144
146
|
|
|
145
147
|
# plugins checking all files
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
# SPDX-FileCopyrightText: 2024 Greenbone AG
|
|
3
|
+
import re
|
|
4
|
+
from collections.abc import Iterator
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from troubadix.helper import CURRENT_ENCODING
|
|
8
|
+
from troubadix.helper.helper import is_ignore_file
|
|
9
|
+
from troubadix.helper.patterns import (
|
|
10
|
+
ScriptTag,
|
|
11
|
+
get_script_tag_pattern,
|
|
12
|
+
)
|
|
13
|
+
from troubadix.plugin import (
|
|
14
|
+
FileContentPlugin,
|
|
15
|
+
LinterFix,
|
|
16
|
+
LinterResult,
|
|
17
|
+
LinterWarning,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
TAGS = [
|
|
21
|
+
ScriptTag.SUMMARY,
|
|
22
|
+
ScriptTag.VULDETECT,
|
|
23
|
+
ScriptTag.INSIGHT,
|
|
24
|
+
ScriptTag.IMPACT,
|
|
25
|
+
ScriptTag.AFFECTED,
|
|
26
|
+
ScriptTag.SOLUTION,
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
# Regex pattern to match:
|
|
30
|
+
# 1. A dot preceded and/or followed by any whitespace character (floating between words)
|
|
31
|
+
# 2. A dot preceded by any whitespace character at the end of the string
|
|
32
|
+
PATTERN = re.compile(r"\s+\.(\s|$)")
|
|
33
|
+
IGNORE = [
|
|
34
|
+
# 21.04 and 22.04 are generated and should not be touched manually
|
|
35
|
+
"21.04/",
|
|
36
|
+
"22.04/",
|
|
37
|
+
# uses dots for beginning of entry in enumeration
|
|
38
|
+
"common/2008/debian/deb_246.nasl",
|
|
39
|
+
"common/2008/debian/deb_266.nasl",
|
|
40
|
+
"common/2008/freebsd/freebsd_5e92e8a2.nasl",
|
|
41
|
+
"common/2008/freebsd/freebsdsa_cpio.nasl",
|
|
42
|
+
"common/2008/freebsd/freebsdsa_cvs2.nasl",
|
|
43
|
+
"common/2009/osc_photoGallery_sql_injection.nasl",
|
|
44
|
+
"common/2009/secpod_novell_edir_mult_vuln_jul09_lin.nasl",
|
|
45
|
+
"common/2009/secpod_novell_edir_mult_vuln_jul09_win.nasl",
|
|
46
|
+
"common/2010/freebsd/freebsd_3a7c5fc4.nasl",
|
|
47
|
+
"common/2012/freebsd/freebsd_a4a809d8.nasl",
|
|
48
|
+
"common/2015/amazon/alas-2014-455.nasl",
|
|
49
|
+
"common/2015/gb_mozilla_firefox_mult_vuln01_mar15_macosx.nasl",
|
|
50
|
+
"common/2015/gb_mozilla_firefox_mult_vuln01_mar15_win.nasl",
|
|
51
|
+
"common/2015/oracle/ELSA-2009-1619.nasl",
|
|
52
|
+
"common/2015/oracle/ELSA-2011-0586.nasl",
|
|
53
|
+
"common/2016/gb_perl_privilege_escalation_vuln_win.nasl",
|
|
54
|
+
"common/2021/dropbear/gb_dropbear_ssh_filename_vuln_may20.nasl",
|
|
55
|
+
"common/2021/eclipse/gb_jetty_GHSA-v7ff-8wcx-gmc5_lin.nasl",
|
|
56
|
+
"common/2021/eclipse/gb_jetty_GHSA-v7ff-8wcx-gmc5_win.nasl",
|
|
57
|
+
"common/gsf/2009/mandriva/gb_mandriva_MDVSA_2008_140.nasl",
|
|
58
|
+
"common/gsf/2009/mandriva/gb_mandriva_MDVSA_2008_141.nasl",
|
|
59
|
+
"common/gsf/2010/mandriva/gb_mandriva_MDVA_2010_173.nasl",
|
|
60
|
+
"common/gsf/2010/mandriva/gb_mandriva_MDVSA_2010_155.nasl",
|
|
61
|
+
"common/gsf/2010/mandriva/gb_mandriva_MDVSA_2010_155_1.nasl",
|
|
62
|
+
"common/gsf/2010/mandriva/gb_mandriva_MDVSA_2010_167.nasl",
|
|
63
|
+
"common/gsf/2020/f5/gb_f5_big_ip_K11315080.nasl",
|
|
64
|
+
"common/gsf/2020/f5/gb_f5_big_iq_K11315080.nasl",
|
|
65
|
+
"common/2022/opensuse/gb_opensuse_2022_1548_1.nasl",
|
|
66
|
+
"common/2024/opensuse/gb_opensuse_2023_3247_1.nasl",
|
|
67
|
+
"common/attic/debian/deb_232_1.nasl",
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class CheckSpacesBeforeDots(FileContentPlugin):
|
|
72
|
+
name = "check_spaces_before_dots"
|
|
73
|
+
|
|
74
|
+
def check_content(
|
|
75
|
+
self, nasl_file: Path, file_content: str
|
|
76
|
+
) -> Iterator[LinterResult]:
|
|
77
|
+
"""
|
|
78
|
+
This plugin checks for excess whitespace before a dot
|
|
79
|
+
in script_tags that have full sentence values
|
|
80
|
+
"""
|
|
81
|
+
self.matches = []
|
|
82
|
+
if nasl_file.suffix == ".inc" or is_ignore_file(nasl_file, IGNORE):
|
|
83
|
+
return
|
|
84
|
+
for tag in TAGS:
|
|
85
|
+
pattern = get_script_tag_pattern(tag)
|
|
86
|
+
match = pattern.search(file_content)
|
|
87
|
+
if not match:
|
|
88
|
+
continue
|
|
89
|
+
|
|
90
|
+
value = match.group("value")
|
|
91
|
+
value_start = match.start("value")
|
|
92
|
+
|
|
93
|
+
for excess_match in PATTERN.finditer(value):
|
|
94
|
+
whitespace_pos = excess_match.start() + value_start
|
|
95
|
+
self.matches.append((whitespace_pos, excess_match.group()))
|
|
96
|
+
fullmatch = match.group()
|
|
97
|
+
yield LinterWarning(
|
|
98
|
+
f"value of script_tag {match.group('name')} has at least"
|
|
99
|
+
" one occurence of excess whitespace before a dot:"
|
|
100
|
+
f"\n '{fullmatch}'",
|
|
101
|
+
file=nasl_file,
|
|
102
|
+
plugin=self.name,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
def fix(self) -> Iterator[LinterResult]:
|
|
106
|
+
|
|
107
|
+
if not self.matches:
|
|
108
|
+
return
|
|
109
|
+
|
|
110
|
+
# Sort matches by position, descending order to avoid messing up indices during replacement
|
|
111
|
+
self.matches.sort(reverse=True)
|
|
112
|
+
|
|
113
|
+
file_content = self.context.file_content
|
|
114
|
+
for pos, match_str in self.matches:
|
|
115
|
+
# Replace the match by removing the excess whitespace before the dot
|
|
116
|
+
fixed_str = re.sub(r"\s+\.", ".", match_str)
|
|
117
|
+
file_content = (
|
|
118
|
+
file_content[:pos]
|
|
119
|
+
+ fixed_str
|
|
120
|
+
+ file_content[pos + len(match_str) :]
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
with open(self.context.nasl_file, "w", encoding=CURRENT_ENCODING) as f:
|
|
124
|
+
f.write(file_content)
|
|
125
|
+
|
|
126
|
+
yield LinterFix(
|
|
127
|
+
"Excess spaces were removed",
|
|
128
|
+
file=self.context.nasl_file,
|
|
129
|
+
plugin=self.name,
|
|
130
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/fail_name_and_copyright_newline.nasl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/fail_badwords.nasl
RENAMED
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/fail_name_newline.nasl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_files/nasl/21.04/runner/fail2.nasl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/tests/plugins/test_variable_redefinition_in_foreach.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/__init__.py
RENAMED
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/markers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/tests/standalone_plugins/changed_packages/test_package.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/troubadix/plugins/variable_redefinition_in_foreach.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{troubadix-24.9.4 → troubadix-24.10.0}/troubadix/standalone_plugins/changed_packages/package.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|