Jamo
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 182 additions and 0 deletions
@ -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 |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue