Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
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
Show 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