mirror of
				https://github.com/hiskang/acme.sh
				synced 2025-11-04 04:17:40 +00:00 
			
		
		
		
	
						commit
						ed3066aae7
					
				@ -641,6 +641,14 @@ acme.sh --issue --dns dns_inwx -d example.com -d www.example.com
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
The `INWX_User` and `INWX_Password` settings will be saved in `~/.acme.sh/account.conf` and will be reused when needed.
 | 
					The `INWX_User` and `INWX_Password` settings will be saved in `~/.acme.sh/account.conf` and will be reused when needed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If your account is secured by mobile tan you have also defined the shared secret.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					export INWX_Shared_Secret="shared secret"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You may need to re-enable the mobile tan to gain the shared secret.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 34. User Servercow API v1
 | 
					## 34. User Servercow API v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Create a new user from the servercow control center. Don't forget to activate **DNS API** for this user.
 | 
					Create a new user from the servercow control center. Don't forget to activate **DNS API** for this user.
 | 
				
			||||||
 | 
				
			|||||||
@ -59,7 +59,7 @@ dns_gd_add() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  _info "Adding record"
 | 
					  _info "Adding record"
 | 
				
			||||||
  if _gd_rest PUT "domains/$_domain/records/TXT/$_sub_domain" "[$_add_data]"; then
 | 
					  if _gd_rest PUT "domains/$_domain/records/TXT/$_sub_domain" "[$_add_data]"; then
 | 
				
			||||||
    if [ "$response" = "{}" ]; then
 | 
					    if [ "$response" = "{}" ] || [ "$response" = "null" ]; then
 | 
				
			||||||
      _info "Added, sleeping 10 seconds"
 | 
					      _info "Added, sleeping 10 seconds"
 | 
				
			||||||
      _sleep 10
 | 
					      _sleep 10
 | 
				
			||||||
      #todo: check if the record takes effect
 | 
					      #todo: check if the record takes effect
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,10 @@
 | 
				
			|||||||
#INWX_User="username"
 | 
					#INWX_User="username"
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#INWX_Password="password"
 | 
					#INWX_Password="password"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Dependencies:
 | 
				
			||||||
 | 
					# -------------
 | 
				
			||||||
 | 
					# - oathtool (When using 2 Factor Authentication)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
INWX_Api="https://api.domrobot.com/xmlrpc/"
 | 
					INWX_Api="https://api.domrobot.com/xmlrpc/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -16,6 +20,7 @@ dns_inwx_add() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  INWX_User="${INWX_User:-$(_readaccountconf_mutable INWX_User)}"
 | 
					  INWX_User="${INWX_User:-$(_readaccountconf_mutable INWX_User)}"
 | 
				
			||||||
  INWX_Password="${INWX_Password:-$(_readaccountconf_mutable INWX_Password)}"
 | 
					  INWX_Password="${INWX_Password:-$(_readaccountconf_mutable INWX_Password)}"
 | 
				
			||||||
 | 
					  INWX_Shared_Secret="${INWX_Shared_Secret:-$(_readaccountconf_mutable INWX_Shared_Secret)}"
 | 
				
			||||||
  if [ -z "$INWX_User" ] || [ -z "$INWX_Password" ]; then
 | 
					  if [ -z "$INWX_User" ] || [ -z "$INWX_Password" ]; then
 | 
				
			||||||
    INWX_User=""
 | 
					    INWX_User=""
 | 
				
			||||||
    INWX_Password=""
 | 
					    INWX_Password=""
 | 
				
			||||||
