diff --git a/acme.sh b/acme.sh index f4791bc2..98782d1f 100755 --- a/acme.sh +++ b/acme.sh @@ -1,6 +1,6 @@ #!/usr/bin/env sh -VER=2.5.2 +VER=2.5.3 PROJECT_NAME="acme.sh" @@ -72,27 +72,31 @@ __red() { fi } +__mytee() { + tee -a $1 +} + _info() { if [ -z "$2" ] ; then - printf -- "[$(date)] $1" + printf -- "[$(date)] $1" | __mytee $LOG_FILE else - printf -- "[$(date)] $1='$2'" + printf -- "[$(date)] $1='$2'" | __mytee $LOG_FILE fi - printf "\n" + printf "\n" | __mytee $LOG_FILE } _err_e() { if [ -z "$2" ] ; then - __red "$1" >&2 + __red "$1" | __mytee $LOG_FILE >&2 else - __red "$1='$2'" >&2 + __red "$1='$2'" | __mytee $LOG_FILE >&2 fi - printf "\n" >&2 + printf "\n" | __mytee $LOG_FILE >&2 } _err() { - printf -- "[$(date)] " >&2 + printf -- "[$(date)] " | __mytee $LOG_FILE >&2 _err_e "$@" return 1 } @@ -107,12 +111,12 @@ _debug() { fi if [ -z "$2" ] ; then - printf -- "[$(date)] $1" >&2 + printf -- "[$(date)] $1" | __mytee $LOG_FILE >&2 else - printf -- "[$(date)] $1='$2'" >&2 + printf -- "[$(date)] $1='$2'" | __mytee $LOG_FILE >&2 fi - printf "\n" >&2 + printf "\n" | __mytee $LOG_FILE >&2 return 0 } @@ -1239,9 +1243,7 @@ _starttlsserver() { _debug serverproc $serverproc } -#[domain] [keylength] -_initpath() { - +__initHome() { if [ -z "$_SCRIPT_HOME" ] ; then if _exists readlink && _exists dirname ; then _debug "Lets guess script dir." @@ -1284,7 +1286,13 @@ _initpath() { if [ -z "$ACCOUNT_CONF_PATH" ] ; then ACCOUNT_CONF_PATH="$_DEFAULT_ACCOUNT_CONF_PATH" fi - +} + +#[domain] [keylength] +_initpath() { + + __initHome + if [ -f "$ACCOUNT_CONF_PATH" ] ; then . "$ACCOUNT_CONF_PATH" fi @@ -2741,6 +2749,8 @@ _initconf() { #ACCOUNT_KEY_PATH=\"/path/to/account.key\" #CERT_HOME=\"/path/to/cert/home\" +#LOG_FILE=\"/var/log/$PROJECT_NAME.log\" + #STAGE=1 # Use the staging api #FORCE=1 # Force to issue cert #DEBUG=1 # Debug mode @@ -3058,6 +3068,7 @@ Parameters: --keylength, -k [2048] Specifies the domain key length: 2048, 3072, 4096, 8192 or ec-256, ec-384. --accountkeylength, -ak [2048] Specifies the account key length. + --logfile /path/to/logfile Specifies the log file. These parameters are to install the cert to nginx/apache or anyother server after issue/renew a cert: @@ -3138,6 +3149,17 @@ upgrade() { fi } +_processAccountConf() { + if [ "$_useragent" ] ; then + _saveaccountconf "USER_AGENT" "$_useragent" + fi + + if [ "$_accountemail" ] ; then + _saveaccountconf "ACCOUNT_EMAIL" "$_accountemail" + fi + +} + _process() { _CMD="" _domain="" @@ -3169,6 +3191,7 @@ _process() { _pre_hook="" _post_hook="" _renew_hook="" + _logfile="" while [ ${#} -gt 0 ] ; do case "${1}" in @@ -3445,6 +3468,12 @@ _process() { --ocsp-must-staple|--ocsp) Le_OCSP_Stable="1" ;; + --logfile) + _logfile="$2" + LOG_FILE="$_logfile" + shift + ;; + *) _err "Unknown parameter : $1" return 1 @@ -3454,6 +3483,14 @@ _process() { shift 1 done + if [ "${_CMD}" != "install" ] ; then + __initHome + if [ "$_logfile" ] ; then + _saveaccountconf "LOG_FILE" "$_logfile" + fi + _processAccountConf + fi + if [ "$DEBUG" ] ; then version fi @@ -3513,13 +3550,12 @@ _process() { return $_ret fi - if [ "$_useragent" ] ; then - _saveaccountconf "USER_AGENT" "$_useragent" - fi - if [ "$_accountemail" ] ; then - _saveaccountconf "ACCOUNT_EMAIL" "$_accountemail" + if [ "${_CMD}" = "install" ] ; then + if [ "$_logfile" ] ; then + _saveaccountconf "LOG_FILE" "$_logfile" + fi + _processAccountConf fi - }