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
ea86ddc6
Unverified
Commit
ea86ddc6
authored
Mar 13, 2019
by
Sylvia van Os
Committed by
GitHub
Mar 13, 2019
Browse files
Merge branch 'dev' into feature/dns-openprovider
parents
19628c47
b10929fe
Changes
5
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
ea86ddc6
...
@@ -359,7 +359,9 @@ You don't have to do anything manually!
...
@@ -359,7 +359,9 @@ You don't have to do anything manually!
1.
Online.net API (https://online.net/)
1.
Online.net API (https://online.net/)
1.
MyDevil.net (https://www.mydevil.net/)
1.
MyDevil.net (https://www.mydevil.net/)
1.
Core-Networks.de (https://core-networks.de)
1.
Core-Networks.de (https://core-networks.de)
1.
NederHost API (https://www.nederhost.nl/)
1.
OpenProvider API (https://www.openprovider.com/)
1.
OpenProvider API (https://www.openprovider.com/)
And:
And:
**
lexicon DNS API: https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api
**
lexicon DNS API: https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api
...
...
acme.sh
View file @
ea86ddc6
...
@@ -19,8 +19,8 @@ LETSENCRYPT_STAGING_CA_V1="https://acme-staging.api.letsencrypt.org/directory"
...
@@ -19,8 +19,8 @@ LETSENCRYPT_STAGING_CA_V1="https://acme-staging.api.letsencrypt.org/directory"
LETSENCRYPT_CA_V2
=
"https://acme-v02.api.letsencrypt.org/directory"
LETSENCRYPT_CA_V2
=
"https://acme-v02.api.letsencrypt.org/directory"
LETSENCRYPT_STAGING_CA_V2
=
"https://acme-staging-v02.api.letsencrypt.org/directory"
LETSENCRYPT_STAGING_CA_V2
=
"https://acme-staging-v02.api.letsencrypt.org/directory"
DEFAULT_CA
=
$LETSENCRYPT_CA_V
1
DEFAULT_CA
=
$LETSENCRYPT_CA_V
2
DEFAULT_STAGING_CA
=
$LETSENCRYPT_STAGING_CA_V
1
DEFAULT_STAGING_CA
=
$LETSENCRYPT_STAGING_CA_V
2
DEFAULT_USER_AGENT
=
"
$PROJECT_NAME
/
$VER
(
$PROJECT
)"
DEFAULT_USER_AGENT
=
"
$PROJECT_NAME
/
$VER
(
$PROJECT
)"
DEFAULT_ACCOUNT_EMAIL
=
""
DEFAULT_ACCOUNT_EMAIL
=
""
...
@@ -1974,7 +1974,7 @@ _save_conf() {
...
@@ -1974,7 +1974,7 @@ _save_conf() {
_sdkey
=
"
$2
"
_sdkey
=
"
$2
"
_sdvalue
=
"
$3
"
_sdvalue
=
"
$3
"
_b64encode
=
"
$4
"
_b64encode
=
"
$4
"
if
[
"
$_b64encode
"
]
;
then
if
[
"
$_sdvalue
"
]
&&
[
"
$_b64encode
"
]
;
then
_sdvalue
=
"
${
B64CONF_START
}
$(
printf
"%s"
"
${
_sdvalue
}
"
| _base64
)
${
B64CONF_END
}
"
_sdvalue
=
"
${
B64CONF_START
}
$(
printf
"%s"
"
${
_sdvalue
}
"
| _base64
)
${
B64CONF_END
}
"
fi
fi
if
[
"
$_s_c_f
"
]
;
then
if
[
"
$_s_c_f
"
]
;
then
...
@@ -3665,8 +3665,12 @@ issue() {
...
@@ -3665,8 +3665,12 @@ issue() {
_cleardomainconf
"Le_ChallengeAlias"
_cleardomainconf
"Le_ChallengeAlias"
fi
fi
Le_API
=
"
$ACME_DIRECTORY
"
if
[
"
$ACME_DIRECTORY
"
!=
"
$DEFAULT_CA
"
]
;
then
_savedomainconf
"Le_API"
"
$Le_API
"
Le_API
=
"
$ACME_DIRECTORY
"
_savedomainconf
"Le_API"
"
$Le_API
"
else
_cleardomainconf Le_API
fi
if
[
"
$_alt_domains
"
=
"
$NO_VALUE
"
]
;
then
if
[
"
$_alt_domains
"
=
"
$NO_VALUE
"
]
;
then
_alt_domains
=
""
_alt_domains
=
""
...
@@ -4500,6 +4504,16 @@ renew() {
...
@@ -4500,6 +4504,16 @@ renew() {
.
"
$DOMAIN_CONF
"
.
"
$DOMAIN_CONF
"
_debug Le_API
"
$Le_API
"
_debug Le_API
"
$Le_API
"
if
[
"
$Le_API
"
=
"
$LETSENCRYPT_CA_V1
"
]
;
then
_cleardomainconf Le_API
Le_API
=
"
$DEFAULT_CA
"
fi
if
[
"
$Le_API
"
=
"
$LETSENCRYPT_STAGING_CA_V1
"
]
;
then
_cleardomainconf Le_API
Le_API
=
"
$DEFAULT_STAGING_CA
"
fi
if
[
"
$Le_API
"
]
;
then
if
[
"
$Le_API
"
]
;
then
if
[
"
$_OLD_CA_HOST
"
=
"
$Le_API
"
]
;
then
if
[
"
$_OLD_CA_HOST
"
=
"
$Le_API
"
]
;
then
export
Le_API
=
"
$DEFAULT_CA
"
export
Le_API
=
"
$DEFAULT_CA
"
...
...
dnsapi/README.md
View file @
ea86ddc6
...
@@ -1296,7 +1296,21 @@ acme.sh --issue --dns dns_cn -d example.com -d www.example.com
...
@@ -1296,7 +1296,21 @@ acme.sh --issue --dns dns_cn -d example.com -d www.example.com
The `CN_User` and `CN_Password` will be saved in `~/.acme.sh/account.conf` and will be reused when needed.
The `CN_User` and `CN_Password` will be saved in `~/.acme.sh/account.conf` and will be reused when needed.
## 68. Use OpenProvider API
## 68. Use NederHost API
Create an API token in Mijn NederHost.
Set your API key:
```
export NederHost_Key='xxx'
```
To issue a certificate run:
```
acme.sh --issue --dns dns_nederhost -d example.com -d
*
.example.com
```
## 69. Use OpenProvider API
First, you need to enable API access and retrieve your password hash on https://rcp.openprovider.eu/account/dashboard.php
First, you need to enable API access and retrieve your password hash on https://rcp.openprovider.eu/account/dashboard.php
...
...
dnsapi/dns_cn.sh
View file @
ea86ddc6
...
@@ -69,7 +69,7 @@ dns_cn_rm() {
...
@@ -69,7 +69,7 @@ dns_cn_rm() {
curData
=
"{
\"
name
\"
:
\"
$_sub_domain
\"
,
\"
data
\"
:
\"
$txtvalue
\"
}"
curData
=
"{
\"
name
\"
:
\"
$_sub_domain
\"
,
\"
data
\"
:
\"
$txtvalue
\"
}"
curResult
=
"
$(
_post
"
${
curData
}
"
"
${
CN_API
}
/dnszones/
${
_domain
}
/records/delete"
)
"
curResult
=
"
$(
_post
"
${
curData
}
"
"
${
CN_API
}
/dnszones/
${
_domain
}
/records/delete"
)
"
_debug curData is
"
$curData
"
_debug curData is
"
$curData
"
_info
"commiting changes"
_info
"commiting changes"
if
!
_cn_commit
;
then
if
!
_cn_commit
;
then
_err
"commiting changes failed"
_err
"commiting changes failed"
...
@@ -132,7 +132,7 @@ _cn_get_root() {
...
@@ -132,7 +132,7 @@ _cn_get_root() {
#not valid
#not valid
return
1
return
1
fi
fi
_cn_zonelist
=
"
$(
_get
${
CN_API
}
/dnszones/
)
"
_cn_zonelist
=
"
$(
_get
${
CN_API
}
/dnszones/
)
"
_debug _cn_zonelist
"
${
_cn_zonelist
}
"
_debug _cn_zonelist
"
${
_cn_zonelist
}
"
...
...
dnsapi/dns_nederhost.sh
0 → 100755
View file @
ea86ddc6
#!/usr/bin/env sh
#NederHost_Key="sdfgikogfdfghjklkjhgfcdcfghjk"
NederHost_Api
=
"https://api.nederhost.nl/dns/v1"
######## Public functions #####################
#Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_nederhost_add
()
{
fulldomain
=
$1
txtvalue
=
$2
NederHost_Key
=
"
${
NederHost_Key
:-
$(
_readaccountconf_mutable NederHost_Key
)
}
"
if
[
-z
"
$NederHost_Key
"
]
;
then
NederHost_Key
=
""
_err
"You didn't specify a NederHost api key."
_err
"You can get yours from https://www.nederhost.nl/mijn_nederhost"
return
1
fi
#save the api key and email to the account conf file.
_saveaccountconf_mutable NederHost_Key
"
$NederHost_Key
"
_debug
"First detect the root zone"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"invalid domain"
return
1
fi
_debug _sub_domain
"
$_sub_domain
"
_debug _domain
"
$_domain
"
_info
"Adding record"
if
_nederhost_rest PATCH
"zones/
$_domain
/records/
$fulldomain
/TXT"
"[{
\"
content
\"
:
\"
$txtvalue
\"
,
\"
ttl
\"
:60}]"
;
then
if
_contains
"
$response
"
"
$fulldomain
"
;
then
_info
"Added, OK"
return
0
else
_err
"Add txt record error."
return
1
fi
fi
_err
"Add txt record error."
return
1
}
#fulldomain txtvalue
dns_nederhost_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
NederHost_Key
=
"
${
NederHost_Key
:-
$(
_readaccountconf_mutable NederHost_Key
)
}
"
if
[
-z
"
$NederHost_Key
"
]
;
then
NederHost_Key
=
""
_err
"You didn't specify a NederHost api key."
_err
"You can get yours from https://www.nederhost.nl/mijn_nederhost"
return
1
fi
_debug
"First detect the root zone"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"invalid domain"
return
1
fi
_debug _sub_domain
"
$_sub_domain
"
_debug _domain
"
$_domain
"
_debug
"Removing txt record"
_nederhost_rest DELETE
"zones/
${
_domain
}
/records/
$fulldomain
/TXT?content=
$txtvalue
"
}
#################### Private functions below ##################################
#_acme-challenge.www.domain.com
#returns
# _sub_domain=_acme-challenge.www
# _domain=domain.com
_get_root
()
{
domain
=
$1
i
=
2
p
=
1
while
true
;
do
_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
$i
-100
)
_sub_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
1-
$p
)
_debug _domain
"
$_domain
"
if
[
-z
"
$_domain
"
]
;
then
#not valid
return
1
fi
if
_nederhost_rest GET
"zones/
${
_domain
}
"
;
then
if
[
"
${
_code
}
"
=
"204"
]
;
then
return
0
fi
else
return
1
fi
p
=
$i
i
=
$(
_math
"
$i
"
+ 1
)
done
return
1
}
_nederhost_rest
()
{
m
=
$1
ep
=
"
$2
"
data
=
"
$3
"
_debug
"
$ep
"
export
_H1
=
"Authorization: Bearer
$NederHost_Key
"
export
_H2
=
"Content-Type: application/json"
if
[
"
$m
"
!=
"GET"
]
;
then
_debug data
"
$data
"
response
=
"
$(
_post
"
$data
"
"
$NederHost_Api
/
$ep
"
""
"
$m
"
)
"
else
response
=
"
$(
_get
"
$NederHost_Api
/
$ep
"
)
"
fi
_code
=
"
$(
grep
"^HTTP"
"
$HTTP_HEADER
"
| _tail_n 1 |
cut
-d
" "
-f
2 |
tr
-d
"
\\
r
\\
n"
)
"
_debug
"http response code
$_code
"
if
[
"
$?
"
!=
"0"
]
;
then
_err
"error
$ep
"
return
1
fi
_debug2 response
"
$response
"
return
0
}
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