Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
9fb5bb62
Commit
9fb5bb62
authored
May 14, 2022
by
PM Extra
Browse files
refact ssh hook to use deploy config
parent
ed58f320
Changes
2
Show whitespace changes
Inline
Side-by-side
acme.sh
View file @
9fb5bb62
...
...
@@ -2332,6 +2332,26 @@ _readdomainconf() {
_read_conf
"
$DOMAIN_CONF
"
"
$1
"
}
#_migratedomainconf oldkey newkey base64encode
_migratedomainconf
()
{
_old_key
=
"
$1
"
_new_key
=
"
$2
"
_b64encode
=
"
$3
"
_value
=
$(
_readdomainconf
"
$_old_key
"
)
if
[
-z
"
$_value
"
]
;
then
return
1
# oldkey is not found
fi
_savedomainconf
"
$_new_key
"
"
$_value
"
"
$_b64encode
"
_cleardomainconf
"
$_old_key
"
_debug
"Domain config
$_old_key
has been migrated to
$_new_key
"
}
#_migratedeployconf oldkey newkey base64encode
_migratedeployconf
()
{
_migratedomainconf
"
$1
"
"SAVED_
$2
"
"
$3
"
||
_migratedomainconf
"SAVED_
$1
"
"SAVED_
$2
"
"
$3
"
# try only when oldkey itself is not found
}
#key value base64encode
_savedeployconf
()
{
_savedomainconf
"SAVED_
$1
"
"
$2
"
"
$3
"
...
...
deploy/ssh.sh
View file @
9fb5bb62
...
...
@@ -23,8 +23,8 @@
# export DEPLOY_SSH_BACKUP="" # yes or no, default to yes or previously saved value
# export DEPLOY_SSH_BACKUP_PATH=".acme_ssh_deploy" # path on remote system. Defaults to .acme_ssh_deploy
# export DEPLOY_SSH_MULTI_CALL="" # yes or no, default to no or previously saved value
# export DEPLOY_SSH_USE_SCP="" yes or no
, default to no
# export DEPLOY_SSH_SCP_CMD="" defaults to "scp -q
"
# export DEPLOY_SSH_USE_SCP="" yes or no, default to no
# export DEPLOY_SSH_SCP_CMD="" defaults to "scp -q"
#
######## Public functions #####################
...
...
@@ -44,110 +44,134 @@ ssh_deploy() {
_debug _cfullchain
"
$_cfullchain
"
# USER is required to login by SSH to remote host.
_migratedeployconf Le_Deploy_ssh_user DEPLOY_SSH_USER
_getdeployconf DEPLOY_SSH_USER
_debug2 DEPLOY_SSH_USER
"
$DEPLOY_SSH_USER
"
if
[
-z
"
$DEPLOY_SSH_USER
"
]
;
then
if
[
-z
"
$Le_Deploy_ssh_user
"
]
;
then
_err
"DEPLOY_SSH_USER not defined."
return
1
fi
else
Le_Deploy_ssh_user
=
"
$DEPLOY_SSH_USER
"
_savedeployconf Le_Deploy_ssh_user
"
$Le_Deploy_ssh_user
"
fi
_savedeployconf DEPLOY_SSH_USER
"
$DEPLOY_SSH_USER
"
# SERVER is optional. If not provided then use _cdomain
_migratedeployconf Le_Deploy_ssh_server DEPLOY_SSH_SERVER
_getdeployconf DEPLOY_SSH_SERVER
_debug2 DEPLOY_SSH_SERVER
"
$DEPLOY_SSH_SERVER
"
if
[
-n
"
$DEPLOY_SSH_SERVER
"
]
;
then
Le_Deploy_ssh_server
=
"
$DEPLOY_SSH_SERVER
"
_savedeployconf Le_Deploy_ssh_server
"
$Le_Deploy_ssh_server
"
elif
[
-z
"
$Le_Deploy_ssh_server
"
]
;
then
Le_Deploy_ssh_server
=
"
$_cdomain
"
if
[
-z
"
$DEPLOY_SSH_SERVER
"
]
;
then
DEPLOY_SSH_SERVER
=
"
$_cdomain
"
fi
_savedeployconf DEPLOY_SSH_SERVER
"
$DEPLOY_SSH_SERVER
"
# CMD is optional. If not provided then use ssh
_migratedeployconf Le_Deploy_ssh_cmd DEPLOY_SSH_CMD
_getdeployconf DEPLOY_SSH_CMD
_debug2 DEPLOY_SSH_CMD
"
$DEPLOY_SSH_CMD
"
if
[
-n
"
$DEPLOY_SSH_CMD
"
]
;
then
Le_Deploy_ssh_cmd
=
"
$DEPLOY_SSH_CMD
"
_savedeployconf Le_Deploy_ssh_cmd
"
$Le_Deploy_ssh_cmd
"
elif
[
-z
"
$Le_Deploy_ssh_cmd
"
]
;
then
Le_Deploy_ssh_cmd
=
"ssh -T"
fi
# USE_SCP is optional. If not provided then default to previously saved
# value (which may be undefined... equivalent to "no").
if
[
"
$DEPLOY_SSH_USE_SCP
"
=
"yes"
]
;
then
Le_Deploy_ssh_use_scp
=
"yes"
_savedeployconf Le_Deploy_ssh_use_scp
"
$Le_Deploy_ssh_use_scp
"
elif
[
"
$DEPLOY_SSH_USE_SCP
"
=
"no"
]
;
then
Le_Deploy_ssh_use_scp
=
""
_cleardomainconf Le_Deploy_ssh_use_scp
fi
# SCP_CMD is optional. If not provided then use scp
if
[
-n
"
$DEPLOY_SSH_SCP_CMD
"
]
;
then
Le_Deploy_ssh_scp_cmd
=
"
$DEPLOY_SSH_SCP_CMD
"
_savedeployconf Le_Deploy_ssh_scp_cmd
"
$Le_Deploy_ssh_scp_cmd
"
elif
[
-z
"
$Le_Deploy_ssh_scp_cmd
"
]
;
then
Le_Deploy_ssh_scp_cmd
=
"scp -q"
if
[
-z
"
$DEPLOY_SSH_CMD
"
]
;
then
DEPLOY_SSH_CMD
=
"ssh -T"
fi
_savedeployconf DEPLOY_SSH_CMD
"
$DEPLOY_SSH_CMD
"
# BACKUP is optional. If not provided then default to previously saved value or yes.
_migratedeployconf Le_Deploy_ssh_backup DEPLOY_SSH_BACKUP
_getdeployconf DEPLOY_SSH_BACKUP
_debug2 DEPLOY_SSH_BACKUP
"
$DEPLOY_SSH_BACKUP
"
if
[
"
$DEPLOY_SSH_BACKUP
"
=
"no"
]
;
then
Le_Deploy_ssh_backup
=
"no"
elif
[
-z
"
$Le_Deploy_ssh_backup
"
]
||
[
"
$DEPLOY_SSH_BACKUP
"
=
"yes"
]
;
then
Le_Deploy_ssh_backup
=
"yes"
if
[
-z
"
$DEPLOY_SSH_BACKUP
"
]
;
then
DEPLOY_SSH_BACKUP
=
"yes"
fi
_savedeployconf
Le_Deploy_ssh_backup
"
$Le_Deploy_ssh_backup
"
_savedeployconf
DEPLOY_SSH_BACKUP
"
$DEPLOY_SSH_BACKUP
"
# BACKUP_PATH is optional. If not provided then default to previously saved value or .acme_ssh_deploy
_migratedeployconf Le_Deploy_ssh_backup_path DEPLOY_SSH_BACKUP_PATH
_getdeployconf DEPLOY_SSH_BACKUP_PATH
_debug2 DEPLOY_SSH_BACKUP_PATH
"
$DEPLOY_SSH_BACKUP_PATH
"
if
[
-n
"
$DEPLOY_SSH_BACKUP_PATH
"
]
;
then
Le_Deploy_ssh_backup_path
=
"
$DEPLOY_SSH_BACKUP_PATH
"
elif
[
-z
"
$Le_Deploy_ssh_backup_path
"
]
;
then
Le_Deploy_ssh_backup_path
=
".acme_ssh_deploy"
if
[
-z
"
$DEPLOY_SSH_BACKUP_PATH
"
]
;
then
DEPLOY_SSH_BACKUP_PATH
=
".acme_ssh_deploy"
fi
_savedeployconf
Le_Deploy_ssh_backup_path
"
$Le_Deploy_ssh_backup_path
"
_savedeployconf
DEPLOY_SSH_BACKUP_PATH
"
$DEPLOY_SSH_BACKUP_PATH
"
# MULTI_CALL is optional. If not provided then default to previously saved
# value (which may be undefined... equivalent to "no").
_migratedeployconf Le_Deploy_ssh_multi_call DEPLOY_SSH_MULTI_CALL
_getdeployconf DEPLOY_SSH_MULTI_CALL
_debug2 DEPLOY_SSH_MULTI_CALL
"
$DEPLOY_SSH_MULTI_CALL
"
if
[
"
$DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
Le_Deploy_ssh_multi_call
=
"yes"
_savedeployconf Le_Deploy_ssh_multi_call
"
$Le_Deploy_ssh_multi_call
"
elif
[
"
$DEPLOY_SSH_MULTI_CALL
"
=
"no"
]
;
then
Le_Deploy_ssh_multi_call
=
""
_cleardomainconf Le_Deploy_ssh_multi_call
if
[
-z
"
$DEPLOY_SSH_MULTI_CALL
"
]
;
then
DEPLOY_SSH_MULTI_CALL
=
"no"
fi
_savedeployconf DEPLOY_SSH_MULTI_CALL
"
$DEPLOY_SSH_MULTI_CALL
"
# KEYFILE is optional.
# If provided then private key will be copied to provided filename.
_migratedeployconf Le_Deploy_ssh_keyfile DEPLOY_SSH_KEYFILE
_getdeployconf DEPLOY_SSH_KEYFILE
_debug2 DEPLOY_SSH_KEYFILE
"
$DEPLOY_SSH_KEYFILE
"
if
[
-n
"
$DEPLOY_SSH_KEYFILE
"
]
;
then
_savedeployconf DEPLOY_SSH_KEYFILE
"
$DEPLOY_SSH_KEYFILE
"
fi
# CERTFILE is optional.
# If provided then certificate will be copied or appended to provided filename.
_migratedeployconf Le_Deploy_ssh_certfile DEPLOY_SSH_CERTFILE
_getdeployconf DEPLOY_SSH_CERTFILE
_debug2 DEPLOY_SSH_CERTFILE
"
$DEPLOY_SSH_CERTFILE
"
if
[
-n
"
$DEPLOY_SSH_CERTFILE
"
]
;
then
_savedeployconf DEPLOY_SSH_CERTFILE
"
$DEPLOY_SSH_CERTFILE
"
fi
# CAFILE is optional.
# If provided then CA intermediate certificate will be copied or appended to provided filename.
_migratedeployconf Le_Deploy_ssh_cafile DEPLOY_SSH_CAFILE
_getdeployconf DEPLOY_SSH_CAFILE
_debug2 DEPLOY_SSH_CAFILE
"
$DEPLOY_SSH_CAFILE
"
if
[
-n
"
$DEPLOY_SSH_CAFILE
"
]
;
then
_savedeployconf DEPLOY_SSH_CAFILE
"
$DEPLOY_SSH_CAFILE
"
fi
# FULLCHAIN is optional.
# If provided then fullchain certificate will be copied or appended to provided filename.
_migratedeployconf Le_Deploy_ssh_fullchain DEPLOY_SSH_FULLCHAIN
_getdeployconf DEPLOY_SSH_FULLCHAIN
_debug2 DEPLOY_SSH_FULLCHAIN
"
$DEPLOY_SSH_FULLCHAIN
"
if
[
-n
"
$DEPLOY_SSH_FULLCHAIN
"
]
;
then
_savedeployconf DEPLOY_SSH_FULLCHAIN
"
$DEPLOY_SSH_FULLCHAIN
"
fi
# REMOTE_CMD is optional.
# If provided then this command will be executed on remote host.
_migratedeployconf Le_Deploy_ssh_remote_cmd DEPLOY_SSH_REMOTE_CMD
_getdeployconf DEPLOY_SSH_REMOTE_CMD
_debug2 DEPLOY_SSH_REMOTE_CMD
"
$DEPLOY_SSH_REMOTE_CMD
"
if
[
-n
"
$DEPLOY_SSH_REMOTE_CMD
"
]
;
then
_savedeployconf DEPLOY_SSH_REMOTE_CMD
"
$DEPLOY_SSH_REMOTE_CMD
"
fi
# USE_SCP is optional. If not provided then default to previously saved
# value (which may be undefined... equivalent to "no").
if
[
"
$DEPLOY_SSH_USE_SCP
"
=
"yes"
]
;
then
Le_Deploy_ssh_use_scp
=
"yes"
_savedeployconf Le_Deploy_ssh_use_scp
"
$Le_Deploy_ssh_use_scp
"
Le_Deploy_ssh_multi_call
=
"yes"
_savedeployconf Le_Deploy_ssh_multi_call
"
$Le_Deploy_ssh_multi_call
"
elif
[
"
$DEPLOY_SSH_USE_SCP
"
=
"no"
]
;
then
Le_Deploy_ssh_use_scp
=
""
_cleardomainconf Le_Deploy_ssh_use_scp
_getdeployconf DEPLOY_SSH_USE_SCP
_debug2 DEPLOY_SSH_USE_SCP
"
$DEPLOY_SSH_USE_SCP
"
if
[
-z
"
$DEPLOY_SSH_USE_SCP
"
]
;
then
DEPLOY_SSH_USE_SCP
=
"no"
fi
_savedeployconf DEPLOY_SSH_USE_SCP
"
$DEPLOY_SSH_USE_SCP
"
# SCP_CMD is optional. If not provided then use scp
if
[
-n
"
$DEPLOY_SSH_SCP_CMD
"
]
;
then
Le_Deploy_ssh_scp_cmd
=
"
$DEPLOY_SSH_SCP_CMD
"
_savedeployconf Le_Deploy_ssh_scp_cmd
"
$Le_Deploy_ssh_scp_cmd
"
elif
[
-z
"
$Le_Deploy_ssh_scp_cmd
"
]
;
then
Le_Deploy_ssh_scp_cmd
=
"scp -T -q "
_getdeployconf DEPLOY_SSH_SCP_CMD
_debug2 DEPLOY_SSH_SCP_CMD
"
$DEPLOY_SSH_SCP_CMD
"
if
[
-z
"
$DEPLOY_SSH_SCP_CMD
"
]
;
then
DEPLOY_SSH_SCP_CMD
=
"scp -q"
fi
_savedeployconf DEPLOY_SSH_SCP_CMD
"
$DEPLOY_SSH_SCP_CMD
"
_deploy_ssh_servers
=
$Le_Deploy_ssh_server
for
Le_Deploy_ssh_server
in
$_deploy_ssh_servers
;
do
if
[
"
$DEPLOY_SSH_USE_SCP
"
=
"yes"
]
;
then
DEPLOY_SSH_MULTI_CALL
=
"yes"
_info
"Using scp as alternate method for copying files. Multicall Mode is implicit"
elif
[
"
$DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
_info
"Using MULTI_CALL mode... Required commands sent in multiple calls to remote host"
else
_info
"Required commands batched and sent in single call to remote host"
fi
_deploy_ssh_servers
=
$DEPLOY_SSH_SERVER
for
DEPLOY_SSH_SERVER
in
$_deploy_ssh_servers
;
do
_ssh_deploy
done
}
...
...
@@ -161,20 +185,10 @@ _ssh_deploy() {
_local_ca_file
=
""
_local_full_file
=
""
_info
"Deploy certificates to remote server
$Le_Deploy_ssh_user
@
$Le_Deploy_ssh_server
"
if
[
"
$Le_Deploy_ssh_use_scp
"
=
"yes"
]
;
then
_info
"Using scp as alternate method for copying files. Multicall Mode is implicit"
Le_Deploy_ssh_multi_call
=
"yes"
_savedeployconf Le_Deploy_ssh_multi_call
"
$Le_Deploy_ssh_multi_call
"
fi
if
[
"
$Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
_info
"Using MULTI_CALL mode... Required commands sent in multiple calls to remote host"
else
_info
"Required commands batched and sent in single call to remote host"
fi
_info
"Deploy certificates to remote server
$DEPLOY_SSH_USER
@
$DEPLOY_SSH_SERVER
"
if
[
"
$
Le_Deploy_ssh_backup
"
=
"yes"
]
;
then
_backupprefix
=
"
$
Le_Deploy_ssh_backup_path
/
$_cdomain
-backup"
if
[
"
$
DEPLOY_SSH_BACKUP
"
=
"yes"
]
;
then
_backupprefix
=
"
$
DEPLOY_SSH_BACKUP_PATH
/
$_cdomain
-backup"
_backupdir
=
"
$_backupprefix
-
$(
_utc_date |
tr
' '
'-'
)
"
# run cleanup on the backup directory, erase all older
# than 180 days (15552000 seconds).
...
...
@@ -186,7 +200,7 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
_cmdstr
=
"mkdir -p
$_backupdir
;
$_cmdstr
"
_info
"Backup of old certificate files will be placed in remote directory
$_backupdir
"
_info
"Backup directories erased after 180 days."
if
[
"
$
Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
if
[
"
$
DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -194,19 +208,11 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
fi
# KEYFILE is optional.
# If provided then private key will be copied to provided filename.
_getdeployconf DEPLOY_SSH_KEYFILE
_debug2 DEPLOY_SSH_KEYFILE
"
$DEPLOY_SSH_KEYFILE
"
if
[
-n
"
$DEPLOY_SSH_KEYFILE
"
]
;
then
Le_Deploy_ssh_keyfile
=
"
$DEPLOY_SSH_KEYFILE
"
_savedeployconf Le_Deploy_ssh_keyfile
"
$Le_Deploy_ssh_keyfile
"
fi
if
[
-n
"
$Le_Deploy_ssh_keyfile
"
]
;
then
if
[
"
$Le_Deploy_ssh_backup
"
=
"yes"
]
;
then
if
[
"
$DEPLOY_SSH_BACKUP
"
=
"yes"
]
;
then
# backup file we are about to overwrite.
_cmdstr
=
"
$_cmdstr
cp
$
Le_Deploy_ssh_keyfile
$_backupdir
>/dev/null;"
if
[
"
$
Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
_cmdstr
=
"
$_cmdstr
cp
$
DEPLOY_SSH_KEYFILE
$_backupdir
>/dev/null;"
if
[
"
$
DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -215,15 +221,16 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
# copy new key into file.
if
[
"
$
Le_Deploy_ssh_use_scp
"
=
"yes"
]
;
then
if
[
"
$
DEPLOY_SSH_USE_SCP
"
=
"yes"
]
;
then
# scp the file
if
!
_scp_remote_cmd
"
$_ckey
"
"
$
Le_Deploy_ssh_keyfile
"
;
then
if
!
_scp_remote_cmd
"
$_ckey
"
"
$
DEPLOY_SSH_KEYFILE
"
;
then
return
$_err_code
fi
else
_cmdstr
=
"
$_cmdstr
echo
\"
$(
cat
"
$_ckey
"
)
\"
>
$Le_Deploy_ssh_keyfile
;"
_info
"will copy private key to remote file
$Le_Deploy_ssh_keyfile
"
if
[
"
$Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
# ssh echo to the file
_cmdstr
=
"
$_cmdstr
echo
\"
$(
cat
"
$_ckey
"
)
\"
>
$DEPLOY_SSH_KEYFILE
;"
_info
"will copy private key to remote file
$DEPLOY_SSH_KEYFILE
"
if
[
"
$DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -232,26 +239,15 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
fi
# CERTFILE is optional.
# If provided then certificate will be copied or appended to provided filename.
_getdeployconf DEPLOY_SSH_CERTFILE
_debug2 DEPLOY_SSH_CERTFILE
"
$DEPLOY_SSH_CERTFILE
"
if
[
-n
"
$DEPLOY_SSH_CERTFILE
"
]
;
then
Le_Deploy_ssh_certfile
=
"
$DEPLOY_SSH_CERTFILE
"
_savedeployconf Le_Deploy_ssh_certfile
"
$Le_Deploy_ssh_certfile
"
fi
if
[
-n
"
$Le_Deploy_ssh_certfile
"
]
;
then
_pipe
=
">"
if
[
"
$
Le_Deploy_ssh_certfile
"
=
"
$Le_Deploy_ssh_keyfile
"
]
;
then
if
[
"
$
DEPLOY_SSH_CERTFILE
"
=
"
$DEPLOY_SSH_KEYFILE
"
]
;
then
# if filename is same as previous file then append.
_pipe
=
">>"
_local_cert_file
=
$(
_mktemp
)
cat
"
$_ckey
"
>
"
$_local_cert_file
"
cat
"
$_ccert
"
>>
"
$_local_cert_file
"
elif
[
"
$Le_Deploy_ssh_backup
"
=
"yes"
]
;
then
elif
[
"
$DEPLOY_SSH_BACKUP
"
=
"yes"
]
;
then
# backup file we are about to overwrite.
_cmdstr
=
"
$_cmdstr
cp
$
Le_Deploy_ssh_certfile
$_backupdir
>/dev/null;"
if
[
"
$
Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
_cmdstr
=
"
$_cmdstr
cp
$
DEPLOY_SSH_CERTFILE
$_backupdir
>/dev/null;"
if
[
"
$
DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -259,21 +255,22 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
fi
if
[
"
$Le_Deploy_ssh_use_scp
"
=
"yes"
]
;
then
if
[
-n
"
$_local_cert_file
"
]
;
then
if
!
_scp_remote_cmd
"
$_local_cert_file
"
"
$Le_Deploy_ssh_certfile
"
;
then
return
$_err_code
# copy new certificate into file.
if
[
"
$DEPLOY_SSH_USE_SCP
"
=
"yes"
]
;
then
# scp the file
_local_cert_file
=
$(
_mktemp
)
if
[
"
$DEPLOY_SSH_CERTFILE
"
=
"
$DEPLOY_SSH_KEYFILE
"
]
;
then
cat
"
$_ckey
"
>>
"
$_local_cert_file
"
fi
else
if
!
_scp_remote_cmd
"
$_
ccert
"
"
$Le_Deploy_ssh_certfile
"
;
then
cat
"
$_ccert
"
>>
"
$_local_cert_file
"
if
!
_scp_remote_cmd
"
$_
local_cert_file
"
"
$DEPLOY_SSH_CERTFILE
"
;
then
return
$_err_code
fi
fi
else
#
copy new certificate into
file
.
_cmdstr
=
"
$_cmdstr
echo
\"
$(
cat
"
$_ccert
"
)
\"
$_pipe
$
Le_Deploy_ssh_certfile
;"
_info
"will copy certificate to remote file
$
Le_Deploy_ssh_certfile
"
if
[
"
$
Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
#
ssh echo to the
file
_cmdstr
=
"
$_cmdstr
echo
\"
$(
cat
"
$_ccert
"
)
\"
$_pipe
$
DEPLOY_SSH_CERTFILE
;"
_info
"will copy certificate to remote file
$
DEPLOY_SSH_CERTFILE
"
if
[
"
$
DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -282,34 +279,16 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
fi
# CAFILE is optional.
# If provided then CA intermediate certificate will be copied or appended to provided filename.
_getdeployconf DEPLOY_SSH_CAFILE
_debug2 DEPLOY_SSH_CAFILE
"
$DEPLOY_SSH_CAFILE
"
if
[
-n
"
$DEPLOY_SSH_CAFILE
"
]
;
then
Le_Deploy_ssh_cafile
=
"
$DEPLOY_SSH_CAFILE
"
_savedeployconf Le_Deploy_ssh_cafile
"
$Le_Deploy_ssh_cafile
"
fi
if
[
-n
"
$Le_Deploy_ssh_cafile
"
]
;
then
_pipe
=
">"
if
[
"
$
Le_Deploy_ssh_cafile
"
=
"
$Le_Deploy_ssh_keyfile
"
]
||
[
"
$
Le_Deploy_ssh_cafile
"
=
"
$Le_Deploy_ssh_certfile
"
]
;
then
if
[
"
$
DEPLOY_SSH_CAFILE
"
=
"
$DEPLOY_SSH_KEYFILE
"
]
||
[
"
$
DEPLOY_SSH_CAFILE
"
=
"
$DEPLOY_SSH_CERTFILE
"
]
;
then
# if filename is same as previous file then append.
_pipe
=
">>"
_local_ca_file
=
$(
_mktemp
)
if
[
"
$Le_Deploy_ssh_cafile
"
=
"
$Le_Deploy_ssh_keyfile
"
]
;
then
cat
"
$_ckey
"
>>
"
$_local_ca_file
"
fi
if
[
"
$Le_Deploy_ssh_cafile
"
=
"
$Le_Deploy_ssh_certfile
"
]
;
then
cat
"
$_ccert
"
>>
"
$_local_ca_file
"
fi
cat
"
$_cca
"
>>
"
$_local_ca_file
"
elif
[
"
$Le_Deploy_ssh_backup
"
=
"yes"
]
;
then
elif
[
"
$DEPLOY_SSH_BACKUP
"
=
"yes"
]
;
then
# backup file we are about to overwrite.
_cmdstr
=
"
$_cmdstr
cp
$
Le_Deploy_ssh_cafile
$_backupdir
>/dev/null;"
if
[
"
$
Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
_cmdstr
=
"
$_cmdstr
cp
$
DEPLOY_SSH_CAFILE
$_backupdir
>/dev/null;"
if
[
"
$
DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -317,21 +296,25 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
fi
if
[
"
$Le_Deploy_ssh_use_scp
"
=
"yes"
]
;
then
if
[
-n
"
$_local_ca_file
"
]
;
then
if
!
_scp_remote_cmd
"
$_local_ca_file
"
"
$Le_Deploy_ssh_cafile
"
;
then
return
$_err_code
# copy new certificate into file.
if
[
"
$DEPLOY_SSH_USE_SCP
"
=
"yes"
]
;
then
# scp the file
_local_ca_file
=
$(
_mktemp
)
if
[
"
$DEPLOY_SSH_CAFILE
"
=
"
$DEPLOY_SSH_KEYFILE
"
]
;
then
cat
"
$_ckey
"
>>
"
$_local_ca_file
"
fi
else
if
!
_scp_remote_cmd
"
$_cca
"
"
$Le_Deploy_ssh_cafile
"
;
then
return
$_err_code
if
[
"
$DEPLOY_SSH_CAFILE
"
=
"
$DEPLOY_SSH_CERTFILE
"
]
;
then
cat
"
$_ccert
"
>>
"
$_local_ca_file
"
fi
cat
"
$_cca
"
>>
"
$_local_ca_file
"
if
!
_scp_remote_cmd
"
$_local_ca_file
"
"
$DEPLOY_SSH_CAFILE
"
;
then
return
$_err_code
fi
else
#
copy new certificate into
file
.
_cmdstr
=
"
$_cmdstr
echo
\"
$(
cat
"
$_cca
"
)
\"
$_pipe
$
Le_Deploy_ssh_cafile
;"
_info
"will copy CA file to remote file
$
Le_Deploy_ssh_cafile
"
if
[
"
$
Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
#
ssh echo to the
file
_cmdstr
=
"
$_cmdstr
echo
\"
$(
cat
"
$_cca
"
)
\"
$_pipe
$
DEPLOY_SSH_CAFILE
;"
_info
"will copy CA file to remote file
$
DEPLOY_SSH_CAFILE
"
if
[
"
$
DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -340,37 +323,17 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
fi
# FULLCHAIN is optional.
# If provided then fullchain certificate will be copied or appended to provided filename.
_getdeployconf DEPLOY_SSH_FULLCHAIN
_debug2 DEPLOY_SSH_FULLCHAIN
"
$DEPLOY_SSH_FULLCHAIN
"
if
[
-n
"
$DEPLOY_SSH_FULLCHAIN
"
]
;
then
Le_Deploy_ssh_fullchain
=
"
$DEPLOY_SSH_FULLCHAIN
"
_savedeployconf Le_Deploy_ssh_fullchain
"
$Le_Deploy_ssh_fullchain
"
fi
if
[
-n
"
$Le_Deploy_ssh_fullchain
"
]
;
then
_pipe
=
">"
if
[
"
$
Le_Deploy_ssh_fullchain
"
=
"
$Le_Deploy_ssh_keyfile
"
]
||
[
"
$
Le_Deploy_ssh_fullchain
"
=
"
$Le_Deploy_ssh_certfile
"
]
||
[
"
$
Le_Deploy_ssh_fullchain
"
=
"
$Le_Deploy_ssh_cafile
"
]
;
then
if
[
"
$
DEPLOY_SSH_FULLCHAIN
"
=
"
$DEPLOY_SSH_KEYFILE
"
]
||
[
"
$
DEPLOY_SSH_FULLCHAIN
"
=
"
$DEPLOY_SSH_CERTFILE
"
]
||
[
"
$
DEPLOY_SSH_FULLCHAIN
"
=
"
$DEPLOY_SSH_CAFILE
"
]
;
then
# if filename is same as previous file then append.
_pipe
=
">>"
_local_full_file
=
$(
_mktemp
)
if
[
"
$Le_Deploy_ssh_fullchain
"
=
"
$Le_Deploy_ssh_keyfile
"
]
;
then
cat
"
$_ckey
"
>>
"
$_local_full_file
"
fi
if
[
"
$Le_Deploy_ssh_fullchain
"
=
"
$Le_Deploy_ssh_certfile
"
]
;
then
cat
"
$_ccert
"
>>
"
$_local_full_file
"
fi
if
[
"
$Le_Deploy_ssh_fullchain
"
=
"
$Le_Deploy_ssh_cafile
"
]
;
then
cat
"
$_cca
"
>>
"
$_local_full_file
"
fi
cat
"
$_cfullchain
"
>>
"
$_local_full_file
"
elif
[
"
$Le_Deploy_ssh_backup
"
=
"yes"
]
;
then
elif
[
"
$DEPLOY_SSH_BACKUP
"
=
"yes"
]
;
then
# backup file we are about to overwrite.
_cmdstr
=
"
$_cmdstr
cp
$
Le_Deploy_ssh_fullchain
$_backupdir
>/dev/null;"
if
[
"
$
Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
_cmdstr
=
"
$_cmdstr
cp
$
DEPLOY_SSH_FULLCHAIN
$_backupdir
>/dev/null;"
if
[
"
$
DEPLOY_SSH_FULLCHAIN
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -378,21 +341,28 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
fi
if
[
"
$Le_Deploy_ssh_use_scp
"
=
"yes"
]
;
then
if
[
-n
"
$_local_full_file
"
]
;
then
if
!
_scp_remote_cmd
"
$_local_full_file
"
"
$Le_Deploy_ssh_fullchain
"
;
then
return
$_err_code
# copy new certificate into file.
if
[
"
$DEPLOY_SSH_USE_SCP
"
=
"yes"
]
;
then
# scp the file
_local_full_file
=
$(
_mktemp
)
if
[
"
$DEPLOY_SSH_FULLCHAIN
"
=
"
$DEPLOY_SSH_KEYFILE
"
]
;
then
cat
"
$_ckey
"
>>
"
$_local_full_file
"
fi
else
if
!
_scp_remote_cmd
"
$_cfullchain
"
"
$Le_Deploy_ssh_fullchain
"
;
then
return
$_err_code
if
[
"
$DEPLOY_SSH_FULLCHAIN
"
=
"
$DEPLOY_SSH_CERTFILE
"
]
;
then
cat
"
$_ccert
"
>>
"
$_local_full_file
"
fi
if
[
"
$DEPLOY_SSH_FULLCHAIN
"
=
"
$DEPLOY_SSH_CAFILE
"
]
;
then
cat
"
$_cca
"
>>
"
$_local_full_file
"
fi
cat
"
$_cfullchain
"
>>
"
$_local_full_file
"
if
!
_scp_remote_cmd
"
$_local_full_file
"
"
$DEPLOY_SSH_FULLCHAIN
"
;
then
return
$_err_code
fi
else
#
copy new certificate into
file
.
_cmdstr
=
"
$_cmdstr
echo
\"
$(
cat
"
$_cfullchain
"
)
\"
$_pipe
$
Le_Deploy_ssh_fullchain
;"
_info
"will copy fullchain to remote file
$
Le_Deploy_ssh_fullchain
"
if
[
"
$
Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
#
ssh echo to the
file
_cmdstr
=
"
$_cmdstr
echo
\"
$(
cat
"
$_cfullchain
"
)
\"
$_pipe
$
DEPLOY_SSH_FULLCHAIN
;"
_info
"will copy fullchain to remote file
$
DEPLOY_SSH_FULLCHAIN
"
if
[
"
$
DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -400,30 +370,22 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
fi
fi
fi
# cleanup local files if any
if
[
-n
"
$_local_cert_file
"
]
;
then
rm
"
$_local_cert_file
"
>
/dev/null 1>&2
# cleanup local files if any
if
[
-f
"
$_local_cert_file
"
]
;
then
rm
-f
"
$_local_cert_file
"
fi
if
[
-
n
"
$_local_ca_file
"
]
;
then
rm
"
$_local_ca_file
"
>
/dev/null 1>&2
if
[
-
f
"
$_local_ca_file
"
]
;
then
rm
-f
"
$_local_ca_file
"
fi
if
[
-
n
"
$_local_full_file
"
]
;
then
rm
"
$_local_full_file
"
>
/dev/null 1>&2
if
[
-
f
"
$_local_full_file
"
]
;
then
rm
-f
"
$_local_full_file
"
fi
# REMOTE_CMD is optional.
# If provided then this command will be executed on remote host.
_getdeployconf DEPLOY_SSH_REMOTE_CMD
_debug2 DEPLOY_SSH_REMOTE_CMD
"
$DEPLOY_SSH_REMOTE_CMD
"
if
[
-n
"
$DEPLOY_SSH_REMOTE_CMD
"
]
;
then
Le_Deploy_ssh_remote_cmd
=
"
$DEPLOY_SSH_REMOTE_CMD
"
_savedeployconf Le_Deploy_ssh_remote_cmd
"
$Le_Deploy_ssh_remote_cmd
"
fi
if
[
-n
"
$Le_Deploy_ssh_remote_cmd
"
]
;
then
_cmdstr
=
"
$_cmdstr
$Le_Deploy_ssh_remote_cmd
;"
_info
"Will execute remote command
$Le_Deploy_ssh_remote_cmd
"
if
[
"
$Le_Deploy_ssh_multi_call
"
=
"yes"
]
;
then
_cmdstr
=
"
$_cmdstr
$DEPLOY_SSH_REMOTE_CMD
;"
_info
"Will execute remote command
$DEPLOY_SSH_REMOTE_CMD
"
if
[
"
$DEPLOY_SSH_MULTI_CALL
"
=
"yes"
]
;
then
if
!
_ssh_remote_cmd
"
$_cmdstr
"
;
then
return
$_err_code
fi
...
...
@@ -445,10 +407,11 @@ then rm -rf \"\$fn\"; echo \"Backup \$fn deleted as older than 180 days\"; fi; d
_ssh_remote_cmd
()
{
_cmd
=
"
$1
"
_secure_debug
"Remote commands to execute:
$_cmd
"
_info
"Submitting sequence of commands to remote server by ssh"
_info
"Submitting sequence of commands to remote server by
$DEPLOY_SSH_CMD
"
# quotations in bash cmd below intended. Squash travis spellcheck error
# shellcheck disable=SC2029
$
Le_Deploy_ssh_cmd
"
$Le_Deploy_ssh_user
@
$Le_Deploy_ssh_server
"
sh
-c
"'
$_cmd
'"
$
DEPLOY_SSH_CMD
"
$DEPLOY_SSH_USER
@
$DEPLOY_SSH_SERVER
"
sh
-c
"'
$_cmd
'"
_err_code
=
"
$?
"
if
[
"
$_err_code
"
!=
"0"
]
;
then
...
...
@@ -460,9 +423,12 @@ _ssh_remote_cmd() {
# cmd scp
_scp_remote_cmd
()
{
_secure_debug
"Remote scp source
$1
and destination
$2
using :
$Le_Deploy_ssh_scp_cmd
"
_info
"Submitting secure copy command :
$Le_Deploy_ssh_scp_cmd
"
$Le_Deploy_ssh_scp_cmd
"
$1
"
"
$Le_Deploy_ssh_user
"
@
"
$Le_Deploy_ssh_server
"
:
"
$2
"
_src
=
$1
_dest
=
$2
_secure_debug
"Remote copy source
$_src
to destination
$_dest
using:
$DEPLOY_SSH_SCP_CMD
"
_info
"Submitting secure copy command:
$DEPLOY_SSH_SCP_CMD
"
$DEPLOY_SSH_SCP_CMD
"
$_src
"
"
$DEPLOY_SSH_USER
"
@
"
$DEPLOY_SSH_SERVER
"
:
"
$_dest
"
_err_code
=
"
$?
"
if
[
"
$_err_code
"
!=
"0"
]
;
then
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment