aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorLeonardo Mörlein <git@irrelefant.net>2021-04-12 01:30:39 +0200
committerRosen Penev <rosenp@gmail.com>2021-04-24 01:16:57 -0700
commitb80781150b51c4cda9810197cc81659a5e17fdfb (patch)
tree6e8956f3386db137d65ffff90036666d5c30ee4a /net
parentda3be62a9fbc636f8925c997e62a75459fe8f3cd (diff)
uacme: do not override production state dir variable
With this commit, issue_cert() can be called multiple times alternating between staging and production certificates within a script. Before this commit, the production state dir was stored in $STATE_DIR. But in the case of $use_staging=1, this variable was overwritten in issue_cert() with $STAGING_STATE_DIR. This made it impossible to call issue_cert() with $use_staging=0 afterwards. Now the production state dir is stored in $PRODUCTION_STATE_DIR. This way it is not overridden anymore and issue_cert() can be called multiple times alternating with production and staging. Signed-off-by: Leonardo Mörlein <git@irrelefant.net>
Diffstat (limited to 'net')
-rw-r--r--net/uacme/files/run.sh20
1 files changed, 14 insertions, 6 deletions
diff --git a/net/uacme/files/run.sh b/net/uacme/files/run.sh
index e6a1461d5..247e563bc 100644
--- a/net/uacme/files/run.sh
+++ b/net/uacme/files/run.sh
@@ -28,7 +28,7 @@ export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
export NO_TIMESTAMP=1
UHTTPD_LISTEN_HTTP=
-STATE_DIR='/etc/acme'
+PRODUCTION_STATE_DIR='/etc/acme'
STAGING_STATE_DIR='/etc/acme/staging'
ACCOUNT_EMAIL=
@@ -219,6 +219,8 @@ issue_cert()
local staging=
local HOOK=
+ # reload uci values, as the value of use_staging may have changed
+ config_load acme
config_get_bool enabled "$section" enabled 0
config_get_bool use_staging "$section" use_staging
config_get_bool update_uhttpd "$section" update_uhttpd
@@ -243,7 +245,13 @@ issue_cert()
elif [ "$APP" = "acme" ]; then
[ "$DEBUG" -eq "1" ] && acme_args="$acme_args --debug"
fi
- [ "$use_staging" -eq "1" ] && STATE_DIR="$STAGING_STATE_DIR" && staging="--staging"
+ if [ "$use_staging" -eq "1" ]; then
+ STATE_DIR="$STAGING_STATE_DIR";
+ staging="--staging";
+ else
+ STATE_DIR="$PRODUCTION_STATE_DIR";
+ staging="";
+ fi
set -- $domains
main_domain=$1
@@ -443,8 +451,8 @@ load_vars()
{
local section="$1"
- STATE_DIR=$(config_get "$section" state_dir)
- STAGING_STATE_DIR=$STATE_DIR/staging
+ PRODUCTION_STATE_DIR=$(config_get "$section" state_dir)
+ STAGING_STATE_DIR=$PRODUCTION_STATE_DIR/staging
ACCOUNT_EMAIL=$(config_get "$section" account_email)
DEBUG=$(config_get "$section" debug)
}
@@ -458,12 +466,12 @@ fi
config_load acme
config_foreach load_vars acme
-if [ -z "$STATE_DIR" ] || [ -z "$ACCOUNT_EMAIL" ]; then
+if [ -z "$PRODUCTION_STATE_DIR" ] || [ -z "$ACCOUNT_EMAIL" ]; then
err "state_dir and account_email must be set"
exit 1
fi
-[ -d "$STATE_DIR" ] || mkdir -p "$STATE_DIR"
+[ -d "$PRODUCTION_STATE_DIR" ] || mkdir -p "$PRODUCTION_STATE_DIR"
[ -d "$STAGING_STATE_DIR" ] || mkdir -p "$STAGING_STATE_DIR"
trap err_out HUP TERM