mirror of
				https://github.com/hiskang/acme.sh
				synced 2025-10-31 02:17:18 +00:00 
			
		
		
		
	v2.0.1. Use '--home' install of env
This commit is contained in:
		
							parent
							
								
									63f5d07ed7
								
							
						
					
					
						commit
						a7b7355dcf
					
				
							
								
								
									
										88
									
								
								le.sh
									
									
									
									
									
								
							
							
						
						
									
										88
									
								
								le.sh
									
									
									
									
									
								
							| @ -1,11 +1,15 @@ | ||||
| #!/usr/bin/env bash | ||||
| VER=2.0.0 | ||||
| VER=2.0.1 | ||||
| 
 | ||||
| PROJECT_NAME="le.sh" | ||||
| PROJECT_ENTRY="le.sh" | ||||
| 
 | ||||
| PROJECT="https://github.com/Neilpang/le" | ||||
| 
 | ||||
| DEFAULT_CA="https://acme-v01.api.letsencrypt.org" | ||||
| DEFAULT_AGREEMENT="https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf" | ||||
| 
 | ||||
| DEFAULT_USER_AGENT="le.sh client: $PROJECT" | ||||
| DEFAULT_USER_AGENT="$PROJECT_ENTRY client: $PROJECT" | ||||
| 
 | ||||
| STAGE_CA="https://acme-staging.api.letsencrypt.org" | ||||
| 
 | ||||
| @ -213,7 +217,7 @@ toPkcs() { | ||||
|   domain="$1" | ||||
|   pfxPassword="$2" | ||||
|   if [[ -z "$domain" ]] ; then | ||||
|     echo "Usage: le.sh --toPkcs -d domain [--password pfx-password]" | ||||
|     echo "Usage: $PROJECT_ENTRY --toPkcs -d domain [--password pfx-password]" | ||||
|     return 1 | ||||
|   fi | ||||
| 
 | ||||
| @ -235,7 +239,7 @@ toPkcs() { | ||||
| createAccountKey() { | ||||
|   _info "Creating account key" | ||||
|   if [[ -z "$1" ]] ; then | ||||
|     echo Usage: le.sh --createAccountKey -d domain.com  [--accountkeylength 2048] | ||||
|     echo Usage: $PROJECT_ENTRY --createAccountKey -d domain.com  [--accountkeylength 2048] | ||||
|     return | ||||
|   fi | ||||
|    | ||||
| @ -266,7 +270,7 @@ createAccountKey() { | ||||
| createDomainKey() { | ||||
|   _info "Creating domain key" | ||||
|   if [[ -z "$1" ]] ; then | ||||
|     echo Usage: le.sh --createDomainKey -d domain.com  [ --keylength 2048 ] | ||||
|     echo Usage: $PROJECT_ENTRY --createDomainKey -d domain.com  [ --keylength 2048 ] | ||||
|     return | ||||
|   fi | ||||
|    | ||||
| @ -327,7 +331,7 @@ createDomainKey() { | ||||
| createCSR() { | ||||
|   _info "Creating csr" | ||||
|   if [[ -z "$1" ]] ; then | ||||
|     echo Usage: le.sh --createCSR -d domain1.com [-d domain2.com  -d domain3.com ... ] | ||||
|     echo Usage: $PROJECT_ENTRY --createCSR -d domain1.com [-d domain2.com  -d domain3.com ... ] | ||||
|     return | ||||
|   fi | ||||
|   domain=$1 | ||||
| @ -911,7 +915,7 @@ _clearupwebbroot() { | ||||
| 
 | ||||
| issue() { | ||||
|   if [[ -z "$2" ]] ; then | ||||
|     echo "Usage: le  --issue  -d  a.com  -w /path/to/webroot/a.com/ " | ||||
|     echo "Usage: $PROJECT_ENTRY --issue  -d  a.com  -w /path/to/webroot/a.com/ " | ||||
|     return 1 | ||||
|   fi | ||||
|   Le_Webroot="$1" | ||||
| @ -1371,7 +1375,7 @@ issue() { | ||||
| renew() { | ||||
|   Le_Domain="$1" | ||||
|   if [[ -z "$Le_Domain" ]] ; then | ||||
|     _err "Usage: le.sh --renew  -d domain.com" | ||||
|     _err "Usage: $PROJECT_ENTRY --renew  -d domain.com" | ||||
|     return 1 | ||||
|   fi | ||||
| 
 | ||||
| @ -1446,7 +1450,7 @@ renewAll() { | ||||
| installcert() { | ||||
|   Le_Domain="$1" | ||||
|   if [[ -z "$Le_Domain" ]] ; then | ||||
|     echo "Usage: le.sh --installcert -d domain.com  [--certpath cert-file-path]  [--keypath key-file-path]  [--capath ca-cert-file-path]   [ --reloadCmd reloadCmd] [--fullchainpath fullchain-path]" | ||||
|     echo "Usage: $PROJECT_ENTRY --installcert -d domain.com  [--certpath cert-file-path]  [--keypath key-file-path]  [--capath ca-cert-file-path]   [ --reloadCmd reloadCmd] [--fullchainpath fullchain-path]" | ||||
|     return 1 | ||||
|   fi | ||||
| 
 | ||||
| @ -1510,24 +1514,24 @@ installcronjob() { | ||||
|   if ! _exists "crontab" ; then | ||||
|     _err "crontab doesn't exist, so, we can not install cron jobs." | ||||
|     _err "All your certs will not be renewed automatically." | ||||
|     _err "You must add your own cron job to call 'le.sh cron' everyday." | ||||
|     _err "You must add your own cron job to call '$PROJECT_ENTRY --cron' everyday." | ||||
|     return 1 | ||||
|   fi | ||||
| 
 | ||||
|   _info "Installing cron job" | ||||
|   if ! crontab -l | grep 'le.sh cron' ; then  | ||||
|     if [[ -f "$LE_WORKING_DIR/le.sh" ]] ; then | ||||
|       lesh="\"$LE_WORKING_DIR\"/le.sh" | ||||
|   if ! crontab -l | grep "$PROJECT_ENTRY --cron" ; then  | ||||
|     if [[ -f "$LE_WORKING_DIR/$PROJECT_ENTRY" ]] ; then | ||||
|       lesh="\"$LE_WORKING_DIR\"/$PROJECT_ENTRY" | ||||
|     else | ||||
|       _err "Can not install cronjob, le.sh not found." | ||||
|       _err "Can not install cronjob, $PROJECT_ENTRY not found." | ||||
|       return 1 | ||||
|     fi | ||||
|     crontab -l | { cat; echo "0 0 * * * LE_WORKING_DIR=\"$LE_WORKING_DIR\" $lesh cron > /dev/null"; } | crontab - | ||||
|     crontab -l | { cat; echo "0 0 * * * $lesh --cron --home \"$LE_WORKING_DIR\" > /dev/null"; } | crontab - | ||||
|   fi | ||||
|   if [[ "$?" != "0" ]] ; then | ||||
|     _err "Install cron job failed. You need to manually renew your certs." | ||||
|     _err "Or you can add cronjob by yourself:" | ||||
|     _err "LE_WORKING_DIR=\"$LE_WORKING_DIR\" $lesh cron > /dev/null" | ||||
|     _err "$lesh --cron --home \"$LE_WORKING_DIR\" > /dev/null" | ||||
|     return 1 | ||||
|   fi | ||||
| } | ||||
| @ -1537,10 +1541,10 @@ uninstallcronjob() { | ||||
|     return | ||||
|   fi | ||||
|   _info "Removing cron job" | ||||
|   cr="$(crontab -l | grep 'le.sh cron')" | ||||
|   cr="$(crontab -l | grep "$PROJECT_ENTRY --cron")" | ||||
|   if [[ "$cr" ]] ; then  | ||||
|     crontab -l | sed "/le.sh cron/d" | crontab - | ||||
|     LE_WORKING_DIR="$(echo "$cr" | cut -d ' ' -f 6 | cut -d '=' -f 2 | tr -d '"')" | ||||
|     crontab -l | sed "/$PROJECT_ENTRY --cron/d" | crontab - | ||||
|     LE_WORKING_DIR="$(echo "$cr" | cut -d ' ' -f 9 | tr -d '"')" | ||||
|     _info LE_WORKING_DIR "$LE_WORKING_DIR" | ||||
|   fi  | ||||
|   _initpath | ||||
| @ -1550,7 +1554,7 @@ uninstallcronjob() { | ||||
| revoke() { | ||||
|   Le_Domain="$1" | ||||
|   if [[ -z "$Le_Domain" ]] ; then | ||||
|     echo "Usage: le.sh --revoke -d domain.com" | ||||
|     echo "Usage: $PROJECT_ENTRY --revoke -d domain.com" | ||||
|     return 1 | ||||
|   fi | ||||
|    | ||||
| @ -1658,7 +1662,7 @@ _initconf() { | ||||
| 
 | ||||
| #ACCOUNT_KEY_HASH=account key hash | ||||
| 
 | ||||
| USER_AGENT=\"le.sh client: $PROJECT\" | ||||
| USER_AGENT=\"$DEFAULT_USER_AGENT\" | ||||
| 
 | ||||
| #USER_PATH="" | ||||
| 
 | ||||
| @ -1698,8 +1702,8 @@ _precheck() { | ||||
|     _err "We need to set cron job to renew the certs automatically." | ||||
|     _err "Otherwise, your certs will not be able to be renewed automatically." | ||||
|     if [[ -z "$FORCE" ]] ; then | ||||
|       _err "Please define 'FORCE=1' and try install again to go without crontab." | ||||
|       _err "FORCE=1 ./le.sh install" | ||||
|       _err "Please add '--force' and try install again to go without crontab." | ||||
|       _err "./$PROJECT_ENTRY --install --force" | ||||
|       return 1 | ||||
|     fi | ||||
|   fi | ||||
| @ -1737,28 +1741,28 @@ install() { | ||||
|     return 1 | ||||
|   fi | ||||
|    | ||||
|   cp le.sh "$LE_WORKING_DIR/" && chmod +x "$LE_WORKING_DIR/le.sh" | ||||
|   cp $PROJECT_ENTRY "$LE_WORKING_DIR/" && chmod +x "$LE_WORKING_DIR/$PROJECT_ENTRY" | ||||
| 
 | ||||
|   if [[ "$?" != "0" ]] ; then | ||||
|     _err "Install failed, can not copy le.sh" | ||||
|     _err "Install failed, can not copy $PROJECT_ENTRY" | ||||
|     return 1 | ||||
|   fi | ||||
| 
 | ||||
|   _info "Installed to $LE_WORKING_DIR/le.sh" | ||||
|   _info "Installed to $LE_WORKING_DIR/$PROJECT_ENTRY" | ||||
| 
 | ||||
|   _profile="$(_detect_profile)" | ||||
|   if [[ "$_profile" ]] ; then | ||||
|     _debug "Found profile: $_profile" | ||||
|      | ||||
|     echo "LE_WORKING_DIR=$LE_WORKING_DIR | ||||
| alias le=\"$LE_WORKING_DIR/le.sh\" | ||||
| alias le.sh=\"$LE_WORKING_DIR/le.sh\" | ||||
|     " > "$LE_WORKING_DIR/le.env" | ||||
| alias le=\"$LE_WORKING_DIR/$PROJECT_ENTRY\" | ||||
| alias $PROJECT_ENTRY=\"$LE_WORKING_DIR/$PROJECT_ENTRY\" | ||||
|     " > "$LE_WORKING_DIR/$PROJECT_ENTRY.env" | ||||
|     echo "" >> "$_profile" | ||||
|     _setopt "$_profile" "source \"$LE_WORKING_DIR/le.env\"" | ||||
|     _info "OK, Close and reopen your terminal to start using le" | ||||
|     _setopt "$_profile" "source \"$LE_WORKING_DIR/$PROJECT_NAME.env\"" | ||||
|     _info "OK, Close and reopen your terminal to start using $PROJECT_NAME" | ||||
|   else | ||||
|     _info "No profile is found, you will need to go into $LE_WORKING_DIR to use le.sh" | ||||
|     _info "No profile is found, you will need to go into $LE_WORKING_DIR to use $PROJECT_NAME" | ||||
|   fi | ||||
| 
 | ||||
|   mkdir -p $LE_WORKING_DIR/dnsapi | ||||
| @ -1788,10 +1792,10 @@ uninstall() { | ||||
|   _profile="$(_detect_profile)" | ||||
|   if [[ "$_profile" ]] ; then | ||||
|     text="$(cat $_profile)" | ||||
|     echo "$text" | sed "s|^source.*le.env.*$||" > "$_profile" | ||||
|     echo "$text" | sed "s|^source.*$PROJECT_NAME.env.*$||" > "$_profile" | ||||
|   fi | ||||
| 
 | ||||
|   rm -f $LE_WORKING_DIR/le.sh | ||||
|   rm -f $LE_WORKING_DIR/$PROJECT_ENTRY | ||||
|   _info "The keys and certs are in $LE_WORKING_DIR, you can remove them by yourself." | ||||
| 
 | ||||
| } | ||||
| @ -1809,12 +1813,12 @@ version() { | ||||
| 
 | ||||
| showhelp() { | ||||
|   version | ||||
|   echo "Usage: le.sh  command ...[parameters].... | ||||
|   echo "Usage: $PROJECT_ENTRY  command ...[parameters].... | ||||
| Commands: | ||||
|   --help, -h               Show this help message. | ||||
|   --version, -v            Show version info. | ||||
|   --install                Install le.sh to your system. | ||||
|   --uninstall              Uninstall le.sh, and uninstall the cron job. | ||||
|   --install                Install $PROJECT_NAME to your system. | ||||
|   --uninstall              Uninstall $PROJECT_NAME, and uninstall the cron job. | ||||
|   --issue                  Issue a cert. | ||||
|   --installcert            Install the issued cert to apache/nginx or any other server. | ||||
|   --renew, -r              Renew a cert. | ||||
| @ -1852,7 +1856,7 @@ Parameters: | ||||
|   --reloadcmd \"service nginx reload\" After issue/renew, it's used to reload the server. | ||||
| 
 | ||||
|   --accountconf                     Specifies a customized account config file. | ||||
|   --leworkingdir                    Specifies the home dir for le.sh | ||||
|   --home                            Specifies the home dir for $PROJECT_NAME | ||||
|    | ||||
|   " | ||||
| } | ||||
| @ -1873,8 +1877,8 @@ _installOnline() { | ||||
|   _info "Extracting $localname" | ||||
|   tar xzf $localname | ||||
|   cd "le-$BRANCH" | ||||
|   chmod +x le.sh | ||||
|   if ./le.sh install ; then | ||||
|   chmod +x $PROJECT_ENTRY | ||||
|   if ./$PROJECT_ENTRY install ; then | ||||
|     _info "Install success!" | ||||
|   fi | ||||
|    | ||||
| @ -2059,9 +2063,11 @@ _process() { | ||||
|         ;; | ||||
|     --accountconf) | ||||
|         ACCOUNT_CONF_PATH="$2" | ||||
|         shift | ||||
|         ;; | ||||
|     --leworkingdir) | ||||
|     --home) | ||||
|         LE_WORKING_DIR="$2" | ||||
|         shift | ||||
|         ;; | ||||
|          | ||||
|     *) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user