mirror of
https://github.com/acmesh-official/acme.sh.git
synced 2025-05-02 20:22:49 +00:00
Create dns_jamotech.sh
This commit is contained in:
parent
e384df30fa
commit
a54f51e0da
182
dnsapi/dns_jamotech.sh
Normal file
182
dnsapi/dns_jamotech.sh
Normal file
@ -0,0 +1,182 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
#Here is a sample custom api script.
|
||||
#This file name is "dns_myapi.sh"
|
||||
#So, here must be a method dns_myapi_add()
|
||||
#Which will be called by acme.sh to add the txt record to your api system.
|
||||
#returns 0 means success, otherwise error.
|
||||
#
|
||||
#Author: Neilpang
|
||||
#Report Bugs here: https://github.com/acmesh-official/acme.sh
|
||||
#
|
||||
######## Public functions #####################
|
||||
|
||||
# Please Read this guide first: https://github.com/acmesh-official/acme.sh/wiki/DNS-API-Dev-Guide
|
||||
|
||||
# API Calls to be made
|
||||
# _get("https://api.corp-jamo.tech/dns/v1/records/exists.php?access=accesskey&hostname=subdomain&target=10.8.0.1&type=A")
|
||||
# _get("https://api.corp-jamo.tech/dns/v1/records/exists.php?access=accesskey&hostname=_acme-challenge.subdomain&target=ACMEKEY&type=TXT")
|
||||
# _get("https://api.corp-jamo.tech/dns/v1/records/add.php?access=accesskey&hostname=subdomain&target=10.8.0.1&type=A")
|
||||
# _get("https://api.corp-jamo.tech/dns/v1/records/add.php?access=accesskey&hostname=_acme-challenge.subdomain&target=ACMEKEY&type=TXT")
|
||||
# _get("https://api.corp-jamo.tech/dns/v1/records/remove.php?access=accesskey&hostname=subdomain&target=10.8.0.1&type=A")
|
||||
# _get("https://api.corp-jamo.tech/dns/v1/records/remove.php?access=accesskey&hostname=_acme-challenge.subdomain&target=ACMEKEY&type=TXT")
|
||||
|
||||
#Usage: dns_myapi_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
|
||||
dns_jamotech_add() {
|
||||
fulldomain=$1
|
||||
txtvalue=$2
|
||||
JTECH_ENDIP="${JTECH_ENDIP:-$(_readaccountconf_mutable JTECH_ENDIP)}"
|
||||
JTECH_KEY="${JTECH_KEY:-$(_readaccountconf_mutable JTECH_KEY)}"
|
||||
|
||||
if [ "$JTECH_ENDIP" ]; then
|
||||
_saveaccountconf_mutable JTECH_ENDIP "$JTECH_ENDIP"
|
||||
else
|
||||
_err "You need to specify an end IP by running 'export JTECH_ENDIP=IP'"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ "$JTECH_KEY" ]; then
|
||||
_saveaccountconf_mutable JTECH_KEY "$JTECH_KEY"
|
||||
else
|
||||
_err "You need to specify an API Key by running 'export JTECH_KEY=APIKEY'"
|
||||
return 1
|
||||
fi
|
||||
_info "Using jamotech-register to add the TXT record"
|
||||
_get_root
|
||||
_create_record
|
||||
_debug fulldomain "$fulldomain"
|
||||
_debug txtvalue "$txtvalue"
|
||||
|
||||
}
|
||||
|
||||
|
||||
#Usage: fulldomain txtvalue
|
||||
#Remove the txt record after validation.
|
||||
dns_jamotech_rm() {
|
||||
fulldomain=$1
|
||||
txtvalue=$2
|
||||
|
||||
JTECH_ENDIP="${JTECH_ENDIP:-$(_readaccountconf_mutable JTECH_ENDIP)}"
|
||||
JTECH_KEY="${JTECH_KEY:-$(_readaccountconf_mutable JTECH_KEY)}"
|
||||
|
||||
if [ "$JTECH_ENDIP" ]; then
|
||||
_saveaccountconf_mutable JTECH_ENDIP "$JTECH_ENDIP"
|
||||
else
|
||||
_err "You need to specify an end IP by running 'export JTECH_ENDIP=IP'"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ "$JTECH_KEY" ]; then
|
||||
_saveaccountconf_mutable JTECH_KEY "$JTECH_KEY"
|
||||
else
|
||||
_err "You need to specify an API Key by running 'export JTECH_KEY=APIKEY'"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
_info "Using jamotech-clean to remove the TXT record"
|
||||
_get_root
|
||||
_remove_record
|
||||
_debug fulldomain "$fulldomain"
|
||||
_debug txtvalue "$txtvalue"
|
||||
|
||||
}
|
||||
|
||||
|
||||
#################### Private functions below ##################################
|
||||
# _acme-challenge.www.domain.com
|
||||
# returns
|
||||
# _domain=domain.com
|
||||
# _txtdomain=_acme-challenge.www
|
||||
# _adomain=www
|
||||
|
||||
|
||||
_get_root() {
|
||||
domain=$fulldomain
|
||||
txtdomain=${domain%.jamo.tech}
|
||||
subdomain=$(echo "$txtdomain" | cut -d'.' -f2-)
|
||||
_debug "txtdomain = $txtdomain"
|
||||
_debug "subdomain = $subdomain"
|
||||
_debug "Domain: $domain TXTDomain: $txtdomain Subdomain: $subdomain"
|
||||
if [ -z "$domain" ] || [ -z "$txtdomain" ] || [ -z "$subdomain" ] ; then
|
||||
_err "We weren't able to determine the records which need to be created."
|
||||
return 1
|
||||
fi
|
||||
_txthost="$txtdomain"
|
||||
_subhost="$subdomain"
|
||||
_err "$domain not found"
|
||||
return 1
|
||||
}
|
||||
|
||||
|
||||
_check_record() {
|
||||
server_record="https://api.corp-jamo.tech/dns/v1/records/exists.php?access=$JTECH_KEY&hostname=$subdomain&target=$JTECH_ENDIP&type=A"
|
||||
txt_record="https://api.corp-jamo.tech/dns/v1/records/exists.php?access=$JTECH_KEY&hostname=$txtdomain&target=$txtvalue&type=TXT"
|
||||
_debug "API ENDPOINTS $server_record $txt_record"
|
||||
|
||||
response="$(_get "$server_record")"
|
||||
if [ "$?" != "0" ]; then
|
||||
_err "error"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if _contains "$response" '"exists":"true"}'; then
|
||||
_err "Record already exists."
|
||||
return 1
|
||||
fi
|
||||
|
||||
response="$(_get "$txt_record")"
|
||||
if [ "$?" != "0" ]; then
|
||||
_err "error"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if _contains "$response" '"exists":"true"}'; then
|
||||
_err "Record already exists."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
_create_record() {
|
||||
_check_record
|
||||
server_record="https://api.corp-jamo.tech/dns/v1/records/add.php?access=$JTECH_KEY&hostname=$subdomain&target=$JTECH_ENDIP&type=A"
|
||||
txt_record="https://api.corp-jamo.tech/dns/v1/records/add.php?access=$JTECH_KEY&hostname=$txtdomain&target=$txtvalue&type=TXT"
|
||||
_debug "API ENDPOINTS $server_record $txt_record"
|
||||
|
||||
response="$(_get "$server_record")"
|
||||
if [ "$?" != "0" ]; then
|
||||
_err "error"
|
||||
return 1
|
||||
fi
|
||||
|
||||
response="$(_get "$txt_record")"
|
||||
if [ "$?" != "0" ]; then
|
||||
_err "error"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
_remove_record() {
|
||||
server_record="https://api.corp-jamo.tech/dns/v1/records/remove.php?access=$JTECH_KEY&hostname=$subdomain&target=$JTECH_ENDIP&type=A"
|
||||
txt_record="https://api.corp-jamo.tech/dns/v1/records/remove.php?access=$JTECH_KEY&hostname=$txtdomain&target=$txtvalue&type=TXT"
|
||||
_debug "API ENDPOINTS $server_record $txt_record"
|
||||
|
||||
response="$(_get "$server_record")"
|
||||
if [ "$?" != "0" ]; then
|
||||
_err "error"
|
||||
return 1
|
||||
fi
|
||||
|
||||
response="$(_get "$txt_record")"
|
||||
if [ "$?" != "0" ]; then
|
||||
_err "error"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user