mirror of
				https://github.com/hiskang/acme.sh
				synced 2025-10-31 10:27:22 +00:00 
			
		
		
		
	add nsupdate script for dns-01
This commit is contained in:
		
							parent
							
								
									5d6fd8099f
								
							
						
					
					
						commit
						0fb206fe15
					
				
							
								
								
									
										94
									
								
								dnsapi/dns_nsupdate.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										94
									
								
								dnsapi/dns_nsupdate.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,94 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ########  Public functions ##################### | ||||||
|  | 
 | ||||||
|  | #Usage: dns_nsupdate_add   _acme-challenge.www.domain.com   "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs" | ||||||
|  | dns_nsupdate_add() { | ||||||
|  |   fulldomain=$1 | ||||||
|  |   txtvalue=$2 | ||||||
|  |   _checkKeyFile || return 1 | ||||||
|  |   NSUPDATE_SERVER=${NSUPDATE_SERVER:-localhost} | ||||||
|  |   # save the dns server and key to the account conf file. | ||||||
|  |   _saveaccountconf NSUPDATE_SERVER "${NSUPDATE_SERVER}" | ||||||
|  |   _saveaccountconf NSUPDATE_KEY "${NSUPDATE_KEY}" | ||||||
|  |   tmp=$(mktemp --tmpdir acme_nsupdate.XXXXXX) | ||||||
|  |   cat > ${tmp} <<EOF | ||||||
|  | server ${NSUPDATE_SERVER} | ||||||
|  | update add ${fulldomain}. 60 in txt "${txtvalue}" | ||||||
|  | send | ||||||
|  | EOF | ||||||
|  |   _info "adding ${fulldomain}. 60 in txt \"${txtvalue}\"" | ||||||
|  |   nsupdate -k ${NSUPDATE_KEY} ${tmp} | ||||||
|  |   if [ $? -ne 0 ]; then | ||||||
|  |     _err "error updating domain, see ${tmp} for details" | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  |   rm -f ${tmp} | ||||||
|  |    | ||||||
|  |   return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #Usage: dns_nsupdate_rm   _acme-challenge.www.domain.com | ||||||
|  | dns_nsupdate_rm() { | ||||||
|  |   fulldomain=$1 | ||||||
|  |   _checkKeyFile || return 1 | ||||||
|  |   NSUPDATE_SERVER=${NSUPDATE_SERVER:-localhost} | ||||||
|  |   tmp=$(mktemp --tmpdir acme_nsupdate.XXXXXX) | ||||||
|  |   cat > ${tmp} <<EOF | ||||||
|  | server ${NSUPDATE_SERVER} | ||||||
|  | update delete ${fulldomain}. txt | ||||||
|  | send | ||||||
|  | EOF | ||||||
|  |   _info "removing ${fulldomain}. txt" | ||||||
|  |   nsupdate -k ${NSUPDATE_KEY} ${tmp} | ||||||
|  |   if [ $? -ne 0 ]; then | ||||||
|  |     _err "error updating domain, see ${tmp} for details" | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  |   rm -f ${tmp} | ||||||
|  | 
 | ||||||
|  |   return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ####################  Private functions bellow ################################## | ||||||
|  | 
 | ||||||
|  | _checkKeyFile() { | ||||||
|  |   if [ -z "${NSUPDATE_KEY}" ]; then | ||||||
|  |     _err "you must specify a path to the nsupdate key file" | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  |   if [ ! -r "${NSUPDATE_KEY}" ]; then | ||||||
|  |     _err "key ${NSUPDATE_KEY} is unreadable" | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _info() { | ||||||
|  |   if [ -z "$2" ] ; then | ||||||
|  |     echo "[$(date)] $1" | ||||||
|  |   else | ||||||
|  |     echo "[$(date)] $1='$2'" | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _err() { | ||||||
|  |   _info "$@" >&2 | ||||||
|  |   return 1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _debug() { | ||||||
|  |   if [ -z "$DEBUG" ] ; then | ||||||
|  |     return | ||||||
|  |   fi | ||||||
|  |   _err "$@" | ||||||
|  |   return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _debug2() { | ||||||
|  |   if [ "$DEBUG" ] && [ "$DEBUG" -ge "2" ] ; then | ||||||
|  |     _debug "$@" | ||||||
|  |   fi | ||||||
|  |   return | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user