Browse Source
Create ssh_cpanel
Create ssh_cpanel
Deploys to a remote cPanel server by using SSH to connect then calling UAPI functionspull/2025/head
Hambone68
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 118 additions and 0 deletions
@ -0,0 +1,118 @@ |
|||||
|
#!/usr/bin/env sh |
||||
|
|
||||
|
# Script to deploy certificates to remote cPanel server by SSH |
||||
|
# This is a rough mashup of deploy/ssh.sh and deploy/cpanel_uapi.sh |
||||
|
# Note that SSH must be able to login to remote host without a password... |
||||
|
# SSH Keys must have been exchanged with the remote host. Validate and |
||||
|
# test that you can login to USER@SERVER from the host running acme.sh before |
||||
|
# using this script. |
||||
|
# |
||||
|
# The following variables exported from environment will be used. |
||||
|
# If not set then values previously saved in domain.conf file are used. |
||||
|
# |
||||
|
# Only a username is required. All others are optional. |
||||
|
# |
||||
|
# export DEPLOY_SSH_CPANEL_USER="admin" # required |
||||
|
# export DEPLOY_SSH_CPANEL_CMD="ssh -i /path/to/key" # defaults to ssh |
||||
|
# export DEPLOY_SSH_CPANEL_SERVER="server.example.com" # defaults to domain name |
||||
|
# export DEPLOY_SSH_CPANEL_UAPIUSER="cPanelUserName" # defaults to DEPLOY_SSH_CPANEL_USER |
||||
|
######## Public functions ##################### |
||||
|
|
||||
|
#domain keyfile certfile cafile fullchain |
||||
|
ssh_cpanel_deploy() { |
||||
|
_cdomain="$1" |
||||
|
_ckey="$2" |
||||
|
_ccert="$3" |
||||
|
_cca="$4" |
||||
|
_cfullchain="$5" |
||||
|
_cmdstr="" |
||||
|
|
||||
|
if [ -f "$DOMAIN_CONF" ]; then |
||||
|
# shellcheck disable=SC1090 |
||||
|
. "$DOMAIN_CONF" |
||||
|
fi |
||||
|
|
||||
|
_debug _cdomain "$_cdomain" |
||||
|
_debug _ckey "$_ckey" |
||||
|
_debug _ccert "$_ccert" |
||||
|
_debug _cca "$_cca" |
||||
|
_debug _cfullchain "$_cfullchain" |
||||
|
|
||||
|
# USER is required to login by SSH to remote host. |
||||
|
if [ -z "$DEPLOY_SSH_CPANEL_USER" ]; then |
||||
|
if [ -z "$Le_Deploy_ssh_cpanel_user" ]; then |
||||
|
_err "DEPLOY_SSH_CPANEL_USER not defined." |
||||
|
return 1 |
||||
|
fi |
||||
|
else |
||||
|
Le_Deploy_ssh_cpanel_user="$DEPLOY_SSH_CPANEL_USER" |
||||
|
_savedomainconf Le_Deploy_ssh_cpanel_user "$Le_Deploy_ssh_cpanel_user" |
||||
|
fi |
||||
|
|
||||
|
# UAPIUSER is optional. If not provided then use DEPLOY_SSH_CPANEL_USER |
||||
|
if [ -z "$DEPLOY_SSH_CPANEL_UAPIUSER" ]; then |
||||
|
if [ -z "$Le_Deploy_ssh_cpanel_uapiuser" ]; then |
||||
|
Le_Deploy_ssh_cpanel_uapiuser="$Le_Deploy_ssh_cpanel_user" |
||||
|
fi |
||||
|
else |
||||
|
Le_Deploy_ssh_cpanel_uapiuser="$DEPLOY_SSH_CPANEL_UAPIUSER" |
||||
|
_savedomainconf Le_Deploy_ssh_cpanel_uapiuser "$Le_Deploy_ssh_cpanel_uapiuser" |
||||
|
fi |
||||
|
|
||||
|
# SERVER is optional. If not provided then use _cdomain |
||||
|
if [ -n "$DEPLOY_SSH_CPANEL_SERVER" ]; then |
||||
|
Le_Deploy_ssh_cpanel_server="$DEPLOY_SSH_CPANEL_SERVER" |
||||
|
_savedomainconf Le_Deploy_ssh_cpanel_server "$Le_Deploy_ssh_cpanel_server" |
||||
|
elif [ -z "$Le_Deploy_ssh_cpanel_server" ]; then |
||||
|
Le_Deploy_ssh_cpanel_server="$_cdomain" |
||||
|
fi |
||||
|
|
||||
|
# CMD is optional. If not provided then use ssh |
||||
|
if [ -n "$DEPLOY_SSH_CPANEL_CMD" ]; then |
||||
|
Le_Deploy_ssh_cpanel_cmd="$DEPLOY_SSH_CPANEL_CMD" |
||||
|
_savedomainconf Le_Deploy_ssh_cpanel_cmd "$Le_Deploy_ssh_cpanel_cmd" |
||||
|
elif [ -z "$Le_Deploy_ssh_cpanel_cmd" ]; then |
||||
|
Le_Deploy_ssh_cpanel_cmd="ssh" |
||||
|
fi |
||||
|
|
||||
|
_info "Deploy certificates to remote server $Le_Deploy_ssh_cpanel_user@$Le_Deploy_ssh_cpanel_server" |
||||
|
|
||||
|
# read cert and key files and urlencode both |
||||
|
_info "URL Encode Certificate..." |
||||
|
_cert=$(_url_encode <"$_ccert") |
||||
|
|
||||
|
_info "URL Encode Key..." |
||||
|
_key=$(_url_encode <"$_ckey") |
||||
|
|
||||
|
_secure_debug _cert "$_cert" |
||||
|
_secure_debug _key "$_key" |
||||
|
|
||||
|
if [ "$Le_Deploy_ssh_cpanel_uapiuser" = "$Le_Deploy_ssh_cpanel_user" ]; then |
||||
|
_cmdstr="uapi SSL install_ssl domain=\"$_cdomain\" cert=\"$_cert\" key=\"$_key\"" |
||||
|
else |
||||
|
_cmdstr="uapi --user=\"$Le_Deploy_ssh_cpanel_uapiuser\" SSL install_ssl domain=\"$_cdomain\" cert=\"$_cert\" key=\"$_key\"" |
||||
|
fi |
||||
|
|
||||
|
_secure_debug "Remote commands to execute: " "$_cmdstr" |
||||
|
_info "Submitting sequence of commands to remote server by ssh" |
||||
|
# quotations in bash cmd below intended. Squash travis spellcheck error |
||||
|
# shellcheck disable=SC2029 |
||||
|
$Le_Deploy_ssh_cpanel_cmd -T "$Le_Deploy_ssh_cpanel_user@$Le_Deploy_ssh_cpanel_server" sh -c "'$_cmdstr'" |
||||
|
_ret="$?" |
||||
|
|
||||
|
if [ "$_ret" != "0" ]; then |
||||
|
_err "Error code $_ret returned from $Le_Deploy_ssh_cpanel_cmd" |
||||
|
fi |
||||
|
|
||||
|
_error_response="status: 0" |
||||
|
if test "${_ret#*$_error_response}" != "$_ret"; then |
||||
|
_err "Error in deploying certificate:" |
||||
|
_err "$_ret" |
||||
|
return 1 |
||||
|
fi |
||||
|
|
||||
|
_debug ret "$_ret" |
||||
|
_info "Certificate successfully deployed" |
||||
|
return 0 |
||||
|
} |
||||
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue