You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.3 KiB
78 lines
2.3 KiB
#!/usr/bin/env sh |
|
# shellcheck disable=SC2034 |
|
dns_maradns_info='MaraDNS Server |
|
Site: MaraDNS.samiam.org |
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_maradns |
|
Options: |
|
MARA_ZONE_FILE Zone file path. E.g. "/etc/maradns/db.domain.com" |
|
MARA_DUENDE_PID_PATH Duende PID Path. E.g. "/run/maradns/etc_maradns_mararc.pid" |
|
Issues: github.com/acmesh-official/acme.sh/issues/2072 |
|
' |
|
|
|
#Usage: dns_maradns_add _acme-challenge.www.domain.com "token" |
|
dns_maradns_add() { |
|
fulldomain="$1" |
|
txtvalue="$2" |
|
|
|
MARA_ZONE_FILE="${MARA_ZONE_FILE:-$(_readaccountconf_mutable MARA_ZONE_FILE)}" |
|
MARA_DUENDE_PID_PATH="${MARA_DUENDE_PID_PATH:-$(_readaccountconf_mutable MARA_DUENDE_PID_PATH)}" |
|
|
|
_check_zone_file "$MARA_ZONE_FILE" || return 1 |
|
_check_duende_pid_path "$MARA_DUENDE_PID_PATH" || return 1 |
|
|
|
_saveaccountconf_mutable MARA_ZONE_FILE "$MARA_ZONE_FILE" |
|
_saveaccountconf_mutable MARA_DUENDE_PID_PATH "$MARA_DUENDE_PID_PATH" |
|
|
|
printf "%s. TXT '%s' ~\n" "$fulldomain" "$txtvalue" >>"$MARA_ZONE_FILE" |
|
_reload_maradns "$MARA_DUENDE_PID_PATH" || return 1 |
|
} |
|
|
|
#Usage: dns_maradns_rm _acme-challenge.www.domain.com "token" |
|
dns_maradns_rm() { |
|
fulldomain="$1" |
|
txtvalue="$2" |
|
|
|
MARA_ZONE_FILE="${MARA_ZONE_FILE:-$(_readaccountconf_mutable MARA_ZONE_FILE)}" |
|
MARA_DUENDE_PID_PATH="${MARA_DUENDE_PID_PATH:-$(_readaccountconf_mutable MARA_DUENDE_PID_PATH)}" |
|
|
|
_check_zone_file "$MARA_ZONE_FILE" || return 1 |
|
_check_duende_pid_path "$MARA_DUENDE_PID_PATH" || return 1 |
|
|
|
_saveaccountconf_mutable MARA_ZONE_FILE "$MARA_ZONE_FILE" |
|
_saveaccountconf_mutable MARA_DUENDE_PID_PATH "$MARA_DUENDE_PID_PATH" |
|
|
|
_sed_i "/^$fulldomain.\+TXT '$txtvalue' ~/d" "$MARA_ZONE_FILE" |
|
_reload_maradns "$MARA_DUENDE_PID_PATH" || return 1 |
|
} |
|
|
|
_check_zone_file() { |
|
zonefile="$1" |
|
if [ -z "$zonefile" ]; then |
|
_err "MARA_ZONE_FILE not passed!" |
|
return 1 |
|
elif [ ! -w "$zonefile" ]; then |
|
_err "MARA_ZONE_FILE not writable: $zonefile" |
|
return 1 |
|
fi |
|
} |
|
|
|
_check_duende_pid_path() { |
|
pidpath="$1" |
|
if [ -z "$pidpath" ]; then |
|
_err "MARA_DUENDE_PID_PATH not passed!" |
|
return 1 |
|
fi |
|
if [ ! -r "$pidpath" ]; then |
|
_err "MARA_DUENDE_PID_PATH not readable: $pidpath" |
|
return 1 |
|
fi |
|
} |
|
|
|
_reload_maradns() { |
|
pidpath="$1" |
|
kill -s HUP -- "$(cat "$pidpath")" |
|
if [ $? -ne 0 ]; then |
|
_err "Unable to reload MaraDNS, kill returned $?" |
|
return 1 |
|
fi |
|
}
|
|
|