mirror of
https://github.com/acmesh-official/acme.sh
synced 2025-08-22 01:49:43 +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
|
||||
fi
|
||||
|
||||
if [ "$(uname)" = "AIX" ]; then
|
||||
_debug "Using: AIX netstat"
|
||||
netstat -an | grep "^tcp" | grep "LISTEN" | grep "\.$_port "
|
||||
return 0
|
||||
fi
|
||||
|
||||
if _exists "netstat"; then
|
||||
_debug "Using: netstat"
|
||||
if netstat -help 2>&1 | grep "\-p proto" >/dev/null; then
|
||||
@ -2761,7 +2767,7 @@ _initAPI() {
|
||||
_request_retry_times=0
|
||||
while [ -z "$ACME_NEW_ACCOUNT" ] && [ "${_request_retry_times}" -lt "$MAX_API_RETRY_TIMES" ]; do
|
||||
_request_retry_times=$(_math "$_request_retry_times" + 1)
|
||||
response=$(_get "$_api_server")
|
||||
response=$(_get "$_api_server" "" 10)
|
||||
if [ "$?" != "0" ]; then
|
||||
_debug2 "response" "$response"
|
||||
_info "Cannot init API for: $_api_server."
|
||||
@ -3507,7 +3513,7 @@ _on_before_issue() {
|
||||
_debug _chk_alt_domains "$_chk_alt_domains"
|
||||
#run pre hook
|
||||
if [ "$_chk_pre_hook" ]; then
|
||||
_info "Runing pre hook:'$_chk_pre_hook'"
|
||||
_info "Running pre hook:'$_chk_pre_hook'"
|
||||
if ! (
|
||||
export Le_Domain="$_chk_main_domain"
|
||||
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
|
||||
_err "_on_before_issue."
|
||||
_on_issue_err "$_post_hook"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@ -4755,7 +4762,8 @@ $_authorizations_map"
|
||||
_debug keyauthorization "$keyauthorization"
|
||||
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"
|
||||
|
||||
if [ -z "$keyauthorization" -a -z "$entry" ]; then
|
||||
@ -6344,7 +6352,8 @@ _deactivate() {
|
||||
fi
|
||||
_debug "Trigger validation."
|
||||
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"
|
||||
if [ -z "$entry" ]; then
|
||||
_err "$d: Cannot get domain token"
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
BEGET_User API user
|
||||
BEGET_Password API password
|
||||
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"
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
BOOKMYNAME_USERNAME Username
|
||||
BOOKMYNAME_PASSWORD Password
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/3209
|
||||
Author: Neilpang
|
||||
Author: @Neilpang
|
||||
'
|
||||
|
||||
######## Public functions #####################
|
||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_ddnss
|
||||
Options:
|
||||
DDNSS_Token API Token
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/2230
|
||||
Author: RaidenII, helbgd, mod242
|
||||
Author: @helbgd, @mod242
|
||||
'
|
||||
|
||||
DDNSS_DNS_API="https://ddnss.de/upd.php"
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
DNSHOME_Subdomain Subdomain
|
||||
DNSHOME_SubdomainPassword Subdomain Password
|
||||
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"
|
||||
|
@ -5,7 +5,7 @@ Site: www.DuckDNS.org
|
||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_duckdns
|
||||
Options:
|
||||
DuckDNS_Token API Token
|
||||
Author: RaidenII
|
||||
Author: @RaidenII
|
||||
'
|
||||
|
||||
DuckDNS_API="https://www.duckdns.org/update"
|
||||
|
@ -8,7 +8,7 @@ Options:
|
||||
DYN_Customer Customer
|
||||
DYN_Username API Username
|
||||
DYN_Password Secret
|
||||
Author: Gerd Naschenweng <https://github.com/magicdude4eva>
|
||||
Author: Gerd Naschenweng <@magicdude4eva>
|
||||
'
|
||||
|
||||
# Dyn Managed DNS API
|
||||
|
@ -8,7 +8,7 @@ Options:
|
||||
OptionsAlt:
|
||||
KEY Path to SSH private key file. E.g. "/root/.ssh/dynv6"
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/2702
|
||||
Author: StefanAbl
|
||||
Author: @StefanAbl
|
||||
'
|
||||
|
||||
dynv6_api="https://dynv6.com/api/v2"
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
EASYDNS_Token API Token
|
||||
EASYDNS_Key API Key
|
||||
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/
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
FREEDNS_User Username
|
||||
FREEDNS_Password Password
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/2305
|
||||
Author: David Kerr <https://github.com/dkerr64>
|
||||
Author: David Kerr <@dkerr64>
|
||||
'
|
||||
|
||||
######## Public functions #####################
|
||||
|
@ -5,6 +5,7 @@ Site: dns.he.net
|
||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_he_ddns
|
||||
Options:
|
||||
HE_DDNS_KEY The DDNS key
|
||||
Issues: https://github.com/acmesh-official/acme.sh/issues/5238
|
||||
Author: Markku Leiniö
|
||||
'
|
||||
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
JOKER_USERNAME Username
|
||||
JOKER_PASSWORD Password
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/2840
|
||||
Author: <https://github.com/aattww/>
|
||||
Author: @aattww
|
||||
'
|
||||
|
||||
JOKER_API="https://svc.joker.com/nic/replace"
|
||||
|
@ -1,16 +1,15 @@
|
||||
#!/usr/bin/env sh
|
||||
# shellcheck disable=SC2034
|
||||
dns_mijnhost_info='mijn.host
|
||||
Domains: mijn.host
|
||||
Site: mijn.host
|
||||
Docs: https://mijn.host/api/doc/
|
||||
Issues: https://github.com/acmesh-official/acme.sh/issues/6177
|
||||
Author: peterv99
|
||||
Docs: https://github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_mijnhost
|
||||
Options:
|
||||
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"
|
||||
|
||||
# Add TXT record for domain verification
|
||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_mydnsjp
|
||||
Options:
|
||||
MYDNSJP_MasterID Master ID
|
||||
MYDNSJP_Password Password
|
||||
Author: epgdatacapbon
|
||||
Author: @tkmsst
|
||||
'
|
||||
|
||||
######## Public functions #####################
|
||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_namecom
|
||||
Options:
|
||||
Namecom_Username Username
|
||||
Namecom_Token API Token
|
||||
Author: RaidenII
|
||||
Author: @RaidenII
|
||||
'
|
||||
|
||||
######## Public functions #####################
|
||||
|
@ -5,7 +5,7 @@ Site: NameSilo.com
|
||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_namesilo
|
||||
Options:
|
||||
Namesilo_Key API Key
|
||||
Author: meowthink
|
||||
Author: @meowthink
|
||||
'
|
||||
|
||||
#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_pass Password
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/2577
|
||||
Author: Stilez, <https://github.com/romanlum>
|
||||
Author: @Stilez, @romanlum
|
||||
'
|
||||
|
||||
## Plesk XML API described at:
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
SCHLUNDTECH_USER Username
|
||||
SCHLUNDTECH_PASSWORD Password
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/2246
|
||||
Author: <https://github.com/mod242>
|
||||
Author: @mod242
|
||||
'
|
||||
|
||||
SCHLUNDTECH_API="https://gateway.schlundtech.de"
|
||||
|
@ -1,27 +1,21 @@
|
||||
#!/usr/bin/env sh
|
||||
# shellcheck disable=SC2034
|
||||
|
||||
# dns_selectel_info='Selectel.com
|
||||
# Domains: Selectel.ru
|
||||
# Site: Selectel.com
|
||||
# Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_selectel
|
||||
# Options:
|
||||
# Variables that must be defined before running
|
||||
# SL_Ver can take one of the values 'v1' or 'v2', default is 'v1'
|
||||
# SL_Ver='v1', when using version API legacy (v1)
|
||||
# SL_Ver='v2', when using version API actual (v2)
|
||||
# when using API version v1, i.e. SL_Ver is 'v1' or not defined:
|
||||
# SL_Key - API Key, required
|
||||
# when using API version v2:
|
||||
# SL_Ver - required as 'v2'
|
||||
# SL_Login_ID - account ID, required
|
||||
# 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
|
||||
#
|
||||
dns_selectel_info='Selectel.com
|
||||
Domains: Selectel.ru
|
||||
Site: Selectel.com
|
||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_selectel
|
||||
Options: For old API version v1 (deprecated)
|
||||
SL_Ver API version. Use "v1".
|
||||
SL_Key API Key
|
||||
OptionsAlt: For the current API version v2
|
||||
SL_Ver API version. Use "v2".
|
||||
SL_Login_ID Account ID
|
||||
SL_Project_Name Project name
|
||||
SL_Login_Name Service user name
|
||||
SL_Pswd Service user password
|
||||
SL_Expire Token lifetime. In minutes (0-1440). Default "1400"
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/5126
|
||||
'
|
||||
|
||||
SL_Api="https://api.selectel.ru/domains"
|
||||
auth_uri="https://cloud.api.selcloud.ru/identity/v3/auth/tokens"
|
||||
|
@ -4,11 +4,11 @@ dns_spaceship_info='Spaceship.com
|
||||
Site: Spaceship.com
|
||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_spaceship
|
||||
Options:
|
||||
SPACESHIP_API_KEY Spaceship API Key
|
||||
SPACESHIP_API_SECRET Spaceship API Secret
|
||||
SPACESHIP_ROOT_DOMAIN (Optional) Manually specify the root domain if auto-detection fails
|
||||
SPACESHIP_API_KEY API Key
|
||||
SPACESHIP_API_SECRET API Secret
|
||||
SPACESHIP_ROOT_DOMAIN Root domain. Manually specify the root domain if auto-detection fails. Optional.
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/6304
|
||||
Author: Meow <https://github.com/Meo597>
|
||||
Author: Meow <@Meo597>
|
||||
'
|
||||
|
||||
# Spaceship API
|
||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#tele3
|
||||
Options:
|
||||
TELE3_Key API Key
|
||||
TELE3_Secret API Secret
|
||||
Author: Roman Blizik <https://github.com/par-pa>
|
||||
Author: Roman Blizik <@par-pa>
|
||||
'
|
||||
|
||||
TELE3_API="https://www.tele3.cz/acme/"
|
||||
|
@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_timeweb
|
||||
Options:
|
||||
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
|
||||
Author: Nikolay Pronchev <https://github.com/nikolaypronchev>
|
||||
Author: Nikolay Pronchev <@nikolaypronchev>
|
||||
'
|
||||
|
||||
TW_Api="https://api.timeweb.cloud/api/v1"
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
UDR_USER Username
|
||||
UDR_PASS Password
|
||||
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"
|
||||
|
@ -5,7 +5,7 @@ Site: vscale.io
|
||||
Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_vscale
|
||||
Options:
|
||||
VSCALE_API_KEY API Key
|
||||
Author: Alex Loban <https://github.com/LAV45>
|
||||
Author: Alex Loban <@LAV45>
|
||||
'
|
||||
|
||||
VSCALE_API_URL="https://api.vscale.io/v1"
|
||||
|
@ -6,7 +6,6 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_vultr
|
||||
Options:
|
||||
VULTR_API_KEY API Key
|
||||
Issues: github.com/acmesh-official/acme.sh/issues/2374
|
||||
Author:
|
||||
'
|
||||
|
||||
VULTR_Api="https://api.vultr.com/v2"
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
WS_ApiKey API Key. Called "Identifier" in the WS Admin
|
||||
WS_ApiSecret API Secret. Called "Secret key" in the WS Admin
|
||||
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
|
||||
|
@ -7,7 +7,7 @@ Options:
|
||||
WORLD4YOU_USERNAME Username
|
||||
WORLD4YOU_PASSWORD Password
|
||||
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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user