mirror of
https://github.com/acmesh-official/acme.sh.git
synced 2025-12-24 03:52:10 +08:00
Refactor dns_mgwm.sh for better API integration
Refactor DNS API script to improve credential handling and update API endpoint.
This commit is contained in:
@@ -2,17 +2,18 @@
|
||||
# shellcheck disable=SC2034
|
||||
|
||||
# DNS provider information for acme.sh
|
||||
dns_mgwm_info='mgw-media.de
|
||||
dns_mgwm_info='MGW-MEDIA.DE
|
||||
Site: mgw-media.de
|
||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_mgwm
|
||||
Options:
|
||||
MGWM_CUSTOMER Your customer number
|
||||
MGWM_API_HASH Your API Hash
|
||||
MGWM_CUSTOMER Your customer number (username for Basic Auth).
|
||||
MGWM_API_HASH Your API Hash (password for Basic Auth).
|
||||
Issues: github.com/acmesh-official/acme.sh
|
||||
Author: (Your Name or generated by AI)
|
||||
'
|
||||
|
||||
# Base URL for the mgw-media.de API
|
||||
MGWM_API_BASE="https://api.mgw-media.de/record"
|
||||
# Base endpoint for the MGW-MEDIA.DE API (parameters will be added as query strings)
|
||||
MGWM_API_ENDPOINT="https://api.mgw-media.de/record"
|
||||
|
||||
######## Public functions #####################
|
||||
# This function is called by acme.sh to add a TXT record.
|
||||
@@ -24,16 +25,32 @@ dns_mgwm_add() {
|
||||
_debug "fulldomain: $fulldomain"
|
||||
_debug "txtvalue: $txtvalue"
|
||||
|
||||
# Call private function to load and save environment variables and set up the Basic Auth Header.
|
||||
if ! _mgwm_init_env; then
|
||||
# Load credentials from environment or acme.sh config
|
||||
MGWM_CUSTOMER="${MGWM_CUSTOMER:-$(_readaccountconf_mutable MGWM_CUSTOMER)}"
|
||||
MGWM_API_HASH="${MGWM_API_HASH:-$(_readaccountconf_mutable MGWM_API_HASH)}"
|
||||
|
||||
# Check if credentials are set
|
||||
if [ -z "$MGWM_CUSTOMER" ] || [ -z "$MGWM_API_HASH" ]; then
|
||||
_err "You didn't specify one or more of MGWM_CUSTOMER or MGWM_API_HASH."
|
||||
_err "Please check these environment variables and try again."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Construct the API URL for adding a record.
|
||||
_add_url="${MGWM_API_BASE}/add/${fulldomain}/txt/${txtvalue}"
|
||||
# Save credentials for automatic renewal and future calls
|
||||
_saveaccountconf_mutable MGWM_CUSTOMER "$MGWM_CUSTOMER"
|
||||
_saveaccountconf_mutable MGWM_API_HASH "$MGWM_API_HASH"
|
||||
|
||||
# Create the Basic Auth Header directly in this function's scope
|
||||
_credentials="$(printf "%s:%s" "$MGWM_CUSTOMER" "$MGWM_API_HASH" | _base64)"
|
||||
# Export _H1 so _get function can pick it up
|
||||
export _H1="Authorization: Basic $_credentials"
|
||||
_debug "Set Authorization Header: Basic <credentials_encoded>" # Log debug message without sensitive credentials
|
||||
|
||||
# Construct the API URL for adding a record with query parameters
|
||||
_add_url="${MGWM_API_ENDPOINT}?action=add&fulldomain=${fulldomain}&type=txt&content=${txtvalue}"
|
||||
_debug "Calling MGWM ADD URL: ${_add_url}"
|
||||
|
||||
# Execute the HTTP GET request with the Authorization Header.
|
||||
# Execute the HTTP GET request with the Authorization Header (_H1)
|
||||
# The 5th parameter of _get is where acme.sh expects custom HTTP headers like Authorization.
|
||||
response="$(_get "" "$_add_url" "" "GET" "$_H1")"
|
||||
_debug "MGWM add response: $response"
|
||||
@@ -52,24 +69,39 @@ dns_mgwm_add() {
|
||||
# This function is called by acme.sh to remove a TXT record after validation.
|
||||
dns_mgwm_rm() {
|
||||
fulldomain=$1
|
||||
txtvalue=$2 # This txtvalue is now used to identify the specific record to be removed.
|
||||
txtvalue=$2 # This value is not used by the RM API in this case.
|
||||
|
||||
_info "Removing TXT record for $fulldomain using mgw-media.de DNS API"
|
||||
_debug "fulldomain: $fulldomain"
|
||||
_debug "txtvalue: $txtvalue"
|
||||
_debug "txtvalue: $txtvalue" # Still logging for completeness, but not used in URL
|
||||
|
||||
# Call private function to load and save environment variables and set up the Basic Auth Header.
|
||||
if ! _mgwm_init_env; then
|
||||
# Load credentials from environment or acme.sh config
|
||||
MGWM_CUSTOMER="${MGWM_CUSTOMER:-$(_readaccountconf_mutable MGWM_CUSTOMER)}"
|
||||
MGWM_API_HASH="${MGWM_API_HASH:-$(_readaccountconf_mutable MGWM_API_HASH)}"
|
||||
|
||||
# Check if credentials are set
|
||||
if [ -z "$MGWM_CUSTOMER" ] || [ -z "$MGWM_API_HASH" ]; then
|
||||
_err "You didn't specify one or more of MGWM_CUSTOMER or MGWM_API_HASH."
|
||||
_err "Please check these environment variables and try again."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Construct the API URL for removing a record.
|
||||
# To delete a specific record by its value (as required by ACME v2 for multiple TXT records),
|
||||
# the txtvalue must be part of the URL, similar to the add action.
|
||||
_rm_url="${MGWM_API_BASE}/rm/${fulldomain}/txt/${txtvalue}"
|
||||
# Save credentials (important for future renewals if not saved by add function)
|
||||
_saveaccountconf_mutable MGWM_CUSTOMER "$MGWM_CUSTOMER"
|
||||
_saveaccountconf_mutable MGWM_API_HASH "$MGWM_API_HASH"
|
||||
|
||||
# Create the Basic Auth Header directly in this function's scope
|
||||
_credentials="$(printf "%s:%s" "$MGWM_CUSTOMER" "$MGWM_API_HASH" | _base64)"
|
||||
# Export _H1 so _get function can pick it up
|
||||
export _H1="Authorization: Basic $_credentials"
|
||||
_debug "Set Authorization Header: Basic <credentials_encoded>" # Log debug message without sensitive credentials
|
||||
|
||||
# Construct the API URL for removing a record with query parameters
|
||||
# The RM API from mgw-media.de does not expect a 'content' parameter.
|
||||
_rm_url="${MGWM_API_ENDPOINT}?action=rm&fulldomain=${fulldomain}&type=txt"
|
||||
_debug "Calling MGWM RM URL: ${_rm_url}"
|
||||
|
||||
# Execute the HTTP GET request with the Authorization Header.
|
||||
# Execute the HTTP GET request with the Authorization Header (_H1)
|
||||
response="$(_get "" "$_rm_url" "" "GET" "$_H1")"
|
||||
_debug "MGWM rm response: $response"
|
||||
|
||||
@@ -84,29 +116,6 @@ dns_mgwm_rm() {
|
||||
}
|
||||
|
||||
#################### Private functions below ##################################
|
||||
|
||||
# _mgwm_init_env() loads the mgw-media.de API credentials (customer number and hash)
|
||||
# from environment variables or acme.sh's configuration, saves them, and
|
||||
# prepares the global _H1 variable for Basic Authorization header.
|
||||
_mgwm_init_env() {
|
||||
# Load credentials from environment or acme.sh config
|
||||
MGWM_CUSTOMER="${MGWM_CUSTOMER:-$(_readaccountconf_mutable MGWM_CUSTOMER)}"
|
||||
MGWM_API_HASH="${MGWM_API_HASH:-$(_readaccountconf_mutable MGWM_API_HASH)}"
|
||||
|
||||
# Check if credentials are set
|
||||
if [ -z "$MGWM_CUSTOMER" ] || [ -z "$MGWM_API_HASH" ]; then
|
||||
_err "You didn't specify one or more of MGWM_CUSTOMER or MGWM_API_HASH."
|
||||
_err "Please check these environment variables and try again."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Save credentials for automatic renewal and future calls
|
||||
_saveaccountconf_mutable MGWM_CUSTOMER "$MGWM_CUSTOMER"
|
||||
_saveaccountconf_mutable MGWM_API_HASH "$MGWM_API_HASH"
|
||||
|
||||
# Create the Basic Auth Header. acme.sh's _base64 function is used for encoding.
|
||||
_credentials="$(printf "%s:%s" "$MGWM_CUSTOMER" "$MGWM_API_HASH" | _base64)"
|
||||
export _H1="Authorization: Basic $_credentials"
|
||||
_debug "Set Authorization Header: Basic <credentials_encoded>" # Log debug message without sensitive credentials
|
||||
return 0
|
||||
}
|
||||
# The _mgwm_init_env function has been inlined into dns_mgwm_add and dns_mgwm_rm
|
||||
# to ensure credentials and the Authorization header are set correctly within
|
||||
# each function's sub-shell context.
|
||||
|
||||
Reference in New Issue
Block a user