Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
979e10f9
Unverified
Commit
979e10f9
authored
Feb 15, 2021
by
neil
Committed by
GitHub
Feb 15, 2021
Browse files
Merge pull request #3410 from acmesh-official/dev
sync
parents
deac3fc9
bf8c3370
Changes
6
Show whitespace changes
Inline
Side-by-side
.github/workflows/LetsEncrypt.yml
View file @
979e10f9
...
...
@@ -111,7 +111,7 @@ jobs:
-
uses
:
actions/checkout@v2
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
uses
:
vmactions/freebsd-vm@v0.
0.7
-
uses
:
vmactions/freebsd-vm@v0.
1.2
with
:
envs
:
'
NGROK_TOKEN
TEST_LOCAL'
prepare
:
pkg install -y socat curl
...
...
@@ -136,7 +136,7 @@ jobs:
run
:
echo "TestingDomain=${{steps.ngrok.outputs.server}}" >> $GITHUB_ENV
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
uses
:
vmactions/solaris-vm@v0.0.
1
-
uses
:
vmactions/solaris-vm@v0.0.
3
with
:
envs
:
'
TEST_LOCAL
TestingDomain'
nat
:
|
...
...
acme.sh
View file @
979e10f9
...
...
@@ -4009,12 +4009,42 @@ _check_dns_entries() {
}
#file
_get_c
ert
_issuers() {
_get_c
hain
_issuers() {
_cfile="$1"
if _contains "$(${ACME_OPENSSL_BIN:-openssl} help crl2pkcs7 2>&1)" "Usage: crl2pkcs7" || _contains "$(${ACME_OPENSSL_BIN:-openssl} crl2pkcs7 help 2>&1)" "unknown option help"; then
${ACME_OPENSSL_BIN:-openssl} crl2pkcs7 -nocrl -certfile $_cfile | ${ACME_OPENSSL_BIN:-openssl} pkcs7 -print_certs -text -noout | grep 'Issuer:' | _egrep_o "CN *=[^,]*" | cut -d = -f 2
else
${ACME_OPENSSL_BIN:-openssl} x509 -in $_cfile -text -noout | grep 'Issuer:' | _egrep_o "CN *=[^,]*" | cut -d = -f 2
if _contains "$(${ACME_OPENSSL_BIN:-openssl} help crl2pkcs7 2>&1)" "Usage: crl2pkcs7" || _contains "$(${ACME_OPENSSL_BIN:-openssl} crl2pkcs7 -help 2>&1)" "Usage: crl2pkcs7" || _contains "$(${ACME_OPENSSL_BIN:-openssl} crl2pkcs7 help 2>&1)" "unknown option help"; then
${ACME_OPENSSL_BIN:-openssl} crl2pkcs7 -nocrl -certfile $_cfile | ${ACME_OPENSSL_BIN:-openssl} pkcs7 -print_certs -text -noout | grep -i 'Issuer:' | _egrep_o "CN *=[^,]*" | cut -d = -f 2
else
_cindex=1
for _startn in $(grep -n -- "$BEGIN_CERT" "$_cfile" | cut -d : -f 1); do
_endn="$(grep -n -- "$END_CERT" "$_cfile" | cut -d : -f 1 | _head_n $_cindex | _tail_n 1)"
_debug2 "_startn" "$_startn"
_debug2 "_endn" "$_endn"
if [ "$DEBUG" ]; then
_debug2 "cert$_cindex" "$(sed -n "$_startn,${_endn}p" "$_cfile")"
fi
sed -n "$_startn,${_endn}p" "$_cfile" | ${ACME_OPENSSL_BIN:-openssl} x509 -text -noout | grep 'Issuer:' | _egrep_o "CN *=[^,]*" | cut -d = -f 2 | sed "s/ *\(.*\)/\1/"
_cindex=$(_math $_cindex + 1)
done
fi
}
#
_get_chain_subjects() {
_cfile="$1"
if _contains "$(${ACME_OPENSSL_BIN:-openssl} help crl2pkcs7 2>&1)" "Usage: crl2pkcs7" || _contains "$(${ACME_OPENSSL_BIN:-openssl} crl2pkcs7 -help 2>&1)" "Usage: crl2pkcs7" || _contains "$(${ACME_OPENSSL_BIN:-openssl} crl2pkcs7 help 2>&1)" "unknown option help"; then
${ACME_OPENSSL_BIN:-openssl} crl2pkcs7 -nocrl -certfile $_cfile | ${ACME_OPENSSL_BIN:-openssl} pkcs7 -print_certs -text -noout | grep -i 'Subject:' | _egrep_o "CN *=[^,]*" | cut -d = -f 2
else
_cindex=1
for _startn in $(grep -n -- "$BEGIN_CERT" "$_cfile" | cut -d : -f 1); do
_endn="$(grep -n -- "$END_CERT" "$_cfile" | cut -d : -f 1 | _head_n $_cindex | _tail_n 1)"
_debug2 "_startn" "$_startn"
_debug2 "_endn" "$_endn"
if [ "$DEBUG" ]; then
_debug2 "cert$_cindex" "$(sed -n "$_startn,${_endn}p" "$_cfile")"
fi
sed -n "$_startn,${_endn}p" "$_cfile" | ${ACME_OPENSSL_BIN:-openssl} x509 -text -noout | grep -i 'Subject:' | _egrep_o "CN *=[^,]*" | cut -d = -f 2 | sed "s/ *\(.*\)/\1/"
_cindex=$(_math $_cindex + 1)
done
fi
}
...
...
@@ -4022,14 +4052,12 @@ _get_cert_issuers() {
_match_issuer() {
_cfile="$1"
_missuer="$2"
_fissuers="$(_get_c
ert
_issuers $_cfile)"
_fissuers="$(_get_c
hain
_issuers $_cfile)"
_debug2 _fissuers "$_fissuers"
if _contains "$_fissuers" "$_missuer"; then
return 0
fi
_fissuers="$(echo "$_fissuers" | _lower_case)"
_rootissuer="$(echo "$_fissuers" | _lower_case | _tail_n 1)"
_debug2 _rootissuer "$_rootissuer"
_missuer="$(echo "$_missuer" | _lower_case)"
_contains "$_
f
issuer
s
" "$_missuer"
_contains "$_
root
issuer" "$_missuer"
}
#webroot, domain domainlist keylength
...
...
@@ -4803,6 +4831,9 @@ $_authorizations_map"
_split_cert_chain "$CERT_PATH" "$CERT_FULLCHAIN_PATH" "$CA_CERT_PATH"
if [ "$_preferred_chain" ] && [ -f "$CERT_FULLCHAIN_PATH" ]; then
if [ "$DEBUG" ]; then
_debug "default chain issuers: " "$(_get_chain_issuers "$CERT_FULLCHAIN_PATH")"
fi
if ! _match_issuer "$CERT_FULLCHAIN_PATH" "$_preferred_chain"; then
rels="$(echo "$responseHeaders" | tr -d ' <>' | grep -i "^link:" | grep -i 'rel="alternate"' | cut -d : -f 2- | cut -d ';' -f 1)"
_debug2 "rels" "$rels"
...
...
@@ -4818,13 +4849,22 @@ $_authorizations_map"
_relca="$CA_CERT_PATH.alt"
echo "$response" >"$_relcert"
_split_cert_chain "$_relcert" "$_relfullchain" "$_relca"
if [ "$DEBUG" ]; then
_debug "rel chain issuers: " "$(_get_chain_issuers "$_relfullchain")"
fi
if _match_issuer "$_relfullchain" "$_preferred_chain"; then
_info "Matched issuer in: $rel"
cat $_relcert >"$CERT_PATH"
cat $_relfullchain >"$CERT_FULLCHAIN_PATH"
cat $_relca >"$CA_CERT_PATH"
rm -f "$_relcert"
rm -f "$_relfullchain"
rm -f "$_relca"
break
fi
rm -f "$_relcert"
rm -f "$_relfullchain"
rm -f "$_relca"
done
fi
fi
...
...
deploy/unifi.sh
View file @
979e10f9
#!/usr/bin/env sh
#Here is a script to deploy cert to unifi server.
# Here is a script to deploy cert on a Unifi Controller or Cloud Key device.
# It supports:
# - self-hosted Unifi Controller
# - Unifi Cloud Key (Gen1/2/2+)
# - Unifi Cloud Key running UnifiOS (v2.0.0+, Gen2/2+ only)
# Please report bugs to https://github.com/acmesh-official/acme.sh/issues/3359
#returns 0 means success, otherwise error.
# The deploy-hook automatically detects standard Unifi installations
# for each of the supported environments. Most users should not need
# to set any of these variables, but if you are running a self-hosted
# Controller with custom locations, set these as necessary before running
# the deploy hook. (Defaults shown below.)
#
# Settings for Unifi Controller:
# Location of Java keystore or unifi.keystore.jks file:
#DEPLOY_UNIFI_KEYSTORE="/usr/lib/unifi/data/keystore"
# Keystore password (built into Unifi Controller, not a user-set password):
#DEPLOY_UNIFI_KEYPASS="aircontrolenterprise"
# Command to restart Unifi Controller:
#DEPLOY_UNIFI_RELOAD="service unifi restart"
#
# Settings for Unifi Cloud Key Gen1 (nginx admin pages):
# Directory where cloudkey.crt and cloudkey.key live:
#DEPLOY_UNIFI_CLOUDKEY_CERTDIR="/etc/ssl/private"
# Command to restart maintenance pages and Controller
# (same setting as above, default is updated when running on Cloud Key Gen1):
#DEPLOY_UNIFI_RELOAD="service nginx restart && service unifi restart"
#
# Settings for UnifiOS (Cloud Key Gen2):
# Directory where unifi-core.crt and unifi-core.key live:
#DEPLOY_UNIFI_CORE_CONFIG="/data/unifi-core/config/"
# Command to restart unifi-core:
#DEPLOY_UNIFI_RELOAD="systemctl restart unifi-core"
#
# At least one of DEPLOY_UNIFI_KEYSTORE, DEPLOY_UNIFI_CLOUDKEY_CERTDIR,
# or DEPLOY_UNIFI_CORE_CONFIG must exist to receive the deployed certs.
######## Public functions #####################
...
...
@@ -24,77 +55,160 @@ unifi_deploy() {
_debug _cca
"
$_cca
"
_debug _cfullchain
"
$_cfullchain
"
if
!
_exists keytool
;
then
_err
"keytool not found"
return
1
fi
_getdeployconf DEPLOY_UNIFI_KEYSTORE
_getdeployconf DEPLOY_UNIFI_KEYPASS
_getdeployconf DEPLOY_UNIFI_CLOUDKEY_CERTDIR
_getdeployconf DEPLOY_UNIFI_CORE_CONFIG
_getdeployconf DEPLOY_UNIFI_RELOAD
_debug2 DEPLOY_UNIFI_KEYSTORE
"
$DEPLOY_UNIFI_KEYSTORE
"
_debug2 DEPLOY_UNIFI_KEYPASS
"
$DEPLOY_UNIFI_KEYPASS
"
_debug2 DEPLOY_UNIFI_CLOUDKEY_CERTDIR
"
$DEPLOY_UNIFI_CLOUDKEY_CERTDIR
"
_debug2 DEPLOY_UNIFI_CORE_CONFIG
"
$DEPLOY_UNIFI_CORE_CONFIG
"
_debug2 DEPLOY_UNIFI_RELOAD
"
$DEPLOY_UNIFI_RELOAD
"
# Space-separated list of environments detected and installed:
_services_updated
=
""
DEFAULT_UNIFI_KEYSTORE
=
"/usr/lib/unifi/data/keystore"
_unifi_keystore
=
"
${
DEPLOY_UNIFI_KEYSTORE
:-
$DEFAULT_UNIFI_KEYSTORE
}
"
DEFAULT_UNIFI_KEYPASS
=
"aircontrolenterprise"
_unifi_keypass
=
"
${
DEPLOY_UNIFI_KEYPASS
:-
$DEFAULT_UNIFI_KEYPASS
}
"
DEFAULT_UNIFI_RELOAD
=
"service unifi restart"
_reload
=
"
${
DEPLOY_UNIFI_RELOAD
:-
$DEFAULT_UNIFI_RELOAD
}
"
# Default reload commands accumulated as we auto-detect environments:
_reload_cmd
=
""
# Unifi Controller environment (self hosted or any Cloud Key) --
# auto-detect by file /usr/lib/unifi/data/keystore:
_unifi_keystore
=
"
${
DEPLOY_UNIFI_KEYSTORE
:-
/usr/lib/unifi/data/keystore
}
"
if
[
-f
"
$_unifi_keystore
"
]
;
then
_info
"Installing certificate for Unifi Controller (Java keystore)"
_debug _unifi_keystore
"
$_unifi_keystore
"
if
[
!
-f
"
$_unifi_keystore
"
]
;
then
if
[
-z
"
$DEPLOY_UNIFI_KEYSTORE
"
]
;
then
_err
"unifi keystore is not found, please define DEPLOY_UNIFI_KEYSTORE"
return
1
else
_err
"It seems that the specified unifi keystore is not valid, please check."
if
!
_exists keytool
;
then
_err
"keytool not found"
return
1
fi
fi
if
[
!
-w
"
$_unifi_keystore
"
]
;
then
_err
"The file
$_unifi_keystore
is not writable, please change the permission."
return
1
fi
_info
"Generate import pkcs12"
_unifi_keypass
=
"
${
DEPLOY_UNIFI_KEYPASS
:-
aircontrolenterprise
}
"
_debug
"Generate import pkcs12"
_import_pkcs12
=
"
$(
_mktemp
)
"
_toPkcs
"
$_import_pkcs12
"
"
$_ckey
"
"
$_ccert
"
"
$_cca
"
"
$_unifi_keypass
"
unifi root
# shellcheck disable=SC2181
if
[
"
$?
"
!=
"0"
]
;
then
_err
"
Oops, error creating import
pkcs12
, p
lease re
port bug to us
."
_err
"
Error generating
pkcs12
. P
lease re
-run with --debug and report a bug
."
return
1
fi
_
info
"Modify unifi
keystore:
$_unifi_keystore
"
_
debug
"Import into
keystore:
$_unifi_keystore
"
if
keytool
-importkeystore
\
-deststorepass
"
$_unifi_keypass
"
-destkeypass
"
$_unifi_keypass
"
-destkeystore
"
$_unifi_keystore
"
\
-srckeystore
"
$_import_pkcs12
"
-srcstoretype
PKCS12
-srcstorepass
"
$_unifi_keypass
"
\
-alias
unifi
-noprompt
;
then
_info
"Import keystore success!"
_debug
"Import keystore success!"
rm
"
$_import_pkcs12
"
else
_err
"Import unifi keystore error, please report bug to us."
_err
"Error importing into Unifi Java keystore."
_err
"Please re-run with --debug and report a bug."
rm
"
$_import_pkcs12
"
return
1
fi
_info
"Run reload:
$_reload
"
if
eval
"
$_reload
"
;
then
_info
"Reload success!"
if
[
"
$DEPLOY_UNIFI_KEYSTORE
"
]
;
then
_savedomainconf DEPLOY_UNIFI_KEYSTORE
"
$DEPLOY_UNIFI_KEYSTORE
"
else
_cleardomainconf DEPLOY_UNIFI_KEYSTORE
if
systemctl
-q
is-active unifi
;
then
_reload_cmd
=
"
${
_reload_cmd
:+
$_reload_cmd
&&
}
service unifi restart"
fi
if
[
"
$DEPLOY_UNIFI_KEYPASS
"
]
;
then
_savedomainconf DEPLOY_UNIFI_KEYPASS
"
$DEPLOY_UNIFI_KEYPASS
"
else
_cleardomainconf DEPLOY_UNIFI_KEYPASS
_services_updated
=
"
${
_services_updated
}
unifi"
_info
"Install Unifi Controller certificate success!"
elif
[
"
$DEPLOY_UNIFI_KEYSTORE
"
]
;
then
_err
"The specified DEPLOY_UNIFI_KEYSTORE='
$DEPLOY_UNIFI_KEYSTORE
' is not valid, please check."
return
1
fi
if
[
"
$DEPLOY_UNIFI_RELOAD
"
]
;
then
_savedomainconf DEPLOY_UNIFI_RELOAD
"
$DEPLOY_UNIFI_RELOAD
"
else
_cleardomainconf DEPLOY_UNIFI_RELOAD
# Cloud Key environment (non-UnifiOS -- nginx serves admin pages) --
# auto-detect by file /etc/ssl/private/cloudkey.key:
_cloudkey_certdir
=
"
${
DEPLOY_UNIFI_CLOUDKEY_CERTDIR
:-
/etc/ssl/private
}
"
if
[
-f
"
${
_cloudkey_certdir
}
/cloudkey.key"
]
;
then
_info
"Installing certificate for Cloud Key Gen1 (nginx admin pages)"
_debug _cloudkey_certdir
"
$_cloudkey_certdir
"
if
[
!
-w
"
$_cloudkey_certdir
"
]
;
then
_err
"The directory
$_cloudkey_certdir
is not writable; please check permissions."
return
1
fi
return
0
# Cloud Key expects to load the keystore from /etc/ssl/private/unifi.keystore.jks.
# Normally /usr/lib/unifi/data/keystore is a symlink there (so the keystore was
# updated above), but if not, we don't know how to handle this installation:
if
!
cmp
-s
"
$_unifi_keystore
"
"
${
_cloudkey_certdir
}
/unifi.keystore.jks"
;
then
_err
"Unsupported Cloud Key configuration: keystore not found at '
${
_cloudkey_certdir
}
/unifi.keystore.jks'"
return
1
fi
cat
"
$_cfullchain
"
>
"
${
_cloudkey_certdir
}
/cloudkey.crt"
cat
"
$_ckey
"
>
"
${
_cloudkey_certdir
}
/cloudkey.key"
(
cd
"
$_cloudkey_certdir
"
&&
tar
-cf
cert.tar cloudkey.crt cloudkey.key unifi.keystore.jks
)
if
systemctl
-q
is-active nginx
;
then
_reload_cmd
=
"
${
_reload_cmd
:+
$_reload_cmd
&&
}
service nginx restart"
fi
_info
"Install Cloud Key Gen1 certificate success!"
_services_updated
=
"
${
_services_updated
}
nginx"
elif
[
"
$DEPLOY_UNIFI_CLOUDKEY_CERTDIR
"
]
;
then
_err
"The specified DEPLOY_UNIFI_CLOUDKEY_CERTDIR='
$DEPLOY_UNIFI_CLOUDKEY_CERTDIR
' is not valid, please check."
return
1
fi
# UnifiOS environment -- auto-detect by /data/unifi-core/config/unifi-core.key:
_unifi_core_config
=
"
${
DEPLOY_UNIFI_CORE_CONFIG
:-
/data/unifi-core/config
}
"
if
[
-f
"
${
_unifi_core_config
}
/unifi-core.key"
]
;
then
_info
"Installing certificate for UnifiOS"
_debug _unifi_core_config
"
$_unifi_core_config
"
if
[
!
-w
"
$_unifi_core_config
"
]
;
then
_err
"The directory
$_unifi_core_config
is not writable; please check permissions."
return
1
fi
cat
"
$_cfullchain
"
>
"
${
_unifi_core_config
}
/unifi-core.crt"
cat
"
$_ckey
"
>
"
${
_unifi_core_config
}
/unifi-core.key"
if
systemctl
-q
is-active unifi-core
;
then
_reload_cmd
=
"
${
_reload_cmd
:+
$_reload_cmd
&&
}
systemctl restart unifi-core"
fi
_info
"Install UnifiOS certificate success!"
_services_updated
=
"
${
_services_updated
}
unifi-core"
elif
[
"
$DEPLOY_UNIFI_CORE_CONFIG
"
]
;
then
_err
"The specified DEPLOY_UNIFI_CORE_CONFIG='
$DEPLOY_UNIFI_CORE_CONFIG
' is not valid, please check."
return
1
fi
if
[
-z
"
$_services_updated
"
]
;
then
# None of the Unifi environments were auto-detected, so no deployment has occurred
# (and none of DEPLOY_UNIFI_{KEYSTORE,CLOUDKEY_CERTDIR,CORE_CONFIG} were set).
_err
"Unable to detect Unifi environment in standard location."
_err
"(This deploy hook must be run on the Unifi device, not a remote machine.)"
_err
"For non-standard Unifi installations, set DEPLOY_UNIFI_KEYSTORE,"
_err
"DEPLOY_UNIFI_CLOUDKEY_CERTDIR, and/or DEPLOY_UNIFI_CORE_CONFIG as appropriate."
return
1
fi
_reload_cmd
=
"
${
DEPLOY_UNIFI_RELOAD
:-
$_reload_cmd
}
"
if
[
-z
"
$_reload_cmd
"
]
;
then
_err
"Certificates were installed for services:
${
_services_updated
}
,"
_err
"but none appear to be active. Please set DEPLOY_UNIFI_RELOAD"
_err
"to a command that will restart the necessary services."
return
1
fi
_info
"Reload services (this may take some time):
$_reload_cmd
"
if
eval
"
$_reload_cmd
"
;
then
_info
"Reload success!"
else
_err
"Reload error"
return
1
fi
return
0
# Successful, so save all (non-default) config:
_savedeployconf DEPLOY_UNIFI_KEYSTORE
"
$DEPLOY_UNIFI_KEYSTORE
"
_savedeployconf DEPLOY_UNIFI_KEYPASS
"
$DEPLOY_UNIFI_KEYPASS
"
_savedeployconf DEPLOY_UNIFI_CLOUDKEY_CERTDIR
"
$DEPLOY_UNIFI_CLOUDKEY_CERTDIR
"
_savedeployconf DEPLOY_UNIFI_CORE_CONFIG
"
$DEPLOY_UNIFI_CORE_CONFIG
"
_savedeployconf DEPLOY_UNIFI_RELOAD
"
$DEPLOY_UNIFI_RELOAD
"
return
0
}
dnsapi/dns_arvan.sh
View file @
979e10f9
#!/usr/bin/env sh
#Arvan_Token="xxxx"
#Arvan_Token="
Apikey
xxxx"
ARVAN_API_URL
=
"https://napi.arvancloud.com/cdn/4.0/domains"
#Author: Ehsan Aliakbar
#Author: Vahid Fardi
#Report Bugs here: https://github.com/Neilpang/acme.sh
#
######## Public functions #####################
...
...
@@ -38,6 +37,7 @@ dns_arvan_add() {
_info
"Adding record"
if
_arvan_rest POST
"
$_domain
/dns-records"
"{
\"
type
\"
:
\"
TXT
\"
,
\"
name
\"
:
\"
$_sub_domain
\"
,
\"
value
\"
:{
\"
text
\"
:
\"
$txtvalue
\"
},
\"
ttl
\"
:120}"
;
then
if
_contains
"
$response
"
"
$txtvalue
"
;
then
_info
"response id is
$response
"
_info
"Added, OK"
return
0
elif
_contains
"
$response
"
"Record Data is Duplicated"
;
then
...
...
@@ -49,7 +49,7 @@ dns_arvan_add() {
fi
fi
_err
"Add txt record error."
return
1
return
0
}
#Usage: fulldomain txtvalue
...
...
@@ -73,33 +73,21 @@ dns_arvan_rm() {
_debug _domain
"
$_domain
"
_debug
"Getting txt records"
shorted_txtvalue
=
$(
printf
"%s"
"
$txtvalue
"
|
cut
-d
"-"
-d
"_"
-f1
)
_arvan_rest GET
"
${
_domain
}
/dns-records?search=
$shorted_txtvalue
"
_arvan_rest GET
"
${
_domain
}
/dns-records"
if
!
printf
"%s"
"
$response
"
|
grep
\"
current_page
\"
:1
>
/dev/null
;
then
_err
"Error on Arvan Api"
_err
"Please create a github issue with debbug log"
return
1
fi
count
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
total
\"
:[^,]*"
|
cut
-d
:
-f
2
)
_debug count
"
$count
"
if
[
"
$count
"
=
"0"
]
;
then
_info
"Don't need to remove."
else
record_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
id
\"
:
\"
[^
\"
]*
\"
"
|
cut
-d
:
-f
2 |
tr
-d
\"
|
head
-n
1
)
_debug
"record_id"
"
$record_id
"
if
[
-z
"
$record_id
"
]
;
then
_err
"Can not get record id to remove."
return
1
fi
if
!
_arvan_rest
"DELETE"
"
${
_domain
}
/dns-records/
$record_id
"
;
then
_err
"Delete record error."
_record_id
=
$(
echo
"
$response
"
| _egrep_o
".
\"
id
\"
:
\"
[^
\"
]*
\"
,
\"
type
\"
:
\"
txt
\"
,
\"
name
\"
:
\"
_acme-challenge
\"
,
\"
value
\"
:{
\"
text
\"
:
\"
$txtvalue
\"
}"
|
cut
-d
:
-f
2 |
cut
-d
,
-f
1 |
tr
-d
\"
)
if
!
_arvan_rest
"DELETE"
"
${
_domain
}
/dns-records/
${
_record_id
}
"
;
then
_err
"Error on Arvan Api"
return
1
fi
_debug
"
$response
"
_contains
"
$response
"
'dns record deleted'
fi
return
0
}
#################### Private functions below ##################################
...
...
@@ -111,7 +99,7 @@ dns_arvan_rm() {
# _domain_id=sdjkglgdfewsdfg
_get_root
()
{
domain
=
$1
i
=
1
i
=
2
p
=
1
while
true
;
do
h
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
$i
-100
)
...
...
@@ -121,12 +109,11 @@ _get_root() {
return
1
fi
if
!
_arvan_rest GET
"
?search=
$h
"
;
then
if
!
_arvan_rest GET
"
$h
"
;
then
return
1
fi
if
_contains
"
$response
"
"
\"
domain
\"
:
\"
$h
\"
"
||
_contains
"
$response
"
'"total":1'
;
then
_domain_id
=
$(
echo
"
$response
"
| _egrep_o
"
\[
.
\"
id
\"
:
\"
[^
\"
]*
\"
"
| _head_n 1 |
cut
-d
:
-f
2 |
tr
-d
\"
)
if
_contains
"
$response
"
"
\"
domain
\"
:
\"
$h
\"
"
;
then
_domain_id
=
$(
echo
"
$response
"
|
cut
-d
:
-f
3 |
cut
-d
,
-f
1 |
tr
-d
\"
)
if
[
"
$_domain_id
"
]
;
then
_sub_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
1-
$p
)
_domain
=
$h
...
...
@@ -146,7 +133,6 @@ _arvan_rest() {
data
=
"
$3
"
token_trimmed
=
$(
echo
"
$Arvan_Token
"
|
tr
-d
'"'
)
export
_H1
=
"Authorization:
$token_trimmed
"
if
[
"
$mtd
"
=
"DELETE"
]
;
then
...
...
@@ -160,4 +146,5 @@ _arvan_rest() {
else
response
=
"
$(
_get
"
$ARVAN_API_URL
/
$ep$data
"
)
"
fi
return
0
}
dnsapi/dns_duckdns.sh
View file @
979e10f9
...
...
@@ -12,7 +12,7 @@
DuckDNS_API
=
"https://www.duckdns.org/update"
######## Public functions #####################
######## Public functions #####################
#
#Usage: dns_duckdns_add _acme-challenge.domain.duckdns.org "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_duckdns_add
()
{
...
...
@@ -112,7 +112,7 @@ _duckdns_rest() {
param
=
"
$2
"
_debug param
"
$param
"
url
=
"
$DuckDNS_API
?
$param
"
if
[
"
$DEBUG
"
-gt
0
]
;
then
if
[
-n
"
$DEBUG
"
]
&&
[
"
$DEBUG
"
-gt
0
]
;
then
url
=
"
$url
&verbose=true"
fi
_debug url
"
$url
"
...
...
@@ -121,7 +121,7 @@ _duckdns_rest() {
if
[
"
$method
"
=
"GET"
]
;
then
response
=
"
$(
_get
"
$url
"
)
"
_debug2 response
"
$response
"
if
[
"
$DEBUG
"
-gt
0
]
&&
_contains
"
$response
"
"UPDATED"
&&
_contains
"
$response
"
"OK"
;
then
if
[
-n
"
$DEBUG
"
]
&&
[
"
$DEBUG
"
-gt
0
]
&&
_contains
"
$response
"
"UPDATED"
&&
_contains
"
$response
"
"OK"
;
then
response
=
"OK"
fi
else
...
...
dnsapi/dns_pdns.sh
View file @
979e10f9
...
...
@@ -175,13 +175,13 @@ _get_root() {
i
=
1
if
_pdns_rest
"GET"
"/api/v1/servers/
$PDNS_ServerId
/zones"
;
then
_zones_response
=
"
$response
"
_zones_response
=
$(
echo
"
$response
"
| _normalizeJson
)
fi
while
true
;
do
h
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
$i
-100
)
if
_contains
"
$_zones_response
"
"
\"
name
\"
:
\"
$h
.
\"
"
;
then
if
_contains
"
$_zones_response
"
"
\"
name
\"
:
\"
$h
.
\"
"
;
then
_domain
=
"
$h
."
if
[
-z
"
$h
"
]
;
then
_domain
=
"=2E"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment