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
e46b392a
Commit
e46b392a
authored
Apr 26, 2019
by
neilpang
Browse files
Merge branch 'dev' of
https://github.com/Neilpang/acme.sh
into dev
parents
47ff768b
68428a5d
Changes
4
Hide whitespace changes
Inline
Side-by-side
acme.sh
View file @
e46b392a
...
...
@@ -3238,11 +3238,6 @@ _on_issue_success() {
}
updateaccount() {
_initpath
_regAccount
}
registeraccount() {
_reg_length="$1"
_initpath
...
...
@@ -3340,6 +3335,61 @@ _regAccount() {
_info "ACCOUNT_THUMBPRINT" "$ACCOUNT_THUMBPRINT"
}
#implement updateaccount
updateaccount() {
_initpath
if [ ! -f "$ACCOUNT_KEY_PATH" ] && [ -f "$_OLD_ACCOUNT_KEY" ]; then
_info "mv $_OLD_ACCOUNT_KEY to $ACCOUNT_KEY_PATH"
mv "$_OLD_ACCOUNT_KEY" "$ACCOUNT_KEY_PATH"
fi
if [ ! -f "$ACCOUNT_JSON_PATH" ] && [ -f "$_OLD_ACCOUNT_JSON" ]; then
_info "mv $_OLD_ACCOUNT_JSON to $ACCOUNT_JSON_PATH"
mv "$_OLD_ACCOUNT_JSON" "$ACCOUNT_JSON_PATH"
fi
if [ ! -f "$ACCOUNT_KEY_PATH" ]; then
_err "Account key is not found at: $ACCOUNT_KEY_PATH"
return 1
fi
_accUri=$(_readcaconf "ACCOUNT_URL")
_debug _accUri "$_accUri"
if [ -z "$_accUri" ]; then
_err "The account url is empty, please run '--update-account' first to update the account info first,"
_err "Then try again."
return 1
fi
if ! _calcjwk "$ACCOUNT_KEY_PATH"; then
return 1
fi
_initAPI
if [ "$ACME_VERSION" = "2" ]; then
if [ "$ACCOUNT_EMAIL" ]; then
updjson='{"contact": ["mailto: '$ACCOUNT_EMAIL'"]}'
fi
else
# ACMEv1: Updates happen the same way a registration is done.
# https://tools.ietf.org/html/draft-ietf-acme-acme-01#section-6.3
_regAccount
return
fi
# this part handles ACMEv2 account updates.
_send_signed_request "$_accUri" "$updjson"
if [ "$code" = '200' ]; then
_info "account update success for $_accUri."
else
_info "Error. The account was not updated."
return 1
fi
}
#Implement deactivate account
deactivateaccount() {
_initpath
...
...
dnsapi/dns_cf.sh
View file @
e46b392a
...
...
@@ -182,8 +182,11 @@ _cf_rest() {
data
=
"
$3
"
_debug
"
$ep
"
export
_H1
=
"X-Auth-Email:
$CF_Email
"
export
_H2
=
"X-Auth-Key:
$CF_Key
"
email_trimmed
=
$(
echo
$CF_Email
|
tr
-d
'"'
)
key_trimmed
=
$(
echo
$CF_Key
|
tr
-d
'"'
)
export
_H1
=
"X-Auth-Email:
$email_trimmed
"
export
_H2
=
"X-Auth-Key:
$key_trimmed
"
export
_H3
=
"Content-Type: application/json"
if
[
"
$m
"
!=
"GET"
]
;
then
...
...
dnsapi/dns_ddnss.sh
0 → 100644
View file @
e46b392a
#!/usr/bin/env sh
#Created by RaidenII, to use DuckDNS's API to add/remove text records
#modified by helbgd @ 03/13/2018 to support ddnss.de
#modified by mod242 @ 04/24/2018 to support different ddnss domains
#Please note: the Wildcard Feature must be turned on for the Host record
#and the checkbox for TXT needs to be enabled
# Pass credentials before "acme.sh --issue --dns dns_ddnss ..."
# --
# export DDNSS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
# --
#
DDNSS_DNS_API
=
"https://ddnss.de/upd.php"
######## Public functions #####################
#Usage: dns_ddnss_add _acme-challenge.domain.ddnss.de "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_ddnss_add
()
{
fulldomain
=
$1
txtvalue
=
$2
DDNSS_Token
=
"
${
DDNSS_Token
:-
$(
_readaccountconf_mutable DDNSS_Token
)
}
"
if
[
-z
"
$DDNSS_Token
"
]
;
then
_err
"You must export variable: DDNSS_Token"
_err
"The token for your DDNSS account is necessary."
_err
"You can look it up in your DDNSS account."
return
1
fi
# Now save the credentials.
_saveaccountconf_mutable DDNSS_Token
"
$DDNSS_Token
"
# Unfortunately, DDNSS does not seems to support lookup domain through API
# So I assume your credentials (which are your domain and token) are correct
# If something goes wrong, we will get a KO response from DDNSS
if
!
_ddnss_get_domain
;
then
return
1
fi
# Now add the TXT record to DDNSS DNS
_info
"Trying to add TXT record"
if
_ddnss_rest GET
"key=
$DDNSS_Token
&host=
$_ddnss_domain
&txtm=1&txt=
$txtvalue
"
;
then
if
[
"
$response
"
=
"Updated 1 hostname."
]
;
then
_info
"TXT record has been successfully added to your DDNSS domain."
_info
"Note that all subdomains under this domain uses the same TXT record."
return
0
else
_err
"Errors happened during adding the TXT record, response=
$response
"
return
1
fi
else
_err
"Errors happened during adding the TXT record."
return
1
fi
}
#Usage: fulldomain txtvalue
#Remove the txt record after validation.
dns_ddnss_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
DDNSS_Token
=
"
${
DDNSS_Token
:-
$(
_readaccountconf_mutable DDNSS_Token
)
}
"
if
[
-z
"
$DDNSS_Token
"
]
;
then
_err
"You must export variable: DDNSS_Token"
_err
"The token for your DDNSS account is necessary."
_err
"You can look it up in your DDNSS account."
return
1
fi
if
!
_ddnss_get_domain
;
then
return
1
fi
# Now remove the TXT record from DDNS DNS
_info
"Trying to remove TXT record"
if
_ddnss_rest GET
"key=
$DDNSS_Token
&host=
$_ddnss_domain
&txtm=1&txt=."
;
then
if
[
"
$response
"
=
"Updated 1 hostname."
]
;
then
_info
"TXT record has been successfully removed from your DDNSS domain."
return
0
else
_err
"Errors happened during removing the TXT record, response=
$response
"
return
1
fi
else
_err
"Errors happened during removing the TXT record."
return
1
fi
}
#################### Private functions below ##################################
#fulldomain=_acme-challenge.domain.ddnss.de
#returns
# _ddnss_domain=domain
_ddnss_get_domain
()
{
# We'll extract the domain/username from full domain
_ddnss_domain
=
"
$(
echo
"
$fulldomain
"
| _lower_case | _egrep_o
'[.][^.][^.]*[.](ddnss|dyn-ip24|dyndns|dyn|dyndns1|home-webserver|myhome-server|dynip)\..*'
|
cut
-d
.
-f
2-
)
"
if
[
-z
"
$_ddnss_domain
"
]
;
then
_err
"Error extracting the domain."
return
1
fi
return
0
}
#Usage: method URI
_ddnss_rest
()
{
method
=
$1
param
=
"
$2
"
_debug param
"
$param
"
url
=
"
$DDNSS_DNS_API
?
$param
"
_debug url
"
$url
"
# DDNSS uses GET to update domain info
if
[
"
$method
"
=
"GET"
]
;
then
response
=
"
$(
_get
"
$url
"
|
sed
's/<[^>]*>//g;/</N;//ba'
| _tail_n 1
)
"
else
_err
"Unsupported method"
return
1
fi
_debug2 response
"
$response
"
return
0
}
dnsapi/dns_hostingde.sh
View file @
e46b392a
...
...
@@ -53,6 +53,18 @@ _hostingde_parse() {
fi
}
_hostingde_parse_no_strip_whitespace
()
{
find
=
"
${
1
}
"
if
[
"
${
2
}
"
]
;
then
notfind
=
"
${
2
}
"
fi
if
[
"
${
notfind
}
"
]
;
then
_egrep_o
\"
"
${
find
}
\"
:.*"
|
grep
-v
"
${
notfind
}
"
|
cut
-d
':'
-f
2 |
cut
-d
','
-f
1
else
_egrep_o
\"
"
${
find
}
\"
:.*"
|
cut
-d
':'
-f
2 |
cut
-d
','
-f
1
fi
}
_hostingde_getZoneConfig
()
{
_info
"Getting ZoneConfig"
curZone
=
"
${
fulldomain
#*.
}
"
...
...
@@ -85,6 +97,22 @@ _hostingde_getZoneConfig() {
zoneConfigDnsServerGroupId
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"dnsServerGroupId"
)
zoneConfigEmailAddress
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"emailAddress"
)
zoneConfigDnsSecMode
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"dnsSecMode"
)
zoneConfigTemplateValues
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse_no_strip_whitespace
"templateValues"
)
if
[
"
$zoneConfigTemplateValues
"
!=
"null"
]
;
then
_debug
"Zone is tied to a template."
zoneConfigTemplateValuesTemplateId
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"templateId"
)
zoneConfigTemplateValuesTemplateName
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse_no_strip_whitespace
"templateName"
)
zoneConfigTemplateValuesTemplateReplacementsIPv4
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"ipv4Replacement"
)
zoneConfigTemplateValuesTemplateReplacementsIPv6
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"ipv6Replacement"
)
zoneConfigTemplateValuesTemplateReplacementsMailIPv4
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"mailIpv4Replacement"
)
zoneConfigTemplateValuesTemplateReplacementsMailIPv6
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"mailIpv6Replacement"
)
zoneConfigTemplateValuesTemplateTieToTemplate
=
$(
echo
"
${
curResult
}
"
| _hostingde_parse
"tieToTemplate"
)
zoneConfigTemplateValues
=
"{
\"
templateId
\"
:
${
zoneConfigTemplateValuesTemplateId
}
,
\"
templateName
\"
:
${
zoneConfigTemplateValuesTemplateName
}
,
\"
templateReplacements
\"
:{
\"
ipv4Replacement
\"
:
${
zoneConfigTemplateValuesTemplateReplacementsIPv4
}
,
\"
ipv6Replacement
\"
:
${
zoneConfigTemplateValuesTemplateReplacementsIPv6
}
,
\"
mailIpv4Replacement
\"
:
${
zoneConfigTemplateValuesTemplateReplacementsMailIPv4
}
,
\"
mailIpv6Replacement
\"
:
${
zoneConfigTemplateValuesTemplateReplacementsMailIPv6
}
},
\"
tieToTemplate
\"
:
${
zoneConfigTemplateValuesTemplateTieToTemplate
}
}"
_debug
"Template values: '{
$zoneConfigTemplateValues
}'"
fi
if
[
"
${
zoneConfigType
}
"
!=
"
\"
NATIVE
\"
"
]
;
then
_err
"Zone is not native"
returnCode
=
1
...
...
@@ -122,7 +150,7 @@ _hostingde_addRecord() {
_hostingde_getZoneStatus
_debug
"Result of zoneStatus: '
${
zoneStatus
}
'"
done
curData
=
"{
\"
authToken
\"
:
\"
${
HOSTINGDE_APIKEY
}
\"
,
\"
zoneConfig
\"
:{
\"
id
\"
:
${
zoneConfigId
}
,
\"
name
\"
:
${
zoneConfigName
}
,
\"
type
\"
:
${
zoneConfigType
}
,
\"
dnsServerGroupId
\"
:
${
zoneConfigDnsServerGroupId
}
,
\"
dnsSecMode
\"
:
${
zoneConfigDnsSecMode
}
,
\"
emailAddress
\"
:
${
zoneConfigEmailAddress
}
,
\"
soaValues
\"
:{
\"
expire
\"
:
${
zoneConfigExpire
}
,
\"
negativeTtl
\"
:
${
zoneConfigNegativeTtl
}
,
\"
refresh
\"
:
${
zoneConfigRefresh
}
,
\"
retry
\"
:
${
zoneConfigRetry
}
,
\"
ttl
\"
:
${
zoneConfigTtl
}
}},
\"
recordsToAdd
\"
:[{
\"
name
\"
:
\"
${
fulldomain
}
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"\\\"
${
txtvalue
}
\\\"\"
,
\"
ttl
\"
:3600}]}"
curData
=
"{
\"
authToken
\"
:
\"
${
HOSTINGDE_APIKEY
}
\"
,
\"
zoneConfig
\"
:{
\"
id
\"
:
${
zoneConfigId
}
,
\"
name
\"
:
${
zoneConfigName
}
,
\"
type
\"
:
${
zoneConfigType
}
,
\"
dnsServerGroupId
\"
:
${
zoneConfigDnsServerGroupId
}
,
\"
dnsSecMode
\"
:
${
zoneConfigDnsSecMode
}
,
\"
emailAddress
\"
:
${
zoneConfigEmailAddress
}
,
\"
soaValues
\"
:{
\"
expire
\"
:
${
zoneConfigExpire
}
,
\"
negativeTtl
\"
:
${
zoneConfigNegativeTtl
}
,
\"
refresh
\"
:
${
zoneConfigRefresh
}
,
\"
retry
\"
:
${
zoneConfigRetry
}
,
\"
ttl
\"
:
${
zoneConfigTtl
}
}
,
\"
templateValues
\"
:
${
zoneConfigTemplateValues
}
},
\"
recordsToAdd
\"
:[{
\"
name
\"
:
\"
${
fulldomain
}
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"\\\"
${
txtvalue
}
\\\"\"
,
\"
ttl
\"
:3600}]}"
curResult
=
"
$(
_post
"
${
curData
}
"
"
${
HOSTINGDE_ENDPOINT
}
/api/dns/v1/json/zoneUpdate"
)
"
_debug
"Calling zoneUpdate: '
${
curData
}
' '
${
HOSTINGDE_ENDPOINT
}
/api/dns/v1/json/zoneUpdate'"
_debug
"Result of zoneUpdate: '
$curResult
'"
...
...
@@ -146,7 +174,7 @@ _hostingde_removeRecord() {
_hostingde_getZoneStatus
_debug
"Result of zoneStatus: '
$zoneStatus
'"
done
curData
=
"{
\"
authToken
\"
:
\"
${
HOSTINGDE_APIKEY
}
\"
,
\"
zoneConfig
\"
:{
\"
id
\"
:
${
zoneConfigId
}
,
\"
name
\"
:
${
zoneConfigName
}
,
\"
type
\"
:
${
zoneConfigType
}
,
\"
dnsServerGroupId
\"
:
${
zoneConfigDnsServerGroupId
}
,
\"
dnsSecMode
\"
:
${
zoneConfigDnsSecMode
}
,
\"
emailAddress
\"
:
${
zoneConfigEmailAddress
}
,
\"
soaValues
\"
:{
\"
expire
\"
:
${
zoneConfigExpire
}
,
\"
negativeTtl
\"
:
${
zoneConfigNegativeTtl
}
,
\"
refresh
\"
:
${
zoneConfigRefresh
}
,
\"
retry
\"
:
${
zoneConfigRetry
}
,
\"
ttl
\"
:
${
zoneConfigTtl
}
}},
\"
recordsToDelete
\"
:[{
\"
name
\"
:
\"
${
fulldomain
}
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"\\\"
${
txtvalue
}
\\\"\"
}]}"
curData
=
"{
\"
authToken
\"
:
\"
${
HOSTINGDE_APIKEY
}
\"
,
\"
zoneConfig
\"
:{
\"
id
\"
:
${
zoneConfigId
}
,
\"
name
\"
:
${
zoneConfigName
}
,
\"
type
\"
:
${
zoneConfigType
}
,
\"
dnsServerGroupId
\"
:
${
zoneConfigDnsServerGroupId
}
,
\"
dnsSecMode
\"
:
${
zoneConfigDnsSecMode
}
,
\"
emailAddress
\"
:
${
zoneConfigEmailAddress
}
,
\"
soaValues
\"
:{
\"
expire
\"
:
${
zoneConfigExpire
}
,
\"
negativeTtl
\"
:
${
zoneConfigNegativeTtl
}
,
\"
refresh
\"
:
${
zoneConfigRefresh
}
,
\"
retry
\"
:
${
zoneConfigRetry
}
,
\"
ttl
\"
:
${
zoneConfigTtl
}
}
,
\"
templateValues
\"
:
${
zoneConfigTemplateValues
}
},
\"
recordsToDelete
\"
:[{
\"
name
\"
:
\"
${
fulldomain
}
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"\\\"
${
txtvalue
}
\\\"\"
}]}"
curResult
=
"
$(
_post
"
${
curData
}
"
"
${
HOSTINGDE_ENDPOINT
}
/api/dns/v1/json/zoneUpdate"
)
"
_debug
"Calling zoneUpdate: '
${
curData
}
' '
${
HOSTINGDE_ENDPOINT
}
/api/dns/v1/json/zoneUpdate'"
_debug
"Result of zoneUpdate: '
$curResult
'"
...
...
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