committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 162 additions and 0 deletions
@ -0,0 +1,162 @@ |
|||||
|
#!/usr/bin/env sh |
||||
|
|
||||
|
# JamoTech Customer Domain amce Helper |
||||
|
# This script is intended to be run via |
||||
|
# acme.sh on managed customer systems |
||||
|
# to allow customers to create and renew |
||||
|
# SSL certificates on their client |
||||
|
# subdomain e.g (client.jamo.tech) |
||||
|
# without the need for support staff |
||||
|
# to create TXT records. |
||||
|
|
||||
|
# 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") |
||||
|
|
||||
|
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" |
||||
|
|
||||
|
} |
||||
|
|
||||
|
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 ################################## |
||||
|
|
||||
|
_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=$_subhost&target=$JTECH_ENDIP&type=A" |
||||
|
txt_record="https://api.corp-jamo.tech/dns/v1/records/exists.php?access=$JTECH_KEY&hostname=$_txthost&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=$_subhost&target=$JTECH_ENDIP&type=A" |
||||
|
txt_record="https://api.corp-jamo.tech/dns/v1/records/add.php?access=$JTECH_KEY&hostname=$_txthost&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=$_subhost&target=$JTECH_ENDIP&type=A" |
||||
|
txt_record="https://api.corp-jamo.tech/dns/v1/records/remove.php?access=$JTECH_KEY&hostname=$_txthost&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