mirror of
				https://github.com/hiskang/acme.sh
				synced 2025-10-30 18:07:15 +00:00 
			
		
		
		
	
						commit
						5def1169db
					
				| @ -512,14 +512,11 @@ export DuckDNS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" | |||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Please note that since DuckDNS uses StartSSL as their cert provider, thus  | Please note that since DuckDNS uses StartSSL as their cert provider, thus  | ||||||
| --insecure must be used when issuing certs: | --insecure may need to be used when issuing certs: | ||||||
| ``` | ``` | ||||||
| acme.sh --insecure --issue --dns dns_duckdns -d mydomain.duckdns.org | acme.sh --insecure --issue --dns dns_duckdns -d mydomain.duckdns.org | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Also, DuckDNS uses the domain name as username for recording changing, so the |  | ||||||
| account file will always store the lastly used domain name. |  | ||||||
| 
 |  | ||||||
| For issues, please report to https://github.com/raidenii/acme.sh/issues. | For issues, please report to https://github.com/raidenii/acme.sh/issues. | ||||||
| 
 | 
 | ||||||
| ## 28. Use Name.com API | ## 28. Use Name.com API | ||||||
|  | |||||||
| @ -3,11 +3,14 @@ | |||||||
| #Created by RaidenII, to use DuckDNS's API to add/remove text records | #Created by RaidenII, to use DuckDNS's API to add/remove text records | ||||||
| #06/27/2017 | #06/27/2017 | ||||||
| 
 | 
 | ||||||
| # Currently only support single domain access | # Pass credentials before "acme.sh --issue --dns dns_duckdns ..." | ||||||
| # Due to the fact that DuckDNS uses StartSSL as cert provider, --insecure must be used with acme.sh | # -- | ||||||
|  | # export DuckDNS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" | ||||||
|  | # -- | ||||||
|  | # | ||||||
|  | # Due to the fact that DuckDNS uses StartSSL as cert provider, --insecure may need to be used with acme.sh | ||||||
| 
 | 
 | ||||||
| DuckDNS_API="https://www.duckdns.org/update" | DuckDNS_API="https://www.duckdns.org/update" | ||||||
| API_Params="domains=$DuckDNS_Domain&token=$DuckDNS_Token" |  | ||||||
| 
 | 
 | ||||||
| ########  Public functions ##################### | ########  Public functions ##################### | ||||||
| 
 | 
 | ||||||
