#!/usr/bin/env sh # shellcheck disable=SC2034 dns_fmdns_info='facileManager DNS API API for self-hosted facileManager DNS github.com/WillyXJ/facileManager Site: github.com/gianlucagiacometti/proxmox-acme-facilemanager Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_fmdns Options: FMDNS_API_ENDPOINT API Endpoint. Web address of the API endpoint. FMDNS_API_TOKEN API Token. FMDNS_API_DOMAIN_ID Domain ID. Domain ID in your facileManager database. Issues: github.com/gianlucagiacometti/proxmox-acme-facilemanager Author: Gianluca Giacometti ' ##################### Public functions ##################### dns_fmdns_add() { fulldomain="${1}" txtvalue="${2}" FMDNS_API_TOKEN="${FMDNS_API_TOKEN:-$(_readaccountconf_mutable FMDNS_API_TOKEN)}" # Check if API token exists if [ -z "$FMDNS_API_TOKEN" ]; then FMDNS_API_TOKEN="" _err "You did not specify facileManager API token." _err "Please export FMDNS_API_TOKEN and try again." return 1 fi FMDNS_API_ENDPOINT="${FMDNS_API_ENDPOINT:-$(_readaccountconf_mutable FMDNS_API_ENDPOINT)}" # Check if API endpoint exists if [ -z "$FMDNS_API_ENDPOINT" ]; then FMDNS_API_ENDPOINT="" _err "You did not specify facileManager API endpoint." _err "Please export FMDNS_API_ENDPOINT and try again." return 1 fi FMDNS_API_DOMAIN_ID="${FMDNS_API_DOMAIN_ID:-$(_readaccountconf_mutable FMDNS_API_DOMAIN_ID)}" # Check if API domain id exists if [ -z "$FMDNS_API_DOMAIN_ID" ]; then FMDNS_API_DOMAIN_ID="" _err "You did not specify facileManager API domain id." _err "Please export FMDNS_API_DOMAIN_ID and try again." return 1 fi _debug "Calling: _fmDnsApi_addRecord() '${fulldomain}' '${txtvalue}'" _fmDnsApi_addRecord return $? } dns_fmdns_rm() { fulldomain="${1}" txtvalue="${2}" FMDNS_API_TOKEN="${FMDNS_API_TOKEN:-$(_readaccountconf_mutable FMDNS_API_TOKEN)}" # Check if API token exists if [ -z "$FMDNS_API_TOKEN" ]; then FMDNS_API_TOKEN="" _err "You did not specify facileManager API token." _err "Please export FMDNS_API_TOKEN and try again." return 1 fi FMDNS_API_ENDPOINT="${FMDNS_API_ENDPOINT:-$(_readaccountconf_mutable FMDNS_API_ENDPOINT)}" # Check if API endpoint exists if [ -z "$FMDNS_API_ENDPOINT" ]; then FMDNS_API_ENDPOINT="" _err "You did not specify facileManager API endpoint." _err "Please export FMDNS_API_ENDPOINT and try again." return 1 fi FMDNS_API_DOMAIN_ID="${FMDNS_API_DOMAIN_ID:-$(_readaccountconf_mutable FMDNS_API_DOMAIN_ID)}" # Check if API domain id exists if [ -z "$FMDNS_API_DOMAIN_ID" ]; then FMDNS_API_DOMAIN_ID="" _err "You did not specify facileManager API domain id." _err "Please export FMDNS_API_DOMAIN_ID and try again." return 1 fi _debug "Calling: _fmDnsApi_removeRecord() '${fulldomain}' '${txtvalue}'" _fmDnsApi_removeRecord return $? } ##################### Private functions ##################### _fmDnsApi_addRecord() { _info "Connecting to ${FMDNS_API_ENDPOINT}" _info "Adding record to zone" curData="{\"fmAuthToken\":\"${FMDNS_API_TOKEN}\",\"id\":\"${FMDNS_API_DOMAIN_ID}\",\"action\":\"add\",\"name\":\"${fulldomain}\",\"value\":\"${txtvalue}\",\"type\":\"TXT\",\"ttl\":\"5\",\"reload\":\"yes\"}" curResult="$(_post "${curData}" "${FMDNS_API_ENDPOINT}")" _info "API result: '${curResult}'" _debug "Calling facileManager API: '${curData}' '${FMDNS_API_ENDPOINT}'" _debug "Result of zone add: '$curResult'" if [ "${curResult}" != "Success" ]; then if [ -z "${curResult}" ]; then _err "Empty response" else _err "${curResult}" fi return 1 fi return 0 } _fmDnsApi_removeRecord() { _info "Connecting to ${FMDNS_API_ENDPOINT}" _info "Removing record from zone" curData="{\"fmAuthToken\":\"${FMDNS_API_TOKEN}\",\"id\":\"${FMDNS_API_DOMAIN_ID}\",\"action\":\"delete\",\"name\":\"${fulldomain}\",\"type\":\"TXT\",\"ttl\":\"5\",\"reload\":\"yes\"}" curResult="$(_post "${curData}" "${FMDNS_API_ENDPOINT}")" _info "API result: '${curResult}'" _debug "Calling facileManager API: '${curData}' '${FMDNS_API_ENDPOINT}'" _debug "Result of zone delete: '$curResult'" if [ "${curResult}" != "Success" ]; then if [ -z "${curResult}" ]; then _err "Empty response" else _err "${curResult}" fi return 1 fi return 0 }