mirror of
				https://github.com/hiskang/acme.sh
				synced 2025-11-04 04:17:40 +00:00 
			
		
		
		
	Merge pull request #1318 from raidenii/master
New DNS plugin for name.com for new API.
This commit is contained in:
		
						commit
						fd56fe6eb2
					
				@ -1,11 +1,12 @@
 | 
				
			|||||||
#!/usr/bin/env sh
 | 
					#!/usr/bin/env sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Author: RaidneII
 | 
					#Author: RaidenII
 | 
				
			||||||
#Created 06/28/2017
 | 
					#Created 06/28/2017
 | 
				
			||||||
 | 
					#Updated 03/01/2018, rewrote to support name.com API v4
 | 
				
			||||||
#Utilize name.com API to finish dns-01 verifications.
 | 
					#Utilize name.com API to finish dns-01 verifications.
 | 
				
			||||||
########  Public functions #####################
 | 
					########  Public functions #####################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Namecom_API="https://api.name.com/api"
 | 
					Namecom_API="https://api.name.com/v4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Usage: dns_namecom_add   _acme-challenge.www.domain.com   "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
 | 
					#Usage: dns_namecom_add   _acme-challenge.www.domain.com   "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
 | 
				
			||||||
dns_namecom_add() {
 | 
					dns_namecom_add() {
 | 
				
			||||||
@ -39,21 +40,18 @@ dns_namecom_add() {
 | 
				
			|||||||
  # Find domain in domain list.
 | 
					  # Find domain in domain list.
 | 
				
			||||||
  if ! _namecom_get_root "$fulldomain"; then
 | 
					  if ! _namecom_get_root "$fulldomain"; then
 | 
				
			||||||
    _err "Unable to find domain specified."
 | 
					    _err "Unable to find domain specified."
 | 
				
			||||||
    _namecom_logout
 | 
					 | 
				
			||||||
    return 1
 | 
					    return 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Add TXT record.
 | 
					  # Add TXT record.
 | 
				
			||||||
  _namecom_addtxt_json="{\"hostname\":\"$_sub_domain\",\"type\":\"TXT\",\"content\":\"$txtvalue\",\"ttl\":\"300\",\"priority\":\"10\"}"
 | 
					  _namecom_addtxt_json="{\"host\":\"$_sub_domain\",\"type\":\"TXT\",\"answer\":\"$txtvalue\",\"ttl\":\"300\"}"
 | 
				
			||||||
  if _namecom_rest POST "dns/create/$_domain" "$_namecom_addtxt_json"; then
 | 
					  if _namecom_rest POST "domains/$_domain/records" "$_namecom_addtxt_json"; then
 | 
				
			||||||
    retcode=$(printf "%s\n" "$response" | _egrep_o "\"code\":100")
 | 
					    _retvalue=$(printf "%s\n" "$response" | _egrep_o "\"$_sub_domain\"")
 | 
				
			||||||
    if [ "$retcode" ]; then
 | 
					    if [ "$_retvalue" ]; then
 | 
				
			||||||
      _info "Successfully added TXT record, ready for validation."
 | 
					      _info "Successfully added TXT record, ready for validation."
 | 
				
			||||||
      _namecom_logout
 | 
					 | 
				
			||||||
      return 0
 | 
					      return 0
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      _err "Unable to add the DNS record."
 | 
					      _err "Unable to add the DNS record."
 | 
				
			||||||
      _namecom_logout
 | 
					 | 
				
			||||||
      return 1
 | 
					      return 1
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
@ -72,37 +70,28 @@ dns_namecom_rm() {
 | 
				
			|||||||
  # Find domain in domain list.
 | 
					  # Find domain in domain list.
 | 
				
			||||||
  if ! _namecom_get_root "$fulldomain"; then
 | 
					  if ! _namecom_get_root "$fulldomain"; then
 | 
				
			||||||
    _err "Unable to find domain specified."
 | 
					    _err "Unable to find domain specified."
 | 
				
			||||||
    _namecom_logout
 | 
					 | 
				
			||||||
    return 1
 | 
					    return 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Get the record id.
 | 
					  # Get the record id.
 | 
				
			||||||
  if _namecom_rest GET "dns/list/$_domain"; then
 | 
					  if _namecom_rest GET "domains/$_domain/records"; then
 | 
				
			||||||
    retcode=$(printf "%s\n" "$response" | _egrep_o "\"code\":100")
 | 
					    _record_id=$(printf "%s\n" "$response" | _egrep_o "\"id\":[0-9]+,\"domainName\":\"$_domain\",\"host\":\"$_sub_domain\",\"fqdn\":\"$fulldomain.\",\"type\":\"TXT\",\"answer\":\"$txtvalue\"" | cut -d \" -f 3 | _egrep_o [0-9]+)
 | 
				
			||||||
    if [ "$retcode" ]; then
 | 
					    _debug record_id "$_record_id"
 | 
				
			||||||
      _record_id=$(printf "%s\n" "$response" | _egrep_o "\"record_id\":\"[0-9]+\",\"name\":\"$fulldomain\",\"type\":\"TXT\"" | cut -d \" -f 4)
 | 
					    if [ "$_record_id" ]; then
 | 
				
			||||||
      _debug record_id "$_record_id"
 | 
					 | 
				
			||||||
      _info "Successfully retrieved the record id for ACME challenge."
 | 
					      _info "Successfully retrieved the record id for ACME challenge."
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      _err "Unable to retrieve the record id."
 | 
					      _err "Unable to retrieve the record id."
 | 
				
			||||||
      _namecom_logout
 | 
					 | 
				
			||||||
      return 1
 | 
					      return 1
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Remove the DNS record using record id.
 | 
					  # Remove the DNS record using record id.
 | 
				
			||||||
  _namecom_rmtxt_json="{\"record_id\":\"$_record_id\"}"
 | 
					  if _namecom_rest DELETE "domains/$_domain/records/$_record_id"; then
 | 
				
			||||||
  if _namecom_rest POST "dns/delete/$_domain" "$_namecom_rmtxt_json"; then
 | 
					    _info "Successfully removed the TXT record."
 | 
				
			||||||
    retcode=$(printf "%s\n" "$response" | _egrep_o "\"code\":100")
 | 
					    return 0
 | 
				
			||||||
    if [ "$retcode" ]; then
 | 
					  else
 | 
				
			||||||
      _info "Successfully removed the TXT record."
 | 
					    _err "Unable to delete record id."
 | 
				
			||||||
      _namecom_logout
 | 
					    return 1
 | 
				
			||||||
      return 0
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
      _err "Unable to remove the DNS record."
 | 
					 | 
				
			||||||
      _namecom_logout
 | 
					 | 
				
			||||||
      return 1
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -112,8 +101,9 @@ _namecom_rest() {
 | 
				
			|||||||
  param=$2
 | 
					  param=$2
 | 
				
			||||||
  data=$3
 | 
					  data=$3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  export _H1="Content-Type: application/json"
 | 
					  export _H1="Authorization: Basic $_namecom_auth"
 | 
				
			||||||
  export _H2="Api-Session-Token: $sessionkey"
 | 
					  export _H2="Content-Type: application/json"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ "$method" != "GET" ]; then
 | 
					  if [ "$method" != "GET" ]; then
 | 
				
			||||||
    response="$(_post "$data" "$Namecom_API/$param" "" "$method")"
 | 
					    response="$(_post "$data" "$Namecom_API/$param" "" "$method")"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
@ -130,20 +120,15 @@ _namecom_rest() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_namecom_login() {
 | 
					_namecom_login() {
 | 
				
			||||||
  namecom_login_json="{\"username\":\"$Namecom_Username\",\"api_token\":\"$Namecom_Token\"}"
 | 
					  # Auth string
 | 
				
			||||||
 | 
					  # Name.com API v4 uses http basic auth to authenticate
 | 
				
			||||||
 | 
					  # need to convert the token for http auth
 | 
				
			||||||
 | 
					  _namecom_auth=$(printf "%s:%s" "$Namecom_Username" "$Namecom_Token" | base64)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if _namecom_rest POST "login" "$namecom_login_json"; then
 | 
					  if _namecom_rest GET "hello"; then
 | 
				
			||||||
    retcode=$(printf "%s\n" "$response" | _egrep_o "\"code\":100")
 | 
					    retcode=$(printf "%s\n" "$response" | _egrep_o "\"username\"\:\"$Namecom_Username\"")
 | 
				
			||||||
    if [ "$retcode" ]; then
 | 
					    if [ "$retcode" ]; then
 | 
				
			||||||
      _info "Successfully logged in. Fetching session token..."
 | 
					      _info "Successfully logged in."
 | 
				
			||||||
      sessionkey=$(printf "%s\n" "$response" | _egrep_o "\"session_token\":\".+" | cut -d \" -f 4)
 | 
					 | 
				
			||||||
      if [ ! -z "$sessionkey" ]; then
 | 
					 | 
				
			||||||
        _debug sessionkey "$sessionkey"
 | 
					 | 
				
			||||||
        _info "Session key obtained."
 | 
					 | 
				
			||||||
      else
 | 
					 | 
				
			||||||
        _err "Unable to get session key."
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      _err "Logging in failed."
 | 
					      _err "Logging in failed."
 | 
				
			||||||
      return 1
 | 
					      return 1
 | 
				
			||||||
@ -151,24 +136,12 @@ _namecom_login() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_namecom_logout() {
 | 
					 | 
				
			||||||
  if _namecom_rest GET "logout"; then
 | 
					 | 
				
			||||||
    retcode=$(printf "%s\n" "$response" | _egrep_o "\"code\":100")
 | 
					 | 
				
			||||||
    if [ "$retcode" ]; then
 | 
					 | 
				
			||||||
      _info "Successfully logged out."
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
      _err "Error logging out."
 | 
					 | 
				
			||||||
      return 1
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_namecom_get_root() {
 | 
					_namecom_get_root() {
 | 
				
			||||||
  domain=$1
 | 
					  domain=$1
 | 
				
			||||||
  i=2
 | 
					  i=2
 | 
				
			||||||
  p=1
 | 
					  p=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ! _namecom_rest GET "domain/list"; then
 | 
					  if ! _namecom_rest GET "domains"; then
 | 
				
			||||||
    return 1
 | 
					    return 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user