easyhaproxy 6.0.0__tar.gz → 6.0.1__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 (252) hide show
  1. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/PKG-INFO +36 -115
  2. easyhaproxy-6.0.1/README.md +80 -0
  3. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/RELEASE.md +2 -1
  4. easyhaproxy-6.0.1/deploy/docker/assets/etc/easyhaproxy/www/dashboard.html +103 -0
  5. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/docker-compose.yml +1 -1
  6. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/kubernetes/README.md +1 -1
  7. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/kubernetes/easyhaproxy-clusterip.yml +13 -13
  8. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/kubernetes/easyhaproxy-daemonset.yml +11 -11
  9. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/kubernetes/easyhaproxy-nodeport.yml +13 -13
  10. easyhaproxy-6.0.1/docs/concepts/_category_.json +4 -0
  11. easyhaproxy-6.0.1/docs/concepts/index.md +103 -0
  12. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/concepts}/limitations.md +2 -1
  13. easyhaproxy-6.0.1/docs/dashboard.png +0 -0
  14. easyhaproxy-6.0.1/docs/dashboard_login.png +0 -0
  15. easyhaproxy-6.0.1/docs/dashboard_thumbnail.png +0 -0
  16. easyhaproxy-6.0.1/docs/getting-started/_category_.json +4 -0
  17. easyhaproxy-6.0.1/docs/getting-started/docker.md +66 -0
  18. easyhaproxy-6.0.1/docs/getting-started/index.md +51 -0
  19. easyhaproxy-6.0.1/docs/getting-started/kubernetes.md +256 -0
  20. easyhaproxy-6.0.1/docs/getting-started/native.md +130 -0
  21. easyhaproxy-6.0.1/docs/getting-started/static.md +105 -0
  22. easyhaproxy-6.0.1/docs/getting-started/swarm.md +100 -0
  23. easyhaproxy-6.0.1/docs/guides/_category_.json +4 -0
  24. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/acme.md +11 -37
  25. easyhaproxy-6.0.1/docs/guides/dashboard.md +144 -0
  26. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/digitalocean.md +2 -2
  27. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/dokku.md +1 -0
  28. easyhaproxy-6.0.1/docs/guides/helm.md +50 -0
  29. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/microk8s.md +2 -1
  30. easyhaproxy-6.0.1/docs/guides/plugin-development.md +695 -0
  31. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/plugins.md +13 -97
  32. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/ssl.md +3 -2
  33. easyhaproxy-6.0.1/docs/reference/_category_.json +4 -0
  34. easyhaproxy-6.0.0/docs/pip.md → easyhaproxy-6.0.1/docs/reference/cli.md +14 -144
  35. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/reference}/container-labels.md +22 -2
  36. easyhaproxy-6.0.0/docs/environment-variable.md → easyhaproxy-6.0.1/docs/reference/environment-variables.md +25 -6
  37. easyhaproxy-6.0.1/docs/reference/helm.md +115 -0
  38. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/reference}/other.md +10 -9
  39. easyhaproxy-6.0.1/docs/reference/plugins/_category_.json +4 -0
  40. {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/cleanup.md +5 -9
  41. {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/cloudflare.md +3 -12
  42. {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/deny-pages.md +3 -7
  43. {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/fastcgi.md +18 -39
  44. {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/ip-whitelist.md +3 -8
  45. easyhaproxy-6.0.1/docs/reference/plugins/jwt-validator.md +196 -0
  46. {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/reference}/volumes.md +18 -17
  47. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/Chart.yaml +2 -2
  48. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/pyproject.toml +1 -1
  49. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easyhaproxy/main.py +36 -0
  50. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easymapping/config_generator.py +3 -2
  51. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/consts.py +8 -1
  52. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/fastcgi.py +2 -4
  53. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/haproxy.cfg.j2 +15 -1
  54. easyhaproxy-6.0.1/tests/conftest.py +68 -0
  55. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/docker.txt +15 -1
  56. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-letsencrypt.txt +15 -1
  57. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-multiple-hosts.txt +15 -1
  58. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/ssl-loose.txt +15 -1
  59. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/static-cors.txt +15 -1
  60. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/static.txt +15 -1
  61. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_plugins.py +4 -4
  62. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/README.md +4 -4
  63. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-acme-e2e.yml +4 -0
  64. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-acme.yml +1 -1
  65. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-portainer.yml +1 -1
  66. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/php-app/README.md +2 -2
  67. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/README.md +4 -4
  68. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/cloudflare.yml +1 -1
  69. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/ip-whitelist.yml +1 -1
  70. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/jwt-validator.yml +1 -1
  71. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/plugins-combined.yml +1 -1
  72. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/service.yml +1 -1
  73. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/service_tls.yml +1 -1
  74. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/README.md +3 -3
  75. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/README.md +4 -4
  76. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_docker_compose.py +15 -10
  77. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_kubernetes.py +20 -1
  78. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/uv.lock +1 -1
  79. easyhaproxy-6.0.0/README.md +0 -159
  80. easyhaproxy-6.0.0/docs/Plugins/jwt-validator.md +0 -385
  81. easyhaproxy-6.0.0/docs/docker.md +0 -79
  82. easyhaproxy-6.0.0/docs/helm.md +0 -85
  83. easyhaproxy-6.0.0/docs/kubernetes.md +0 -514
  84. easyhaproxy-6.0.0/docs/plugin-development.md +0 -2094
  85. easyhaproxy-6.0.0/docs/static.md +0 -140
  86. easyhaproxy-6.0.0/docs/swarm.md +0 -109
  87. easyhaproxy-6.0.0/tests/conftest.py +0 -43
  88. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.dockerignore +0 -0
  89. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.github/FUNDING.yml +0 -0
  90. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.github/dependabot.yml +0 -0
  91. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.github/workflows/build.yml +0 -0
  92. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.gitignore +0 -0
  93. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.python-version +0 -0
  94. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.run/pytest in tests.run.xml +0 -0
  95. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.vscode/launch.json +0 -0
  96. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.vscode/settings.json +0 -0
  97. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/CONTRIBUTING.md +0 -0
  98. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/LICENSE +0 -0
  99. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/Makefile +0 -0
  100. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/build-multiarch.sh +0 -0
  101. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/Dockerfile +0 -0
  102. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/entrypoint.sh +0 -0
  103. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/conf.d/README.md +0 -0
  104. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/400.http +0 -0
  105. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/403.http +0 -0
  106. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/408.http +0 -0
  107. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/500.http +0 -0
  108. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/502.http +0 -0
  109. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/503.http +0 -0
  110. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/504.http +0 -0
  111. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_digitalocean.png +0 -0
  112. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_docker.png +0 -0
  113. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_dokku.png +0 -0
  114. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_helm.png +0 -0
  115. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_kubernetes.png +0 -0
  116. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_logo.png +0 -0
  117. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_microk8s.png +0 -0
  118. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_static.png +0 -0
  119. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_swarm.png +0 -0
  120. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/icons.xcf +0 -0
  121. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/logo.png +0 -0
  122. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/logo.xcf +0 -0
  123. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-docker-ssl.png +0 -0
  124. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-docker.png +0 -0
  125. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-kubernetes-letsencrypt.png +0 -0
  126. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-kubernetes.png +0 -0
  127. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-static.png +0 -0
  128. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-tcp-mysql.png +0 -0
  129. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/.helmignore +0 -0
  130. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/LICENSE +0 -0
  131. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/README.md +0 -0
  132. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/_helpers.tpl +0 -0
  133. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/clusterrole.yaml +0 -0
  134. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/clusterrolebinding.yaml +0 -0
  135. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/deployment.yaml +0 -0
  136. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/ingressclass.yaml +0 -0
  137. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/service.yaml +0 -0
  138. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/serviceaccount.yaml +0 -0
  139. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/values.schema.json +0 -0
  140. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/values.yaml +0 -0
  141. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/scripts/bump-version.sh +0 -0
  142. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easyhaproxy/__init__.py +0 -0
  143. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easymapping/__init__.py +0 -0
  144. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easymapping/label_handler.py +0 -0
  145. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/__init__.py +0 -0
  146. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/certbot.py +0 -0
  147. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/container_env.py +0 -0
  148. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/filter.py +0 -0
  149. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/functions.py +0 -0
  150. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/haproxy.py +0 -0
  151. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/loggers.py +0 -0
  152. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/__init__.py +0 -0
  153. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/__init__.py +0 -0
  154. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/cleanup.py +0 -0
  155. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/cloudflare.py +0 -0
  156. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/deny_pages.py +0 -0
  157. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/ip_whitelist.py +0 -0
  158. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/jwt_validator.py +0 -0
  159. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/interface.py +0 -0
  160. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/manager.py +0 -0
  161. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/types.py +0 -0
  162. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/__init__.py +0 -0
  163. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/docker.py +0 -0
  164. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/interface.py +0 -0
  165. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/kubernetes.py +0 -0
  166. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/static.py +0 -0
  167. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/swarm.py +0 -0
  168. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/bind.j2 +0 -0
  169. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/frontend-mode-http.j2 +0 -0
  170. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/frontend-mode-tcp.j2 +0 -0
  171. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/ssl_default.j2 +0 -0
  172. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/ssl_loose.j2 +0 -0
  173. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/ssl_strict.j2 +0 -0
  174. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/__init__.py +0 -0
  175. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/no-services.txt +0 -0
  176. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-fcgi.txt +0 -0
  177. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-multi-containers.txt +0 -0
  178. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-redirect-ssl.txt +0 -0
  179. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-tcp.txt +0 -0
  180. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services.txt +0 -0
  181. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/ssl-strict.txt +0 -0
  182. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/00_haproxy.cfg +0 -0
  183. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/10_haproxy.cfg +0 -0
  184. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/no-services +0 -0
  185. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/run_bash.sh +0 -0
  186. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services +0 -0
  187. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-changed-label +0 -0
  188. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-clone-to-ssl +0 -0
  189. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-fcgi +0 -0
  190. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-letsencrypt +0 -0
  191. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-multi-containers +0 -0
  192. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-multiple-hosts +0 -0
  193. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-redirect-ssl +0 -0
  194. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-tcp +0 -0
  195. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-cloudflare +0 -0
  196. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-deny-pages +0 -0
  197. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-ip-whitelist +0 -0
  198. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-jwt-validator +0 -0
  199. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-multiple-plugins +0 -0
  200. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/static.yml +0 -0
  201. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/static_cors.yml +0 -0
  202. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/static_multi_domain.yml +0 -0
  203. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_certbot.py +0 -0
  204. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_certbot_haproxy_config.py +0 -0
  205. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_containerenv.py +0 -0
  206. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_daemonize.py +0 -0
  207. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_docker.py +0 -0
  208. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_functions.py +0 -0
  209. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_kubernetes_processor.py +0 -0
  210. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_labels.py +0 -0
  211. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_parser.py +0 -0
  212. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_static.py +0 -0
  213. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/conftest.py +0 -0
  214. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/AGENTS.md +0 -0
  215. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-changed-label.yml +0 -0
  216. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-cloudflare.yml +0 -0
  217. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-ip-whitelist.yml +0 -0
  218. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-jwt-validator.yml +0 -0
  219. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-multi-containers.yml +0 -0
  220. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-php-fpm.yml +0 -0
  221. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-plugins-combined.yml +0 -0
  222. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-portainer-app-example.yml +0 -0
  223. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-proxy-headers.yml +0 -0
  224. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose.yml +0 -0
  225. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/pebble-config.json +0 -0
  226. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/php-app/index.php +0 -0
  227. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/php-app/info.php +0 -0
  228. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/php-app/test-path-info.php +0 -0
  229. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/fixtures/header-echo/Dockerfile +0 -0
  230. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/fixtures/header-echo/README.md +0 -0
  231. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/fixtures/header-echo/server.py +0 -0
  232. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/generate-keys.sh +0 -0
  233. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/.gitignore +0 -0
  234. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/jwt-validator-secret-example.yml +0 -0
  235. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/setup-cluster.sh +0 -0
  236. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/teardown-cluster.sh +0 -0
  237. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/conf/config-basic.yml +0 -0
  238. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/conf/config-certbot.yml +0 -0
  239. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/conf/config-deny-pages.yml +0 -0
  240. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/conf/config-jwt-validator.yml +0 -0
  241. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/docker-compose.yml +0 -0
  242. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/cloudflare.yml +0 -0
  243. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/easyhaproxy.yml +0 -0
  244. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/ip-whitelist.yml +0 -0
  245. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/jwt-validator.yml +0 -0
  246. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/plugins-combined.yml +0 -0
  247. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/portainer.yml +0 -0
  248. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/services.yml +0 -0
  249. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_proxy_headers.py +0 -0
  250. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_static.py +0 -0
  251. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_swarm.py +0 -0
  252. {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easyhaproxy
3
- Version: 6.0.0
3
+ Version: 6.0.1
4
4
  Summary: HAProxy label based routing with service discovery for Docker, Swarm, and Kubernetes
5
5
  License: MIT License
6
6
 
@@ -60,133 +60,55 @@ Description-Content-Type: text/markdown
60
60
 
61
61
  ## Service discovery for HAProxy
62
62
 
63
- EasyHAProxy dynamically creates the `haproxy.cfg` based on metadata collected from your workloads (Docker labels, Swarm service labels, or Kubernetes ingress annotations).
64
-
65
- EasyHAProxy can detect and configure HAProxy automatically on the following platforms:
66
-
67
- - Docker
68
- - Docker Swarm
69
- - Kubernetes
70
- - Static YAML definitions (`EASYHAPROXY_DISCOVER=static`)
71
-
72
- ## Who is using?
73
-
74
- EasyHAProxy is part of some projects:
75
- - Dokku
76
- - MicroK8s
77
- - DigitalOcean Marketplace
78
-
79
- See detailed instructions on how to install below.
80
-
81
- ## EasyHAProxy Mission
82
-
83
- Easy to set up and low configuration to numerous features.
63
+ EasyHAProxy dynamically creates `haproxy.cfg` based on metadata from your workloads — Docker labels, Swarm service labels, or Kubernetes Ingress annotations. No HAProxy knowledge required.
84
64
 
85
65
  ## Features
86
66
 
87
- EasyHAProxy will discover services based on Docker (or Swarm) labels and Kubernetes ingress annotations, then dynamically build the `haproxy.cfg`. Below, EasyHAProxy main features:
88
-
89
- - Support Automatic Certificate Management Environment (ACME) protocol compatible with Let's Encrypt and other CAs.
90
- - Set your custom SSL certificates
91
- - Balance traffic between multiple replicas
92
- - Set SSL policies (`strict`, `default`, `loose`) via `EASYHAPROXY_SSL_MODE`.
93
- - Set up HAProxy to listen to TCP.
94
- - Add redirects.
95
- - Enable/disable Stats on port 1936 with a custom password.
96
- - Enable/disable custom errors.
97
-
98
- Also, it is possible to set up HAProxy from a simple Yaml file instead of creating `haproxy.cfg` file.
99
-
100
- ## How Does It Work?
101
-
102
- You don't need to change your current infrastructure and don't need to learn the HAProxy configuration.
103
-
104
- The steps are:
105
-
106
- - Run the EasyHAProxy container;
107
- - Add some labels to the containers you want to be parsed by EasyHAProxy (see detailed instructions below);
108
- - EasyHAProxy will automatically detect the containers, set up, and reload the HAProxy configurations for you without downtime.
109
-
110
- ## Detailed Instructions
67
+ - **Automatic service discovery** — Docker, Docker Swarm, Kubernetes, or static YAML
68
+ - **Zero-downtime HAProxy reload** — configuration updates happen without dropping connections
69
+ - **Automatic TLS with ACME** — Let's Encrypt, ZeroSSL, BuyPass, and more
70
+ - **Custom SSL certificates** — volume-mount or label-embed your own PEM files
71
+ - **TCP mode** — proxy any TCP service, not just HTTP
72
+ - **Plugin system** — JWT validation, IP whitelisting, Cloudflare IP restoration, FastCGI, path blocking, and custom plugins
73
+ - **Real-time monitoring dashboard** — built-in, zero-dependency web UI with live traffic charts, frontend/backend health, and per-server stats (enabled with a single env var)
74
+ - **Balance algorithms** — roundrobin, leastconn, source, uri, and more
111
75
 
112
- For detailed instructions on how to use EasyHAProxy, follow the instructions for the platform you want to use:
76
+ ## Supported platforms
113
77
 
114
- [![Kubernetes](docs/easyhaproxy_kubernetes.png)](docs/kubernetes.md)
115
- [![Docker Swarm](docs/easyhaproxy_swarm.png)](docs/swarm.md)
116
- [![Docker](docs/easyhaproxy_docker.png)](docs/docker.md)
117
- [![Static](docs/easyhaproxy_static.png)](docs/static.md)
78
+ [![Kubernetes](docs/easyhaproxy_kubernetes.png)](docs/getting-started/kubernetes.md)
79
+ [![Docker Swarm](docs/easyhaproxy_swarm.png)](docs/getting-started/swarm.md)
80
+ [![Docker](docs/easyhaproxy_docker.png)](docs/getting-started/docker.md)
81
+ [![Static](docs/easyhaproxy_static.png)](docs/getting-started/static.md)
118
82
 
119
- Or you can install using tools:
83
+ Install using tools:
120
84
 
121
- [![Helm](docs/easyhaproxy_helm.png)](docs/helm.md)
122
- [![MicroK8s](docs/easyhaproxy_microk8s.png)](docs/microk8s.md)
123
- [![Dokku](docs/easyhaproxy_dokku.png)](docs/dokku.md)
124
- [![DigitalOcean](docs/easyhaproxy_digitalocean.png)](docs/digitalocean.md)
85
+ [![Helm](docs/easyhaproxy_helm.png)](docs/guides/helm.md)
86
+ [![MicroK8s](docs/easyhaproxy_microk8s.png)](docs/guides/microk8s.md)
87
+ [![Dokku](docs/easyhaproxy_dokku.png)](docs/guides/dokku.md)
88
+ [![DigitalOcean](docs/easyhaproxy_digitalocean.png)](docs/guides/digitalocean.md)
125
89
 
126
- ## Special Topics
90
+ ## Documentation
127
91
 
128
- If you already set up the EasyHAProxy, is time to go deeper:
92
+ | Section | Description |
93
+ |---------|-------------|
94
+ | **[Getting Started](docs/getting-started/)** | Choose your runtime and discovery mode, minimal working setup |
95
+ | **[Guides](docs/guides/ssl.md)** | SSL, ACME, plugins, Helm, MicroK8s, Dokku, DigitalOcean |
96
+ | **[Concepts](docs/concepts/)** | Service discovery, config pipeline, plugin model, TLS termination |
97
+ | **[Reference](docs/reference/environment-variables.md)** | Environment variables, container labels, CLI flags, volumes |
129
98
 
130
- - [Custom SSL](docs/ssl.md)
131
- - [Automatic Certificate Issuing](docs/acme.md) (e.g. Letsencrypt)
132
-
133
- ## Configuration Reference
134
-
135
- Detailed configuration guides for advanced setups:
136
-
137
- - [Container Labels](docs/container-labels.md) - Configure Docker/Swarm containers with labels
138
- - [Environment Variables](docs/environment-variable.md) - Configure EasyHAProxy behavior
139
- - [Volumes](docs/volumes.md) - Map volumes for certificates, config, and custom files
140
- - [Plugins](docs/plugins.md) - Extend HAProxy with plugins ([Development Guide](docs/plugin-development.md))
141
- - [JWT Validator](docs/Plugins/jwt-validator.md) - JWT authentication validation
142
- - [FastCGI](docs/Plugins/fastcgi.md) - PHP-FPM and FastCGI application support
143
- - [Cloudflare](docs/Plugins/cloudflare.md) - Restore visitor IP from Cloudflare CDN
144
- - [IP Whitelist](docs/Plugins/ip-whitelist.md) - Restrict access to IPs/CIDR ranges
145
- - [Deny Pages](docs/Plugins/deny-pages.md) - Block access to specific paths
146
- - [Cleanup](docs/Plugins/cleanup.md) - Automatic cleanup of temporary files
147
- - [Other Configurations](docs/other.md) - Additional configurations (ports, custom errors, etc.)
148
- - [Limitations](docs/limitations.md) - Important limitations and considerations
149
-
150
- ## Development
151
-
152
- ### Requirements
153
-
154
- - Python 3.11 or higher
155
- - [uv](https://github.com/astral-sh/uv) package manager
156
-
157
- ### Installation for Development
158
-
159
- ```bash
160
- # Install uv (if not already installed)
161
- curl -LsSf https://astral.sh/uv/install.sh | sh
162
-
163
- # Clone the repository
164
- git clone https://github.com/byjg/docker-easy-haproxy.git
165
- cd docker-easy-haproxy
166
-
167
- # Install dependencies (creates virtual environment automatically)
168
- uv sync --dev
169
-
170
- # Run tests
171
- make test
172
- # or directly: uv run pytest tests/ -vv
173
-
174
- # Run linting
175
- make lint
99
+ ## Who is using?
176
100
 
177
- # Format code
178
- make format
179
- ```
101
+ EasyHAProxy is part of some projects:
102
+ - [Dokku](docs/guides/dokku.md)
103
+ - [MicroK8s](docs/guides/microk8s.md)
104
+ - [DigitalOcean Marketplace](docs/guides/digitalocean.md)
180
105
 
181
- ### Installing the Package
106
+ ## Monitoring Dashboard
182
107
 
183
- ```bash
184
- # Install with uv
185
- uv pip install easymapping
108
+ [![HAProxy Monitor](docs/dashboard_thumbnail.png)](docs/guides/dashboard.md)
186
109
 
187
- # Or install from source
188
- uv pip install -e ".[dev]"
189
- ```
110
+ A real-time dashboard is available at `http://<host>:11936/` whenever `HAPROXY_PASSWORD` is set —
111
+ no extra containers, no Prometheus, no Grafana. See the [dashboard guide](docs/guides/dashboard.md).
190
112
 
191
113
  ## See EasyHAProxy in action
192
114
 
@@ -201,6 +123,5 @@ Click on the image to see the videos (use HD for better visualization)
201
123
 
202
124
  [Here is the code](https://gist.github.com/byjg/e125e478a0562190176d69ea795fd3d4) applied in the test examples above.
203
125
 
204
-
205
126
  ----
206
127
  [Open source ByJG](http://opensource.byjg.com)
@@ -0,0 +1,80 @@
1
+ # EasyHAProxy
2
+
3
+ [![Sponsor](https://img.shields.io/badge/Sponsor-%23ea4aaa?logo=githubsponsors&logoColor=white&labelColor=0d1117)](https://github.com/sponsors/byjg)
4
+ [![Opensource ByJG](https://img.shields.io/badge/opensource-byjg-success.svg)](http://opensource.byjg.com)
5
+ [![Build Status](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml)
6
+ [![GitHub source](https://img.shields.io/badge/Github-source-informational?logo=github)](https://github.com/byjg/docker-easy-haproxy/)
7
+ [![GitHub license](https://img.shields.io/github/license/byjg/docker-easy-haproxy.svg)](https://opensource.byjg.com/opensource/licensing.html)
8
+ [![GitHub release](https://img.shields.io/github/release/byjg/docker-easy-haproxy.svg)](https://github.com/byjg/docker-easy-haproxy/releases/)
9
+ [![Helm Version](https://img.shields.io/badge/dynamic/yaml?color=blue&label=Helm&query=%24.entries.easyhaproxy%5B0%5D.version&url=http%3A%2F%2Fopensource.byjg.com%2Fhelm%2Findex.yaml)](https://opensource.byjg.com/helm)
10
+ [![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/byjg)](https://artifacthub.io/packages/search?repo=byjg)
11
+
12
+ ![EasyHAProxy](docs/easyhaproxy_logo.png)
13
+
14
+ ## Service discovery for HAProxy
15
+
16
+ EasyHAProxy dynamically creates `haproxy.cfg` based on metadata from your workloads — Docker labels, Swarm service labels, or Kubernetes Ingress annotations. No HAProxy knowledge required.
17
+
18
+ ## Features
19
+
20
+ - **Automatic service discovery** — Docker, Docker Swarm, Kubernetes, or static YAML
21
+ - **Zero-downtime HAProxy reload** — configuration updates happen without dropping connections
22
+ - **Automatic TLS with ACME** — Let's Encrypt, ZeroSSL, BuyPass, and more
23
+ - **Custom SSL certificates** — volume-mount or label-embed your own PEM files
24
+ - **TCP mode** — proxy any TCP service, not just HTTP
25
+ - **Plugin system** — JWT validation, IP whitelisting, Cloudflare IP restoration, FastCGI, path blocking, and custom plugins
26
+ - **Real-time monitoring dashboard** — built-in, zero-dependency web UI with live traffic charts, frontend/backend health, and per-server stats (enabled with a single env var)
27
+ - **Balance algorithms** — roundrobin, leastconn, source, uri, and more
28
+
29
+ ## Supported platforms
30
+
31
+ [![Kubernetes](docs/easyhaproxy_kubernetes.png)](docs/getting-started/kubernetes.md)
32
+ [![Docker Swarm](docs/easyhaproxy_swarm.png)](docs/getting-started/swarm.md)
33
+ [![Docker](docs/easyhaproxy_docker.png)](docs/getting-started/docker.md)
34
+ [![Static](docs/easyhaproxy_static.png)](docs/getting-started/static.md)
35
+
36
+ Install using tools:
37
+
38
+ [![Helm](docs/easyhaproxy_helm.png)](docs/guides/helm.md)
39
+ [![MicroK8s](docs/easyhaproxy_microk8s.png)](docs/guides/microk8s.md)
40
+ [![Dokku](docs/easyhaproxy_dokku.png)](docs/guides/dokku.md)
41
+ [![DigitalOcean](docs/easyhaproxy_digitalocean.png)](docs/guides/digitalocean.md)
42
+
43
+ ## Documentation
44
+
45
+ | Section | Description |
46
+ |---------|-------------|
47
+ | **[Getting Started](docs/getting-started/)** | Choose your runtime and discovery mode, minimal working setup |
48
+ | **[Guides](docs/guides/ssl.md)** | SSL, ACME, plugins, Helm, MicroK8s, Dokku, DigitalOcean |
49
+ | **[Concepts](docs/concepts/)** | Service discovery, config pipeline, plugin model, TLS termination |
50
+ | **[Reference](docs/reference/environment-variables.md)** | Environment variables, container labels, CLI flags, volumes |
51
+
52
+ ## Who is using?
53
+
54
+ EasyHAProxy is part of some projects:
55
+ - [Dokku](docs/guides/dokku.md)
56
+ - [MicroK8s](docs/guides/microk8s.md)
57
+ - [DigitalOcean Marketplace](docs/guides/digitalocean.md)
58
+
59
+ ## Monitoring Dashboard
60
+
61
+ [![HAProxy Monitor](docs/dashboard_thumbnail.png)](docs/guides/dashboard.md)
62
+
63
+ A real-time dashboard is available at `http://<host>:11936/` whenever `HAPROXY_PASSWORD` is set —
64
+ no extra containers, no Prometheus, no Grafana. See the [dashboard guide](docs/guides/dashboard.md).
65
+
66
+ ## See EasyHAProxy in action
67
+
68
+ Click on the image to see the videos (use HD for better visualization)
69
+
70
+ [![Docker In Action](docs/video-docker.png)](https://youtu.be/ar8raFK0R1k)
71
+ [![Docker and Letsencrypt](docs/video-docker-ssl.png)](https://youtu.be/xwIdj9mc2mU)
72
+ [![K8s In Action](docs/video-kubernetes.png)](https://youtu.be/uq7TuLIijks)
73
+ [![K8s and Letsencrypt](docs/video-kubernetes-letsencrypt.png)](https://youtu.be/v9Q4M5Al7AQ)
74
+ [![Static Configuration](docs/video-static.png)](https://youtu.be/B_bYZnRTGJM)
75
+ [![TCP Mode](docs/video-tcp-mysql.png)](https://youtu.be/JHqcq9crbDI)
76
+
77
+ [Here is the code](https://gist.github.com/byjg/e125e478a0562190176d69ea795fd3d4) applied in the test examples above.
78
+
79
+ ----
80
+ [Open source ByJG](http://opensource.byjg.com)
@@ -54,7 +54,7 @@ EasyHAProxy follows [Semantic Versioning](https://semver.org/):
54
54
  - **MINOR**: New features, plugin additions, backward-compatible changes
55
55
  - **PATCH**: Bug fixes, documentation updates, minor improvements
56
56
 
57
- **Current Version:** `6.0.0` (as of Chart.yaml)
57
+ **Current Version:** `6.0.1` (as of Chart.yaml)
58
58
 
59
59
  ## Automated Release (Recommended)
60
60
 
@@ -329,6 +329,7 @@ helm show chart byjg/easyhaproxy
329
329
 
330
330
  | Version | Release Date | Type | Highlights |
331
331
  |---------|--------------|-------|---------------------------------------------------------------------------------------------------------------------------------------|
332
+ | 6.0.1 | 2026-02-23 | Patch | HAProxy dashboard, real-time monitoring dashboard with live traffic charts, ACME e2e test fixes |
332
333
  | 6.0.0 | 2026-XX-XX | Major | Python module refactoring (one-class-per-file), IngressClassName support (spec.ingressClassName + deprecated annotation fallback), modernized build system (uv/pyproject.toml), improved version management and release tooling, GitHub Actions workflow_dispatch push control |
333
334
  | 5.0.0 | 2025-12-04 | Major | Plugin framework (builtin plugins: JWT, FastCGI, Cloudflare, IP whitelist, deny pages, cleanup), docs restructure, examples refreshed |
334
335
  | 4.6.0 | 2024-11-27 | Minor | FastCGI plugin, JWT enhancements |