@ -27,6 +32,7 @@ dns_inwx_add() {
 | 
				
			|||||||
  #save the api key and email to the account conf file.
 | 
					  #save the api key and email to the account conf file.
 | 
				
			||||||
  _saveaccountconf_mutable INWX_User "$INWX_User"
 | 
					  _saveaccountconf_mutable INWX_User "$INWX_User"
 | 
				
			||||||
  _saveaccountconf_mutable INWX_Password "$INWX_Password"
 | 
					  _saveaccountconf_mutable INWX_Password "$INWX_Password"
 | 
				
			||||||
 | 
					  _saveaccountconf_mutable INWX_Shared_Secret "$INWX_Shared_Secret"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _debug "First detect the root zone"
 | 
					  _debug "First detect the root zone"
 | 
				
			||||||
  if ! _get_root "$fulldomain"; then
 | 
					  if ! _get_root "$fulldomain"; then
 | 
				
			||||||
@ -148,8 +154,46 @@ _inwx_login() {
 | 
				
			|||||||
  </methodCall>' $INWX_User $INWX_Password)
 | 
					  </methodCall>' $INWX_User $INWX_Password)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  response="$(_post "$xml_content" "$INWX_Api" "" "POST")"
 | 
					  response="$(_post "$xml_content" "$INWX_Api" "" "POST")"
 | 
				
			||||||
 | 
					  _H1=$(printf "Cookie: %s" "$(grep "domrobot=" "$HTTP_HEADER" | grep "^Set-Cookie:" | _tail_n 1 | _egrep_o 'domrobot=[^;]*;' | tr -d ';')")
 | 
				
			||||||
 | 
					  export _H1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  printf "Cookie: %s" "$(grep "domrobot=" "$HTTP_HEADER" | grep "^Set-Cookie:" | _tail_n 1 | _egrep_o 'domrobot=[^;]*;' | tr -d ';')"
 | 
					  #https://github.com/inwx/php-client/blob/master/INWX/Domrobot.php#L71
 | 
				
			||||||
 | 
					  if _contains "$response" "tfa"; then
 | 
				
			||||||
 | 
					    if [ -z "$INWX_Shared_Secret" ]; then
 | 
				
			||||||
 | 
					      _err "Mobile TAN detected."
 | 
				
			||||||
 | 
					      _err "Please define a shared secret."
 | 
				
			||||||
 | 
					      return 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ! _exists oathtool; then
 | 
				
			||||||
 | 
					      _err "Please install oathtool to use 2 Factor Authentication."
 | 
				
			||||||
 | 
					      _err ""
 | 
				
			||||||
 | 
					      return 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    tan="$(oathtool --base32 --totp "${INWX_Shared_Secret}" 2>/dev/null)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    xml_content=$(printf '<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					    <methodCall>
 | 
				
			||||||
 | 
					    <methodName>account.unlock</methodName>
 | 
				
			||||||
 | 
					    <params>
 | 
				
			||||||
 | 
					     <param>
 | 
				
			||||||
 | 
					      <value>
 | 
				
			||||||
 | 
					       <struct>
 | 
				
			||||||
 | 
					        <member>
 | 
				
			||||||
 | 
					         <name>tan</name>
 | 
				
			||||||
 | 
					         <value>
 | 
				
			||||||
 | 
					          <string>%s</string>
 | 
				
			||||||
 | 
					         </value>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					       </struct>
 | 
				
			||||||
 | 
					      </value>
 | 
				
			||||||
 | 
					     </param>
 | 
				
			||||||
 | 
					    </params>
 | 
				
			||||||
 | 
					    </methodCall>' "$tan")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    response="$(_post "$xml_content" "$INWX_Api" "" "POST")"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -161,8 +205,8 @@ _get_root() {
 | 
				
			|||||||
  i=2
 | 
					  i=2
 | 
				
			||||||
  p=1
 | 
					  p=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _H1=$(_inwx_login)
 | 
					  _inwx_login
 | 
				
			||||||
  export _H1
 | 
					
 | 
				
			||||||
  xml_content='<?xml version="1.0" encoding="UTF-8"?>
 | 
					  xml_content='<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
  <methodCall>
 | 
					  <methodCall>
 | 
				
			||||||
  <methodName>nameserver.list</methodName>
 | 
					  <methodName>nameserver.list</methodName>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user