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.
Files changed (353) hide show
  1. gixy_next-0.0.9/Gixy_Next.egg-info/PKG-INFO +264 -0
  2. gixy_next-0.0.9/Gixy_Next.egg-info/SOURCES.txt +351 -0
  3. gixy_next-0.0.9/Gixy_Next.egg-info/dependency_links.txt +1 -0
  4. gixy_next-0.0.9/Gixy_Next.egg-info/entry_points.txt +2 -0
  5. gixy_next-0.0.9/Gixy_Next.egg-info/requires.txt +37 -0
  6. gixy_next-0.0.9/Gixy_Next.egg-info/top_level.txt +1 -0
  7. gixy_next-0.0.9/LICENSE +357 -0
  8. gixy_next-0.0.9/MANIFEST.in +2 -0
  9. gixy_next-0.0.9/PKG-INFO +264 -0
  10. gixy_next-0.0.9/README.md +188 -0
  11. gixy_next-0.0.9/gixy/__init__.py +5 -0
  12. gixy_next-0.0.9/gixy/__main__.py +5 -0
  13. gixy_next-0.0.9/gixy/cli/__init__.py +0 -0
  14. gixy_next-0.0.9/gixy/cli/__main__.py +5 -0
  15. gixy_next-0.0.9/gixy/cli/argparser.py +214 -0
  16. gixy_next-0.0.9/gixy/cli/main.py +310 -0
  17. gixy_next-0.0.9/gixy/core/__init__.py +0 -0
  18. gixy_next-0.0.9/gixy/core/builtin_variables.py +401 -0
  19. gixy_next-0.0.9/gixy/core/config.py +31 -0
  20. gixy_next-0.0.9/gixy/core/context.py +103 -0
  21. gixy_next-0.0.9/gixy/core/exceptions.py +2 -0
  22. gixy_next-0.0.9/gixy/core/issue.py +15 -0
  23. gixy_next-0.0.9/gixy/core/manager.py +89 -0
  24. gixy_next-0.0.9/gixy/core/plugins_manager.py +107 -0
  25. gixy_next-0.0.9/gixy/core/regexp.py +1076 -0
  26. gixy_next-0.0.9/gixy/core/severity.py +9 -0
  27. gixy_next-0.0.9/gixy/core/sre_parse/__init__.py +0 -0
  28. gixy_next-0.0.9/gixy/core/sre_parse/sre_constants.py +226 -0
  29. gixy_next-0.0.9/gixy/core/sre_parse/sre_parse.py +852 -0
  30. gixy_next-0.0.9/gixy/core/utils.py +2 -0
  31. gixy_next-0.0.9/gixy/core/variable.py +251 -0
  32. gixy_next-0.0.9/gixy/directives/__init__.py +25 -0
  33. gixy_next-0.0.9/gixy/directives/block.py +362 -0
  34. gixy_next-0.0.9/gixy/directives/directive.py +412 -0
  35. gixy_next-0.0.9/gixy/formatters/__init__.py +23 -0
  36. gixy_next-0.0.9/gixy/formatters/_jinja.py +17 -0
  37. gixy_next-0.0.9/gixy/formatters/base.py +124 -0
  38. gixy_next-0.0.9/gixy/formatters/console.py +13 -0
  39. gixy_next-0.0.9/gixy/formatters/json.py +30 -0
  40. gixy_next-0.0.9/gixy/formatters/templates/__init__.py +0 -0
  41. gixy_next-0.0.9/gixy/formatters/templates/console.j2 +44 -0
  42. gixy_next-0.0.9/gixy/formatters/templates/text.j2 +44 -0
  43. gixy_next-0.0.9/gixy/formatters/text.py +13 -0
  44. gixy_next-0.0.9/gixy/parser/__init__.py +0 -0
  45. gixy_next-0.0.9/gixy/parser/nginx_parser.py +317 -0
  46. gixy_next-0.0.9/gixy/parser/raw_parser.py +256 -0
  47. gixy_next-0.0.9/gixy/plugins/__init__.py +0 -0
  48. gixy_next-0.0.9/gixy/plugins/add_header_content_type.py +58 -0
  49. gixy_next-0.0.9/gixy/plugins/add_header_multiline.py +32 -0
  50. gixy_next-0.0.9/gixy/plugins/add_header_redefinition.py +186 -0
  51. gixy_next-0.0.9/gixy/plugins/alias_traversal.py +117 -0
  52. gixy_next-0.0.9/gixy/plugins/allow_without_deny.py +47 -0
  53. gixy_next-0.0.9/gixy/plugins/default_server_flag.py +123 -0
  54. gixy_next-0.0.9/gixy/plugins/error_log_off.py +22 -0
  55. gixy_next-0.0.9/gixy/plugins/hash_without_default.py +53 -0
  56. gixy_next-0.0.9/gixy/plugins/host_spoofing.py +28 -0
  57. gixy_next-0.0.9/gixy/plugins/http_splitting.py +51 -0
  58. gixy_next-0.0.9/gixy/plugins/if_is_evil.py +48 -0
  59. gixy_next-0.0.9/gixy/plugins/invalid_regex.py +148 -0
  60. gixy_next-0.0.9/gixy/plugins/low_keepalive_requests.py +29 -0
  61. gixy_next-0.0.9/gixy/plugins/origins.py +314 -0
  62. gixy_next-0.0.9/gixy/plugins/plugin.py +38 -0
  63. gixy_next-0.0.9/gixy/plugins/proxy_pass_normalized.py +95 -0
  64. gixy_next-0.0.9/gixy/plugins/regex_redos.py +127 -0
  65. gixy_next-0.0.9/gixy/plugins/resolver_external.py +26 -0
  66. gixy_next-0.0.9/gixy/plugins/return_bypasses_allow_deny.py +45 -0
  67. gixy_next-0.0.9/gixy/plugins/ssrf.py +63 -0
  68. gixy_next-0.0.9/gixy/plugins/stale_dns_cache.py +141 -0
  69. gixy_next-0.0.9/gixy/plugins/try_files_is_evil_too.py +27 -0
  70. gixy_next-0.0.9/gixy/plugins/unanchored_regex.py +29 -0
  71. gixy_next-0.0.9/gixy/plugins/valid_referers.py +23 -0
  72. gixy_next-0.0.9/gixy/plugins/version_disclosure.py +50 -0
  73. gixy_next-0.0.9/gixy/plugins/worker_rlimit_nofile_vs_connections.py +33 -0
  74. gixy_next-0.0.9/gixy/utils/__init__.py +0 -0
  75. gixy_next-0.0.9/gixy/utils/text.py +71 -0
  76. gixy_next-0.0.9/setup.cfg +4 -0
  77. gixy_next-0.0.9/setup.py +174 -0
  78. gixy_next-0.0.9/tests/__init__.py +0 -0
  79. gixy_next-0.0.9/tests/cli/__init__.py +0 -0
  80. gixy_next-0.0.9/tests/core/__init__.py +0 -0
  81. gixy_next-0.0.9/tests/core/test_context.py +157 -0
  82. gixy_next-0.0.9/tests/core/test_regexp.py +315 -0
  83. gixy_next-0.0.9/tests/core/test_variable.py +120 -0
  84. gixy_next-0.0.9/tests/directives/__init__.py +0 -0
  85. gixy_next-0.0.9/tests/directives/test_block.py +329 -0
  86. gixy_next-0.0.9/tests/directives/test_directive.py +99 -0
  87. gixy_next-0.0.9/tests/parser/__init__.py +0 -0
  88. gixy_next-0.0.9/tests/parser/test_nginx_parser.py +229 -0
  89. gixy_next-0.0.9/tests/parser/test_raw_parser.py +107 -0
  90. gixy_next-0.0.9/tests/parser/test_raw_parser_minimal.py +96 -0
  91. gixy_next-0.0.9/tests/parser/test_sre_parse.py +49 -0
  92. gixy_next-0.0.9/tests/plugins/__init__.py +0 -0
  93. gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/add_header_content_type.conf +1 -0
  94. gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/add_header_content_type_fp.conf +1 -0
  95. gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/fastcgi_hide_header_fp.conf +6 -0
  96. gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/proxy_hide_header_fp.conf +6 -0
  97. gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/proxy_hide_header_nested_fp.conf +7 -0
  98. gixy_next-0.0.9/tests/plugins/simply/add_header_content_type/uwsgi_hide_header_fp.conf +6 -0
  99. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/add_header.conf +3 -0
  100. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/add_header_fp.conf +1 -0
  101. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/add_header_multiline.conf +2 -0
  102. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/config.json +3 -0
  103. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers.conf +3 -0
  104. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_fp.conf +2 -0
  105. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_multiple.conf +7 -0
  106. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_replace.conf +2 -0
  107. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_replace_fp.conf +1 -0
  108. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_status_fp.conf +1 -0
  109. gixy_next-0.0.9/tests/plugins/simply/add_header_multiline/more_set_headers_type_fp.conf +2 -0
  110. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/basic_drop.conf +12 -0
  111. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/basic_merge_fp.conf +13 -0
  112. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/config.json +3 -0
  113. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/duplicate_fp.conf +9 -0
  114. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/explicit_off_fp.conf +13 -0
  115. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/grandparent_only_drop.conf +12 -0
  116. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/header_inherit_on.conf +14 -0
  117. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/header_inherit_on_fp.conf +11 -0
  118. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/http_merge_inherited_fp.conf +14 -0
  119. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/http_merge_location_off_fp.conf +15 -0
  120. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/if_block_merge.conf +16 -0
  121. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/if_replaces.conf +5 -0
  122. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/location_only_fp.conf +9 -0
  123. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/location_replaces.conf +5 -0
  124. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/multiple_locations_all_safe_fp.conf +22 -0
  125. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/multiple_locations_mixed.conf +21 -0
  126. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/nested_block.conf +12 -0
  127. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/nested_location_inherits_merge_fp.conf +16 -0
  128. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/nested_location_override_on.conf +17 -0
  129. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/non_block_fp.conf +3 -0
  130. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/not_secure_dropped.conf +5 -0
  131. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/not_secure_outer.conf +5 -0
  132. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/server_merge_inherited_fp.conf +13 -0
  133. gixy_next-0.0.9/tests/plugins/simply/add_header_redefinition/step_replaces.conf +8 -0
  134. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/config.json +3 -0
  135. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/nested.conf +5 -0
  136. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/nested_fp.conf +5 -0
  137. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/not_slashed_alias.conf +3 -0
  138. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/not_slashed_alias_fp.conf +3 -0
  139. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex.conf +3 -0
  140. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_2.conf +3 -0
  141. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_2_fp.conf +3 -0
  142. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_3.conf +3 -0
  143. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_3_fp.conf +3 -0
  144. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_4.conf +3 -0
  145. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_4_fp.conf +3 -0
  146. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_5.conf +3 -0
  147. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_6.conf +3 -0
  148. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/regex_fp.conf +3 -0
  149. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/simple.conf +3 -0
  150. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/simple_fp.conf +3 -0
  151. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/slashed_alias.conf +3 -0
  152. gixy_next-0.0.9/tests/plugins/simply/alias_traversal/slashed_alias_fp.conf +3 -0
  153. gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/allow_without_deny.conf +3 -0
  154. gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/allow_without_deny_dump.conf +12 -0
  155. gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/allow_without_deny_dump_fp.conf +13 -0
  156. gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/allow_without_deny_fp.conf +4 -0
  157. gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/deny.inc +2 -0
  158. gixy_next-0.0.9/tests/plugins/simply/allow_without_deny/include_and_deny_fp.conf +10 -0
  159. gixy_next-0.0.9/tests/plugins/simply/default_server_flag/ambiguous_with_default_fp.conf +14 -0
  160. gixy_next-0.0.9/tests/plugins/simply/default_server_flag/ambiguous_with_upstream_server.conf +18 -0
  161. gixy_next-0.0.9/tests/plugins/simply/default_server_flag/ambiguous_without_default.conf +14 -0
  162. gixy_next-0.0.9/tests/plugins/simply/default_server_flag/config.json +3 -0
  163. gixy_next-0.0.9/tests/plugins/simply/error_log_off/error_log_off.conf +1 -0
  164. gixy_next-0.0.9/tests/plugins/simply/error_log_off/error_log_off_fp.conf +1 -0
  165. gixy_next-0.0.9/tests/plugins/simply/hash_without_default/geo_no_default.conf +5 -0
  166. gixy_next-0.0.9/tests/plugins/simply/hash_without_default/geo_no_default_fp.conf +5 -0
  167. gixy_next-0.0.9/tests/plugins/simply/hash_without_default/map_no_default.conf +6 -0
  168. gixy_next-0.0.9/tests/plugins/simply/hash_without_default/map_no_default_fp.conf +6 -0
  169. gixy_next-0.0.9/tests/plugins/simply/hash_without_default/map_single_entry_no_default_fp.conf +7 -0
  170. gixy_next-0.0.9/tests/plugins/simply/host_spoofing/config.json +3 -0
  171. gixy_next-0.0.9/tests/plugins/simply/host_spoofing/http_fp.conf +1 -0
  172. gixy_next-0.0.9/tests/plugins/simply/host_spoofing/http_host.conf +1 -0
  173. gixy_next-0.0.9/tests/plugins/simply/host_spoofing/http_host_diff_case.conf +1 -0
  174. gixy_next-0.0.9/tests/plugins/simply/host_spoofing/some_arg.conf +1 -0
  175. gixy_next-0.0.9/tests/plugins/simply/http_splitting/add_header_uri.conf +1 -0
  176. gixy_next-0.0.9/tests/plugins/simply/http_splitting/config.json +3 -0
  177. gixy_next-0.0.9/tests/plugins/simply/http_splitting/dont_report_not_resolved_var_fp.conf +3 -0
  178. gixy_next-0.0.9/tests/plugins/simply/http_splitting/if_block.conf +8 -0
  179. gixy_next-0.0.9/tests/plugins/simply/http_splitting/if_block_fp.conf +8 -0
  180. gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value.conf +7 -0
  181. gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_2.conf +7 -0
  182. gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_3.conf +10 -0
  183. gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_3_fp.conf +10 -0
  184. gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_4.conf +13 -0
  185. gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_4_fp.conf +12 -0
  186. gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_fp.conf +7 -0
  187. gixy_next-0.0.9/tests/plugins/simply/http_splitting/mapped_value_with_set.conf +6 -0
  188. gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_from_location_var.conf +3 -0
  189. gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_from_location_var_var.conf +4 -0
  190. gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_from_location_var_var_fp.conf +4 -0
  191. gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_from_location_var_var_var.conf +4 -0
  192. gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_pass_cr_fp.conf +3 -0
  193. gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_pass_ducument_uri.conf +1 -0
  194. gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_pass_lf.conf +3 -0
  195. gixy_next-0.0.9/tests/plugins/simply/http_splitting/proxy_set_header_ducument_uri.conf +1 -0
  196. gixy_next-0.0.9/tests/plugins/simply/http_splitting/return_403_fp.conf +1 -0
  197. gixy_next-0.0.9/tests/plugins/simply/http_splitting/return_request_uri_fp.conf +1 -0
  198. gixy_next-0.0.9/tests/plugins/simply/http_splitting/rewrite_extract_fp.conf +1 -0
  199. gixy_next-0.0.9/tests/plugins/simply/http_splitting/rewrite_uri.conf +1 -0
  200. gixy_next-0.0.9/tests/plugins/simply/http_splitting/rewrite_uri_after_var.conf +1 -0
  201. gixy_next-0.0.9/tests/plugins/simply/if_is_evil/config.json +3 -0
  202. gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_add_header.conf +13 -0
  203. gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_break.conf +5 -0
  204. gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_fp.conf +7 -0
  205. gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_last_fp.conf +5 -0
  206. gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_permanent_fp.conf +5 -0
  207. gixy_next-0.0.9/tests/plugins/simply/if_is_evil/if_is_evil_redirect_fp.conf +5 -0
  208. gixy_next-0.0.9/tests/plugins/simply/invalid_regex/if_no_groups.conf +8 -0
  209. gixy_next-0.0.9/tests/plugins/simply/invalid_regex/if_valid_group_fp.conf +8 -0
  210. gixy_next-0.0.9/tests/plugins/simply/invalid_regex/multiple_groups_fp.conf +6 -0
  211. gixy_next-0.0.9/tests/plugins/simply/invalid_regex/no_groups.conf +6 -0
  212. gixy_next-0.0.9/tests/plugins/simply/invalid_regex/no_refs_fp.conf +6 -0
  213. gixy_next-0.0.9/tests/plugins/simply/invalid_regex/valid_group_fp.conf +6 -0
  214. gixy_next-0.0.9/tests/plugins/simply/invalid_regex/wrong_group.conf +6 -0
  215. gixy_next-0.0.9/tests/plugins/simply/low_keepalive_requests/low_keepalive_requests.conf +2 -0
  216. gixy_next-0.0.9/tests/plugins/simply/low_keepalive_requests/low_keepalive_requests_fp.conf +2 -0
  217. gixy_next-0.0.9/tests/plugins/simply/origins/config.json +3 -0
  218. gixy_next-0.0.9/tests/plugins/simply/origins/map_origin_allowlist.conf +12 -0
  219. gixy_next-0.0.9/tests/plugins/simply/origins/map_origin_allowlist_fp.conf +12 -0
  220. gixy_next-0.0.9/tests/plugins/simply/origins/metrika.conf +3 -0
  221. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_1.conf +5 -0
  222. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_10.conf +5 -0
  223. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_11_fp.conf +5 -0
  224. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_12.conf +5 -0
  225. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_13.conf +5 -0
  226. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_14.conf +5 -0
  227. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_15.conf +5 -0
  228. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_16.conf +5 -0
  229. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_2.conf +3 -0
  230. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_3.conf +5 -0
  231. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_4.conf +2 -0
  232. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_5.conf +5 -0
  233. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_6.conf +5 -0
  234. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_7.conf +3 -0
  235. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_8.conf +3 -0
  236. gixy_next-0.0.9/tests/plugins/simply/origins/more_origins_9.conf +5 -0
  237. gixy_next-0.0.9/tests/plugins/simply/origins/origin_fp.conf +3 -0
  238. gixy_next-0.0.9/tests/plugins/simply/origins/origin_https.conf +5 -0
  239. gixy_next-0.0.9/tests/plugins/simply/origins/origin_https_fp.conf +5 -0
  240. gixy_next-0.0.9/tests/plugins/simply/origins/origin_path.conf +3 -0
  241. gixy_next-0.0.9/tests/plugins/simply/origins/origin_too_permissive.conf +5 -0
  242. gixy_next-0.0.9/tests/plugins/simply/origins/origin_w_slash.conf +3 -0
  243. gixy_next-0.0.9/tests/plugins/simply/origins/origin_w_slash_and_hash.conf +3 -0
  244. gixy_next-0.0.9/tests/plugins/simply/origins/origin_wo_slash.conf +7 -0
  245. gixy_next-0.0.9/tests/plugins/simply/origins/referer.conf +3 -0
  246. gixy_next-0.0.9/tests/plugins/simply/origins/referer_fp.conf +3 -0
  247. gixy_next-0.0.9/tests/plugins/simply/origins/referer_subdomain.conf +3 -0
  248. gixy_next-0.0.9/tests/plugins/simply/origins/referer_subdomain_fp.conf +3 -0
  249. gixy_next-0.0.9/tests/plugins/simply/origins/referrer_double_r.conf +3 -0
  250. gixy_next-0.0.9/tests/plugins/simply/origins/safe_origin.conf +3 -0
  251. gixy_next-0.0.9/tests/plugins/simply/origins/safe_origin_2_fp.conf +5 -0
  252. gixy_next-0.0.9/tests/plugins/simply/origins/structure_dot.conf +3 -0
  253. gixy_next-0.0.9/tests/plugins/simply/origins/structure_fp.conf +3 -0
  254. gixy_next-0.0.9/tests/plugins/simply/origins/structure_prefix.conf +3 -0
  255. gixy_next-0.0.9/tests/plugins/simply/origins/structure_suffix.conf +3 -0
  256. gixy_next-0.0.9/tests/plugins/simply/origins/unsafe_origin.conf +3 -0
  257. gixy_next-0.0.9/tests/plugins/simply/origins/unsafe_origin_1.conf +5 -0
  258. gixy_next-0.0.9/tests/plugins/simply/origins/unsafe_origin_2.conf +5 -0
  259. gixy_next-0.0.9/tests/plugins/simply/origins/webvisor.conf +5 -0
  260. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/exact_location_with_uri_fp.conf +7 -0
  261. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable.conf +7 -0
  262. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_fp.conf +7 -0
  263. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if.conf +6 -0
  264. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if_argflag.conf +21 -0
  265. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_if_fp.conf +8 -0
  266. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_limit_except.conf +8 -0
  267. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_in_limit_except_fp.conf +8 -0
  268. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_nopath.conf +7 -0
  269. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/missing_variable_nopath_fp.conf +8 -0
  270. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_path.conf +6 -0
  271. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_path_fp.conf +6 -0
  272. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_socket_fp.conf +8 -0
  273. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_socket_with_path.conf +8 -0
  274. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/proxy_pass_var_fp.conf +4 -0
  275. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/rewrite_with_return.conf +9 -0
  276. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/rewrite_with_return_fp.conf +9 -0
  277. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/stream_fp.conf +8 -0
  278. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/variable.conf +3 -0
  279. gixy_next-0.0.9/tests/plugins/simply/proxy_pass_normalized/variable_fp.conf +3 -0
  280. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_external.conf +1 -0
  281. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_external_fp.conf +1 -0
  282. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_link_local_fp.conf +1 -0
  283. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_local_fp.conf +1 -0
  284. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_local_internal_fp.conf +1 -0
  285. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_local_ipv6_fp.conf +1 -0
  286. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_local_ipv6_with_port_fp.conf +1 -0
  287. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_localhost_fp.conf +1 -0
  288. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_localhost_withport_fp.conf +1 -0
  289. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_more_local_ipv6_fp.conf +1 -0
  290. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_unregisterable_domain_fp.conf +1 -0
  291. gixy_next-0.0.9/tests/plugins/simply/resolver_external/resolver_unregisterable_domain_withport_fp.conf +1 -0
  292. gixy_next-0.0.9/tests/plugins/simply/return_bypasses_allow_deny/same_level.conf +5 -0
  293. gixy_next-0.0.9/tests/plugins/simply/return_bypasses_allow_deny/same_level_fp.conf +5 -0
  294. gixy_next-0.0.9/tests/plugins/simply/return_bypasses_allow_deny/same_next_level.conf +8 -0
  295. gixy_next-0.0.9/tests/plugins/simply/return_bypasses_allow_deny/same_next_level_fp.conf +8 -0
  296. gixy_next-0.0.9/tests/plugins/simply/ssrf/config.json +3 -0
  297. gixy_next-0.0.9/tests/plugins/simply/ssrf/have_internal_fp.conf +4 -0
  298. gixy_next-0.0.9/tests/plugins/simply/ssrf/host_w_const_start.conf +3 -0
  299. gixy_next-0.0.9/tests/plugins/simply/ssrf/host_w_const_start_arg.conf +3 -0
  300. gixy_next-0.0.9/tests/plugins/simply/ssrf/mapped_value.conf +15 -0
  301. gixy_next-0.0.9/tests/plugins/simply/ssrf/not_host_var_fp.conf +3 -0
  302. gixy_next-0.0.9/tests/plugins/simply/ssrf/request_uri_fp.conf +3 -0
  303. gixy_next-0.0.9/tests/plugins/simply/ssrf/request_uri_var_fp.conf +4 -0
  304. gixy_next-0.0.9/tests/plugins/simply/ssrf/scheme_var.conf +3 -0
  305. gixy_next-0.0.9/tests/plugins/simply/ssrf/single_var.conf +3 -0
  306. gixy_next-0.0.9/tests/plugins/simply/ssrf/used_arg.conf +3 -0
  307. gixy_next-0.0.9/tests/plugins/simply/ssrf/vars_from_loc.conf +6 -0
  308. gixy_next-0.0.9/tests/plugins/simply/ssrf/with_const_scheme.conf +10 -0
  309. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_ip_literal_fp.conf +8 -0
  310. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_localhost_fp.conf +8 -0
  311. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_unix_socket_fp.conf +8 -0
  312. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_upstream_host_with_resolve_fp.conf +13 -0
  313. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_upstream_ip_servers_fp.conf +13 -0
  314. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_variable_in_path_no_resolver.conf +8 -0
  315. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_variable_points_to_upstream_with_resolve_fp.conf +14 -0
  316. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_with_include_with_if.conf +23 -0
  317. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/block_with_include_without_if_fp.conf +21 -0
  318. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/proxy_pass_ip_literal_fp.conf +2 -0
  319. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/proxy_pass_unix_socket_fp.conf +2 -0
  320. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_aws_elb_host.conf +2 -0
  321. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_cloudflare_workers_host.conf +2 -0
  322. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_heroku_host.conf +2 -0
  323. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_proxy_pass_upstream_no_resolve.conf +12 -0
  324. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_punycode_tld.conf +1 -0
  325. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_punycode_tld_2.conf +2 -0
  326. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_static_public_domain.conf +2 -0
  327. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_unknown_tld.conf +2 -0
  328. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_unknown_tld_2.conf +1 -0
  329. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_upstream_host_no_resolve.conf +12 -0
  330. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_variable_points_to_upstream_no_resolve.conf +13 -0
  331. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/tp_variable_proxy_pass_missing_resolver.conf +3 -0
  332. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/upstream_host_with_resolve_fp.conf +13 -0
  333. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/upstream_ip_servers_fp.conf +12 -0
  334. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/variable_in_proxy_pass_with_resolver_fp.conf +3 -0
  335. gixy_next-0.0.9/tests/plugins/simply/stale_dns_cache/variable_proxy_pass_with_resolver_fp.conf +4 -0
  336. gixy_next-0.0.9/tests/plugins/simply/try_files_is_evil_too/config.json +3 -0
  337. gixy_next-0.0.9/tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too.conf +6 -0
  338. gixy_next-0.0.9/tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too_cache_none.conf +3 -0
  339. gixy_next-0.0.9/tests/plugins/simply/try_files_is_evil_too/try_files_is_evil_too_fp.conf +4 -0
  340. gixy_next-0.0.9/tests/plugins/simply/unanchored_regex/unanchored_regex.conf +3 -0
  341. gixy_next-0.0.9/tests/plugins/simply/unanchored_regex/unanchored_regex_fp.conf +3 -0
  342. gixy_next-0.0.9/tests/plugins/simply/valid_referers/config.json +3 -0
  343. gixy_next-0.0.9/tests/plugins/simply/valid_referers/none_first.conf +1 -0
  344. gixy_next-0.0.9/tests/plugins/simply/valid_referers/none_last.conf +3 -0
  345. gixy_next-0.0.9/tests/plugins/simply/valid_referers/none_middle.conf +2 -0
  346. gixy_next-0.0.9/tests/plugins/simply/valid_referers/wo_none_fp.conf +1 -0
  347. gixy_next-0.0.9/tests/plugins/simply/version_disclosure/server_tokens_off_fp.conf +1 -0
  348. gixy_next-0.0.9/tests/plugins/simply/version_disclosure/server_tokens_on.conf +1 -0
  349. gixy_next-0.0.9/tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_fp.conf +3 -0
  350. gixy_next-0.0.9/tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_missing.conf +2 -0
  351. gixy_next-0.0.9/tests/plugins/simply/worker_rlimit_nofile_vs_connections/worker_rlimit_nofile_vs_connections_too_low.conf +3 -0
  352. gixy_next-0.0.9/tests/plugins/test_simply.py +118 -0
  353. 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,2 @@
1
+ [console_scripts]
2
+ gixy = gixy.cli.main:main
@@ -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