Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
diff etc/periodic/daily/720.local-triggered-action @ 391:8b1740deedbb
Refactor: Renamed the weekly 800.local-certbot-post-deploy to a daily 720.local-triggered-action.
This is because the script is generic enough to not only work for
certbot (ACME, Let's Encrypt) related deploy actions.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Thu, 23 Feb 2023 21:56:54 +0100 |
| parents | etc/periodic/weekly/800.local-certbot-post-deploy@9921352225a9 |
| children | d83f877d7849 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/periodic/daily/720.local-triggered-action Thu Feb 23 21:56:54 2023 +0100 @@ -0,0 +1,83 @@ +#!/bin/sh +# -*- indent-tabs-mode: nil; -*- +# +# @(#)@@SIMPLEVERSIONTAG@@ +# +# Weekly script to handle actions triggered by newly existing files. +# This is e.g. convenient to notify a running daemon to reload because +# of renewed certificates. +# + +# If there is a global system configuration file, suck it in. +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +: ${daily_local_triggered_action_enable:=NO} +: ${daily_local_triggered_action_files:=} +# e.g. "service nginx onestatus" +: ${daily_local_triggered_action_condition:=} +# e.g. "service nginx reload" +: ${daily_local_triggered_action_action:=} +: ${daily_local_triggered_action_files_remove:=YES} + +case "${daily_local_triggered_action_enable}" in + [Yy][Ee][Ss]) + echo + echo "Testing for newly renewed Let's Encrypt certificates" + + rc=0 + + _do_action="" + _remove_files="" + + for _f in ${daily_local_triggered_action_files}; do + if [ -r "${_f}" ]; then + _do_action="yes" + case "${daily_local_triggered_action_files_remove}" in + [Yy][Ee][Ss]) + _remove_files="${_remove_files} ${_f}" + ;; + esac + fi + done + + if [ "${_do_action}" = "yes" ]; then + if [ -z "${daily_local_triggered_action_action}" ]; then + echo "ERROR: no deploy action defined" 1>&2 + exit 2 + fi + + echo "Deploying newly renewed Let's Encrypt certificates" + if [ -n "${daily_local_triggered_action_condition}" ]; then + if ${daily_local_triggered_action_condition} ; then + ${daily_local_triggered_action_action} + rc=$? + else + rc=1 + fi + else + ${daily_local_triggered_action_action} + rc=$? + fi + + # Remove trigger files if configured to do so + if [ ${rc} -eq 0 ]; then + echo "Removing trigger files..." + for _rf in ${_remove_files}; do + rm -fv "${_rf}" + done + fi + else + echo "No newly renewed Let's Encrypt certificates found" + fi + ;; + + *) + rc=0 + ;; +esac + +exit ${rc}
