Gixy-Next 0.0.9__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.
- gixy_next-0.0.9/Gixy_Next.egg-info/PKG-INFO +264 -0
- gixy_next-0.0.9/Gixy_Next.egg-info/SOURCES.txt +351 -0
- gixy_next-0.0.9/Gixy_Next.egg-info/dependency_links.txt +1 -0
- gixy_next-0.0.9/Gixy_Next.egg-info/entry_points.txt +2 -0
- gixy_next-0.0.9/Gixy_Next.egg-info/requires.txt +37 -0
- gixy_next-0.0.9/Gixy_Next.egg-info/top_level.txt +1 -0
- gixy_next-0.0.9/LICENSE +357 -0
- gixy_next-0.0.9/MANIFEST.in +2 -0
- gixy_next-0.0.9/PKG-INFO +264 -0
- gixy_next-0.0.9/README.md +188 -0
- gixy_next-0.0.9/gixy/__init__.py +5 -0
- gixy_next-0.0.9/gixy/__main__.py +5 -0
- gixy_next-0.0.9/gixy/cli/__init__.py +0 -0
- gixy_next-0.0.9/gixy/cli/__main__.py +5 -0
- gixy_next-0.0.9/gixy/cli/argparser.py +214 -0
- gixy_next-0.0.9/gixy/cli/main.py +310 -0
- gixy_next-0.0.9/gixy/core/__init__.py +0 -0
- gixy_next-0.0.9/gixy/core/builtin_variables.py +401 -0
- gixy_next-0.0.9/gixy/core/config.py +31 -0
- gixy_next-0.0.9/gixy/core/context.py +103 -0
- gixy_next-0.0.9/gixy/core/exceptions.py +2 -0
- gixy_next-0.0.9/gixy/core/issue.py +15 -0
- gixy_next-0.0.9/gixy/core/manager.py +89 -0
- gixy_next-0.0.9/gixy/core/plugins_manager.py +107 -0
- gixy_next-0.0.9/gixy/core/regexp.py +1076 -0
- gixy_next-0.0.9/gixy/core/severity.py +9 -0
- gixy_next-0.0.9/gixy/core/sre_parse/__init__.py +0 -0
- gixy_next-0.0.9/gixy/core/sre_parse/sre_constants.py +226 -0
- gixy_next-0.0.9/gixy/core/sre_parse/sre_parse.py +852 -0
- gixy_next-0.0.9/gixy/core/utils.py +2 -0
- gixy_next-0.0.9/gixy/core/variable.py +251 -0
- gixy_next-0.0.9/gixy/directives/__init__.py +25 -0
- gixy_next-0.0.9/gixy/directives/block.py +362 -0
- gixy_next-0.0.9/gixy/directives/directive.py +412 -0
- gixy_next-0.0.9/gixy/formatters/__init__.py +23 -0
- gixy_next-0.0.9/gixy/formatters/_jinja.py +17 -0
- gixy_next-0.0.9/gixy/formatters/base.py +124 -0
- gixy_next-0.0.9/gixy/formatters/console.py +13 -0
- gixy_next-0.0.9/gixy/formatters/json.py +30 -0
- gixy_next-0.0.9/gixy/formatters/templates/__init__.py +0 -0
- gixy_next-0.0.9/gixy/formatters/templates/console.j2 +44 -0
- gixy_next-0.0.9/gixy/formatters/templates/text.j2 +44 -0
- gixy_next-0.0.9/gixy/formatters/text.py +13 -0
- gixy_next-0.0.9/gixy/parser/__init__.py +0 -0
- gixy_next-0.0.9/gixy/parser/nginx_parser.py +317 -0
- gixy_next-0.0.9/gixy/parser/raw_parser.py +256 -0
- gixy_next-0.0.9/gixy/plugins/__init__.py +0 -0
- gixy_next-0.0.9/gixy/plugins/add_header_content_type.py +58 -0
- gixy_next-0.0.9/gixy/plugins/add_header_multiline.py +32 -0
- gixy_next-0.0.9/gixy/plugins/add_header_redefinition.py +186 -0
- gixy_next-0.0.9/gixy/plugins/alias_traversal.py +117 -0
- gixy_next-0.0.9/gixy/plugins/allow_without_deny.py +47 -0
- gixy_next-0.0.9/gixy/plugins/default_server_flag.py +123 -0
- gixy_next-0.0.9/gixy/plugins/error_log_off.py +22 -0
- gixy_next-0.0.9/gixy/plugins/hash_without_default.py +53 -0
- gixy_next-0.0.9/gixy/plugins/host_spoofing.py +28 -0
- gixy_next-0.0.9/gixy/plugins/http_splitting.py +51 -0
- gixy_next-0.0.9/gixy/plugins/if_is_evil.py +48 -0
- gixy_next-0.0.9/gixy/plugins/invalid_regex.py +148 -0
- gixy_next-0.0.9/gixy/plugins/low_keepalive_requests.py +29 -0
- gixy_next-0.0.9/gixy/plugins/origins.py +314 -0
- gixy_next-0.0.9/gixy/plugins/plugin.py +38 -0
- gixy_next-0.0.9/gixy/plugins/proxy_pass_normalized.py +95 -0
- gixy_next-0.0.9/gixy/plugins/regex_redos.py +127 -0
- gixy_next-0.0.9/gixy/plugins/resolver_external.py +26 -0
- gixy_next-0.0.9/gixy/plugins/return_bypasses_allow_deny.py +45 -0
- gixy_next-0.0.9/gixy/plugins/ssrf.py +63 -0
- gixy_next-0.0.9/gixy/plugins/stale_dns_cache.py +141 -0
- gixy_next-0.0.9/gixy/plugins/try_files_is_evil_too.py +27 -0
- gixy_next-0.0.9/gixy/plugins/unanchored_regex.py +29 -0
- gixy_next-0.0.9/gixy/plugins/valid_referers.py +23 -0
- gixy_next-0.0.9/gixy/plugins/version_disclosure.py +50 -0
- gixy_next-0.0.9/gixy/plugins/worker_rlimit_nofile_vs_connections.py +33 -0
- gixy_next-0.0.9/gixy/utils/__init__.py +0 -0
- gixy_next-0.0.9/gixy/utils/text.py +71 -0
- gixy_next-0.0.9/setup.cfg +4 -0
- gixy_next-0.0.9/setup.py +174 -0
- gixy_next-0.0.9/tests/__init__.py +0 -0
- gixy_next-0.0.9/tests/cli/__init__.py +0 -0
- gixy_next-0.0.9/tests/core/__init__.py +0 -0
- gixy_next-0.0.9/tests/core/test_context.py +157 -0
- gixy_next-0.0.9/tests/core/test_regexp.py +315 -0
- gixy_next-0.0.9/tests/core/test_variable.py +120 -0
- gixy_next-0.0.9/tests/directives/__init__.py +0 -0
- gixy_next-0.0.9/tests/directives/test_block.py +329 -0
- gixy_next-0.0.9/tests/directives/test_directive.py +99 -0
- gixy_next-0.0.9/tests/parser/__init__.py +0 -0
- gixy_next-0.0.9/tests/parser/test_nginx_parser.py +229 -0
- gixy_next-0.0.9/tests/parser/test_raw_parser.py +107 -0
- gixy_next-0.0.9/tests/parser/test_raw_parser_minimal.py +96 -0
- gixy_next-0.0.9/tests/parser/test_sre_parse.py +49 -0
- gixy_next-0.0.9/tests/plugins/__init__.py +0 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/add_header_content_type.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/add_header_content_type_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/fastcgi_hide_header_fp.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/proxy_hide_header_fp.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/proxy_hide_header_nested_fp.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/uwsgi_hide_header_fp.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/add_header.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/add_header_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/add_header_multiline.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_fp.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_multiple.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_replace.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_replace_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_status_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_type_fp.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/basic_drop.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/basic_merge_fp.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/duplicate_fp.conf +9 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/explicit_off_fp.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/grandparent_only_drop.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/header_inherit_on.conf +14 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/header_inherit_on_fp.conf +11 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/http_merge_inherited_fp.conf +14 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/http_merge_location_off_fp.conf +15 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/if_block_merge.conf +16 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/if_replaces.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/location_only_fp.conf +9 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/location_replaces.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/multiple_locations_all_safe_fp.conf +22 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/multiple_locations_mixed.conf +21 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/nested_block.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/nested_location_inherits_merge_fp.conf +16 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/nested_location_override_on.conf +17 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/non_block_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/not_secure_dropped.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/not_secure_outer.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/server_merge_inherited_fp.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/step_replaces.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/nested.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/nested_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/not_slashed_alias.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/not_slashed_alias_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_2.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_2_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_3.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_3_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_4.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_4_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_5.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_6.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/simple.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/simple_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/slashed_alias.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/alias_traversal/slashed_alias_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/allow_without_deny.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/allow_without_deny_dump.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/allow_without_deny_dump_fp.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/allow_without_deny_fp.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/deny.inc +2 -0
- gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/include_and_deny_fp.conf +10 -0
- gixy_next-0.0.9/tests/plugins/simply/default_server_flag/ambiguous_with_default_fp.conf +14 -0
- gixy_next-0.0.9/tests/plugins/simply/default_server_flag/ambiguous_with_upstream_server.conf +18 -0
- gixy_next-0.0.9/tests/plugins/simply/default_server_flag/ambiguous_without_default.conf +14 -0
- gixy_next-0.0.9/tests/plugins/simply/default_server_flag/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/error_log_off/error_log_off.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/error_log_off/error_log_off_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/hash_without_default/geo_no_default.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/hash_without_default/geo_no_default_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/hash_without_default/map_no_default.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/hash_without_default/map_no_default_fp.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/hash_without_default/map_single_entry_no_default_fp.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/host_spoofing/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/host_spoofing/http_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/host_spoofing/http_host.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/host_spoofing/http_host_diff_case.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/host_spoofing/some_arg.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/add_header_uri.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/dont_report_not_resolved_var_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/if_block.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/if_block_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_2.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_3.conf +10 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_3_fp.conf +10 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_4.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_4_fp.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_fp.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_with_set.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_from_location_var.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_from_location_var_var.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_from_location_var_var_fp.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_from_location_var_var_var.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_pass_cr_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_pass_ducument_uri.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_pass_lf.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_set_header_ducument_uri.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/return_403_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/return_request_uri_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/rewrite_extract_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/rewrite_uri.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/http_splitting/rewrite_uri_after_var.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/if_is_evil/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_add_header.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_break.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_fp.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_last_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_permanent_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_redirect_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/invalid_regex/if_no_groups.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/invalid_regex/if_valid_group_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/invalid_regex/multiple_groups_fp.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/invalid_regex/no_groups.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/invalid_regex/no_refs_fp.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/invalid_regex/valid_group_fp.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/invalid_regex/wrong_group.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/low_keepalive_requests/low_keepalive_requests.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/low_keepalive_requests/low_keepalive_requests_fp.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/map_origin_allowlist.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/map_origin_allowlist_fp.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/metrika.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_1.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_10.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_11_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_12.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_13.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_14.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_15.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_16.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_2.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_3.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_4.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_5.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_6.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_7.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_8.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_9.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/origin_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/origin_https.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/origin_https_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/origin_path.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/origin_too_permissive.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/origin_w_slash.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/origin_w_slash_and_hash.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/origin_wo_slash.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/referer.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/referer_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/referer_subdomain.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/referer_subdomain_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/referrer_double_r.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/safe_origin.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/safe_origin_2_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/structure_dot.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/structure_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/structure_prefix.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/structure_suffix.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/unsafe_origin.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/unsafe_origin_1.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/unsafe_origin_2.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/origins/webvisor.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/exact_location_with_uri_fp.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_fp.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if_argflag.conf +21 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_limit_except.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_limit_except_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_nopath.conf +7 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_nopath_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_path.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_path_fp.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_socket_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_socket_with_path.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_var_fp.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/rewrite_with_return.conf +9 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/rewrite_with_return_fp.conf +9 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/stream_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/variable.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/variable_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_external.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_external_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_link_local_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_local_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_local_internal_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_local_ipv6_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_local_ipv6_with_port_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_localhost_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_localhost_withport_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_more_local_ipv6_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_unregisterable_domain_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_unregisterable_domain_withport_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/return_bypasses_allow_deny/same_level.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/return_bypasses_allow_deny/same_level_fp.conf +5 -0
- gixy_next-0.0.9/tests/plugins/simply/return_bypasses_allow_deny/same_next_level.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/return_bypasses_allow_deny/same_next_level_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/have_internal_fp.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/host_w_const_start.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/host_w_const_start_arg.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/mapped_value.conf +15 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/not_host_var_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/request_uri_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/request_uri_var_fp.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/scheme_var.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/single_var.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/used_arg.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/vars_from_loc.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/ssrf/with_const_scheme.conf +10 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_ip_literal_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_localhost_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_unix_socket_fp.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_upstream_host_with_resolve_fp.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_upstream_ip_servers_fp.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_variable_in_path_no_resolver.conf +8 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_variable_points_to_upstream_with_resolve_fp.conf +14 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_with_include_with_if.conf +23 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_with_include_without_if_fp.conf +21 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/proxy_pass_ip_literal_fp.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/proxy_pass_unix_socket_fp.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_aws_elb_host.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_cloudflare_workers_host.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_heroku_host.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_proxy_pass_upstream_no_resolve.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_punycode_tld.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_punycode_tld_2.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_static_public_domain.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_unknown_tld.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_unknown_tld_2.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_upstream_host_no_resolve.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_variable_points_to_upstream_no_resolve.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_variable_proxy_pass_missing_resolver.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/upstream_host_with_resolve_fp.conf +13 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/upstream_ip_servers_fp.conf +12 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/variable_in_proxy_pass_with_resolver_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/variable_proxy_pass_with_resolver_fp.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/try_files_is_evil_too/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too.conf +6 -0
- gixy_next-0.0.9/tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too_cache_none.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too_fp.conf +4 -0
- gixy_next-0.0.9/tests/plugins/simply/unanchored_regex/unanchored_regex.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/unanchored_regex/unanchored_regex_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/valid_referers/config.json +3 -0
- gixy_next-0.0.9/tests/plugins/simply/valid_referers/none_first.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/valid_referers/none_last.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/valid_referers/none_middle.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/valid_referers/wo_none_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/version_disclosure/server_tokens_off_fp.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/version_disclosure/server_tokens_on.conf +1 -0
- gixy_next-0.0.9/tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_fp.conf +3 -0
- gixy_next-0.0.9/tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_missing.conf +2 -0
- gixy_next-0.0.9/tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_too_low.conf +3 -0
- gixy_next-0.0.9/tests/plugins/test_simply.py +118 -0
- gixy_next-0.0.9/tests/utils.py +63 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Gixy-Next
|
|
3
|
+
Version: 0.0.9
|
|
4
|
+
Summary: Open source NGINX security scanner and configuration checker for automating nginx.conf security audits, finding performance misconfigurations, and hardening NGINX servers.
|
|
5
|
+
Home-page: https://gixy.io/
|
|
6
|
+
Author: Joshua Rogers
|
|
7
|
+
Author-email: gixy@joshua.hu
|
|
8
|
+
License: MPL-2.0
|
|
9
|
+
Project-URL: Homepage, https://gixy.io/
|
|
10
|
+
Project-URL: Documentation, https://gixy.io/
|
|
11
|
+
Project-URL: Source, https://github.com/MegaManSec/gixy-next
|
|
12
|
+
Project-URL: Issue Tracker, https://github.com/MegaManSec/gixy-next/issues
|
|
13
|
+
Project-URL: Original Gixy, https://github.com/yandex/gixy
|
|
14
|
+
Keywords: nginx,nginx security,nginx hardening,nginx configuration,nginx config,nginx config scanner,nginx configuration checker,nginx config linter,nginx security scanner,nginx configuration static analyzer,nginx vulnerability scanner,nginx.conf security audit,configuration compliance,configuration security,static analysis,ssrf,http response splitting,host header spoofing,version disclosure,redos,gixy,gixy next,gixy-ng,gixyng
|
|
15
|
+
Classifier: Environment :: Console
|
|
16
|
+
Classifier: Intended Audience :: System Administrators
|
|
17
|
+
Classifier: Intended Audience :: Developers
|
|
18
|
+
Classifier: Intended Audience :: Information Technology
|
|
19
|
+
Classifier: Topic :: Security
|
|
20
|
+
Classifier: Topic :: System :: Systems Administration
|
|
21
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
|
|
22
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
23
|
+
Classifier: Topic :: Software Development :: Testing
|
|
24
|
+
Classifier: Topic :: Utilities
|
|
25
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
26
|
+
Classifier: Programming Language :: Python
|
|
27
|
+
Classifier: Programming Language :: Python :: 3
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
29
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
30
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
31
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
32
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
33
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
34
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
37
|
+
Requires-Python: >=3.6
|
|
38
|
+
Description-Content-Type: text/markdown
|
|
39
|
+
License-File: LICENSE
|
|
40
|
+
Requires-Dist: crossplane>=0.5.8
|
|
41
|
+
Requires-Dist: cached-property>=1.2.0; python_version < "3.8"
|
|
42
|
+
Requires-Dist: argparse>=1.4.0; python_version < "3.2"
|
|
43
|
+
Requires-Dist: Jinja2>=2.8
|
|
44
|
+
Requires-Dist: ConfigArgParse>=0.11.0
|
|
45
|
+
Requires-Dist: tldextract==3.1.2; python_version >= "3.6" and python_version < "3.7"
|
|
46
|
+
Requires-Dist: tldextract==4.0.0; python_version >= "3.7" and python_version < "3.8"
|
|
47
|
+
Requires-Dist: tldextract<5.3.0,>=5.1.2; python_version >= "3.8" and python_version < "3.9"
|
|
48
|
+
Requires-Dist: tldextract>=5.3.0; python_version >= "3.9"
|
|
49
|
+
Provides-Extra: tests
|
|
50
|
+
Requires-Dist: pytest>=7.0.0; extra == "tests"
|
|
51
|
+
Requires-Dist: pytest-xdist; extra == "tests"
|
|
52
|
+
Provides-Extra: dev
|
|
53
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
54
|
+
Requires-Dist: pytest-xdist; extra == "dev"
|
|
55
|
+
Requires-Dist: coverage>=4.3; extra == "dev"
|
|
56
|
+
Requires-Dist: flake8>=3.2; extra == "dev"
|
|
57
|
+
Requires-Dist: tox>=2.7.0; extra == "dev"
|
|
58
|
+
Requires-Dist: setuptools; extra == "dev"
|
|
59
|
+
Requires-Dist: twine; extra == "dev"
|
|
60
|
+
Provides-Extra: redos
|
|
61
|
+
Requires-Dist: requests>=2.20.0; extra == "redos"
|
|
62
|
+
Dynamic: author
|
|
63
|
+
Dynamic: author-email
|
|
64
|
+
Dynamic: classifier
|
|
65
|
+
Dynamic: description
|
|
66
|
+
Dynamic: description-content-type
|
|
67
|
+
Dynamic: home-page
|
|
68
|
+
Dynamic: keywords
|
|
69
|
+
Dynamic: license
|
|
70
|
+
Dynamic: license-file
|
|
71
|
+
Dynamic: project-url
|
|
72
|
+
Dynamic: provides-extra
|
|
73
|
+
Dynamic: requires-dist
|
|
74
|
+
Dynamic: requires-python
|
|
75
|
+
Dynamic: summary
|
|
76
|
+
|
|
77
|
+
# Gixy-Next: NGINX Configuration Security Scanner for Security Audits
|
|
78
|
+
|
|
79
|
+
## Overview
|
|
80
|
+
|
|
81
|
+
<a href="https://gixy.io/"><img width="192" height="192" alt="Gixy-Next Mascot Logo" style="float: right;" align="right" src="https://gixy.io/imgs/gixy.jpg" /></a>
|
|
82
|
+
|
|
83
|
+
Gixy-Next is an open source NGINX configuration security scanner and hardening tool that performs static analysis of your nginx.conf to detect security misconfigurations, hardening gaps, and common performance pitfalls before they reach production. It is an actively maintained fork of Yandex's [Gixy](https://github.com/yandex/gixy).
|
|
84
|
+
|
|
85
|
+
### Quick start
|
|
86
|
+
|
|
87
|
+
Gixy-Next (the `gixy` CLI) is distributed on [PyPI](https://pypi.python.org/pypi/Gixy-Next). You can install it with pip or uv:
|
|
88
|
+
|
|
89
|
+
```shell-session
|
|
90
|
+
# pip
|
|
91
|
+
pip3 install gixy-next
|
|
92
|
+
|
|
93
|
+
# uv
|
|
94
|
+
uv pip install gixy-next
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
You can then run it:
|
|
98
|
+
|
|
99
|
+
```shell-session
|
|
100
|
+
# gixy defaults to reading /etc/nginx/nginx.conf
|
|
101
|
+
gixy
|
|
102
|
+
|
|
103
|
+
# But you can also specify a path to the configuration
|
|
104
|
+
gixy /opt/nginx.conf
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
You can also export your NGINX configuration to a single dump file:
|
|
108
|
+
|
|
109
|
+
```shell-session
|
|
110
|
+
# Dumps the full NGINX configuration into a single file (including all includes)
|
|
111
|
+
nginx -T > ./nginx-dump.conf
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
And then scan the dump file elsewhere (or via stdin):
|
|
115
|
+
|
|
116
|
+
```shell-session
|
|
117
|
+
# Equivalent to scanning the full rendered configuration output.
|
|
118
|
+
gixy ./nginx-dump.conf
|
|
119
|
+
|
|
120
|
+
# Equivalent to above
|
|
121
|
+
cat ./nginx-dump.conf | gixy -
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## What it can do
|
|
125
|
+
|
|
126
|
+
Gixy-Next can detect a wide range of NGINX security and performance misconfigurations across `nginx.conf` and included configuration files. The following plugins are supported:
|
|
127
|
+
|
|
128
|
+
* [[add_header_content_type] Setting Content-Type via add_header](https://gixy.io/plugins/add_header_content_type/)
|
|
129
|
+
* [[add_header_multiline] Multiline response headers](https://gixy.io/plugins/add_header_multiline/)
|
|
130
|
+
* [[add_header_redefinition] Redefining of response headers by "add_header" directive](https://gixy.io/plugins/add_header_redefinition/)
|
|
131
|
+
* [[alias_traversal] Path traversal via misconfigured alias](https://gixy.io/plugins/alias_traversal/)
|
|
132
|
+
* [[allow_without_deny] Allow specified without deny](https://gixy.io/plugins/allow_without_deny/)
|
|
133
|
+
* [[default_server_flag] Missing default_server flag](https://gixy.io/plugins/default_server_flag/)
|
|
134
|
+
* [[error_log_off] `error_log` set to `off`](https://gixy.io/plugins/error_log_off/)
|
|
135
|
+
* [[hash_without_default] Missing default in hash blocks](https://gixy.io/plugins/hash_without_default/)
|
|
136
|
+
* [[host_spoofing] Request's Host header forgery](https://gixy.io/plugins/host_spoofing/)
|
|
137
|
+
* [[http_splitting] HTTP Response Splitting](https://gixy.io/plugins/http_splitting/)
|
|
138
|
+
* [[if_is_evil] If is evil when used in location context](https://gixy.io/plugins/if_is_evil/)
|
|
139
|
+
* [[invalid_regex] Invalid regex capture groups](https://gixy.io/plugins/invalid_regex/)
|
|
140
|
+
* [[low_keepalive_requests] Low `keepalive_requests`](https://gixy.io/plugins/low_keepalive_requests/)
|
|
141
|
+
* [[origins] Problems with referer/origin header validation](https://gixy.io/plugins/origins/)
|
|
142
|
+
* [[proxy_pass_normalized] `proxy_pass` path normalization issues](https://gixy.io/plugins/proxy_pass_normalized/)
|
|
143
|
+
* [[regex_redos] Regular expression denial of service (ReDoS)](https://gixy.io/plugins/regex_redos/)
|
|
144
|
+
* [[resolver_external] Using external DNS nameservers](https://gixy.io/plugins/resolver_external/)
|
|
145
|
+
* [[return_bypasses_allow_deny] Return directive bypasses allow/deny restrictions](https://gixy.io/plugins/return_bypasses_allow_deny/)
|
|
146
|
+
* [[ssrf] Server Side Request Forgery](https://gixy.io/plugins/ssrf/)
|
|
147
|
+
* [[stale_dns_cache] Outdated/stale cached DNS records used in proxy_pass](https://gixy.io/plugins/stale_dns_cache/)
|
|
148
|
+
* [[try_files_is_evil_too] `try_files` directive is evil without open_file_cache](https://gixy.io/plugins/try_files_is_evil_too/)
|
|
149
|
+
* [[unanchored_regex] Unanchored regular expressions](https://gixy.io/plugins/unanchored_regex/)
|
|
150
|
+
* [[valid_referers] none in valid_referers](https://gixy.io/plugins/valid_referers/)
|
|
151
|
+
* [[version_disclosure] Using insecure values for server_tokens](https://gixy.io/plugins/version_disclosure/)
|
|
152
|
+
* [[worker_rlimit_nofile_vs_connections] `worker_rlimit_nofile` must be at least twice `worker_connections`](https://gixy.io/plugins/worker_rlimit_nofile_vs_connections/)
|
|
153
|
+
|
|
154
|
+
Something not detected? Please open an [issue](https://github.com/MegaManSec/Gixy-Next/issues) on GitHub with what's missing!
|
|
155
|
+
|
|
156
|
+
## Usage (flags)
|
|
157
|
+
|
|
158
|
+
`gixy` defaults to reading a system's NGINX configuration from `/etc/nginx/nginx.conf`. You can also specify the location by passing it to `gixy`:
|
|
159
|
+
|
|
160
|
+
```shell-session
|
|
161
|
+
# Analyze the configuration in /opt/nginx.conf
|
|
162
|
+
gixy /opt/nginx.conf
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
You can run a focused subset of checks with `--tests`:
|
|
166
|
+
|
|
167
|
+
```shell-session
|
|
168
|
+
# Only run these checks
|
|
169
|
+
gixy --tests http_splitting,ssrf,version_disclosure
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Or skip a few noisy checks with `--skips`:
|
|
173
|
+
|
|
174
|
+
```shell-session
|
|
175
|
+
# Run everything except these checks
|
|
176
|
+
gixy --skips low_keepalive_requests,worker_rlimit_nofile_vs_connections
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
To only report issues of a certain severity or higher, use the compounding `-l` flag:
|
|
180
|
+
|
|
181
|
+
```shell-session
|
|
182
|
+
# -l for LOW severity issues and high, -ll for MEDIUM and higher, and -lll for only HIGH severity issues
|
|
183
|
+
gixy -ll
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
By default, the output of `gixy` is ANSI-colored; best viewed in an ANSI-compatible terminal. You can use the `--format` (`-f`) flag with the `text` value to get an uncolored output:
|
|
187
|
+
|
|
188
|
+
```shell-session
|
|
189
|
+
$ gixy -f text
|
|
190
|
+
|
|
191
|
+
==================== Results ===================
|
|
192
|
+
|
|
193
|
+
Problem: [http_splitting] Possible HTTP-Splitting vulnerability.
|
|
194
|
+
Description: Using variables that can contain "\n" may lead to http injection.
|
|
195
|
+
Additional info: https://gixy.io/plugins/http_splitting/
|
|
196
|
+
Reason: At least variable "$action" can contain "\n"
|
|
197
|
+
Pseudo config:
|
|
198
|
+
include /etc/nginx/sites/default.conf;
|
|
199
|
+
|
|
200
|
+
server {
|
|
201
|
+
|
|
202
|
+
location ~ /v1/((?<action>[^.]*)\.json)?$ {
|
|
203
|
+
add_header X-Action $action;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
==================== Summary ===================
|
|
209
|
+
Total issues:
|
|
210
|
+
Unspecified: 0
|
|
211
|
+
Low: 0
|
|
212
|
+
Medium: 0
|
|
213
|
+
High: 1
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
You can also use `-f json` to get a reproducible, machine-readable JSON output:
|
|
217
|
+
|
|
218
|
+
```shell-session
|
|
219
|
+
$ gixy -f json
|
|
220
|
+
[{"config":"\nserver {\n\n\tlocation ~ /v1/((?<action>[^.]*)\\.json)?$ {\n\t\tadd_header X-Action $action;\n\t}\n}","description":"Using variables that can contain \"\\n\" or \"\\r\" may lead to http injection.","file":"/etc/nginx/nginx.conf","line":4,"path":"/etc/nginx/nginx.conf","plugin":"http_splitting","reason":"At least variable \"$action\" can contain \"\\n\"","reference":"https://gixy.io/plugins/http_splitting/","severity":"HIGH","summary":"Possible HTTP-Splitting vulnerability."}]
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
More flags for usage can be found by passing `--help` to `gixy`. You can also find more information in the [Usage Guide](https://gixy.io/usage/).
|
|
224
|
+
|
|
225
|
+
## Configuration and plugin options
|
|
226
|
+
|
|
227
|
+
Some plugins expose options which you can set via CLI flags or a configuration file. You can read more about those in the [Configuration guide](https://gixy.io/configuration/).
|
|
228
|
+
|
|
229
|
+
## Gixy-Next for NGINX security and compliance
|
|
230
|
+
|
|
231
|
+
Unlike running `nginx -t` which only checks syntax, Gixy-Next actually analyzes your configuration and detects unhardened instances and vulnerabilities.
|
|
232
|
+
|
|
233
|
+
With Gixy-Next, you can perform an automated NGINX configuration security review that can run locally or in CI/CD on every change, whether that be for auditing purposes, compliance, or just general testing, helping produce actionable findings that help prevent unstable/slow NGINX servers, and reduce risk from unsafe directives and insecure defaults.
|
|
234
|
+
|
|
235
|
+
## Contributing
|
|
236
|
+
|
|
237
|
+
Contributions to Gixy-Next are always welcome! You can help us in different ways, such as:
|
|
238
|
+
|
|
239
|
+
- Reporting bugs.
|
|
240
|
+
- Suggesting new plugins for detection.
|
|
241
|
+
- Improving documentation.
|
|
242
|
+
- Fixing, refactoring, improving, and writing new code.
|
|
243
|
+
|
|
244
|
+
Before submitting any changes in pull requests, please read the contribution guideline document, [Contributing to Gixy-Next](https://gixy.io/contributing/).
|
|
245
|
+
|
|
246
|
+
The official homepage of Gixy-Next is [https://gixy.io/](https://gixy.io/). Any changes to documentation in Gixy-Next will automatically be reflected on that website.
|
|
247
|
+
|
|
248
|
+
The source code can be found at [https://github.com/MegaManSec/Gixy-Next](https://github.com/MegaManSec/Gixy-Next).
|
|
249
|
+
|
|
250
|
+
## What is Gixy? (Background)
|
|
251
|
+
|
|
252
|
+
_Gixy_ is an NGINX configuration analyzer that was [originally](https://github.com/yandex/gixy) developed by Yandex's Andrew Krasichkov. It was first released in 2017, and has since become unmaintained, and does not support modern versions of Python3, contains numerous bugs, and is limited in its functionality and ability to detect vulnerable NGINX configurations.
|
|
253
|
+
|
|
254
|
+
Gixy-Next, therefore, is a fork, that adds new checks, performance improvements, hardening suggestions, and support for modern Python and NGINX versions.
|
|
255
|
+
|
|
256
|
+
### Why not `gixy-ng`?
|
|
257
|
+
|
|
258
|
+
Gixy-Next is actually a fork of `gixy-ng`, which itself was a fork of the original `gixy`. Gixy-Next was created after the maintainer of `gixy-ng` started producing large amounts of AI-assisted changes and autogenerated code that was both unreviewably large as well as broken.
|
|
259
|
+
|
|
260
|
+
After some time, the maintainer of `gixy-ng` began to commit AI-generated changes to the codebase which introduced obvious regressions, broke critical behavior of the tool (which anybody using the tool would have picked up), added random AI-tooling artefacts, and introduced code which simply did not do what it was supposed to do. Most importantly, the maintainer also **added marketing for their business to all documentation, all output, and all source code** of `gixy-ng`.
|
|
261
|
+
|
|
262
|
+
In other words, the `gixy-ng` maintainer took the original `gixy`, asked AI to make changes, introduced a bunch of bugs (and other AI slop), and then added advertising to the code. They also accepted contributions in the form of merge requests, but stripped the author's information (see [this](https://joshua.hu/gixy-ng-new-version-gixy-updated-checks#quality-degradation) post).
|
|
263
|
+
|
|
264
|
+
Gixy-Next focuses on restoring quality, and has been battle-tests on NGINX configurations which are nearly 100,000-lines long. It fixes bugs and mis-detections introduced by changes introduced in `gixy-ng`, removes AI tool artifacts/junk, and tries to keep the codebase reviewable and maintainable. This fork is for those interested in clean code and long-term maintainability.
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
MANIFEST.in
|
|
3
|
+
README.md
|
|
4
|
+
setup.py
|
|
5
|
+
Gixy_Next.egg-info/PKG-INFO
|
|
6
|
+
Gixy_Next.egg-info/SOURCES.txt
|
|
7
|
+
Gixy_Next.egg-info/dependency_links.txt
|
|
8
|
+
Gixy_Next.egg-info/entry_points.txt
|
|
9
|
+
Gixy_Next.egg-info/requires.txt
|
|
10
|
+
Gixy_Next.egg-info/top_level.txt
|
|
11
|
+
gixy/__init__.py
|
|
12
|
+
gixy/__main__.py
|
|
13
|
+
gixy/cli/__init__.py
|
|
14
|
+
gixy/cli/__main__.py
|
|
15
|
+
gixy/cli/argparser.py
|
|
16
|
+
gixy/cli/main.py
|
|
17
|
+
gixy/core/__init__.py
|
|
18
|
+
gixy/core/builtin_variables.py
|
|
19
|
+
gixy/core/config.py
|
|
20
|
+
gixy/core/context.py
|
|
21
|
+
gixy/core/exceptions.py
|
|
22
|
+
gixy/core/issue.py
|
|
23
|
+
gixy/core/manager.py
|
|
24
|
+
gixy/core/plugins_manager.py
|
|
25
|
+
gixy/core/regexp.py
|
|
26
|
+
gixy/core/severity.py
|
|
27
|
+
gixy/core/utils.py
|
|
28
|
+
gixy/core/variable.py
|
|
29
|
+
gixy/core/sre_parse/__init__.py
|
|
30
|
+
gixy/core/sre_parse/sre_constants.py
|
|
31
|
+
gixy/core/sre_parse/sre_parse.py
|
|
32
|
+
gixy/directives/__init__.py
|
|
33
|
+
gixy/directives/block.py
|
|
34
|
+
gixy/directives/directive.py
|
|
35
|
+
gixy/formatters/__init__.py
|
|
36
|
+
gixy/formatters/_jinja.py
|
|
37
|
+
gixy/formatters/base.py
|
|
38
|
+
gixy/formatters/console.py
|
|
39
|
+
gixy/formatters/json.py
|
|
40
|
+
gixy/formatters/text.py
|
|
41
|
+
gixy/formatters/templates/__init__.py
|
|
42
|
+
gixy/formatters/templates/console.j2
|
|
43
|
+
gixy/formatters/templates/text.j2
|
|
44
|
+
gixy/parser/__init__.py
|
|
45
|
+
gixy/parser/nginx_parser.py
|
|
46
|
+
gixy/parser/raw_parser.py
|
|
47
|
+
gixy/plugins/__init__.py
|
|
48
|
+
gixy/plugins/add_header_content_type.py
|
|
49
|
+
gixy/plugins/add_header_multiline.py
|
|
50
|
+
gixy/plugins/add_header_redefinition.py
|
|
51
|
+
gixy/plugins/alias_traversal.py
|
|
52
|
+
gixy/plugins/allow_without_deny.py
|
|
53
|
+
gixy/plugins/default_server_flag.py
|
|
54
|
+
gixy/plugins/error_log_off.py
|
|
55
|
+
gixy/plugins/hash_without_default.py
|
|
56
|
+
gixy/plugins/host_spoofing.py
|
|
57
|
+
gixy/plugins/http_splitting.py
|
|
58
|
+
gixy/plugins/if_is_evil.py
|
|
59
|
+
gixy/plugins/invalid_regex.py
|
|
60
|
+
gixy/plugins/low_keepalive_requests.py
|
|
61
|
+
gixy/plugins/origins.py
|
|
62
|
+
gixy/plugins/plugin.py
|
|
63
|
+
gixy/plugins/proxy_pass_normalized.py
|
|
64
|
+
gixy/plugins/regex_redos.py
|
|
65
|
+
gixy/plugins/resolver_external.py
|
|
66
|
+
gixy/plugins/return_bypasses_allow_deny.py
|
|
67
|
+
gixy/plugins/ssrf.py
|
|
68
|
+
gixy/plugins/stale_dns_cache.py
|
|
69
|
+
gixy/plugins/try_files_is_evil_too.py
|
|
70
|
+
gixy/plugins/unanchored_regex.py
|
|
71
|
+
gixy/plugins/valid_referers.py
|
|
72
|
+
gixy/plugins/version_disclosure.py
|
|
73
|
+
gixy/plugins/worker_rlimit_nofile_vs_connections.py
|
|
74
|
+
gixy/utils/__init__.py
|
|
75
|
+
gixy/utils/text.py
|
|
76
|
+
tests/__init__.py
|
|
77
|
+
tests/utils.py
|
|
78
|
+
tests/cli/__init__.py
|
|
79
|
+
tests/core/__init__.py
|
|
80
|
+
tests/core/test_context.py
|
|
81
|
+
tests/core/test_regexp.py
|
|
82
|
+
tests/core/test_variable.py
|
|
83
|
+
tests/directives/__init__.py
|
|
84
|
+
tests/directives/test_block.py
|
|
85
|
+
tests/directives/test_directive.py
|
|
86
|
+
tests/parser/__init__.py
|
|
87
|
+
tests/parser/test_nginx_parser.py
|
|
88
|
+
tests/parser/test_raw_parser.py
|
|
89
|
+
tests/parser/test_raw_parser_minimal.py
|
|
90
|
+
tests/parser/test_sre_parse.py
|
|
91
|
+
tests/plugins/__init__.py
|
|
92
|
+
tests/plugins/test_simply.py
|
|
93
|
+
tests/plugins/simply/add_header_content_type/add_header_content_type.conf
|
|
94
|
+
tests/plugins/simply/add_header_content_type/add_header_content_type_fp.conf
|
|
95
|
+
tests/plugins/simply/add_header_content_type/fastcgi_hide_header_fp.conf
|
|
96
|
+
tests/plugins/simply/add_header_content_type/proxy_hide_header_fp.conf
|
|
97
|
+
tests/plugins/simply/add_header_content_type/proxy_hide_header_nested_fp.conf
|
|
98
|
+
tests/plugins/simply/add_header_content_type/uwsgi_hide_header_fp.conf
|
|
99
|
+
tests/plugins/simply/add_header_multiline/add_header.conf
|
|
100
|
+
tests/plugins/simply/add_header_multiline/add_header_fp.conf
|
|
101
|
+
tests/plugins/simply/add_header_multiline/add_header_multiline.conf
|
|
102
|
+
tests/plugins/simply/add_header_multiline/config.json
|
|
103
|
+
tests/plugins/simply/add_header_multiline/more_set_headers.conf
|
|
104
|
+
tests/plugins/simply/add_header_multiline/more_set_headers_fp.conf
|
|
105
|
+
tests/plugins/simply/add_header_multiline/more_set_headers_multiple.conf
|
|
106
|
+
tests/plugins/simply/add_header_multiline/more_set_headers_replace.conf
|
|
107
|
+
tests/plugins/simply/add_header_multiline/more_set_headers_replace_fp.conf
|
|
108
|
+
tests/plugins/simply/add_header_multiline/more_set_headers_status_fp.conf
|
|
109
|
+
tests/plugins/simply/add_header_multiline/more_set_headers_type_fp.conf
|
|
110
|
+
tests/plugins/simply/add_header_redefinition/basic_drop.conf
|
|
111
|
+
tests/plugins/simply/add_header_redefinition/basic_merge_fp.conf
|
|
112
|
+
tests/plugins/simply/add_header_redefinition/config.json
|
|
113
|
+
tests/plugins/simply/add_header_redefinition/duplicate_fp.conf
|
|
114
|
+
tests/plugins/simply/add_header_redefinition/explicit_off_fp.conf
|
|
115
|
+
tests/plugins/simply/add_header_redefinition/grandparent_only_drop.conf
|
|
116
|
+
tests/plugins/simply/add_header_redefinition/header_inherit_on.conf
|
|
117
|
+
tests/plugins/simply/add_header_redefinition/header_inherit_on_fp.conf
|
|
118
|
+
tests/plugins/simply/add_header_redefinition/http_merge_inherited_fp.conf
|
|
119
|
+
tests/plugins/simply/add_header_redefinition/http_merge_location_off_fp.conf
|
|
120
|
+
tests/plugins/simply/add_header_redefinition/if_block_merge.conf
|
|
121
|
+
tests/plugins/simply/add_header_redefinition/if_replaces.conf
|
|
122
|
+
tests/plugins/simply/add_header_redefinition/location_only_fp.conf
|
|
123
|
+
tests/plugins/simply/add_header_redefinition/location_replaces.conf
|
|
124
|
+
tests/plugins/simply/add_header_redefinition/multiple_locations_all_safe_fp.conf
|
|
125
|
+
tests/plugins/simply/add_header_redefinition/multiple_locations_mixed.conf
|
|
126
|
+
tests/plugins/simply/add_header_redefinition/nested_block.conf
|
|
127
|
+
tests/plugins/simply/add_header_redefinition/nested_location_inherits_merge_fp.conf
|
|
128
|
+
tests/plugins/simply/add_header_redefinition/nested_location_override_on.conf
|
|
129
|
+
tests/plugins/simply/add_header_redefinition/non_block_fp.conf
|
|
130
|
+
tests/plugins/simply/add_header_redefinition/not_secure_dropped.conf
|
|
131
|
+
tests/plugins/simply/add_header_redefinition/not_secure_outer.conf
|
|
132
|
+
tests/plugins/simply/add_header_redefinition/server_merge_inherited_fp.conf
|
|
133
|
+
tests/plugins/simply/add_header_redefinition/step_replaces.conf
|
|
134
|
+
tests/plugins/simply/alias_traversal/config.json
|
|
135
|
+
tests/plugins/simply/alias_traversal/nested.conf
|
|
136
|
+
tests/plugins/simply/alias_traversal/nested_fp.conf
|
|
137
|
+
tests/plugins/simply/alias_traversal/not_slashed_alias.conf
|
|
138
|
+
tests/plugins/simply/alias_traversal/not_slashed_alias_fp.conf
|
|
139
|
+
tests/plugins/simply/alias_traversal/regex.conf
|
|
140
|
+
tests/plugins/simply/alias_traversal/regex_2.conf
|
|
141
|
+
tests/plugins/simply/alias_traversal/regex_2_fp.conf
|
|
142
|
+
tests/plugins/simply/alias_traversal/regex_3.conf
|
|
143
|
+
tests/plugins/simply/alias_traversal/regex_3_fp.conf
|
|
144
|
+
tests/plugins/simply/alias_traversal/regex_4.conf
|
|
145
|
+
tests/plugins/simply/alias_traversal/regex_4_fp.conf
|
|
146
|
+
tests/plugins/simply/alias_traversal/regex_5.conf
|
|
147
|
+
tests/plugins/simply/alias_traversal/regex_6.conf
|
|
148
|
+
tests/plugins/simply/alias_traversal/regex_fp.conf
|
|
149
|
+
tests/plugins/simply/alias_traversal/simple.conf
|
|
150
|
+
tests/plugins/simply/alias_traversal/simple_fp.conf
|
|
151
|
+
tests/plugins/simply/alias_traversal/slashed_alias.conf
|
|
152
|
+
tests/plugins/simply/alias_traversal/slashed_alias_fp.conf
|
|
153
|
+
tests/plugins/simply/allow_without_deny/allow_without_deny.conf
|
|
154
|
+
tests/plugins/simply/allow_without_deny/allow_without_deny_dump.conf
|
|
155
|
+
tests/plugins/simply/allow_without_deny/allow_without_deny_dump_fp.conf
|
|
156
|
+
tests/plugins/simply/allow_without_deny/allow_without_deny_fp.conf
|
|
157
|
+
tests/plugins/simply/allow_without_deny/deny.inc
|
|
158
|
+
tests/plugins/simply/allow_without_deny/include_and_deny_fp.conf
|
|
159
|
+
tests/plugins/simply/default_server_flag/ambiguous_with_default_fp.conf
|
|
160
|
+
tests/plugins/simply/default_server_flag/ambiguous_with_upstream_server.conf
|
|
161
|
+
tests/plugins/simply/default_server_flag/ambiguous_without_default.conf
|
|
162
|
+
tests/plugins/simply/default_server_flag/config.json
|
|
163
|
+
tests/plugins/simply/error_log_off/error_log_off.conf
|
|
164
|
+
tests/plugins/simply/error_log_off/error_log_off_fp.conf
|
|
165
|
+
tests/plugins/simply/hash_without_default/geo_no_default.conf
|
|
166
|
+
tests/plugins/simply/hash_without_default/geo_no_default_fp.conf
|
|
167
|
+
tests/plugins/simply/hash_without_default/map_no_default.conf
|
|
168
|
+
tests/plugins/simply/hash_without_default/map_no_default_fp.conf
|
|
169
|
+
tests/plugins/simply/hash_without_default/map_single_entry_no_default_fp.conf
|
|
170
|
+
tests/plugins/simply/host_spoofing/config.json
|
|
171
|
+
tests/plugins/simply/host_spoofing/http_fp.conf
|
|
172
|
+
tests/plugins/simply/host_spoofing/http_host.conf
|
|
173
|
+
tests/plugins/simply/host_spoofing/http_host_diff_case.conf
|
|
174
|
+
tests/plugins/simply/host_spoofing/some_arg.conf
|
|
175
|
+
tests/plugins/simply/http_splitting/add_header_uri.conf
|
|
176
|
+
tests/plugins/simply/http_splitting/config.json
|
|
177
|
+
tests/plugins/simply/http_splitting/dont_report_not_resolved_var_fp.conf
|
|
178
|
+
tests/plugins/simply/http_splitting/if_block.conf
|
|
179
|
+
tests/plugins/simply/http_splitting/if_block_fp.conf
|
|
180
|
+
tests/plugins/simply/http_splitting/mapped_value.conf
|
|
181
|
+
tests/plugins/simply/http_splitting/mapped_value_2.conf
|
|
182
|
+
tests/plugins/simply/http_splitting/mapped_value_3.conf
|
|
183
|
+
tests/plugins/simply/http_splitting/mapped_value_3_fp.conf
|
|
184
|
+
tests/plugins/simply/http_splitting/mapped_value_4.conf
|
|
185
|
+
tests/plugins/simply/http_splitting/mapped_value_4_fp.conf
|
|
186
|
+
tests/plugins/simply/http_splitting/mapped_value_fp.conf
|
|
187
|
+
tests/plugins/simply/http_splitting/mapped_value_with_set.conf
|
|
188
|
+
tests/plugins/simply/http_splitting/proxy_from_location_var.conf
|
|
189
|
+
tests/plugins/simply/http_splitting/proxy_from_location_var_var.conf
|
|
190
|
+
tests/plugins/simply/http_splitting/proxy_from_location_var_var_fp.conf
|
|
191
|
+
tests/plugins/simply/http_splitting/proxy_from_location_var_var_var.conf
|
|
192
|
+
tests/plugins/simply/http_splitting/proxy_pass_cr_fp.conf
|
|
193
|
+
tests/plugins/simply/http_splitting/proxy_pass_ducument_uri.conf
|
|
194
|
+
tests/plugins/simply/http_splitting/proxy_pass_lf.conf
|
|
195
|
+
tests/plugins/simply/http_splitting/proxy_set_header_ducument_uri.conf
|
|
196
|
+
tests/plugins/simply/http_splitting/return_403_fp.conf
|
|
197
|
+
tests/plugins/simply/http_splitting/return_request_uri_fp.conf
|
|
198
|
+
tests/plugins/simply/http_splitting/rewrite_extract_fp.conf
|
|
199
|
+
tests/plugins/simply/http_splitting/rewrite_uri.conf
|
|
200
|
+
tests/plugins/simply/http_splitting/rewrite_uri_after_var.conf
|
|
201
|
+
tests/plugins/simply/if_is_evil/config.json
|
|
202
|
+
tests/plugins/simply/if_is_evil/if_is_evil_add_header.conf
|
|
203
|
+
tests/plugins/simply/if_is_evil/if_is_evil_break.conf
|
|
204
|
+
tests/plugins/simply/if_is_evil/if_is_evil_fp.conf
|
|
205
|
+
tests/plugins/simply/if_is_evil/if_is_evil_last_fp.conf
|
|
206
|
+
tests/plugins/simply/if_is_evil/if_is_evil_permanent_fp.conf
|
|
207
|
+
tests/plugins/simply/if_is_evil/if_is_evil_redirect_fp.conf
|
|
208
|
+
tests/plugins/simply/invalid_regex/if_no_groups.conf
|
|
209
|
+
tests/plugins/simply/invalid_regex/if_valid_group_fp.conf
|
|
210
|
+
tests/plugins/simply/invalid_regex/multiple_groups_fp.conf
|
|
211
|
+
tests/plugins/simply/invalid_regex/no_groups.conf
|
|
212
|
+
tests/plugins/simply/invalid_regex/no_refs_fp.conf
|
|
213
|
+
tests/plugins/simply/invalid_regex/valid_group_fp.conf
|
|
214
|
+
tests/plugins/simply/invalid_regex/wrong_group.conf
|
|
215
|
+
tests/plugins/simply/low_keepalive_requests/low_keepalive_requests.conf
|
|
216
|
+
tests/plugins/simply/low_keepalive_requests/low_keepalive_requests_fp.conf
|
|
217
|
+
tests/plugins/simply/origins/config.json
|
|
218
|
+
tests/plugins/simply/origins/map_origin_allowlist.conf
|
|
219
|
+
tests/plugins/simply/origins/map_origin_allowlist_fp.conf
|
|
220
|
+
tests/plugins/simply/origins/metrika.conf
|
|
221
|
+
tests/plugins/simply/origins/more_origins_1.conf
|
|
222
|
+
tests/plugins/simply/origins/more_origins_10.conf
|
|
223
|
+
tests/plugins/simply/origins/more_origins_11_fp.conf
|
|
224
|
+
tests/plugins/simply/origins/more_origins_12.conf
|
|
225
|
+
tests/plugins/simply/origins/more_origins_13.conf
|
|
226
|
+
tests/plugins/simply/origins/more_origins_14.conf
|
|
227
|
+
tests/plugins/simply/origins/more_origins_15.conf
|
|
228
|
+
tests/plugins/simply/origins/more_origins_16.conf
|
|
229
|
+
tests/plugins/simply/origins/more_origins_2.conf
|
|
230
|
+
tests/plugins/simply/origins/more_origins_3.conf
|
|
231
|
+
tests/plugins/simply/origins/more_origins_4.conf
|
|
232
|
+
tests/plugins/simply/origins/more_origins_5.conf
|
|
233
|
+
tests/plugins/simply/origins/more_origins_6.conf
|
|
234
|
+
tests/plugins/simply/origins/more_origins_7.conf
|
|
235
|
+
tests/plugins/simply/origins/more_origins_8.conf
|
|
236
|
+
tests/plugins/simply/origins/more_origins_9.conf
|
|
237
|
+
tests/plugins/simply/origins/origin_fp.conf
|
|
238
|
+
tests/plugins/simply/origins/origin_https.conf
|
|
239
|
+
tests/plugins/simply/origins/origin_https_fp.conf
|
|
240
|
+
tests/plugins/simply/origins/origin_path.conf
|
|
241
|
+
tests/plugins/simply/origins/origin_too_permissive.conf
|
|
242
|
+
tests/plugins/simply/origins/origin_w_slash.conf
|
|
243
|
+
tests/plugins/simply/origins/origin_w_slash_and_hash.conf
|
|
244
|
+
tests/plugins/simply/origins/origin_wo_slash.conf
|
|
245
|
+
tests/plugins/simply/origins/referer.conf
|
|
246
|
+
tests/plugins/simply/origins/referer_fp.conf
|
|
247
|
+
tests/plugins/simply/origins/referer_subdomain.conf
|
|
248
|
+
tests/plugins/simply/origins/referer_subdomain_fp.conf
|
|
249
|
+
tests/plugins/simply/origins/referrer_double_r.conf
|
|
250
|
+
tests/plugins/simply/origins/safe_origin.conf
|
|
251
|
+
tests/plugins/simply/origins/safe_origin_2_fp.conf
|
|
252
|
+
tests/plugins/simply/origins/structure_dot.conf
|
|
253
|
+
tests/plugins/simply/origins/structure_fp.conf
|
|
254
|
+
tests/plugins/simply/origins/structure_prefix.conf
|
|
255
|
+
tests/plugins/simply/origins/structure_suffix.conf
|
|
256
|
+
tests/plugins/simply/origins/unsafe_origin.conf
|
|
257
|
+
tests/plugins/simply/origins/unsafe_origin_1.conf
|
|
258
|
+
tests/plugins/simply/origins/unsafe_origin_2.conf
|
|
259
|
+
tests/plugins/simply/origins/webvisor.conf
|
|
260
|
+
tests/plugins/simply/proxy_pass_normalized/exact_location_with_uri_fp.conf
|
|
261
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable.conf
|
|
262
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable_fp.conf
|
|
263
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if.conf
|
|
264
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if_argflag.conf
|
|
265
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if_fp.conf
|
|
266
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable_in_limit_except.conf
|
|
267
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable_in_limit_except_fp.conf
|
|
268
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable_nopath.conf
|
|
269
|
+
tests/plugins/simply/proxy_pass_normalized/missing_variable_nopath_fp.conf
|
|
270
|
+
tests/plugins/simply/proxy_pass_normalized/proxy_pass_path.conf
|
|
271
|
+
tests/plugins/simply/proxy_pass_normalized/proxy_pass_path_fp.conf
|
|
272
|
+
tests/plugins/simply/proxy_pass_normalized/proxy_pass_socket_fp.conf
|
|
273
|
+
tests/plugins/simply/proxy_pass_normalized/proxy_pass_socket_with_path.conf
|
|
274
|
+
tests/plugins/simply/proxy_pass_normalized/proxy_pass_var_fp.conf
|
|
275
|
+
tests/plugins/simply/proxy_pass_normalized/rewrite_with_return.conf
|
|
276
|
+
tests/plugins/simply/proxy_pass_normalized/rewrite_with_return_fp.conf
|
|
277
|
+
tests/plugins/simply/proxy_pass_normalized/stream_fp.conf
|
|
278
|
+
tests/plugins/simply/proxy_pass_normalized/variable.conf
|
|
279
|
+
tests/plugins/simply/proxy_pass_normalized/variable_fp.conf
|
|
280
|
+
tests/plugins/simply/resolver_external/resolver_external.conf
|
|
281
|
+
tests/plugins/simply/resolver_external/resolver_external_fp.conf
|
|
282
|
+
tests/plugins/simply/resolver_external/resolver_link_local_fp.conf
|
|
283
|
+
tests/plugins/simply/resolver_external/resolver_local_fp.conf
|
|
284
|
+
tests/plugins/simply/resolver_external/resolver_local_internal_fp.conf
|
|
285
|
+
tests/plugins/simply/resolver_external/resolver_local_ipv6_fp.conf
|
|
286
|
+
tests/plugins/simply/resolver_external/resolver_local_ipv6_with_port_fp.conf
|
|
287
|
+
tests/plugins/simply/resolver_external/resolver_localhost_fp.conf
|
|
288
|
+
tests/plugins/simply/resolver_external/resolver_localhost_withport_fp.conf
|
|
289
|
+
tests/plugins/simply/resolver_external/resolver_more_local_ipv6_fp.conf
|
|
290
|
+
tests/plugins/simply/resolver_external/resolver_unregisterable_domain_fp.conf
|
|
291
|
+
tests/plugins/simply/resolver_external/resolver_unregisterable_domain_withport_fp.conf
|
|
292
|
+
tests/plugins/simply/return_bypasses_allow_deny/same_level.conf
|
|
293
|
+
tests/plugins/simply/return_bypasses_allow_deny/same_level_fp.conf
|
|
294
|
+
tests/plugins/simply/return_bypasses_allow_deny/same_next_level.conf
|
|
295
|
+
tests/plugins/simply/return_bypasses_allow_deny/same_next_level_fp.conf
|
|
296
|
+
tests/plugins/simply/ssrf/config.json
|
|
297
|
+
tests/plugins/simply/ssrf/have_internal_fp.conf
|
|
298
|
+
tests/plugins/simply/ssrf/host_w_const_start.conf
|
|
299
|
+
tests/plugins/simply/ssrf/host_w_const_start_arg.conf
|
|
300
|
+
tests/plugins/simply/ssrf/mapped_value.conf
|
|
301
|
+
tests/plugins/simply/ssrf/not_host_var_fp.conf
|
|
302
|
+
tests/plugins/simply/ssrf/request_uri_fp.conf
|
|
303
|
+
tests/plugins/simply/ssrf/request_uri_var_fp.conf
|
|
304
|
+
tests/plugins/simply/ssrf/scheme_var.conf
|
|
305
|
+
tests/plugins/simply/ssrf/single_var.conf
|
|
306
|
+
tests/plugins/simply/ssrf/used_arg.conf
|
|
307
|
+
tests/plugins/simply/ssrf/vars_from_loc.conf
|
|
308
|
+
tests/plugins/simply/ssrf/with_const_scheme.conf
|
|
309
|
+
tests/plugins/simply/stale_dns_cache/block_ip_literal_fp.conf
|
|
310
|
+
tests/plugins/simply/stale_dns_cache/block_localhost_fp.conf
|
|
311
|
+
tests/plugins/simply/stale_dns_cache/block_unix_socket_fp.conf
|
|
312
|
+
tests/plugins/simply/stale_dns_cache/block_upstream_host_with_resolve_fp.conf
|
|
313
|
+
tests/plugins/simply/stale_dns_cache/block_upstream_ip_servers_fp.conf
|
|
314
|
+
tests/plugins/simply/stale_dns_cache/block_variable_in_path_no_resolver.conf
|
|
315
|
+
tests/plugins/simply/stale_dns_cache/block_variable_points_to_upstream_with_resolve_fp.conf
|
|
316
|
+
tests/plugins/simply/stale_dns_cache/block_with_include_with_if.conf
|
|
317
|
+
tests/plugins/simply/stale_dns_cache/block_with_include_without_if_fp.conf
|
|
318
|
+
tests/plugins/simply/stale_dns_cache/proxy_pass_ip_literal_fp.conf
|
|
319
|
+
tests/plugins/simply/stale_dns_cache/proxy_pass_unix_socket_fp.conf
|
|
320
|
+
tests/plugins/simply/stale_dns_cache/tp_aws_elb_host.conf
|
|
321
|
+
tests/plugins/simply/stale_dns_cache/tp_cloudflare_workers_host.conf
|
|
322
|
+
tests/plugins/simply/stale_dns_cache/tp_heroku_host.conf
|
|
323
|
+
tests/plugins/simply/stale_dns_cache/tp_proxy_pass_upstream_no_resolve.conf
|
|
324
|
+
tests/plugins/simply/stale_dns_cache/tp_punycode_tld.conf
|
|
325
|
+
tests/plugins/simply/stale_dns_cache/tp_punycode_tld_2.conf
|
|
326
|
+
tests/plugins/simply/stale_dns_cache/tp_static_public_domain.conf
|
|
327
|
+
tests/plugins/simply/stale_dns_cache/tp_unknown_tld.conf
|
|
328
|
+
tests/plugins/simply/stale_dns_cache/tp_unknown_tld_2.conf
|
|
329
|
+
tests/plugins/simply/stale_dns_cache/tp_upstream_host_no_resolve.conf
|
|
330
|
+
tests/plugins/simply/stale_dns_cache/tp_variable_points_to_upstream_no_resolve.conf
|
|
331
|
+
tests/plugins/simply/stale_dns_cache/tp_variable_proxy_pass_missing_resolver.conf
|
|
332
|
+
tests/plugins/simply/stale_dns_cache/upstream_host_with_resolve_fp.conf
|
|
333
|
+
tests/plugins/simply/stale_dns_cache/upstream_ip_servers_fp.conf
|
|
334
|
+
tests/plugins/simply/stale_dns_cache/variable_in_proxy_pass_with_resolver_fp.conf
|
|
335
|
+
tests/plugins/simply/stale_dns_cache/variable_proxy_pass_with_resolver_fp.conf
|
|
336
|
+
tests/plugins/simply/try_files_is_evil_too/config.json
|
|
337
|
+
tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too.conf
|
|
338
|
+
tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too_cache_none.conf
|
|
339
|
+
tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too_fp.conf
|
|
340
|
+
tests/plugins/simply/unanchored_regex/unanchored_regex.conf
|
|
341
|
+
tests/plugins/simply/unanchored_regex/unanchored_regex_fp.conf
|
|
342
|
+
tests/plugins/simply/valid_referers/config.json
|
|
343
|
+
tests/plugins/simply/valid_referers/none_first.conf
|
|
344
|
+
tests/plugins/simply/valid_referers/none_last.conf
|
|
345
|
+
tests/plugins/simply/valid_referers/none_middle.conf
|
|
346
|
+
tests/plugins/simply/valid_referers/wo_none_fp.conf
|
|
347
|
+
tests/plugins/simply/version_disclosure/server_tokens_off_fp.conf
|
|
348
|
+
tests/plugins/simply/version_disclosure/server_tokens_on.conf
|
|
349
|
+
tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_fp.conf
|
|
350
|
+
tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_missing.conf
|
|
351
|
+
tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_too_low.conf
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
crossplane>=0.5.8
|
|
2
|
+
Jinja2>=2.8
|
|
3
|
+
ConfigArgParse>=0.11.0
|
|
4
|
+
|
|
5
|
+
[:python_version < "3.2"]
|
|
6
|
+
argparse>=1.4.0
|
|
7
|
+
|
|
8
|
+
[:python_version < "3.8"]
|
|
9
|
+
cached-property>=1.2.0
|
|
10
|
+
|
|
11
|
+
[:python_version >= "3.6" and python_version < "3.7"]
|
|
12
|
+
tldextract==3.1.2
|
|
13
|
+
|
|
14
|
+
[:python_version >= "3.7" and python_version < "3.8"]
|
|
15
|
+
tldextract==4.0.0
|
|
16
|
+
|
|
17
|
+
[:python_version >= "3.8" and python_version < "3.9"]
|
|
18
|
+
tldextract<5.3.0,>=5.1.2
|
|
19
|
+
|
|
20
|
+
[:python_version >= "3.9"]
|
|
21
|
+
tldextract>=5.3.0
|
|
22
|
+
|
|
23
|
+
[dev]
|
|
24
|
+
pytest>=7.0.0
|
|
25
|
+
pytest-xdist
|
|
26
|
+
coverage>=4.3
|
|
27
|
+
flake8>=3.2
|
|
28
|
+
tox>=2.7.0
|
|
29
|
+
setuptools
|
|
30
|
+
twine
|
|
31
|
+
|
|
32
|
+
[redos]
|
|
33
|
+
requests>=2.20.0
|
|
34
|
+
|
|
35
|
+
[tests]
|
|
36
|
+
pytest>=7.0.0
|
|
37
|
+
pytest-xdist
|