@ -298,15 +298,35 @@ haproxy_deploy() {
if [ " ${ Le_Deploy_haproxy_hot_update } " = "yes" ] ; then
if [ " ${ Le_Deploy_haproxy_hot_update } " = "yes" ] ; then
# Update certificate over HAProxy stats socket.
# Update certificate over HAProxy stats socket.
_info "Update the certificate over HAProxy stats socket."
if _exists socat; then
if _exists socat; then
# look for the certificate on the stats socket, to chose between updating or creating one
_socat_cert_cmd = " echo 'show ssl cert' | socat ' ${ _statssock } ' - | grep -q '^ ${ _pem } $' "
_socat_cert_cmd = " echo 'show ssl cert' | socat ' ${ _statssock } ' - | grep -q '^ ${ _pem } $' "
_debug _socat_cert_cmd " ${ _socat_cert_cmd } "
_debug _socat_cert_cmd " ${ _socat_cert_cmd } "
eval " ${ _socat_cert_cmd } "
eval " ${ _socat_cert_cmd } "
_ret = $?
_ret = $?
if [ " ${ _ret } " != "0" ] ; then
if [ " ${ _ret } " != "0" ] ; then
_err " Couldn't find ' ${ _pem } ' in haproxy 'show ssl cert' "
return " ${ _ret } "
_newcert = "1"
_info " Creating new certificate ' ${ _pem } ' over HAProxy stats socket. "
# certificate wasn't found, it's a new one. We should check if the crt-list exists and creates/inserts the certificate.
_socat_crtlist_show_cmd = " echo 'show ssl crt-list' | socat ' ${ _statssock } ' - | grep -q '^ ${ Le_Deploy_haproxy_pem_path } $' "
_debug _socat_crtlist_show_cmd " ${ _socat_crtlist_show_cmd } "
eval " ${ _socat_crtlist_show_cmd } "
_ret = $?
if [ " ${ _ret } " != "0" ] ; then
_err " Couldn't find ' ${ Le_Deploy_haproxy_pem_path } ' in haproxy 'show ssl crt-list' "
return " ${ _ret } "
fi
# create a new certificate
_socat_new_cmd = " echo 'new ssl cert ${ _pem } ' | socat ' ${ _statssock } ' - | grep -q 'New empty' "
_debug _socat_new_cmd " ${ _socat_new_cmd } "
eval " ${ _socat_new_cmd } "
_ret = $?
if [ " ${ _ret } " != "0" ] ; then
_err " Couldn't create ' ${ _pem } ' in haproxy "
return " ${ _ret } "
fi
else
_info " Update existing certificate ' ${ _pem } ' over HAProxy stats socket. "
fi
fi
_socat_cert_set_cmd = " echo -e 'set ssl cert ${ _pem } <<\n $( cat " ${ _pem } " ) \n' | socat ' ${ _statssock } ' - | grep -q 'Transaction created' "
_socat_cert_set_cmd = " echo -e 'set ssl cert ${ _pem } <<\n $( cat " ${ _pem } " ) \n' | socat ' ${ _statssock } ' - | grep -q 'Transaction created' "
_debug _socat_cert_set_cmd " ${ _socat_cert_set_cmd } "
_debug _socat_cert_set_cmd " ${ _socat_cert_set_cmd } "
@ -324,6 +344,17 @@ haproxy_deploy() {
_err " Can't commit ' ${ _pem } ' in haproxy "
_err " Can't commit ' ${ _pem } ' in haproxy "
return ${ _ret }
return ${ _ret }
fi
fi
if [ " ${ _newcert } " = "1" ] ; then
# if this is a new certificate, it needs to be inserted into the crt-list`
_socat_cert_add_cmd = " echo 'add ssl crt-list ${ Le_Deploy_haproxy_pem_path } ${ _pem } ' | socat ' ${ _statssock } ' - | grep -q 'Success!' "
_debug _socat_cert_add_cmd " ${ _socat_cert_add_cmd } "
eval " ${ _socat_cert_add_cmd } "
_ret = $?
if [ " ${ _ret } " != "0" ] ; then
_err " Can't update ' ${ _pem } ' in haproxy "
return " ${ _ret } "
fi
fi
else
else
_err "'socat' is not available, couldn't update over stats socket"
_err "'socat' is not available, couldn't update over stats socket"
fi
fi