#!/usr/bin/env sh # shellcheck disable=SC2034 dns_hestiacp_info='HestiaCP Server API Site: hestiacp.com Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_hestiacp Options: HESTIA_HOST Panel URL. E.g. "https://panel.example.com:8083" HESTIA_ACCESS API access key HESTIA_SECRET API secret key HESTIA_USER Username owning the DNS zones. Default "admin". Optional. Issues: github.com/acmesh-official/acme.sh/issues/6251 Author: Radu Malica ' ######## Public functions ##################### # Usage: dns_hestiacp_add fulldomain txtvalue dns_hestiacp_add() { fulldomain=$1 txtvalue=$2 if ! _hestia_init; then return 1 fi _debug "Detecting the root zone for $fulldomain" if ! _hestia_get_root "$fulldomain"; then _err "Cannot find a DNS zone for $fulldomain under user $HESTIA_USER" return 1 fi _debug _hestia_domain "$_hestia_domain" _debug _hestia_sub "$_hestia_sub" # _hestia_get_root left the zone record listing in _hestia_response if _hestia_find_records "$_hestia_sub" "TXT" | grep -F -- "$txtvalue" >/dev/null; then _info "The TXT record already exists, skipping" return 0 fi _info "Adding TXT record for $fulldomain" if ! _hestia_rest "v-add-dns-record" "$HESTIA_USER" "$_hestia_domain" "$_hestia_sub" "TXT" "$txtvalue" "" "" "yes" "600"; then _err "Error adding TXT record: $_hestia_response" return 1 fi _info "TXT record added successfully" return 0 } # Usage: dns_hestiacp_rm fulldomain txtvalue dns_hestiacp_rm() { fulldomain=$1 txtvalue=$2 if ! _hestia_init; then return 1 fi _debug "Detecting the root zone for $fulldomain" if ! _hestia_get_root "$fulldomain"; then _err "Cannot find a DNS zone for $fulldomain under user $HESTIA_USER" return 1 fi _debug _hestia_domain "$_hestia_domain" _debug _hestia_sub "$_hestia_sub" _hestia_removed=0 _hestia_failed=0 while IFS='|' read -r _hestia_id _hestia_value || [ -n "$_hestia_id" ]; do if [ -z "$_hestia_id" ]; then continue fi if ! _contains "$_hestia_value" "$txtvalue"; then continue fi _info "Deleting TXT record $_hestia_id" if ! _hestia_rest "v-delete-dns-record" "$HESTIA_USER" "$_hestia_domain" "$_hestia_id" "yes"; then _err "Error deleting TXT record $_hestia_id: $_hestia_response" _hestia_failed=$(_math "$_hestia_failed" + 1) continue fi _hestia_removed=$(_math "$_hestia_removed" + 1) done <