mirror of
				https://github.com/hiskang/acme.sh
				synced 2025-10-31 02:17:18 +00:00 
			
		
		
		
	Get rid of curl.
This commit is contained in:
		
							parent
							
								
									7d64e141e4
								
							
						
					
					
						commit
						4285d81ca9
					
				
							
								
								
									
										102
									
								
								dnsapi/dns_he.sh
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								dnsapi/dns_he.sh
									
									
									
									
									
								
							| @ -1,8 +1,5 @@ | |||||||
| #!/usr/bin/env sh | #!/usr/bin/env sh | ||||||
| 
 | 
 | ||||||
| # TODO Somehow use _get instead of curl - not sure how to support |  | ||||||
| #      cookies though... |  | ||||||
| 
 |  | ||||||
| ######################################################################## | ######################################################################## | ||||||
| # Hurricane Electric hook script for acme.sh | # Hurricane Electric hook script for acme.sh | ||||||
| # | # | ||||||
| @ -23,7 +20,12 @@ dns_he_add() { | |||||||
|   _txt_value=$2 |   _txt_value=$2 | ||||||
|   _info "Using DNS-01 Hurricane Electric hook" |   _info "Using DNS-01 Hurricane Electric hook" | ||||||
| 
 | 
 | ||||||
|   _authenticate || return 1 |   if [ -z "$HE_Username" ] && [ -z "$HE_Password" ]; then | ||||||
|  |     _err \ | ||||||
|  |       'No auth details provided. Please set user credentials using the \ | ||||||
|  |       \$HE_Username and \$HE_Password envoronment variables.' | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|   _saveaccountconf HE_Username "$HE_Username" |   _saveaccountconf HE_Username "$HE_Username" | ||||||
|   _saveaccountconf HE_Password "$HE_Password" |   _saveaccountconf HE_Password "$HE_Password" | ||||||
| 
 | 
 | ||||||
| @ -31,20 +33,20 @@ dns_he_add() { | |||||||
|   _find_zone $_full_domain || return 1 |   _find_zone $_full_domain || return 1 | ||||||
|   _debug "Zone id \"$_zone_id\" will be used." |   _debug "Zone id \"$_zone_id\" will be used." | ||||||
| 
 | 
 | ||||||
|   curl -L --silent --show-error --cookie "$_he_cookie" \ |   body="email=${HE_Username}&pass=${HE_Password}" | ||||||
|     --form "account=" \ |   body="$body&account=" | ||||||
|     --form "menu=edit_zone" \ |   body="$body&account=" | ||||||
|     --form "Type=TXT" \ |   body="$body&menu=edit_zone" | ||||||
|     --form "hosted_dns_zoneid=$_zone_id" \ |   body="$body&Type=TXT" | ||||||
|     --form "hosted_dns_recordid=" \ |   body="$body&hosted_dns_zoneid=$_zone_id" | ||||||
|     --form "hosted_dns_editzone=1" \ |   body="$body&hosted_dns_recordid=" | ||||||
|     --form "Priority=" \ |   body="$body&hosted_dns_editzone=1" | ||||||
|     --form "Name=$_full_domain" \ |   body="$body&Priority=" | ||||||
|     --form "Content=$_txt_value" \ |   body="$body&Name=$_full_domain" | ||||||
|     --form "TTL=300" \ |   body="$body&Content=$_txt_value" | ||||||
|     --form "hosted_dns_editrecord=Submit" \ |   body="$body&TTL=300" | ||||||
|     "https://dns.he.net/" \ |   body="$body&hosted_dns_editrecord=Submit" | ||||||
|     > /dev/null |   _post $body "https://dns.he.net/" >/dev/null | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -56,16 +58,16 @@ dns_he_rm() { | |||||||
|   _txt_value=$2 |   _txt_value=$2 | ||||||
|   _info "Cleaning up after DNS-01 Hurricane Electric hook" |   _info "Cleaning up after DNS-01 Hurricane Electric hook" | ||||||
| 
 | 
 | ||||||
|   _authenticate || return 1 |  | ||||||
| 
 |  | ||||||
|   # fills in the $_zone_id |   # fills in the $_zone_id | ||||||
|   _find_zone $_full_domain || return 1 |   _find_zone $_full_domain || return 1 | ||||||
|   _debug "Zone id \"$_zone_id\" will be used." |   _debug "Zone id \"$_zone_id\" will be used." | ||||||
| 
 | 
 | ||||||
|   # Find the record id to clean |   # Find the record id to clean | ||||||
|   _record_id=$( \ |   body="email=${HE_Username}&pass=${HE_Password}" | ||||||
|     curl -L --silent --show-error --cookie "$_he_cookie" \ |   body="$body&hosted_dns_zoneid=$_zone_id" | ||||||
|       "https://dns.he.net/?hosted_dns_zoneid=$_zone_id&menu=edit_zone&hosted_dns_editzone" \ |   body="$body&menu=edit_zone" | ||||||
|  |   body="$body&hosted_dns_editzone=" | ||||||
|  |   _record_id=$(_post $body "https://dns.he.net/" \ | ||||||
|       | grep -A 1 "data=\"\("\)\?${_txt_value}\("\)\?\"" \ |       | grep -A 1 "data=\"\("\)\?${_txt_value}\("\)\?\"" \ | ||||||
|       | tail -n 1 \ |       | tail -n 1 \ | ||||||
|       | _egrep_o "'[[:digit:]]+','[^']+','TXT'" \ |       | _egrep_o "'[[:digit:]]+','[^']+','TXT'" \ | ||||||
| @ -74,15 +76,15 @@ dns_he_rm() { | |||||||
|       | head -n1) # ... oh my, what have I done... |       | head -n1) # ... oh my, what have I done... | ||||||
| 
 | 
 | ||||||
|   # Remove the record |   # Remove the record | ||||||
|   curl -L --silent --show-error --cookie "$_he_cookie" \ |   body="email=${HE_Username}&pass=${HE_Password}" | ||||||
|     --form "menu=edit_zone" \ |   body="$body&menu=edit_zone" | ||||||
|     --form "hosted_dns_zoneid=$_zone_id" \ |   body="$body&hosted_dns_zoneid=$_zone_id" | ||||||
|     --form "hosted_dns_recordid=$_record_id" \ |   body="$body&hosted_dns_recordid=$_record_id" | ||||||
|     --form "hosted_dns_editzone=1" \ |   body="$body&hosted_dns_editzone=1" | ||||||
|     --form "hosted_dns_delrecord=1" \ |   body="$body&hosted_dns_delrecord=1" | ||||||
|     --form "hosted_dns_delconfirm=delete" \ |   body="$body&hosted_dns_delconfirm=delete" | ||||||
|     --form "hosted_dns_editzone=1" \ |   body="$body&hosted_dns_editzone=1" | ||||||
|     "https://dns.he.net/" \ |   _post $body "https://dns.he.net/" \ | ||||||
|     | grep '<div id="dns_status" onClick="hideThis(this);">Successfully removed record.</div>' \ |     | grep '<div id="dns_status" onClick="hideThis(this);">Successfully removed record.</div>' \ | ||||||
|     > /dev/null |     > /dev/null | ||||||
|   if [ $? -eq 0 ]; then |   if [ $? -eq 0 ]; then | ||||||
| @ -98,41 +100,10 @@ dns_he_rm() { | |||||||
| ########################## PRIVATE FUNCTIONS ########################### | ########################## PRIVATE FUNCTIONS ########################### | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #-- _find_zone() ------------------------------------------------------- |  | ||||||
| 
 |  | ||||||
| # Usage: _authenticate |  | ||||||
| # |  | ||||||
| # - needs $HE_Username and $HE_Password |  | ||||||
| # - sets the $_he_cookie |  | ||||||
| 
 |  | ||||||
| _authenticate() { |  | ||||||
|   if [ -z "$HE_Username" ] && [ -z "$HE_Password" ]; then |  | ||||||
|     _err \ |  | ||||||
|       'No auth details provided. Please set user credentials using the \ |  | ||||||
|       \$HE_Username and \$HE_Password envoronment variables.' |  | ||||||
|     return 1 |  | ||||||
|   fi |  | ||||||
|   # Just get a session |  | ||||||
|   _he_cookie=$( \ |  | ||||||
|     curl -L --silent --show-error -I "https://dns.he.net/" \ |  | ||||||
|       | grep '^Set-Cookie:' \ |  | ||||||
|       | _egrep_o 'CGISESSID=[a-z0-9]*') |  | ||||||
|   # Attempt login |  | ||||||
|   curl -L --silent --show-error --cookie "$_he_cookie" \ |  | ||||||
|     --form "email=${HE_Username}" \ |  | ||||||
|     --form "pass=${HE_Password}" \ |  | ||||||
|     "https://dns.he.net/" \ |  | ||||||
|     > /dev/null |  | ||||||
|   # TODO detect unsuccessful logins |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #-- _find_zone() ------------------------------------------------------- | #-- _find_zone() ------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
| # Returns the most specific zone found in administration interface. | # Returns the most specific zone found in administration interface. | ||||||
| # | # | ||||||
| # - needs $_he_cookie |  | ||||||
| # |  | ||||||
| # Example: | # Example: | ||||||
| # | # | ||||||
| # _find_zone first.second.third.co.uk | # _find_zone first.second.third.co.uk | ||||||
| @ -155,8 +126,9 @@ _find_zone() { | |||||||
| 
 | 
 | ||||||
|   ## _all_zones is an array that looks like this: |   ## _all_zones is an array that looks like this: | ||||||
|   ## ( zone1:id zone2:id ... ) |   ## ( zone1:id zone2:id ... ) | ||||||
|   _all_zones=( $(curl -L --silent --show-error --cookie "$_he_cookie" \ | 
 | ||||||
|     "https://dns.he.net/" \ |   body="email=${HE_Username}&pass=${HE_Password}" | ||||||
|  |   _all_zones=( $(_post $body "https://dns.he.net/" \ | ||||||
|     | _egrep_o "delete_dom.*name=\"[^\"]+\" value=\"[0-9]+" \ |     | _egrep_o "delete_dom.*name=\"[^\"]+\" value=\"[0-9]+" \ | ||||||
|     | cut -d '"' -f 3,5 --output-delimiter=":" \ |     | cut -d '"' -f 3,5 --output-delimiter=":" \ | ||||||
|   ) ) |   ) ) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user