From a8f1d0dd4886e5ce43883d8fd9b70b222e9c3a7b Mon Sep 17 00:00:00 2001 From: Santeri Date: Wed, 5 Jul 2017 00:36:39 +0400 Subject: [PATCH] Fixed bugs Fixed the ShellCheck issues and a few bugs. Condition if script is run by root was not tested. --- deploy/cpanel.sh | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/deploy/cpanel.sh b/deploy/cpanel.sh index bf1332ff..54cc0224 100644 --- a/deploy/cpanel.sh +++ b/deploy/cpanel.sh @@ -1,15 +1,17 @@ #!/usr/bin/env sh - -#Here is the script to deploy the cert to your cpanel account by the cpanel APIs. - -#returns 0 means success, otherwise error. +# Here is the script to deploy the cert to your cpanel using the cpanel API. +# Uses command line uapi. +# Cpanel username is needed only when run as root (I did not test this). +# Returns 0 when success. +# Written by Santeri Kannisto +# Public domain, 2017 #export DEPLOY_CPANEL_USER=myusername -#export DEPLOY_CPANEL_PASSWORD=PASSWORD ######## Public functions ##################### #domain keyfile certfile cafile fullchain + cpanel_deploy() { _cdomain="$1" _ckey="$2" @@ -23,7 +25,29 @@ cpanel_deploy() { _debug _cca "$_cca" _debug _cfullchain "$_cfullchain" - _err "Not implemented yet" - return 1 + # read cert and key files and urlencode both + _certstr=$(cat "$_ccert") + _keystr=$(cat "$_ckey") + _cert=$(php -r "echo urlencode(\"$_certstr\");") + _key=$(php -r "echo urlencode(\"$_keystr\");") + + _debug _cert "$_cert" + _debug _key "$_key" + + if [ "$(id -u)" = 0 ]; then + _opt="--user=$DEPLOY_CPANEL_USER" + _debug _opt "$_opt" + fi + + _response=$(uapi "$_opt" SSL install_ssl domain="$_cdomain" cert="$_cert" key="$_key") + + if [ $? -ne 0 ]; then + _err "Error in deploying certificate:" + _err "$_response" + return 1 + fi + _debug response "$_response" + _info "Certificate successfully deployed" + return 0 }