This directory contains a fork of the acme.sh deploy script for haproxy which
allow acme.sh to run as non-root and don't require to reload haproxy.

The content of this directory is licensed under GPLv3 as explained in the
LICENSE file.

This was originally written for this pull request
https://github.com/acmesh-official/acme.sh/pull/4581.

The documentation is available on the haproxy wiki:
https://github.com/haproxy/wiki/wiki/Letsencrypt-integration-with-HAProxy-and-acme.sh

The haproxy.sh script must replace the one provided by acme.sh.