| @ -16,35 +19,36 @@ dns_duckdns_add() { | |||||||
|   fulldomain=$1 |   fulldomain=$1 | ||||||
|   txtvalue=$2 |   txtvalue=$2 | ||||||
| 
 | 
 | ||||||
|   # We'll extract the domain/username from full domain |   DuckDNS_Token="${DuckDNS_Token:-$(_readaccountconf_mutable DuckDNS_Token)}" | ||||||
|   DuckDNS_Domain=$(echo "$fulldomain" | _lower_case | _egrep_o '.[^.]*.duckdns.org' | cut -d . -f 2) |  | ||||||
| 
 |  | ||||||
|   if [ -z "$DuckDNS_Domain" ]; then |  | ||||||
|     _err "Error extracting the domain." |  | ||||||
|     return 1 |  | ||||||
|   fi |  | ||||||
| 
 |  | ||||||
|   if [ -z "$DuckDNS_Token" ]; then |   if [ -z "$DuckDNS_Token" ]; then | ||||||
|     DuckDNS_Token="" |     _err "You must export variable: DuckDNS_Token" | ||||||
|     _err "The token for your DuckDNS account is necessary." |     _err "The token for your DuckDNS account is necessary." | ||||||
|     _err "You can look it up in your DuckDNS account." |     _err "You can look it up in your DuckDNS account." | ||||||
|     return 1 |     return 1 | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|   # Now save the credentials. |   # Now save the credentials. | ||||||
|   _saveaccountconf DuckDNS_Domain "$DuckDNS_Domain" |   _saveaccountconf_mutable DuckDNS_Token "$DuckDNS_Token" | ||||||
|   _saveaccountconf DuckDNS_Token "$DuckDNS_Token" |  | ||||||
| 
 | 
 | ||||||
|   # Unfortunately, DuckDNS does not seems to support lookup domain through API |   # Unfortunately, DuckDNS does not seems to support lookup domain through API | ||||||
|   # So I assume your credentials (which are your domain and token) are correct |   # So I assume your credentials (which are your domain and token) are correct | ||||||
|   # If something goes wrong, we will get a KO response from DuckDNS |   # If something goes wrong, we will get a KO response from DuckDNS | ||||||
| 
 | 
 | ||||||
|  |   if ! _duckdns_get_domain; then | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|   # Now add the TXT record to DuckDNS |   # Now add the TXT record to DuckDNS | ||||||
|   _info "Trying to add TXT record" |   _info "Trying to add TXT record" | ||||||
|   if _duckdns_rest GET "$API_Params&txt=$txtvalue" && [ "$response" = "OK" ]; then |   if _duckdns_rest GET "domains=$_duckdns_domain&token=$DuckDNS_Token&txt=$txtvalue"; then | ||||||
|  |     if [ "$response" = "OK" ]; then | ||||||
|       _info "TXT record has been successfully added to your DuckDNS domain." |       _info "TXT record has been successfully added to your DuckDNS domain." | ||||||
|       _info "Note that all subdomains under this domain uses the same TXT record." |       _info "Note that all subdomains under this domain uses the same TXT record." | ||||||
|       return 0 |       return 0 | ||||||
|  |     else | ||||||
|  |       _err "Errors happened during adding the TXT record, response=$response" | ||||||
|  |       return 1 | ||||||
|  |     fi | ||||||
|   else |   else | ||||||
|     _err "Errors happened during adding the TXT record." |     _err "Errors happened during adding the TXT record." | ||||||
|     return 1 |     return 1 | ||||||
| @ -57,11 +61,28 @@ dns_duckdns_rm() { | |||||||
|   fulldomain=$1 |   fulldomain=$1 | ||||||
|   txtvalue=$2 |   txtvalue=$2 | ||||||
| 
 | 
 | ||||||
|  |   DuckDNS_Token="${DuckDNS_Token:-$(_readaccountconf_mutable DuckDNS_Token)}" | ||||||
|  |   if [ -z "$DuckDNS_Token" ]; then | ||||||
|  |     _err "You must export variable: DuckDNS_Token" | ||||||
|  |     _err "The token for your DuckDNS account is necessary." | ||||||
|  |     _err "You can look it up in your DuckDNS account." | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   if ! _duckdns_get_domain; then | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|   # Now remove the TXT record from DuckDNS |   # Now remove the TXT record from DuckDNS | ||||||
|   _info "Trying to remove TXT record" |   _info "Trying to remove TXT record" | ||||||
|   if _duckdns_rest GET "$API_Params&txt=&clear=true" && [ "$response" = "OK" ]; then |   if _duckdns_rest GET "domains=$_duckdns_domain&token=$DuckDNS_Token&txt=&clear=true"; then | ||||||
|  |     if [ "$response" = "OK" ]; then | ||||||
|       _info "TXT record has been successfully removed from your DuckDNS domain." |       _info "TXT record has been successfully removed from your DuckDNS domain." | ||||||
|       return 0 |       return 0 | ||||||
|  |     else | ||||||
|  |       _err "Errors happened during removing the TXT record, response=$response" | ||||||
|  |       return 1 | ||||||
|  |     fi | ||||||
|   else |   else | ||||||
|     _err "Errors happened during removing the TXT record." |     _err "Errors happened during removing the TXT record." | ||||||
|     return 1 |     return 1 | ||||||
| @ -70,6 +91,22 @@ dns_duckdns_rm() { | |||||||
| 
 | 
 | ||||||
| ####################  Private functions below ################################## | ####################  Private functions below ################################## | ||||||
| 
 | 
 | ||||||
|  | #fulldomain=_acme-challenge.domain.duckdns.org | ||||||
|  | #returns | ||||||
|  | # _duckdns_domain=domain | ||||||
|  | _duckdns_get_domain() { | ||||||
|  | 
 | ||||||
|  |   # We'll extract the domain/username from full domain | ||||||
|  |   _duckdns_domain="$(printf "%s" "$fulldomain" | _lower_case | _egrep_o '[.][^.][^.]*[.]duckdns.org' | cut -d . -f 2)" | ||||||
|  | 
 | ||||||
|  |   if [ -z "$_duckdns_domain" ]; then | ||||||
|  |     _err "Error extracting the domain." | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   return 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #Usage: method URI | #Usage: method URI | ||||||
| _duckdns_rest() { | _duckdns_rest() { | ||||||
|   method=$1 |   method=$1 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user