troubadix 24.10.1__tar.gz → 25.1.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.10.1 → troubadix-25.1.0}/PKG-INFO +2 -2
- {troubadix-24.10.1 → troubadix-25.1.0}/pyproject.toml +2 -2
- troubadix-25.1.0/tests/plugins/test_script_xref_url.py +206 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/__version__.py +1 -1
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/codespell/codespell.additions +2 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/codespell/codespell.exclude +91 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_xref_url.py +64 -4
- troubadix-24.10.1/tests/plugins/test_script_xref_url.py +0 -87
- {troubadix-24.10.1 → troubadix-25.1.0}/LICENSE +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/README.md +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/helper/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/helper/test_linguistic_exception_handler.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/helper/test_patterns.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/fail.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/fail2.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_badwords.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_copyright_text.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_copyright_year.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_creation_date.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_cve_format.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_cvss_format.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_dependencies.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_dependency_category_order.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_deprecated_dependency.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_deprecated_functions.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_double_end_points.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_duplicate_oid.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_duplicated_script_tags.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_encoding.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/fail_bad_new_line.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/fail_badwords.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/fail_name_and_copyright_newline.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/fail_name_newline.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/fail_permissions.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/fail_spelling.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/fail.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/fail_badwords.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/fail_name_and_copyright_newline.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/fail_name_newline.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/fail_solution_template.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/runner/fail.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/runner/fail2.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/runner/test.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/runner/test_valid_oid.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/test.inc +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/21.04/test.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/nasl/warning.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/ok_permissions.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_files/test_oid.nasl +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_forking_nasl_functions.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_get_kb_on_services.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_grammar.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_http_links_in_tags.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_illegal_characters.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_log_messages.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_malformed_dependencies.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_misplaced_compare_in_if.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_missing_desc_exit.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_missing_tag_solution.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_multiple_re_parameters.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_newlines.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_overlong_description_lines.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_overlong_script_tags.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_prod_svc_detect_in_vulnvt.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_qod.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_reporting_consistency.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_add_preference_type.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_calls_empty_values.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_calls_recommended.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_category.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_copyright.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_family.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_tag_form.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_tag_whitespaces.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_tags_mandatory.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_version_and_last_modification_tags.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_script_xref_form.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_security_messages.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_set_get_kb_calls.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_solution_text.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_solution_type.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_spaces_before_dots.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_spaces_in_filename.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_spelling.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_tabs.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_todo_tbd.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_trailing_spaces_tabs.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_using_display.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_valid_oid.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_valid_script_tag_names.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_variable_redefinition_in_foreach.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_vt_file_permissions.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/plugins/test_vt_placement.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/markers/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/markers/test_added_epoch.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/markers/test_added_release.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/markers/test_added_udeb.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/markers/test_changed_update.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/markers/test_dropped_architecture.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/test_changed_packages.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/changed_packages/test_package.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/test_changed_cves.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/test_changed_oid.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/test_deprecate_vts.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/test_file_extensions.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/test_last_modification.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/test_no_solution.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/standalone_plugins/test_version_updated.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/test_argparser.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/test_helper.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/test_naslinter.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/test_reporter.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/test_results.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/tests/test_runner.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/argparser.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/codespell/codespell.ignore +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/helper/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/helper/helper.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/helper/linguistic_exception_handler.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/helper/patterns.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugin.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/badwords.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/copyright_text.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/copyright_year.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/creation_date.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/cve_format.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/cvss_format.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/dependencies.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/dependency_category_order.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/deprecated_dependency.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/deprecated_functions.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/double_end_points.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/duplicate_oid.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/duplicated_script_tags.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/encoding.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/forking_nasl_functions.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/get_kb_on_services.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/grammar.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/http_links_in_tags.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/illegal_characters.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/log_messages.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/malformed_dependencies.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/misplaced_compare_in_if.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/missing_desc_exit.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/missing_tag_solution.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/multiple_re_parameters.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/newlines.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/overlong_description_lines.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/overlong_script_tags.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/prod_svc_detect_in_vulnvt.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/qod.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/reporting_consistency.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_add_preference_type.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_calls_empty_values.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_calls_recommended.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_category.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_copyright.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_family.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_tag_form.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_tag_whitespaces.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_tags_mandatory.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_version_and_last_modification_tags.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/script_xref_form.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/security_messages.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/set_get_kb_calls.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/solution_text.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/solution_type.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/spaces_before_dots.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/spaces_in_filename.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/spelling.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/tabs.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/todo_tbd.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/trailing_spaces_tabs.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/using_display.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/valid_oid.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/valid_script_tag_names.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/variable_assigned_in_if.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/variable_redefinition_in_foreach.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/vt_file_permissions.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/plugins/vt_placement.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/reporter.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/results.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/runner.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/allowed_rev_diff.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_cves.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_oid.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/changed_packages.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/marker/__init__.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/marker/added_epoch.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/marker/added_release.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/marker/added_udeb.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/marker/changed_update.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/marker/dropped_architecture.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/marker/marker.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/changed_packages/package.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/common.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/deprecate_vts.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/file_extensions.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/last_modification.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/no_solution.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/standalone_plugins/version_updated.py +0 -0
- {troubadix-24.10.1 → troubadix-25.1.0}/troubadix/troubadix.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "troubadix"
|
|
3
|
-
version = "
|
|
3
|
+
version = "25.1.0"
|
|
4
4
|
description = "A linting and QA check tool for NASL files"
|
|
5
5
|
authors = ["Greenbone <info@greenbone.net>"]
|
|
6
6
|
license = "GPL-3.0-or-later"
|
|
@@ -36,7 +36,7 @@ charset-normalizer = "^3.2.0"
|
|
|
36
36
|
[tool.poetry.group.dev.dependencies]
|
|
37
37
|
autohooks = ">=21.7.0"
|
|
38
38
|
autohooks-plugin-black = ">=21.12.0"
|
|
39
|
-
ruff = ">=0.5.6,<0.
|
|
39
|
+
ruff = ">=0.5.6,<0.9.0"
|
|
40
40
|
autohooks-plugin-ruff = "^24.1.0"
|
|
41
41
|
|
|
42
42
|
[tool.black]
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Copyright (C) 2022 Greenbone AG
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
#
|
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU General Public License
|
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
|
|
20
|
+
from tests.plugins import PluginTestCase
|
|
21
|
+
from troubadix.plugin import LinterError
|
|
22
|
+
from troubadix.plugins.script_xref_url import CheckScriptXrefUrl
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class CheckScriptXrefUrlTestCase(PluginTestCase):
|
|
26
|
+
path = Path("some/file.nasl")
|
|
27
|
+
|
|
28
|
+
def test_ok(self):
|
|
29
|
+
content = (
|
|
30
|
+
' script_xref(name:"URL", value:"http://www.example.com");\n'
|
|
31
|
+
# pylint: disable=line-too-long
|
|
32
|
+
# Various cases from https://github.com/python-validators/validators/issues/296
|
|
33
|
+
' script_xref(name:"URL", value:"https://launchpad.support.sap.com/#/notes/2718993");\n'
|
|
34
|
+
' script_xref(name:"URL", value:"https://forums.livezilla.net/index.php?/topic/10983-fg-vd-19-086-livezilla-server-is-vulnerable-to-sql-injection-ii/");\n'
|
|
35
|
+
' script_xref(name:"URL", value:"http://www.brocade.com/en/backend-content/pdf-page.html?/content/dam/common/documents/content-types/security-bulletin/brocade-security-advisory-2016-168.pdf");\n'
|
|
36
|
+
' script_xref(name:"URL", value:"https://groups.google.com/forum/?fromgroups#!topic/rubyonrails-security/8SA-M3as7A8");\n'
|
|
37
|
+
' script_xref(name:"URL", value:"https://forum.bitdefender.com/index.php?/topic/75470-doubleagent/");\n'
|
|
38
|
+
' script_xref(name:"URL", value:"https://www.smartftp.com/forums/index.php?/topic/16425-smartftp-client-40-change-log/");\n'
|
|
39
|
+
' script_xref(name:"URL", value:"https://exchange.xforce.ibmcloud.com/#/vulnerabilities/100912");\n'
|
|
40
|
+
' script_xref(name:"URL", value:"https://support.microsoft.com/en-us/lifecycle#gp/Microsoft-Internet-Explorer");\n'
|
|
41
|
+
' script_xref(name:"URL", value:"https://www.watchguard.com/support/release-notes/fireware/12/en-US/EN_ReleaseNotes_Fireware_12_5_9/index.html#Fireware/en-US/resolved_issues.html");\n'
|
|
42
|
+
' script_xref(name:"URL", value:"https://code.wireshark.org/review/#/c/25660/");\n'
|
|
43
|
+
' script_xref(name:"URL", value:"https://groups.google.com/forum/#!topic/kubernetes-announce/yBrFf5nmvfI");\n'
|
|
44
|
+
' script_xref(name:"URL", value:"https://issues.sonatype.org/plugins/servlet/mobile#issue/NEXUS-16870");\n'
|
|
45
|
+
' script_xref(name:"URL", value:"http://forums.livezilla.net/index.php?/topic/163-livezilla-changelog/");\n'
|
|
46
|
+
' script_xref(name:"URL", value:"https://www.watchguard.com/support/release-notes/fireware/11/en-US/EN_ReleaseNotes_Fireware_11_12_1/index.html#Fireware/en-US/resolved_issues.html%3FTocPath%3D_____13");\n'
|
|
47
|
+
' script_xref(name:"URL", value:"https://review.typo3.org/#/c/37013");\n'
|
|
48
|
+
' script_xref(name:"URL", value:"https://forums.malwarebytes.org/index.php?/topic/158251-malwarebytes-anti-exploit-hall-of-fame/");\n'
|
|
49
|
+
' script_xref(name:"URL", value:"http://speedtouch.sourceforge.io/index.php?/news.en.html");\n'
|
|
50
|
+
' script_xref(name:"URL", value:"https://support.k7computing.com/index.php?/Knowledgebase/Article/View/173/41/advisory-issued-on-6th-november-2017");\n'
|
|
51
|
+
' script_xref(name:"URL", value:"http://support.novell.com/cgi-bin/search/searchtid.cgi?/10077872.htm");\n'
|
|
52
|
+
' script_xref(name:"URL", value:"https://blog.fuzzing-project.org/54-Update-on-MatrixSSL-miscalculation-CVE-2016-8671,-incomplete-fix-for-CVE-2016-6887.html");\n'
|
|
53
|
+
' script_xref(name:"URL", value:"http://www.scaprepo.com/view.jsp?id=oval:org.secpod.oval:def:701638");\n'
|
|
54
|
+
' script_xref(name:"URL", value:"https://blog.fuzzing-project.org/46-Various-invalid-memory-reads-in-ImageMagick-WPG,-DDS,-DCM.html");\n'
|
|
55
|
+
' script_xref(name:"URL", value:"http://forum.wampserver.com/read.php?2,153491");\n'
|
|
56
|
+
' script_xref(name:"URL", value:"https://secure1.securityspace.com/smysecure/catid.html?in=FreeBSD-SA-10:04.jail.asc");\n'
|
|
57
|
+
' script_xref(name:"URL", value:"http://www.corelan.be:8800/index.php/forum/security-advisories/corelan-10-004-turboftp-server-1-00-712-dos/");\n'
|
|
58
|
+
' script_xref(name:"URL", value:"http://core.yehg.net/lab/pr0js/advisories/dll_hijacking/[flash_player]_10.1.x_insecure_dll_hijacking_(dwmapi.dll)");\n'
|
|
59
|
+
' script_xref(name:"URL", value:"http://mail-archives.apache.org/mod_mbox/perl-advocacy/200904.mbox/<ad28918e0904011458h273a71d4x408f1ed286c9dfbc@mail.gmail.com>");\n'
|
|
60
|
+
' script_xref(name:"URL", value:"https://confluence.atlassian.com/security/security-bulletin-may-21-2024-1387867145.html");\n'
|
|
61
|
+
# pylint: enable=line-too-long
|
|
62
|
+
)
|
|
63
|
+
fake_context = self.create_file_plugin_context(
|
|
64
|
+
nasl_file=self.path, file_content=content
|
|
65
|
+
)
|
|
66
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
67
|
+
|
|
68
|
+
results = list(plugin.run())
|
|
69
|
+
|
|
70
|
+
self.assertEqual(len(results), 0)
|
|
71
|
+
|
|
72
|
+
def test_exclude_inc_file(self):
|
|
73
|
+
path = Path("some/file.inc")
|
|
74
|
+
fake_context = self.create_file_plugin_context(nasl_file=path)
|
|
75
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
76
|
+
|
|
77
|
+
results = list(plugin.run())
|
|
78
|
+
|
|
79
|
+
self.assertEqual(len(results), 0)
|
|
80
|
+
|
|
81
|
+
def test_generic_invalid_url(self):
|
|
82
|
+
content = ' script_xref(name:"URL", value:"www.example.com");\n'
|
|
83
|
+
fake_context = self.create_file_plugin_context(
|
|
84
|
+
nasl_file=self.path, file_content=content
|
|
85
|
+
)
|
|
86
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
87
|
+
|
|
88
|
+
results = list(plugin.run())
|
|
89
|
+
|
|
90
|
+
self.assertEqual(len(results), 1)
|
|
91
|
+
self.assertIsInstance(results[0], LinterError)
|
|
92
|
+
self.assertEqual(
|
|
93
|
+
'script_xref(name:"URL", value:"www.example.com");: Invalid URL'
|
|
94
|
+
" value",
|
|
95
|
+
results[0].message,
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
def test_invalid_url_trailing_angle_bracket(self):
|
|
99
|
+
content = ' script_xref(name:"URL", value:"https://docs.docker.com/engine/release-notes/24.0/#2407>");\n'
|
|
100
|
+
fake_context = self.create_file_plugin_context(
|
|
101
|
+
nasl_file=self.path, file_content=content
|
|
102
|
+
)
|
|
103
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
104
|
+
|
|
105
|
+
results = list(plugin.run())
|
|
106
|
+
|
|
107
|
+
self.assertEqual(len(results), 1)
|
|
108
|
+
self.assertIsInstance(results[0], LinterError)
|
|
109
|
+
self.assertEqual(
|
|
110
|
+
'script_xref(name:"URL", value:"https://docs.docker.com/engine/'
|
|
111
|
+
'release-notes/24.0/#2407>");: Invalid URL'
|
|
112
|
+
" value (trailing '>')",
|
|
113
|
+
results[0].message,
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def test_invalid_url_trailing_comma(self):
|
|
117
|
+
content = ' script_xref(name:"URL", value:"https://dev.mysql.com/doc/refman/5.7/en/mysql-stmt-fetch.html,");\n'
|
|
118
|
+
fake_context = self.create_file_plugin_context(
|
|
119
|
+
nasl_file=self.path, file_content=content
|
|
120
|
+
)
|
|
121
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
122
|
+
|
|
123
|
+
results = list(plugin.run())
|
|
124
|
+
|
|
125
|
+
self.assertEqual(len(results), 1)
|
|
126
|
+
self.assertIsInstance(results[0], LinterError)
|
|
127
|
+
self.assertEqual(
|
|
128
|
+
'script_xref(name:"URL", value:"https://dev.mysql.com/doc/refman/5.7/en/'
|
|
129
|
+
'mysql-stmt-fetch.html,");: Invalid URL'
|
|
130
|
+
" value (trailing ',')",
|
|
131
|
+
results[0].message,
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
def test_invalid_url_trailing_punctuation_mark(self):
|
|
135
|
+
content = ' script_xref(name:"URL", value:"http://isec.pl/vulnerabilities/isec-0017-binfmt_elf.txt:");\n'
|
|
136
|
+
fake_context = self.create_file_plugin_context(
|
|
137
|
+
nasl_file=self.path, file_content=content
|
|
138
|
+
)
|
|
139
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
140
|
+
|
|
141
|
+
results = list(plugin.run())
|
|
142
|
+
|
|
143
|
+
self.assertEqual(len(results), 1)
|
|
144
|
+
self.assertIsInstance(results[0], LinterError)
|
|
145
|
+
self.assertEqual(
|
|
146
|
+
'script_xref(name:"URL", value:"http://isec.pl/vulnerabilities/'
|
|
147
|
+
'isec-0017-binfmt_elf.txt:");: Invalid URL'
|
|
148
|
+
" value (trailing ':')",
|
|
149
|
+
results[0].message,
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
def test_invalid_url_trailing_square_bracket(self):
|
|
153
|
+
content = (
|
|
154
|
+
' script_xref(name:"URL", value:"https://example.com/foo/bar]");\n'
|
|
155
|
+
)
|
|
156
|
+
fake_context = self.create_file_plugin_context(
|
|
157
|
+
nasl_file=self.path, file_content=content
|
|
158
|
+
)
|
|
159
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
160
|
+
|
|
161
|
+
results = list(plugin.run())
|
|
162
|
+
|
|
163
|
+
self.assertEqual(len(results), 1)
|
|
164
|
+
self.assertIsInstance(results[0], LinterError)
|
|
165
|
+
self.assertEqual(
|
|
166
|
+
'script_xref(name:"URL", value:"https://example.com/foo/bar]");: Invalid URL'
|
|
167
|
+
" value (trailing ']')",
|
|
168
|
+
results[0].message,
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
def test_invalid_url_trailing_round_bracket(self):
|
|
172
|
+
content = (
|
|
173
|
+
' script_xref(name:"URL", value:"https://example.com/foo/bar)");\n'
|
|
174
|
+
)
|
|
175
|
+
fake_context = self.create_file_plugin_context(
|
|
176
|
+
nasl_file=self.path, file_content=content
|
|
177
|
+
)
|
|
178
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
179
|
+
|
|
180
|
+
results = list(plugin.run())
|
|
181
|
+
|
|
182
|
+
self.assertEqual(len(results), 1)
|
|
183
|
+
self.assertIsInstance(results[0], LinterError)
|
|
184
|
+
self.assertEqual(
|
|
185
|
+
'script_xref(name:"URL", value:"https://example.com/foo/bar)");: Invalid URL'
|
|
186
|
+
" value (trailing ')')",
|
|
187
|
+
results[0].message,
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
def test_invalid_url_wrong_ending(self):
|
|
191
|
+
content = ' script_xref(name:"URL", value:"https://confluence.atlassian.com/security/security-bulletin-may-21-2024-1387867145.htmll");\n'
|
|
192
|
+
fake_context = self.create_file_plugin_context(
|
|
193
|
+
nasl_file=self.path, file_content=content
|
|
194
|
+
)
|
|
195
|
+
plugin = CheckScriptXrefUrl(fake_context)
|
|
196
|
+
|
|
197
|
+
results = list(plugin.run())
|
|
198
|
+
|
|
199
|
+
self.assertEqual(len(results), 1)
|
|
200
|
+
self.assertIsInstance(results[0], LinterError)
|
|
201
|
+
self.assertEqual(
|
|
202
|
+
'script_xref(name:"URL", value:"https://confluence.atlassian.com/security/'
|
|
203
|
+
'security-bulletin-may-21-2024-1387867145.htmll");: Invalid URL'
|
|
204
|
+
" value (wrong file extension)",
|
|
205
|
+
results[0].message,
|
|
206
|
+
)
|