Skip to content

Commit c459b5e

Browse files
authored
Merge pull request #6243 from acmesh-official/dev
sync
2 parents f981c78 + 384f0fb commit c459b5e

26 files changed

+1491
-155
lines changed

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ RUN apk --no-cache add -f \
1515
jq \
1616
cronie
1717

18-
ENV LE_CONFIG_HOME /acme.sh
18+
ENV LE_CONFIG_HOME=/acme.sh
1919

2020
ARG AUTO_UPGRADE=1
2121

22-
ENV AUTO_UPGRADE $AUTO_UPGRADE
22+
ENV AUTO_UPGRADE=$AUTO_UPGRADE
2323

2424
#Install
2525
COPY ./ /install_acme.sh/

acme.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -5818,7 +5818,7 @@ _deploy() {
58185818
return 1
58195819
fi
58205820

5821-
if ! $d_command "$_d" "$CERT_KEY_PATH" "$CERT_PATH" "$CA_CERT_PATH" "$CERT_FULLCHAIN_PATH"; then
5821+
if ! $d_command "$_d" "$CERT_KEY_PATH" "$CERT_PATH" "$CA_CERT_PATH" "$CERT_FULLCHAIN_PATH" "$CERT_PFX_PATH"; then
58225822
_err "Error deploying for domain: $_d"
58235823
return 1
58245824
fi
@@ -6061,7 +6061,7 @@ installcronjob() {
60616061
_script="$(_readlink "$_SCRIPT_")"
60626062
_debug _script "$_script"
60636063
if [ -f "$_script" ]; then
6064-
_info "Usinging the current script from: $_script"
6064+
_info "Using the current script from: $_script"
60656065
lesh="$_script"
60666066
else
60676067
_err "Cannot install cronjob, $PROJECT_ENTRY not found."
@@ -6813,7 +6813,7 @@ _send_notify() {
68136813

68146814
_nsource="$NOTIFY_SOURCE"
68156815
if [ -z "$_nsource" ]; then
6816-
_nsource="$(hostname)"
6816+
_nsource="$(uname -n)"
68176817
fi
68186818

68196819
_nsubject="$_nsubject by $_nsource"

deploy/docker.sh

+13
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ docker_deploy() {
1818
_ccert="$3"
1919
_cca="$4"
2020
_cfullchain="$5"
21+
_cpfx="$6"
2122
_debug _cdomain "$_cdomain"
2223
_getdeployconf DEPLOY_DOCKER_CONTAINER_LABEL
2324
_debug2 DEPLOY_DOCKER_CONTAINER_LABEL "$DEPLOY_DOCKER_CONTAINER_LABEL"
@@ -88,6 +89,12 @@ docker_deploy() {
8889
_savedeployconf DEPLOY_DOCKER_CONTAINER_FULLCHAIN_FILE "$DEPLOY_DOCKER_CONTAINER_FULLCHAIN_FILE"
8990
fi
9091

92+
_getdeployconf DEPLOY_DOCKER_CONTAINER_PFX_FILE
93+
_debug2 DEPLOY_DOCKER_CONTAINER_PFX_FILE "$DEPLOY_DOCKER_CONTAINER_PFX_FILE"
94+
if [ "$DEPLOY_DOCKER_CONTAINER_PFX_FILE" ]; then
95+
_savedeployconf DEPLOY_DOCKER_CONTAINER_PFX_FILE "$DEPLOY_DOCKER_CONTAINER_PFX_FILE"
96+
fi
97+
9198
_getdeployconf DEPLOY_DOCKER_CONTAINER_RELOAD_CMD
9299
_debug2 DEPLOY_DOCKER_CONTAINER_RELOAD_CMD "$DEPLOY_DOCKER_CONTAINER_RELOAD_CMD"
93100
if [ "$DEPLOY_DOCKER_CONTAINER_RELOAD_CMD" ]; then
@@ -125,6 +132,12 @@ docker_deploy() {
125132
fi
126133
fi
127134

135+
if [ "$DEPLOY_DOCKER_CONTAINER_PFX_FILE" ]; then
136+
if ! _docker_cp "$_cid" "$_cpfx" "$DEPLOY_DOCKER_CONTAINER_PFX_FILE"; then
137+
return 1
138+
fi
139+
fi
140+
128141
if [ "$DEPLOY_DOCKER_CONTAINER_RELOAD_CMD" ]; then
129142
_info "Reloading: $DEPLOY_DOCKER_CONTAINER_RELOAD_CMD"
130143
if ! _docker_exec "$_cid" "$DEPLOY_DOCKER_CONTAINER_RELOAD_CMD"; then

deploy/proxmoxbs.sh

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
#!/usr/bin/env sh
2+
3+
# Deploy certificates to a proxmox backup server using the API.
4+
#
5+
# Environment variables that can be set are:
6+
# `DEPLOY_PROXMOXBS_SERVER`: The hostname of the proxmox backup server. Defaults to
7+
# _cdomain.
8+
# `DEPLOY_PROXMOXBS_SERVER_PORT`: The port number the management interface is on.
9+
# Defaults to 8007.
10+
# `DEPLOY_PROXMOXBS_USER`: The user we'll connect as. Defaults to root.
11+
# `DEPLOY_PROXMOXBS_USER_REALM`: The authentication realm the user authenticates
12+
# with. Defaults to pam.
13+
# `DEPLOY_PROXMOXBS_API_TOKEN_NAME`: The name of the API token created for the
14+
# user account. Defaults to acme.
15+
# `DEPLOY_PROXMOXBS_API_TOKEN_KEY`: The API token. Required.
16+
17+
proxmoxbs_deploy() {
18+
_cdomain="$1"
19+
_ckey="$2"
20+
_ccert="$3"
21+
_cca="$4"
22+
_cfullchain="$5"
23+
24+
_debug _cdomain "$_cdomain"
25+
_debug2 _ckey "$_ckey"
26+
_debug _ccert "$_ccert"
27+
_debug _cca "$_cca"
28+
_debug _cfullchain "$_cfullchain"
29+
30+
# "Sane" defaults.
31+
_getdeployconf DEPLOY_PROXMOXBS_SERVER
32+
if [ -z "$DEPLOY_PROXMOXBS_SERVER" ]; then
33+
_target_hostname="$_cdomain"
34+
else
35+
_target_hostname="$DEPLOY_PROXMOXBS_SERVER"
36+
_savedeployconf DEPLOY_PROXMOXBS_SERVER "$DEPLOY_PROXMOXBS_SERVER"
37+
fi
38+
_debug2 DEPLOY_PROXMOXBS_SERVER "$_target_hostname"
39+
40+
_getdeployconf DEPLOY_PROXMOXBS_SERVER_PORT
41+
if [ -z "$DEPLOY_PROXMOXBS_SERVER_PORT" ]; then
42+
_target_port="8007"
43+
else
44+
_target_port="$DEPLOY_PROXMOXBS_SERVER_PORT"
45+
_savedeployconf DEPLOY_PROXMOXBS_SERVER_PORT "$DEPLOY_PROXMOXBS_SERVER_PORT"
46+
fi
47+
_debug2 DEPLOY_PROXMOXBS_SERVER_PORT "$_target_port"
48+
49+
# Complete URL.
50+
_target_url="https://${_target_hostname}:${_target_port}/api2/json/nodes/localhost/certificates/custom"
51+
_debug TARGET_URL "$_target_url"
52+
53+
# More "sane" defaults.
54+
_getdeployconf DEPLOY_PROXMOXBS_USER
55+
if [ -z "$DEPLOY_PROXMOXBS_USER" ]; then
56+
_proxmoxbs_user="root"
57+
else
58+
_proxmoxbs_user="$DEPLOY_PROXMOXBS_USER"
59+
_savedeployconf DEPLOY_PROXMOXBS_USER "$DEPLOY_PROXMOXBS_USER"
60+
fi
61+
_debug2 DEPLOY_PROXMOXBS_USER "$_proxmoxbs_user"
62+
63+
_getdeployconf DEPLOY_PROXMOXBS_USER_REALM
64+
if [ -z "$DEPLOY_PROXMOXBS_USER_REALM" ]; then
65+
_proxmoxbs_user_realm="pam"
66+
else
67+
_proxmoxbs_user_realm="$DEPLOY_PROXMOXBS_USER_REALM"
68+
_savedeployconf DEPLOY_PROXMOXBS_USER_REALM "$DEPLOY_PROXMOXBS_USER_REALM"
69+
fi
70+
_debug2 DEPLOY_PROXMOXBS_USER_REALM "$_proxmoxbs_user_realm"
71+
72+
_getdeployconf DEPLOY_PROXMOXBS_API_TOKEN_NAME
73+
if [ -z "$DEPLOY_PROXMOXBS_API_TOKEN_NAME" ]; then
74+
_proxmoxbs_api_token_name="acme"
75+
else
76+
_proxmoxbs_api_token_name="$DEPLOY_PROXMOXBS_API_TOKEN_NAME"
77+
_savedeployconf DEPLOY_PROXMOXBS_API_TOKEN_NAME "$DEPLOY_PROXMOXBS_API_TOKEN_NAME"
78+
fi
79+
_debug2 DEPLOY_PROXMOXBS_API_TOKEN_NAME "$_proxmoxbs_api_token_name"
80+
81+
# This is required.
82+
_getdeployconf DEPLOY_PROXMOXBS_API_TOKEN_KEY
83+
if [ -z "$DEPLOY_PROXMOXBS_API_TOKEN_KEY" ]; then
84+
_err "API key not provided."
85+
return 1
86+
else
87+
_proxmoxbs_api_token_key="$DEPLOY_PROXMOXBS_API_TOKEN_KEY"
88+
_savedeployconf DEPLOY_PROXMOXBS_API_TOKEN_KEY "$DEPLOY_PROXMOXBS_API_TOKEN_KEY"
89+
fi
90+
_debug2 DEPLOY_PROXMOXBS_API_TOKEN_KEY "$_proxmoxbs_api_token_key"
91+
92+
# PBS API Token header value. Used in "Authorization: PBSAPIToken".
93+
_proxmoxbs_header_api_token="${_proxmoxbs_user}@${_proxmoxbs_user_realm}!${_proxmoxbs_api_token_name}:${_proxmoxbs_api_token_key}"
94+
_debug2 "Auth Header" "$_proxmoxbs_header_api_token"
95+
96+
# Ugly. I hate putting heredocs inside functions because heredocs don't
97+
# account for whitespace correctly but it _does_ work and is several times
98+
# cleaner than anything else I had here.
99+
#
100+
# This dumps the json payload to a variable that should be passable to the
101+
# _psot function.
102+
_json_payload=$(
103+
cat <<HEREDOC
104+
{
105+
"certificates": "$(tr '\n' ':' <"$_cfullchain" | sed 's/:/\\n/g')",
106+
"key": "$(tr '\n' ':' <"$_ckey" | sed 's/:/\\n/g')",
107+
"node":"localhost",
108+
"restart":true,
109+
"force":true
110+
}
111+
HEREDOC
112+
)
113+
_debug2 Payload "$_json_payload"
114+
115+
_info "Push certificates to server"
116+
export HTTPS_INSECURE=1
117+
export _H1="Authorization: PBSAPIToken=${_proxmoxbs_header_api_token}"
118+
_post "$_json_payload" "$_target_url" "" POST "application/json"
119+
120+
}

deploy/synology_dsm.sh

+4-4
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,8 @@ synology_dsm_deploy() {
186186
if [ -n "$SYNO_USE_TEMP_ADMIN" ]; then
187187
_getdeployconf SYNO_LOCAL_HOSTNAME
188188
_debug SYNO_LOCAL_HOSTNAME "${SYNO_LOCAL_HOSTNAME:-}"
189-
if [ "$SYNO_LOCAL_HOSTNAME" != "1" ] && [ "$SYNO_LOCAL_HOSTNAME" == "$SYNO_HOSTNAME" ]; then
190-
if [ "$SYNO_HOSTNAME" != "localhost" ] && [ "$SYNO_HOSTNAME" != "127.0.0.1" ]; then
189+
if [ "$SYNO_HOSTNAME" != "localhost" ] && [ "$SYNO_HOSTNAME" != "127.0.0.1" ]; then
190+
if [ "$SYNO_LOCAL_HOSTNAME" != "1" ]; then
191191
_err "SYNO_USE_TEMP_ADMIN=1 only support local deployment, though if you are sure that the hostname $SYNO_HOSTNAME is targeting to your **current local machine**, execute 'export SYNO_LOCAL_HOSTNAME=1' then rerun."
192192
return 1
193193
fi
@@ -320,7 +320,7 @@ synology_dsm_deploy() {
320320
_cleardeployconf SYNO_DEVICE_ID
321321
_cleardeployconf SYNO_DEVICE_NAME
322322
_savedeployconf SYNO_USE_TEMP_ADMIN "$SYNO_USE_TEMP_ADMIN"
323-
_savedeployconf SYNO_LOCAL_HOSTNAME "$SYNO_HOSTNAME"
323+
_savedeployconf SYNO_LOCAL_HOSTNAME "$SYNO_LOCAL_HOSTNAME"
324324
else
325325
_savedeployconf SYNO_USERNAME "$SYNO_USERNAME"
326326
_savedeployconf SYNO_PASSWORD "$SYNO_PASSWORD"
@@ -411,7 +411,7 @@ _temp_admin_create() {
411411
_username="$1"
412412
_password="$2"
413413
synouser --del "$_username" >/dev/null 2>/dev/null
414-
synouser --add "$_username" "$_password" "" 0 "[email protected]" 0 >/dev/null
414+
synouser --add "$_username" "$_password" "" 0 "" 0 >/dev/null
415415
}
416416

417417
_temp_admin_cleanup() {

deploy/truenas.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ truenas_deploy() {
217217
_app_id=$(echo "$_app_id_list" | sed -n "${i}p")
218218
_app_config="$(_post "\"$_app_id\"" "$_api_url/app/config" "" "POST" "application/json")"
219219
# Check if the app use the same certificate TrueNAS web UI
220-
_app_active_cert_config=$(echo "$_app_config" | _json_decode | jq -r ".ix_certificates[\"$_active_cert_id\"]")
220+
_app_active_cert_config=$(echo "$_app_config" | tr -d '\000-\037' | _json_decode | jq -r ".ix_certificates[\"$_active_cert_id\"]")
221221
if [ "$_app_active_cert_config" != "null" ]; then
222222
_info "Updating certificate from $_active_cert_id to $_cert_id for app: $_app_id"
223223
#Replace the old certificate id with the new one in path

0 commit comments

Comments
 (0)