mirror of
https://github.com/acmesh-official/acme.sh
synced 2025-08-22 09:57:29 +00:00
Upload latest dev branch to master (#3)
* Fix for empty error objects in response breaking extraction of domain validation types Fix for empty error objects in the response which mess up the extraction of domain validation types due to the closing brace in the error object prematurely matching the end of the search pattern. This seems to be a recent change with ZeroSSL in particular where "error":{} is being included in responses. There could potentially be a related issue if there is a complex error object ever returned in the validation check response where an embedded sub-object could lead to an incomplete extraction of the error message, roughly around line 5040. Adapted from fix suggested here: https://github.com/acmesh-official/acme.sh/issues/4933#issuecomment-1870499018 * Add new dnsapi support for OpenProvider.eu using new REST API * Cleanup duplicate debug log output based on DNS test run * Resolve spellcheck error * Configure 10 second timeout to ACME_DIRECTORY API call * add support for AIX style netstat * add * fix for wiki * minor * minor * wiki * wiki * dnsapi: dns_mydnsjp.sh fix author The @epgdatacapbon was renamed to @tkmsst Signed-off-by: Sergey Ponomarev <stokito@gmail.com> * dnsapi: dns_ddnss.sh remove RaidenII from authors He made the DuckDNS script that was used for this script but he can't support the script. Signed-off-by: Sergey Ponomarev <stokito@gmail.com> * dnsapi: fix authors: use @ for GitHub profiles Signed-off-by: Sergey Ponomarev <stokito@gmail.com> * dnsapi: dns_vultr.sh remove empty author Signed-off-by: Sergey Ponomarev <stokito@gmail.com> * dnsapi: dns_mijnhost.sh rearrange fields, use user docs instead of API docs Signed-off-by: Sergey Ponomarev <stokito@gmail.com> * dnsapi: fix Structured DNS Info Signed-off-by: Sergey Ponomarev <stokito@gmail.com> * Fix logged typo when running pre hook * Run post hook when _on_before_issue errors --------- Signed-off-by: Sergey Ponomarev <stokito@gmail.com> Co-authored-by: Ciaran Walsh <ciaran@ciaran-walsh.com> Co-authored-by: Lambiek12 <algemeen@lambiek12.nl> Co-authored-by: Erwin Oegema <blablaechthema@hotmail.com> Co-authored-by: laDanz <cdanzmann@gmail.com> Co-authored-by: neil <github@neilpang.com> Co-authored-by: neil <gitpc@neilpang.com> Co-authored-by: Sergey Ponomarev <stokito@gmail.com> Co-authored-by: David Beitey <david@davidjb.com> Co-authored-by: Jan-willem van Kampen <Lambiek12@users.noreply.github.com>
This commit is contained in:
parent
289d895423
commit
1f486fc9a5
60
.github/workflows/wiki-monitor.yml
vendored
Normal file
60
.github/workflows/wiki-monitor.yml
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
name: Notify via Issue on Wiki Edit
|
||||||
|
|
||||||
|
on:
|
||||||
|
gollum:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
notify:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout wiki repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}.wiki
|
||||||
|
path: wiki
|
||||||
|
|
||||||
|
- name: Generate wiki change message
|
||||||
|
run: |
|
||||||
|
actor="${{ github.actor }}"
|
||||||
|
sender_url=$(jq -r '.sender.html_url' "$GITHUB_EVENT_PATH")
|
||||||
|
page_name=$(jq -r '.pages[0].page_name' "$GITHUB_EVENT_PATH")
|
||||||
|
page_sha=$(jq -r '.pages[0].sha' "$GITHUB_EVENT_PATH")
|
||||||
|
page_url=$(jq -r '.pages[0].html_url' "$GITHUB_EVENT_PATH")
|
||||||
|
page_action=$(jq -r '.pages[0].action' "$GITHUB_EVENT_PATH")
|
||||||
|
now="$(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
|
||||||
|
cd wiki
|
||||||
|
prev_sha=$(git rev-list $page_sha^ -- "$page_name.md" | head -n 1)
|
||||||
|
if [ -n "$prev_sha" ]; then
|
||||||
|
git diff $prev_sha $page_sha -- "$page_name.md" > ../wiki.diff || echo "(No diff found)" > ../wiki.diff
|
||||||
|
else
|
||||||
|
echo "(no diff)" > ../wiki.diff
|
||||||
|
fi
|
||||||
|
cd ..
|
||||||
|
{
|
||||||
|
echo "Wiki edited"
|
||||||
|
echo -n "User: "
|
||||||
|
echo "[$actor]($sender_url)"
|
||||||
|
echo "Time: $now"
|
||||||
|
echo "Page: [$page_name]($page_url) (Action: $page_action)"
|
||||||
|
echo ""
|
||||||
|
echo "----"
|
||||||
|
echo "### diff:"
|
||||||
|
echo '```diff'
|
||||||
|
cat wiki.diff
|
||||||
|
echo '```'
|
||||||
|
} > wiki-change-msg.txt
|
||||||
|
|
||||||
|
- name: Create issue to notify Neilpang
|
||||||
|
uses: peter-evans/create-issue-from-file@v5
|
||||||
|
with:
|
||||||
|
title: "Wiki edited"
|
||||||
|
content-filepath: ./wiki-change-msg.txt
|
||||||
|
assignees: Neilpang
|
||||||
|
env:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
17
acme.sh
17
acme.sh
@ -1401,6 +1401,12 @@ _ss() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$(uname)" = "AIX" ]; then
|
||||||
|
_debug "Using: AIX netstat"
|
||||||
|
netstat -an | grep "^tcp" | grep "LISTEN" | grep "\.$_port "
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
if _exists "netstat"; then
|
if _exists "netstat"; then
|
||||||
_debug "Using: netstat"
|
_debug "Using: netstat"
|
||||||
if netstat -help 2>&1 | grep "\-p proto" >/dev/null; then
|
if netstat -help 2>&1 | grep "\-p proto" >/dev/null; then
|
||||||
@ -2761,7 +2767,7 @@ _initAPI() {
|
|||||||
_request_retry_times=0
|
_request_retry_times=0
|
||||||
while [ -z "$ACME_NEW_ACCOUNT" ] && [ "${_request_retry_times}" -lt "$MAX_API_RETRY_TIMES" ]; do
|
while [ -z "$ACME_NEW_ACCOUNT" ] && [ "${_request_retry_times}" -lt "$MAX_API_RETRY_TIMES" ]; do
|
||||||
_request_retry_times=$(_math "$_request_retry_times" + 1)
|
_request_retry_times=$(_math "$_request_retry_times" + 1)
|
||||||
response=$(_get "$_api_server")
|
response=$(_get "$_api_server" "" 10)
|
||||||
if [ "$?" != "0" ]; then
|
if [ "$?" != "0" ]; then
|
||||||
_debug2 "response" "$response"
|
_debug2 "response" "$response"
|
||||||
_info "Cannot init API for: $_api_server."
|
_info "Cannot init API for: $_api_server."
|
||||||
@ -3507,7 +3513,7 @@ _on_before_issue() {
|
|||||||
_debug _chk_alt_domains "$_chk_alt_domains"
|
_debug _chk_alt_domains "$_chk_alt_domains"
|
||||||
#run pre hook
|
#run pre hook
|
||||||
if [ "$_chk_pre_hook" ]; then
|
if [ "$_chk_pre_hook" ]; then
|
||||||
_info "Runing pre hook:'$_chk_pre_hook'"
|
_info "Running pre hook:'$_chk_pre_hook'"
|
||||||
if ! (
|
if ! (
|
||||||
export Le_Domain="$_chk_main_domain"
|
export Le_Domain="$_chk_main_domain"
|
||||||
export Le_Alt="$_chk_alt_domains"
|
export Le_Alt="$_chk_alt_domains"
|
||||||
@ -4496,6 +4502,7 @@ issue() {
|
|||||||
|
|
||||||
if ! _on_before_issue "$_web_roots" "$_main_domain" "$_alt_domains" "$_pre_hook" "$_local_addr"; then
|
if ! _on_before_issue "$_web_roots" "$_main_domain" "$_alt_domains" "$_pre_hook" "$_local_addr"; then
|
||||||
_err "_on_before_issue."
|
_err "_on_before_issue."
|
||||||
|
_on_issue_err "$_post_hook"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -4755,7 +4762,8 @@ $_authorizations_map"
|
|||||||
_debug keyauthorization "$keyauthorization"
|
_debug keyauthorization "$keyauthorization"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
entry="$(echo "$response" | _egrep_o '[^\{]*"type":"'$vtype'"[^\}]*')"
|
# Fix for empty error objects in response which mess up the original code, adapted from fix suggested here: https://github.com/acmesh-official/acme.sh/issues/4933#issuecomment-1870499018
|
||||||
|
entry="$(echo "$response" | sed s/'"error":{}'/'"error":null'/ | _egrep_o '[^\{]*"type":"'$vtype'"[^\}]*')"
|
||||||
_debug entry "$entry"
|
_debug entry "$entry"
|
||||||
|
|
||||||
if [ -z "$keyauthorization" -a -z "$entry" ]; then
|
if [ -z "$keyauthorization" -a -z "$entry" ]; then
|
||||||
@ -6344,7 +6352,8 @@ _deactivate() {
|
|||||||
fi
|
fi
|
||||||
_debug "Trigger validation."
|
_debug "Trigger validation."
|
||||||
vtype="$(_getIdType "$_d_domain")"
|
vtype="$(_getIdType "$_d_domain")"
|
||||||
entry="$(echo "$response" | _egrep_o '[^\{]*"type":"'$vtype'"[^\}]*')"
|
# Fix for empty error objects in response which mess up the original code, adapted from fix suggested here: https://github.com/acmesh-official/acme.sh/issues/4933#issuecomment-1870499018
|
||||||
|
entry="$(echo "$response" | sed s/'"error":{}'/'"error":null'/ | _egrep_o '[^\{]*"type":"'$vtype'"[^\}]*')"
|
||||||
_debug entry "$entry"
|
_debug entry "$entry"
|
||||||
if [ -z "$entry" ]; then
|
if [ -z "$entry" ]; then
|
||||||
_err "$d: Cannot get domain token"
|
_err "$d: Cannot get domain token"
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
BEGET_User API user
|
BEGET_User API user
|
||||||
BEGET_Password API password
|
BEGET_Password API password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/6200
|
Issues: github.com/acmesh-official/acme.sh/issues/6200
|
||||||
Author: ARNik arnik@arnik.ru
|
Author: ARNik <arnik@arnik.ru>
|
||||||
'
|
'
|
||||||
|
|
||||||
Beget_Api="https://api.beget.com/api"
|
Beget_Api="https://api.beget.com/api"
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
BOOKMYNAME_USERNAME Username
|
BOOKMYNAME_USERNAME Username
|
||||||
BOOKMYNAME_PASSWORD Password
|
BOOKMYNAME_PASSWORD Password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/3209
|
Issues: github.com/acmesh-official/acme.sh/issues/3209
|
||||||
Author: Neilpang
|
Author: @Neilpang
|
||||||
'
|
'
|
||||||
|
|
||||||
######## Public functions #####################
|
######## Public functions #####################
|
||||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_ddnss
|
|||||||
Options:
|
Options:
|
||||||
DDNSS_Token API Token
|
DDNSS_Token API Token
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/2230
|
Issues: github.com/acmesh-official/acme.sh/issues/2230
|
||||||
Author: RaidenII, helbgd, mod242
|
Author: @helbgd, @mod242
|
||||||
'
|
'
|
||||||
|
|
||||||
DDNSS_DNS_API="https://ddnss.de/upd.php"
|
DDNSS_DNS_API="https://ddnss.de/upd.php"
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
DNSHOME_Subdomain Subdomain
|
DNSHOME_Subdomain Subdomain
|
||||||
DNSHOME_SubdomainPassword Subdomain Password
|
DNSHOME_SubdomainPassword Subdomain Password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/3819
|
Issues: github.com/acmesh-official/acme.sh/issues/3819
|
||||||
Author: dnsHome.de https://github.com/dnsHome-de
|
Author: @dnsHome-de
|
||||||
'
|
'
|
||||||
|
|
||||||
# Usage: add subdomain.ddnsdomain.tld "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
|
# Usage: add subdomain.ddnsdomain.tld "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
|
||||||
|
@ -5,7 +5,7 @@ Site: www.DuckDNS.org
|
|||||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_duckdns
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_duckdns
|
||||||
Options:
|
Options:
|
||||||
DuckDNS_Token API Token
|
DuckDNS_Token API Token
|
||||||
Author: RaidenII
|
Author: @RaidenII
|
||||||
'
|
'
|
||||||
|
|
||||||
DuckDNS_API="https://www.duckdns.org/update"
|
DuckDNS_API="https://www.duckdns.org/update"
|
||||||
|
@ -8,7 +8,7 @@ Options:
|
|||||||
DYN_Customer Customer
|
DYN_Customer Customer
|
||||||
DYN_Username API Username
|
DYN_Username API Username
|
||||||
DYN_Password Secret
|
DYN_Password Secret
|
||||||
Author: Gerd Naschenweng <https://github.com/magicdude4eva>
|
Author: Gerd Naschenweng <@magicdude4eva>
|
||||||
'
|
'
|
||||||
|
|
||||||
# Dyn Managed DNS API
|
# Dyn Managed DNS API
|
||||||
|
@ -8,7 +8,7 @@ Options:
|
|||||||
OptionsAlt:
|
OptionsAlt:
|
||||||
KEY Path to SSH private key file. E.g. "/root/.ssh/dynv6"
|
KEY Path to SSH private key file. E.g. "/root/.ssh/dynv6"
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/2702
|
Issues: github.com/acmesh-official/acme.sh/issues/2702
|
||||||
Author: StefanAbl
|
Author: @StefanAbl
|
||||||
'
|
'
|
||||||
|
|
||||||
dynv6_api="https://dynv6.com/api/v2"
|
dynv6_api="https://dynv6.com/api/v2"
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
EASYDNS_Token API Token
|
EASYDNS_Token API Token
|
||||||
EASYDNS_Key API Key
|
EASYDNS_Key API Key
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/2647
|
Issues: github.com/acmesh-official/acme.sh/issues/2647
|
||||||
Author: Neilpang, wurzelpanzer <wurzelpanzer@maximolider.net>
|
Author: @Neilpang, wurzelpanzer <wurzelpanzer@maximolider.net>
|
||||||
'
|
'
|
||||||
|
|
||||||
# API Documentation: https://sandbox.rest.easydns.net:3001/
|
# API Documentation: https://sandbox.rest.easydns.net:3001/
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
FREEDNS_User Username
|
FREEDNS_User Username
|
||||||
FREEDNS_Password Password
|
FREEDNS_Password Password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/2305
|
Issues: github.com/acmesh-official/acme.sh/issues/2305
|
||||||
Author: David Kerr <https://github.com/dkerr64>
|
Author: David Kerr <@dkerr64>
|
||||||
'
|
'
|
||||||
|
|
||||||
######## Public functions #####################
|
######## Public functions #####################
|
||||||
|
@ -5,6 +5,7 @@ Site: dns.he.net
|
|||||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_he_ddns
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_he_ddns
|
||||||
Options:
|
Options:
|
||||||
HE_DDNS_KEY The DDNS key
|
HE_DDNS_KEY The DDNS key
|
||||||
|
Issues: https://github.com/acmesh-official/acme.sh/issues/5238
|
||||||
Author: Markku Leiniö
|
Author: Markku Leiniö
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
JOKER_USERNAME Username
|
JOKER_USERNAME Username
|
||||||
JOKER_PASSWORD Password
|
JOKER_PASSWORD Password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/2840
|
Issues: github.com/acmesh-official/acme.sh/issues/2840
|
||||||
Author: <https://github.com/aattww/>
|
Author: @aattww
|
||||||
'
|
'
|
||||||
|
|
||||||
JOKER_API="https://svc.joker.com/nic/replace"
|
JOKER_API="https://svc.joker.com/nic/replace"
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
dns_mijnhost_info='mijn.host
|
dns_mijnhost_info='mijn.host
|
||||||
Domains: mijn.host
|
|
||||||
Site: mijn.host
|
Site: mijn.host
|
||||||
Docs: https://mijn.host/api/doc/
|
Docs: https://github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_mijnhost
|
||||||
Issues: https://github.com/acmesh-official/acme.sh/issues/6177
|
|
||||||
Author: peterv99
|
|
||||||
Options:
|
Options:
|
||||||
MIJNHOST_API_KEY API Key
|
MIJNHOST_API_KEY API Key
|
||||||
|
Issues: github.com/acmesh-official/acme.sh/issues/6177
|
||||||
|
Author: @peterv99
|
||||||
'
|
'
|
||||||
|
|
||||||
######## Public functions ###################### Constants for your mijn-host API
|
######## Public functions ######################
|
||||||
MIJNHOST_API="https://mijn.host/api/v2"
|
MIJNHOST_API="https://mijn.host/api/v2"
|
||||||
|
|
||||||
# Add TXT record for domain verification
|
# Add TXT record for domain verification
|
||||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_mydnsjp
|
|||||||
Options:
|
Options:
|
||||||
MYDNSJP_MasterID Master ID
|
MYDNSJP_MasterID Master ID
|
||||||
MYDNSJP_Password Password
|
MYDNSJP_Password Password
|
||||||
Author: epgdatacapbon
|
Author: @tkmsst
|
||||||
'
|
'
|
||||||
|
|
||||||
######## Public functions #####################
|
######## Public functions #####################
|
||||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_namecom
|
|||||||
Options:
|
Options:
|
||||||
Namecom_Username Username
|
Namecom_Username Username
|
||||||
Namecom_Token API Token
|
Namecom_Token API Token
|
||||||
Author: RaidenII
|
Author: @RaidenII
|
||||||
'
|
'
|
||||||
|
|
||||||
######## Public functions #####################
|
######## Public functions #####################
|
||||||
|
@ -5,7 +5,7 @@ Site: NameSilo.com
|
|||||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_namesilo
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_namesilo
|
||||||
Options:
|
Options:
|
||||||
Namesilo_Key API Key
|
Namesilo_Key API Key
|
||||||
Author: meowthink
|
Author: @meowthink
|
||||||
'
|
'
|
||||||
|
|
||||||
#Utilize API to finish dns-01 verifications.
|
#Utilize API to finish dns-01 verifications.
|
||||||
|
186
dnsapi/dns_openprovider_rest.sh
Normal file
186
dnsapi/dns_openprovider_rest.sh
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
dns_openprovider_rest_info='OpenProvider (REST)
|
||||||
|
Domains: OpenProvider.com
|
||||||
|
Site: OpenProvider.eu
|
||||||
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_openprovider_rest
|
||||||
|
Options:
|
||||||
|
OPENPROVIDER_REST_USERNAME Openprovider Account Username
|
||||||
|
OPENPROVIDER_REST_PASSWORD Openprovider Account Password
|
||||||
|
Issues: github.com/acmesh-official/acme.sh/issues/6122
|
||||||
|
Author: Lambiek12
|
||||||
|
'
|
||||||
|
|
||||||
|
OPENPROVIDER_API_URL="https://api.openprovider.eu/v1beta"
|
||||||
|
|
||||||
|
######## Public functions #####################
|
||||||
|
|
||||||
|
# Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
|
||||||
|
# Used to add txt record
|
||||||
|
dns_openprovider_rest_add() {
|
||||||
|
fulldomain=$1
|
||||||
|
txtvalue=$2
|
||||||
|
|
||||||
|
_openprovider_prepare_credentials || return 1
|
||||||
|
|
||||||
|
_debug "Try fetch OpenProvider DNS zone details"
|
||||||
|
if ! _get_dns_zone "$fulldomain"; then
|
||||||
|
_err "DNS zone not found within configured OpenProvider account."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$_domain_id" ]; then
|
||||||
|
addzonerecordrequestparameters="dns/zones/$_domain_name"
|
||||||
|
addzonerecordrequestbody="{\"id\":$_domain_id,\"name\":\"$_domain_name\",\"records\":{\"add\":[{\"name\":\"$_sub_domain\",\"ttl\":900,\"type\":\"TXT\",\"value\":\"$txtvalue\"}]}}"
|
||||||
|
|
||||||
|
if _openprovider_rest PUT "$addzonerecordrequestparameters" "$addzonerecordrequestbody"; then
|
||||||
|
if _contains "$response" "\"success\":true"; then
|
||||||
|
return 0
|
||||||
|
elif _contains "$response" "\"Duplicate record\""; then
|
||||||
|
_debug "Record already existed"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
_err "Adding TXT record failed due to errors."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
_err "Adding TXT record failed due to errors."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Usage: rm _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
|
||||||
|
# Used to remove the txt record after validation
|
||||||
|
dns_openprovider_rest_rm() {
|
||||||
|
fulldomain=$1
|
||||||
|
txtvalue=$2
|
||||||
|
|
||||||
|
_openprovider_prepare_credentials || return 1
|
||||||
|
|
||||||
|
_debug "Try fetch OpenProvider DNS zone details"
|
||||||
|
if ! _get_dns_zone "$fulldomain"; then
|
||||||
|
_err "DNS zone not found within configured OpenProvider account."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$_domain_id" ]; then
|
||||||
|
removezonerecordrequestparameters="dns/zones/$_domain_name"
|
||||||
|
removezonerecordrequestbody="{\"id\":$_domain_id,\"name\":\"$_domain_name\",\"records\":{\"remove\":[{\"name\":\"$_sub_domain\",\"ttl\":900,\"type\":\"TXT\",\"value\":\"\\\"$txtvalue\\\"\"}]}}"
|
||||||
|
|
||||||
|
if _openprovider_rest PUT "$removezonerecordrequestparameters" "$removezonerecordrequestbody"; then
|
||||||
|
if _contains "$response" "\"success\":true"; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
_err "Removing TXT record failed due to errors."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
_err "Removing TXT record failed due to errors."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#################### OpenProvider API common functions ####################
|
||||||
|
_openprovider_prepare_credentials() {
|
||||||
|
OPENPROVIDER_REST_USERNAME="${OPENPROVIDER_REST_USERNAME:-$(_readaccountconf_mutable OPENPROVIDER_REST_USERNAME)}"
|
||||||
|
OPENPROVIDER_REST_PASSWORD="${OPENPROVIDER_REST_PASSWORD:-$(_readaccountconf_mutable OPENPROVIDER_REST_PASSWORD)}"
|
||||||
|
|
||||||
|
if [ -z "$OPENPROVIDER_REST_USERNAME" ] || [ -z "$OPENPROVIDER_REST_PASSWORD" ]; then
|
||||||
|
OPENPROVIDER_REST_USERNAME=""
|
||||||
|
OPENPROVIDER_REST_PASSWORD=""
|
||||||
|
_err "You didn't specify the Openprovider username or password yet."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#save the credentials to the account conf file.
|
||||||
|
_saveaccountconf_mutable OPENPROVIDER_REST_USERNAME "$OPENPROVIDER_REST_USERNAME"
|
||||||
|
_saveaccountconf_mutable OPENPROVIDER_REST_PASSWORD "$OPENPROVIDER_REST_PASSWORD"
|
||||||
|
}
|
||||||
|
|
||||||
|
_openprovider_rest() {
|
||||||
|
httpmethod=$1
|
||||||
|
queryparameters=$2
|
||||||
|
requestbody=$3
|
||||||
|
|
||||||
|
_openprovider_rest_login
|
||||||
|
if [ -z "$openproviderauthtoken" ]; then
|
||||||
|
_err "Unable to fetch authentication token from Openprovider API."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export _H1="Content-Type: application/json"
|
||||||
|
export _H2="Accept: application/json"
|
||||||
|
export _H3="Authorization: Bearer $openproviderauthtoken"
|
||||||
|
|
||||||
|
if [ "$httpmethod" != "GET" ]; then
|
||||||
|
response="$(_post "$requestbody" "$OPENPROVIDER_API_URL/$queryparameters" "" "$httpmethod")"
|
||||||
|
else
|
||||||
|
response="$(_get "$OPENPROVIDER_API_URL/$queryparameters")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$?" != "0" ]; then
|
||||||
|
_err "No valid parameters supplied for Openprovider API: Error $queryparameters"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
_debug2 response "$response"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
_openprovider_rest_login() {
|
||||||
|
export _H1="Content-Type: application/json"
|
||||||
|
export _H2="Accept: application/json"
|
||||||
|
|
||||||
|
loginrequesturl="$OPENPROVIDER_API_URL/auth/login"
|
||||||
|
loginrequestbody="{\"ip\":\"0.0.0.0\",\"password\":\"$OPENPROVIDER_REST_PASSWORD\",\"username\":\"$OPENPROVIDER_REST_USERNAME\"}"
|
||||||
|
loginresponse="$(_post "$loginrequestbody" "$loginrequesturl" "" "POST")"
|
||||||
|
|
||||||
|
openproviderauthtoken="$(printf "%s\n" "$loginresponse" | _egrep_o '"token" *: *"[^"]*' | _head_n 1 | sed 's#^"token" *: *"##')"
|
||||||
|
|
||||||
|
export openproviderauthtoken
|
||||||
|
}
|
||||||
|
|
||||||
|
#################### Private functions ##################################
|
||||||
|
|
||||||
|
# Usage: _get_dns_zone _acme-challenge.www.domain.com
|
||||||
|
# Returns:
|
||||||
|
# _domain_id=123456789
|
||||||
|
# _domain_name=domain.com
|
||||||
|
# _sub_domain=_acme-challenge.www
|
||||||
|
_get_dns_zone() {
|
||||||
|
domain=$1
|
||||||
|
i=1
|
||||||
|
p=1
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
h=$(printf "%s" "$domain" | cut -d . -f "$i"-100)
|
||||||
|
if [ -z "$h" ]; then
|
||||||
|
# Empty value not allowed
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! _openprovider_rest GET "dns/zones/$h" ""; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if _contains "$response" "\"name\":\"$h\""; then
|
||||||
|
_domain_id="$(printf "%s\n" "$response" | _egrep_o '"id" *: *[^,]*' | _head_n 1 | sed 's#^"id" *: *##')"
|
||||||
|
_debug _domain_id "$_domain_id"
|
||||||
|
|
||||||
|
_domain_name="$h"
|
||||||
|
_debug _domain_name "$_domain_name"
|
||||||
|
|
||||||
|
_sub_domain=$(printf "%s" "$domain" | cut -d . -f 1-"$p")
|
||||||
|
_debug _sub_domain "$_sub_domain"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
p=$i
|
||||||
|
i=$(_math "$i" + 1)
|
||||||
|
done
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
@ -8,7 +8,7 @@ Options:
|
|||||||
pleskxml_user Username
|
pleskxml_user Username
|
||||||
pleskxml_pass Password
|
pleskxml_pass Password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/2577
|
Issues: github.com/acmesh-official/acme.sh/issues/2577
|
||||||
Author: Stilez, <https://github.com/romanlum>
|
Author: @Stilez, @romanlum
|
||||||
'
|
'
|
||||||
|
|
||||||
## Plesk XML API described at:
|
## Plesk XML API described at:
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
SCHLUNDTECH_USER Username
|
SCHLUNDTECH_USER Username
|
||||||
SCHLUNDTECH_PASSWORD Password
|
SCHLUNDTECH_PASSWORD Password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/2246
|
Issues: github.com/acmesh-official/acme.sh/issues/2246
|
||||||
Author: <https://github.com/mod242>
|
Author: @mod242
|
||||||
'
|
'
|
||||||
|
|
||||||
SCHLUNDTECH_API="https://gateway.schlundtech.de"
|
SCHLUNDTECH_API="https://gateway.schlundtech.de"
|
||||||
|
@ -1,27 +1,21 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
|
dns_selectel_info='Selectel.com
|
||||||
# dns_selectel_info='Selectel.com
|
Domains: Selectel.ru
|
||||||
# Domains: Selectel.ru
|
Site: Selectel.com
|
||||||
# Site: Selectel.com
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_selectel
|
||||||
# Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_selectel
|
Options: For old API version v1 (deprecated)
|
||||||
# Options:
|
SL_Ver API version. Use "v1".
|
||||||
# Variables that must be defined before running
|
SL_Key API Key
|
||||||
# SL_Ver can take one of the values 'v1' or 'v2', default is 'v1'
|
OptionsAlt: For the current API version v2
|
||||||
# SL_Ver='v1', when using version API legacy (v1)
|
SL_Ver API version. Use "v2".
|
||||||
# SL_Ver='v2', when using version API actual (v2)
|
SL_Login_ID Account ID
|
||||||
# when using API version v1, i.e. SL_Ver is 'v1' or not defined:
|
SL_Project_Name Project name
|
||||||
# SL_Key - API Key, required
|
SL_Login_Name Service user name
|
||||||
# when using API version v2:
|
SL_Pswd Service user password
|
||||||
# SL_Ver - required as 'v2'
|
SL_Expire Token lifetime. In minutes (0-1440). Default "1400"
|
||||||
# SL_Login_ID - account ID, required
|
Issues: github.com/acmesh-official/acme.sh/issues/5126
|
||||||
# SL_Project_Name - name project, required
|
'
|
||||||
# SL_Login_Name - service user name, required
|
|
||||||
# SL_Pswd - service user password, required
|
|
||||||
# SL_Expire - token lifetime in minutes (0-1440), default 1400 minutes
|
|
||||||
#
|
|
||||||
# Issues: github.com/acmesh-official/acme.sh/issues/5126
|
|
||||||
#
|
|
||||||
|
|
||||||
SL_Api="https://api.selectel.ru/domains"
|
SL_Api="https://api.selectel.ru/domains"
|
||||||
auth_uri="https://cloud.api.selcloud.ru/identity/v3/auth/tokens"
|
auth_uri="https://cloud.api.selcloud.ru/identity/v3/auth/tokens"
|
||||||
|
@ -4,11 +4,11 @@ dns_spaceship_info='Spaceship.com
|
|||||||
Site: Spaceship.com
|
Site: Spaceship.com
|
||||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_spaceship
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_spaceship
|
||||||
Options:
|
Options:
|
||||||
SPACESHIP_API_KEY Spaceship API Key
|
SPACESHIP_API_KEY API Key
|
||||||
SPACESHIP_API_SECRET Spaceship API Secret
|
SPACESHIP_API_SECRET API Secret
|
||||||
SPACESHIP_ROOT_DOMAIN (Optional) Manually specify the root domain if auto-detection fails
|
SPACESHIP_ROOT_DOMAIN Root domain. Manually specify the root domain if auto-detection fails. Optional.
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/6304
|
Issues: github.com/acmesh-official/acme.sh/issues/6304
|
||||||
Author: Meow <https://github.com/Meo597>
|
Author: Meow <@Meo597>
|
||||||
'
|
'
|
||||||
|
|
||||||
# Spaceship API
|
# Spaceship API
|
||||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#tele3
|
|||||||
Options:
|
Options:
|
||||||
TELE3_Key API Key
|
TELE3_Key API Key
|
||||||
TELE3_Secret API Secret
|
TELE3_Secret API Secret
|
||||||
Author: Roman Blizik <https://github.com/par-pa>
|
Author: Roman Blizik <@par-pa>
|
||||||
'
|
'
|
||||||
|
|
||||||
TELE3_API="https://www.tele3.cz/acme/"
|
TELE3_API="https://www.tele3.cz/acme/"
|
||||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_timeweb
|
|||||||
Options:
|
Options:
|
||||||
TW_Token API JWT token. Get it from the control panel at https://timeweb.cloud/my/api-keys
|
TW_Token API JWT token. Get it from the control panel at https://timeweb.cloud/my/api-keys
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/5140
|
Issues: github.com/acmesh-official/acme.sh/issues/5140
|
||||||
Author: Nikolay Pronchev <https://github.com/nikolaypronchev>
|
Author: Nikolay Pronchev <@nikolaypronchev>
|
||||||
'
|
'
|
||||||
|
|
||||||
TW_Api="https://api.timeweb.cloud/api/v1"
|
TW_Api="https://api.timeweb.cloud/api/v1"
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
UDR_USER Username
|
UDR_USER Username
|
||||||
UDR_PASS Password
|
UDR_PASS Password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/3923
|
Issues: github.com/acmesh-official/acme.sh/issues/3923
|
||||||
Author: Andreas Scherer <https://github.com/andischerer>
|
Author: Andreas Scherer <@andischerer>
|
||||||
'
|
'
|
||||||
|
|
||||||
UDR_API="https://api.domainreselling.de/api/call.cgi"
|
UDR_API="https://api.domainreselling.de/api/call.cgi"
|
||||||
|
@ -5,7 +5,7 @@ Site: vscale.io
|
|||||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_vscale
|
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_vscale
|
||||||
Options:
|
Options:
|
||||||
VSCALE_API_KEY API Key
|
VSCALE_API_KEY API Key
|
||||||
Author: Alex Loban <https://github.com/LAV45>
|
Author: Alex Loban <@LAV45>
|
||||||
'
|
'
|
||||||
|
|
||||||
VSCALE_API_URL="https://api.vscale.io/v1"
|
VSCALE_API_URL="https://api.vscale.io/v1"
|
||||||
|
@ -6,7 +6,6 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_vultr
|
|||||||
Options:
|
Options:
|
||||||
VULTR_API_KEY API Key
|
VULTR_API_KEY API Key
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/2374
|
Issues: github.com/acmesh-official/acme.sh/issues/2374
|
||||||
Author:
|
|
||||||
'
|
'
|
||||||
|
|
||||||
VULTR_Api="https://api.vultr.com/v2"
|
VULTR_Api="https://api.vultr.com/v2"
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
WS_ApiKey API Key. Called "Identifier" in the WS Admin
|
WS_ApiKey API Key. Called "Identifier" in the WS Admin
|
||||||
WS_ApiSecret API Secret. Called "Secret key" in the WS Admin
|
WS_ApiSecret API Secret. Called "Secret key" in the WS Admin
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/3486
|
Issues: github.com/acmesh-official/acme.sh/issues/3486
|
||||||
Author: trgo.sk <https://github.com/trgosk>, akulumbeg <https://github.com/akulumbeg>
|
Author: trgo.sk <@trgosk>, @akulumbeg
|
||||||
'
|
'
|
||||||
|
|
||||||
# Requirements: API Key and Secret from https://admin.websupport.sk/en/auth/apiKey
|
# Requirements: API Key and Secret from https://admin.websupport.sk/en/auth/apiKey
|
||||||
|
@ -7,7 +7,7 @@ Options:
|
|||||||
WORLD4YOU_USERNAME Username
|
WORLD4YOU_USERNAME Username
|
||||||
WORLD4YOU_PASSWORD Password
|
WORLD4YOU_PASSWORD Password
|
||||||
Issues: github.com/acmesh-official/acme.sh/issues/3269
|
Issues: github.com/acmesh-official/acme.sh/issues/3269
|
||||||
Author: Lorenz Stechauner <https://www.github.com/NerLOR>
|
Author: Lorenz Stechauner <@NerLOR>
|
||||||
'
|
'
|
||||||
|
|
||||||
WORLD4YOU_API="https://my.world4you.com/en"
|
WORLD4YOU_API="https://my.world4you.com/en"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user