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.
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/PKG-INFO +36 -115
- easyhaproxy-6.0.1/README.md +80 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/RELEASE.md +2 -1
- easyhaproxy-6.0.1/deploy/docker/assets/etc/easyhaproxy/www/dashboard.html +103 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/docker-compose.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/kubernetes/README.md +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/kubernetes/easyhaproxy-clusterip.yml +13 -13
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/kubernetes/easyhaproxy-daemonset.yml +11 -11
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/kubernetes/easyhaproxy-nodeport.yml +13 -13
- easyhaproxy-6.0.1/docs/concepts/_category_.json +4 -0
- easyhaproxy-6.0.1/docs/concepts/index.md +103 -0
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/concepts}/limitations.md +2 -1
- easyhaproxy-6.0.1/docs/dashboard.png +0 -0
- easyhaproxy-6.0.1/docs/dashboard_login.png +0 -0
- easyhaproxy-6.0.1/docs/dashboard_thumbnail.png +0 -0
- easyhaproxy-6.0.1/docs/getting-started/_category_.json +4 -0
- easyhaproxy-6.0.1/docs/getting-started/docker.md +66 -0
- easyhaproxy-6.0.1/docs/getting-started/index.md +51 -0
- easyhaproxy-6.0.1/docs/getting-started/kubernetes.md +256 -0
- easyhaproxy-6.0.1/docs/getting-started/native.md +130 -0
- easyhaproxy-6.0.1/docs/getting-started/static.md +105 -0
- easyhaproxy-6.0.1/docs/getting-started/swarm.md +100 -0
- easyhaproxy-6.0.1/docs/guides/_category_.json +4 -0
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/acme.md +11 -37
- easyhaproxy-6.0.1/docs/guides/dashboard.md +144 -0
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/digitalocean.md +2 -2
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/dokku.md +1 -0
- easyhaproxy-6.0.1/docs/guides/helm.md +50 -0
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/microk8s.md +2 -1
- easyhaproxy-6.0.1/docs/guides/plugin-development.md +695 -0
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/plugins.md +13 -97
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/guides}/ssl.md +3 -2
- easyhaproxy-6.0.1/docs/reference/_category_.json +4 -0
- easyhaproxy-6.0.0/docs/pip.md → easyhaproxy-6.0.1/docs/reference/cli.md +14 -144
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/reference}/container-labels.md +22 -2
- easyhaproxy-6.0.0/docs/environment-variable.md → easyhaproxy-6.0.1/docs/reference/environment-variables.md +25 -6
- easyhaproxy-6.0.1/docs/reference/helm.md +115 -0
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/reference}/other.md +10 -9
- easyhaproxy-6.0.1/docs/reference/plugins/_category_.json +4 -0
- {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/cleanup.md +5 -9
- {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/cloudflare.md +3 -12
- {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/deny-pages.md +3 -7
- {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/fastcgi.md +18 -39
- {easyhaproxy-6.0.0/docs/Plugins → easyhaproxy-6.0.1/docs/reference/plugins}/ip-whitelist.md +3 -8
- easyhaproxy-6.0.1/docs/reference/plugins/jwt-validator.md +196 -0
- {easyhaproxy-6.0.0/docs → easyhaproxy-6.0.1/docs/reference}/volumes.md +18 -17
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/Chart.yaml +2 -2
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/pyproject.toml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easyhaproxy/main.py +36 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easymapping/config_generator.py +3 -2
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/consts.py +8 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/fastcgi.py +2 -4
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/haproxy.cfg.j2 +15 -1
- easyhaproxy-6.0.1/tests/conftest.py +68 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/docker.txt +15 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-letsencrypt.txt +15 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-multiple-hosts.txt +15 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/ssl-loose.txt +15 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/static-cors.txt +15 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/static.txt +15 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_plugins.py +4 -4
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/README.md +4 -4
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-acme-e2e.yml +4 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-acme.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-portainer.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/php-app/README.md +2 -2
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/README.md +4 -4
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/cloudflare.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/ip-whitelist.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/jwt-validator.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/plugins-combined.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/service.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/service_tls.yml +1 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/README.md +3 -3
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/README.md +4 -4
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_docker_compose.py +15 -10
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_kubernetes.py +20 -1
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/uv.lock +1 -1
- easyhaproxy-6.0.0/README.md +0 -159
- easyhaproxy-6.0.0/docs/Plugins/jwt-validator.md +0 -385
- easyhaproxy-6.0.0/docs/docker.md +0 -79
- easyhaproxy-6.0.0/docs/helm.md +0 -85
- easyhaproxy-6.0.0/docs/kubernetes.md +0 -514
- easyhaproxy-6.0.0/docs/plugin-development.md +0 -2094
- easyhaproxy-6.0.0/docs/static.md +0 -140
- easyhaproxy-6.0.0/docs/swarm.md +0 -109
- easyhaproxy-6.0.0/tests/conftest.py +0 -43
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.dockerignore +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.github/FUNDING.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.github/dependabot.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.github/workflows/build.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.gitignore +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.python-version +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.run/pytest in tests.run.xml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.vscode/launch.json +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/.vscode/settings.json +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/CONTRIBUTING.md +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/LICENSE +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/Makefile +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/build-multiarch.sh +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/Dockerfile +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/entrypoint.sh +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/conf.d/README.md +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/400.http +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/403.http +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/408.http +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/500.http +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/502.http +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/503.http +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/deploy/docker/assets/etc/easyhaproxy/haproxy/errors-custom/504.http +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_digitalocean.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_docker.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_dokku.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_helm.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_kubernetes.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_logo.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_microk8s.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_static.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/easyhaproxy_swarm.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/icons.xcf +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/logo.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/logo.xcf +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-docker-ssl.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-docker.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-kubernetes-letsencrypt.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-kubernetes.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-static.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/docs/video-tcp-mysql.png +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/.helmignore +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/LICENSE +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/README.md +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/_helpers.tpl +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/clusterrole.yaml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/clusterrolebinding.yaml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/deployment.yaml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/ingressclass.yaml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/service.yaml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/templates/serviceaccount.yaml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/values.schema.json +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/helm/easyhaproxy/values.yaml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/scripts/bump-version.sh +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easyhaproxy/__init__.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easymapping/__init__.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/easymapping/label_handler.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/__init__.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/certbot.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/container_env.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/filter.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/functions.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/haproxy.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/functions/loggers.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/__init__.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/__init__.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/cleanup.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/cloudflare.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/deny_pages.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/ip_whitelist.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/builtin/jwt_validator.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/interface.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/manager.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/plugins/types.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/__init__.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/docker.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/interface.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/kubernetes.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/static.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/processor/swarm.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/bind.j2 +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/frontend-mode-http.j2 +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/frontend-mode-tcp.j2 +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/ssl_default.j2 +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/ssl_loose.j2 +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/src/templates/ssl_strict.j2 +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/__init__.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/no-services.txt +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-fcgi.txt +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-multi-containers.txt +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-redirect-ssl.txt +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services-tcp.txt +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/services.txt +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/expected/ssl-strict.txt +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/00_haproxy.cfg +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/10_haproxy.cfg +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/no-services +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/run_bash.sh +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-changed-label +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-clone-to-ssl +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-fcgi +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-letsencrypt +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-multi-containers +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-multiple-hosts +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-redirect-ssl +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-tcp +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-cloudflare +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-deny-pages +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-ip-whitelist +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-jwt-validator +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/services-with-multiple-plugins +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/static.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/static_cors.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/fixtures/static_multi_domain.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_certbot.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_certbot_haproxy_config.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_containerenv.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_daemonize.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_docker.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_functions.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_kubernetes_processor.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_labels.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_parser.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests/test_static.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/conftest.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/AGENTS.md +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-changed-label.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-cloudflare.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-ip-whitelist.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-jwt-validator.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-multi-containers.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-php-fpm.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-plugins-combined.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-portainer-app-example.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose-proxy-headers.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/docker-compose.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/pebble-config.json +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/php-app/index.php +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/php-app/info.php +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/docker/php-app/test-path-info.php +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/fixtures/header-echo/Dockerfile +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/fixtures/header-echo/README.md +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/fixtures/header-echo/server.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/generate-keys.sh +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/.gitignore +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/jwt-validator-secret-example.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/setup-cluster.sh +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/kubernetes/teardown-cluster.sh +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/conf/config-basic.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/conf/config-certbot.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/conf/config-deny-pages.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/conf/config-jwt-validator.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/static/docker-compose.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/cloudflare.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/easyhaproxy.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/ip-whitelist.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/jwt-validator.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/plugins-combined.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/portainer.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/swarm/services.yml +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_proxy_headers.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_static.py +0 -0
- {easyhaproxy-6.0.0 → easyhaproxy-6.0.1}/tests_e2e/test_swarm.py +0 -0
- {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.
|
|
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
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
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
|
-
|
|
76
|
+
## Supported platforms
|
|
113
77
|
|
|
114
|
-
[](docs/kubernetes.md)
|
|
115
|
-
[](docs/swarm.md)
|
|
116
|
-
[](docs/docker.md)
|
|
117
|
-
[](docs/static.md)
|
|
78
|
+
[](docs/getting-started/kubernetes.md)
|
|
79
|
+
[](docs/getting-started/swarm.md)
|
|
80
|
+
[](docs/getting-started/docker.md)
|
|
81
|
+
[](docs/getting-started/static.md)
|
|
118
82
|
|
|
119
|
-
|
|
83
|
+
Install using tools:
|
|
120
84
|
|
|
121
|
-
[](docs/helm.md)
|
|
122
|
-
[](docs/microk8s.md)
|
|
123
|
-
[](docs/dokku.md)
|
|
124
|
-
[](docs/digitalocean.md)
|
|
85
|
+
[](docs/guides/helm.md)
|
|
86
|
+
[](docs/guides/microk8s.md)
|
|
87
|
+
[](docs/guides/dokku.md)
|
|
88
|
+
[](docs/guides/digitalocean.md)
|
|
125
89
|
|
|
126
|
-
##
|
|
90
|
+
## Documentation
|
|
127
91
|
|
|
128
|
-
|
|
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
|
-
|
|
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
|
-
|
|
178
|
-
|
|
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
|
-
|
|
106
|
+
## Monitoring Dashboard
|
|
182
107
|
|
|
183
|
-
|
|
184
|
-
# Install with uv
|
|
185
|
-
uv pip install easymapping
|
|
108
|
+
[](docs/guides/dashboard.md)
|
|
186
109
|
|
|
187
|
-
|
|
188
|
-
|
|
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
|
+
[](https://github.com/sponsors/byjg)
|
|
4
|
+
[](http://opensource.byjg.com)
|
|
5
|
+
[](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml)
|
|
6
|
+
[](https://github.com/byjg/docker-easy-haproxy/)
|
|
7
|
+
[](https://opensource.byjg.com/opensource/licensing.html)
|
|
8
|
+
[](https://github.com/byjg/docker-easy-haproxy/releases/)
|
|
9
|
+
[](https://opensource.byjg.com/helm)
|
|
10
|
+
[](https://artifacthub.io/packages/search?repo=byjg)
|
|
11
|
+
|
|
12
|
+

|
|
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
|
+
[](docs/getting-started/kubernetes.md)
|
|
32
|
+
[](docs/getting-started/swarm.md)
|
|
33
|
+
[](docs/getting-started/docker.md)
|
|
34
|
+
[](docs/getting-started/static.md)
|
|
35
|
+
|
|
36
|
+
Install using tools:
|
|
37
|
+
|
|
38
|
+
[](docs/guides/helm.md)
|
|
39
|
+
[](docs/guides/microk8s.md)
|
|
40
|
+
[](docs/guides/dokku.md)
|
|
41
|
+
[](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
|
+
[](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
|
+
[](https://youtu.be/ar8raFK0R1k)
|
|
71
|
+
[](https://youtu.be/xwIdj9mc2mU)
|
|
72
|
+
[](https://youtu.be/uq7TuLIijks)
|
|
73
|
+
[](https://youtu.be/v9Q4M5Al7AQ)
|
|
74
|
+
[](https://youtu.be/B_bYZnRTGJM)
|
|
75
|
+
[](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.
|
|
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 |
|