mirror of
https://github.com/acmesh-official/acme.sh
synced 2025-11-23 17:26:03 +08:00
Compare commits
68 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9febbdd87 | ||
|
|
caa2e45a8c | ||
|
|
d9130c9852 | ||
|
|
661f05837c | ||
|
|
b15cfc2c5a | ||
|
|
c575c9af3d | ||
|
|
81f27e9077 | ||
|
|
f78babfaa0 | ||
|
|
66990cf872 | ||
|
|
095fe2ed1b | ||
|
|
483ebc8141 | ||
|
|
b9311282eb | ||
|
|
d6f0c2b52b | ||
|
|
bb25febd70 | ||
|
|
19ab2a29ce | ||
|
|
24b4fe9867 | ||
|
|
aa7b82de04 | ||
|
|
3d826bed3a | ||
|
|
d2ae7e78ef | ||
|
|
656bd330f8 | ||
|
|
c2c8f32010 | ||
|
|
9f43c270e6 | ||
|
|
50827188ff | ||
|
|
6ae0f7f5c6 | ||
|
|
c583d6bb49 | ||
|
|
fdcb6b721c | ||
|
|
ef858ef062 | ||
|
|
fe04faf675 | ||
|
|
ad752b317d | ||
|
|
59649e9b1e | ||
|
|
6bf281f905 | ||
|
|
4dfc8b262c | ||
|
|
f08ffe9feb | ||
|
|
65de3110a9 | ||
|
|
f6dcd98995 | ||
|
|
950172dc01 | ||
|
|
5c48e139d4 | ||
|
|
150e9c8a48 | ||
|
|
b19ba13aff | ||
|
|
30bfc2cea7 | ||
|
|
30c2d84c6d | ||
|
|
fbd2038fa7 | ||
|
|
e4b8d9b9d6 | ||
|
|
6b50003697 | ||
|
|
a73c5b3355 | ||
|
|
eb59817e81 | ||
|
|
d404e92d16 | ||
|
|
86c017ec9d | ||
|
|
0407c4e0f7 | ||
|
|
0ba95a3dd4 | ||
|
|
0463b5d6cd | ||
|
|
3f4513b3a9 | ||
|
|
fb2029e717 | ||
|
|
48f02fb61b | ||
|
|
0c00e870c6 | ||
|
|
7da50703fb | ||
|
|
cfdaff5a46 | ||
|
|
18e46962c2 | ||
|
|
319e0ae3cf | ||
|
|
e69a7c38d9 | ||
|
|
ecd685755b | ||
|
|
276b51d927 | ||
|
|
251d1c5c9f | ||
|
|
028e17475f | ||
|
|
1ab630435d | ||
|
|
89002ed298 | ||
|
|
d0871bdae3 | ||
|
|
5ea6e9c9c0 |
68
README.md
68
README.md
@@ -13,6 +13,8 @@ It's probably the `easiest&smallest&smartest` shell script to automatically issu
|
||||
|
||||
Wiki: https://github.com/Neilpang/acme.sh/wiki
|
||||
|
||||
# [中文说明](https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E)
|
||||
|
||||
#Tested OS
|
||||
| NO | Status| Platform|
|
||||
|----|-------|---------|
|
||||
@@ -110,35 +112,35 @@ root@v1:~# acme.sh -h
|
||||
**Example 1:** Single domain.
|
||||
|
||||
```bash
|
||||
acme.sh --issue -d aa.com -w /home/wwwroot/aa.com
|
||||
acme.sh --issue -d example.com -w /home/wwwroot/example.com
|
||||
```
|
||||
|
||||
**Example 2:** Multiple domains in the same cert.
|
||||
|
||||
```bash
|
||||
acme.sh --issue -d aa.com -d www.aa.com -d cp.aa.com -w /home/wwwroot/aa.com
|
||||
acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
|
||||
```
|
||||
|
||||
The parameter `/home/wwwroot/aa.com` is the web root folder. You **MUST** have `write access` to this folder.
|
||||
The parameter `/home/wwwroot/example.com` is the web root folder. You **MUST** have `write access` to this folder.
|
||||
|
||||
Second argument **"aa.com"** is the main domain you want to issue cert for.
|
||||
Second argument **"example.com"** is the main domain you want to issue cert for.
|
||||
You must have at least a domain there.
|
||||
|
||||
You must point and bind all the domains to the same webroot dir: `/home/wwwroot/aa.com`.
|
||||
You must point and bind all the domains to the same webroot dir: `/home/wwwroot/example.com`.
|
||||
|
||||
Generate/issued certs will be placed in `~/.acme.sh/aa.com/`
|
||||
Generate/issued certs will be placed in `~/.acme.sh/example.com/`
|
||||
|
||||
The issued cert will be renewed every 80 days automatically.
|
||||
The issued cert will be renewed every **60** days automatically.
|
||||
|
||||
More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
|
||||
|
||||
|
||||
# 3. Install issued cert to apache/nginx etc.
|
||||
# 3. Install the issued cert to apache/nginx etc.
|
||||
|
||||
After you issue a cert, you probably want to install the cert with your nginx/apache or other servers you may be using.
|
||||
After you issue a cert, you probably want to install/copy the cert to your nginx/apache or other servers you may be using.
|
||||
|
||||
```bash
|
||||
acme.sh --installcert -d aa.com \
|
||||
acme.sh --installcert -d example.com \
|
||||
--certpath /path/to/certfile/in/apache/nginx \
|
||||
--keypath /path/to/keyfile/in/apache/nginx \
|
||||
--capath /path/to/ca/certfile/apache/nginx \
|
||||
@@ -148,9 +150,9 @@ acme.sh --installcert -d aa.com \
|
||||
|
||||
Only the domain is required, all the other parameters are optional.
|
||||
|
||||
Install the issued cert/key to the production apache or nginx path.
|
||||
Install/copy the issued cert/key to the production apache or nginx path.
|
||||
|
||||
The cert will be `renewed every 80 days by default` (which is configurable). Once the cert is renewed, the apache/nginx will be automatically reloaded by the command: `service apache2 reload` or `service nginx reload`.
|
||||
The cert will be `renewed every **60** days by default` (which is configurable). Once the cert is renewed, the apache/nginx will be automatically reloaded by the command: `service apache2 reload` or `service nginx reload`.
|
||||
|
||||
# 4. Use Standalone server to issue cert
|
||||
|
||||
@@ -159,7 +161,7 @@ The cert will be `renewed every 80 days by default` (which is configurable). Onc
|
||||
The tcp `80` port **MUST** be free to listen, otherwise you will be prompted to free the `80` port and try again.
|
||||
|
||||
```bash
|
||||
acme.sh --issue --standalone -d aa.com -d www.aa.com -d cp.aa.com
|
||||
acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com
|
||||
```
|
||||
|
||||
More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
|
||||
@@ -173,7 +175,7 @@ acme.sh supports `tls-sni-01` validation.
|
||||
The tcp `443` port **MUST** be free to listen, otherwise you will be prompted to free the `443` port and try again.
|
||||
|
||||
```bash
|
||||
acme.sh --issue --tls -d aa.com -d www.aa.com -d cp.aa.com
|
||||
acme.sh --issue --tls -d example.com -d www.example.com -d cp.example.com
|
||||
```
|
||||
|
||||
More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
|
||||
@@ -189,7 +191,7 @@ Particularly, if you are running an apache server, you should use apache mode in
|
||||
Just set string "apache" as the second argument, it will force use of apache plugin automatically.
|
||||
|
||||
```
|
||||
acme.sh --issue --apache -d aa.com -d www.aa.com -d user.aa.com
|
||||
acme.sh --issue --apache -d example.com -d www.example.com -d user.example.com
|
||||
```
|
||||
|
||||
More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
|
||||
@@ -199,18 +201,18 @@ More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
|
||||
Support the `dns-01` challenge.
|
||||
|
||||
```bash
|
||||
acme.sh --issue --dns -d aa.com -d www.aa.com -d user.aa.com
|
||||
acme.sh --issue --dns -d example.com -d www.example.com -d user.example.com
|
||||
```
|
||||
|
||||
You should get the output like below:
|
||||
|
||||
```
|
||||
Add the following txt record:
|
||||
Domain:_acme-challenge.aa.com
|
||||
Domain:_acme-challenge.example.com
|
||||
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
|
||||
|
||||
Add the following txt record:
|
||||
Domain:_acme-challenge.www.aa.com
|
||||
Domain:_acme-challenge.www.example.com
|
||||
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
Please add those txt records to the domains. Waiting for the dns to take effect.
|
||||
@@ -220,7 +222,7 @@ Please add those txt records to the domains. Waiting for the dns to take effect.
|
||||
Then just rerun with `renew` argument:
|
||||
|
||||
```bash
|
||||
acme.sh --renew -d aa.com
|
||||
acme.sh --renew -d example.com
|
||||
```
|
||||
|
||||
Ok, it's finished.
|
||||
@@ -239,7 +241,8 @@ You don't have do anything manually!
|
||||
4. Godaddy.com API
|
||||
5. OVH, kimsufi, soyoustart and runabove API
|
||||
6. AWS Route 53, see: https://github.com/Neilpang/acme.sh/issues/65
|
||||
7. lexicon dns api: https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api
|
||||
7. PowerDNS API
|
||||
8. lexicon dns api: https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api
|
||||
(DigitalOcean, DNSimple, DnsMadeEasy, DNSPark, EasyDNS, Namesilo, NS1, PointHQ, Rage4 and Vultr etc.)
|
||||
|
||||
##### More APIs are coming soon...
|
||||
@@ -261,13 +264,13 @@ For example:
|
||||
### Single domain ECC cerfiticate:
|
||||
|
||||
```bash
|
||||
acme.sh --issue -w /home/wwwroot/aa.com -d aa.com --keylength ec-256
|
||||
acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
|
||||
```
|
||||
|
||||
SAN multi domain ECC certificate:
|
||||
|
||||
```bash
|
||||
acme.sh --issue -w /home/wwwroot/aa.com -d aa.com -d www.aa.com --keylength ec-256
|
||||
acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
|
||||
```
|
||||
|
||||
Please look at the last parameter above.
|
||||
@@ -281,17 +284,17 @@ Valid values are:
|
||||
|
||||
# 10. How to renew the cert
|
||||
|
||||
No, you don't need to renew the certs manually. All the certs will be renewed automatically every 80 days.
|
||||
No, you don't need to renew the certs manually. All the certs will be renewed automatically every **60** days.
|
||||
|
||||
However, you can also force to renew any cert:
|
||||
|
||||
```
|
||||
acme.sh --renew -d aa.com --force
|
||||
acme.sh --renew -d example.com --force
|
||||
```
|
||||
|
||||
or, for ECC cert:
|
||||
```
|
||||
acme.sh --renew -d aa.com --force --ecc
|
||||
acme.sh --renew -d example.com --force --ecc
|
||||
```
|
||||
|
||||
# 11. How to upgrade `acme.sh`
|
||||
@@ -302,7 +305,18 @@ You can update acme.sh to the latest code:
|
||||
acme.sh --upgrade
|
||||
```
|
||||
|
||||
# 12. Issue a cert from existing CSR
|
||||
You can enable auto upgrade:
|
||||
```
|
||||
acme.sh --upgrade --auto-upgrade
|
||||
```
|
||||
Then **acme.sh** will keep up to date automatically.
|
||||
|
||||
Disable auto upgrade:
|
||||
```
|
||||
acme.sh --upgrade --auto-upgrade 0
|
||||
```
|
||||
|
||||
# 12. Issue a cert from an existing CSR
|
||||
|
||||
https://github.com/Neilpang/acme.sh/wiki/Issue-a-cert-from-existing-CSR
|
||||
|
||||
@@ -318,7 +332,7 @@ TODO:
|
||||
2. ACME protocol: https://github.com/ietf-wg-acme/acme
|
||||
3. Certbot: https://github.com/certbot/certbot
|
||||
|
||||
# License & Other
|
||||
# License & Others
|
||||
|
||||
License is GPLv3
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ export CF_Email="xxxx@sss.com"
|
||||
|
||||
Ok, let's issue cert now:
|
||||
```
|
||||
acme.sh --issue --dns dns_cf -d aa.com -d www.aa.com
|
||||
acme.sh --issue --dns dns_cf -d example.com -d www.example.com
|
||||
```
|
||||
|
||||
The `CF_Key` and `CF_Email` will be saved in `~/.acme.sh/account.conf`, when next time you use cloudflare api, it will reuse this key.
|
||||
@@ -37,7 +37,7 @@ export DP_Key="sADDsdasdgdsf"
|
||||
|
||||
Ok, let's issue cert now:
|
||||
```
|
||||
acme.sh --issue --dns dns_dp -d aa.com -d www.aa.com
|
||||
acme.sh --issue --dns dns_dp -d example.com -d www.example.com
|
||||
```
|
||||
|
||||
The `DP_Id` and `DP_Key` will be saved in `~/.acme.sh/account.conf`, when next time you use dnspod.cn api, it will reuse this key.
|
||||
@@ -58,7 +58,7 @@ export CX_Secret="sADDsdasdgdsf"
|
||||
|
||||
Ok, let's issue cert now:
|
||||
```
|
||||
acme.sh --issue --dns dns_cx -d aa.com -d www.aa.com
|
||||
acme.sh --issue --dns dns_cx -d example.com -d www.example.com
|
||||
```
|
||||
|
||||
The `CX_Key` and `CX_Secret` will be saved in `~/.acme.sh/account.conf`, when next time you use Cloudxns.com api, it will reuse this key.
|
||||
@@ -66,7 +66,7 @@ The `CX_Key` and `CX_Secret` will be saved in `~/.acme.sh/account.conf`, when n
|
||||
|
||||
## Use Godaddy.com domain api to automatically issue cert
|
||||
|
||||
We support Godaddy integeration.
|
||||
We support Godaddy integration.
|
||||
|
||||
First you need to login to your Godaddy account to get your api key and api secret.
|
||||
|
||||
@@ -84,11 +84,34 @@ export GD_Secret="asdfsdafdsfdsfdsfdsfdsafd"
|
||||
|
||||
Ok, let's issue cert now:
|
||||
```
|
||||
acme.sh --issue --dns dns_gd -d aa.com -d www.aa.com
|
||||
acme.sh --issue --dns dns_gd -d example.com -d www.example.com
|
||||
```
|
||||
|
||||
The `GD_Key` and `GD_Secret` will be saved in `~/.acme.sh/account.conf`, when next time you use cloudflare api, it will reuse this key.
|
||||
|
||||
## Use PowerDNS embedded api to automatically issue cert
|
||||
|
||||
We support PowerDNS embedded API integration.
|
||||
|
||||
First you need to enable api and set your api-token in PowerDNS configuration.
|
||||
|
||||
https://doc.powerdns.com/md/httpapi/README/
|
||||
|
||||
```
|
||||
export PDNS_Url="http://ns.example.com:8081"
|
||||
export PDNS_ServerId="localhost"
|
||||
export PDNS_Token="0123456789ABCDEF"
|
||||
export PDNS_Ttl=60
|
||||
|
||||
```
|
||||
|
||||
Ok, let's issue cert now:
|
||||
```
|
||||
acme.sh --issue --dns dns_pdns -d example.com -d www.example.com
|
||||
```
|
||||
|
||||
The `PDNS_Url`, `PDNS_ServerId`, `PDNS_Token` and `PDNS_Ttl` will be saved in `~/.acme.sh/account.conf`.
|
||||
|
||||
## Use OVH/kimsufi/soyoustart/runabove API
|
||||
|
||||
https://github.com/Neilpang/acme.sh/wiki/How-to-use-OVH-domain-api
|
||||
@@ -104,13 +127,11 @@ Let's assume you want to name it 'myapi',
|
||||
3. Then you can use your api to issue cert like:
|
||||
|
||||
```
|
||||
acme.sh --issue --dns dns_myapi -d aa.com -d www.aa.com
|
||||
acme.sh --issue --dns dns_myapi -d example.com -d www.example.com
|
||||
```
|
||||
|
||||
For more details, please check our sample script: [dns_myapi.sh](dns_myapi.sh)
|
||||
|
||||
|
||||
|
||||
# Use lexicon dns api
|
||||
|
||||
https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api
|
||||
|
||||
@@ -48,7 +48,7 @@ dns_cf_add(){
|
||||
if [ "$count" = "0" ] ; then
|
||||
_info "Adding record"
|
||||
if _cf_rest POST "zones/$_domain_id/dns_records" "{\"type\":\"TXT\",\"name\":\"$fulldomain\",\"content\":\"$txtvalue\",\"ttl\":120}"; then
|
||||
if printf $response | grep $fulldomain > /dev/null ; then
|
||||
if printf -- "%s" "$response" | grep $fulldomain > /dev/null ; then
|
||||
_info "Added, sleeping 10 seconds"
|
||||
sleep 10
|
||||
#todo: check if the record takes effect
|
||||
@@ -61,7 +61,7 @@ dns_cf_add(){
|
||||
_err "Add txt record error."
|
||||
else
|
||||
_info "Updating record"
|
||||
record_id=$(printf "%s\n" "$response" | _egrep_o \"id\":\"[^\"]*\" | cut -d : -f 2 | tr -d \"| head -1)
|
||||
record_id=$(printf "%s\n" "$response" | _egrep_o \"id\":\"[^\"]*\" | cut -d : -f 2 | tr -d \"| head -n 1)
|
||||
_debug "record_id" $record_id
|
||||
|
||||
_cf_rest PUT "zones/$_domain_id/dns_records/$record_id" "{\"id\":\"$record_id\",\"type\":\"TXT\",\"name\":\"$fulldomain\",\"content\":\"$txtvalue\",\"zone_id\":\"$_domain_id\",\"zone_name\":\"$_domain\"}"
|
||||
@@ -103,7 +103,7 @@ _get_root() {
|
||||
fi
|
||||
|
||||
if printf $response | grep \"name\":\"$h\" >/dev/null ; then
|
||||
_domain_id=$(printf "%s\n" "$response" | _egrep_o \"id\":\"[^\"]*\" | head -1 | cut -d : -f 2 | tr -d \")
|
||||
_domain_id=$(printf "%s\n" "$response" | _egrep_o \"id\":\"[^\"]*\" | head -n 1 | cut -d : -f 2 | tr -d \")
|
||||
if [ "$_domain_id" ] ; then
|
||||
_sub_domain=$(printf $domain | cut -d . -f 1-$p)
|
||||
_domain=$h
|
||||
|
||||
@@ -69,7 +69,7 @@ existing_records() {
|
||||
return 1
|
||||
fi
|
||||
count=0
|
||||
seg=$(printf "%s\n" "$response" | _egrep_o "{[^{]*host\":\"$_sub_domain\"[^}]*}")
|
||||
seg=$(printf "%s\n" "$response" | _egrep_o "{[^\{]*host\":\"$_sub_domain\"[^\}]*\}")
|
||||
_debug seg "$seg"
|
||||
if [ -z "$seg" ] ; then
|
||||
return 0
|
||||
@@ -145,7 +145,7 @@ _get_root() {
|
||||
fi
|
||||
|
||||
if printf "$response" | grep "$h." >/dev/null ; then
|
||||
seg=$(printf "%s" "$response" | _egrep_o "{[^{]*\"$h\.\"[^}]*\}" )
|
||||
seg=$(printf "%s" "$response" | _egrep_o "\{[^\{]*\"$h\.\"[^\}]*\}" )
|
||||
_debug seg "$seg"
|
||||
_domain_id=$(printf "%s" "$seg" | _egrep_o \"id\":\"[^\"]*\" | cut -d : -f 2 | tr -d \")
|
||||
_debug _domain_id "$_domain_id"
|
||||
|
||||
0
dnsapi/dns_ovh.sh
Normal file → Executable file
0
dnsapi/dns_ovh.sh
Normal file → Executable file
133
dnsapi/dns_pdns.sh
Executable file
133
dnsapi/dns_pdns.sh
Executable file
@@ -0,0 +1,133 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
#PowerDNS Emdedded API
|
||||
#https://doc.powerdns.com/md/httpapi/api_spec/
|
||||
#
|
||||
#PDNS_Url="http://ns.example.com:8081"
|
||||
#PDNS_ServerId="localhost"
|
||||
#PDNS_Token="0123456789ABCDEF"
|
||||
#PDNS_Ttl=60
|
||||
|
||||
DEFAULT_PDNS_TTL=60
|
||||
|
||||
######## Public functions #####################
|
||||
#Usage: add _acme-challenge.www.domain.com "123456789ABCDEF0000000000000000000000000000000000000"
|
||||
dns_pdns_add() {
|
||||
fulldomain=$1
|
||||
txtvalue=$2
|
||||
|
||||
if [ -z "$PDNS_Url" ] ; then
|
||||
_err "You don't specify PowerDNS address."
|
||||
_err "Please set PDNS_Url and try again."
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -z "$PDNS_ServerId" ] ; then
|
||||
_err "You don't specify PowerDNS server id."
|
||||
_err "Please set you PDNS_ServerId and try again."
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -z "$PDNS_Token" ] ; then
|
||||
_err "You don't specify PowerDNS token."
|
||||
_err "Please create you PDNS_Token and try again."
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -z "$PDNS_Ttl" ] ; then
|
||||
PDNS_Ttl=$DEFAULT_PDNS_TTL
|
||||
fi
|
||||
|
||||
#save the api addr and key to the account conf file.
|
||||
_saveaccountconf PDNS_Url "$PDNS_Url"
|
||||
_saveaccountconf PDNS_ServerId "$PDNS_ServerId"
|
||||
_saveaccountconf PDNS_Token "$PDNS_Token"
|
||||
|
||||
if [ "$PDNS_Ttl" != "$DEFAULT_PDNS_TTL" ] ; then
|
||||
_saveaccountconf PDNS_Ttl "$PDNS_Ttl"
|
||||
fi
|
||||
|
||||
_debug "First detect the root zone"
|
||||
if ! _get_root $fulldomain ; then
|
||||
_err "invalid domain"
|
||||
return 1
|
||||
fi
|
||||
_debug _domain "$_domain"
|
||||
|
||||
if ! set_record "$_domain" "$fulldomain" "$txtvalue" ; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
set_record() {
|
||||
_info "Adding record"
|
||||
root=$1
|
||||
full=$2
|
||||
txtvalue=$3
|
||||
|
||||
if ! _pdns_rest "PATCH" "/api/v1/servers/$PDNS_ServerId/zones/$root." "{\"rrsets\": [{\"name\": \"$full.\", \"changetype\": \"REPLACE\", \"type\": \"TXT\", \"ttl\": $PDNS_Ttl, \"records\": [{\"name\": \"$full.\", \"type\": \"TXT\", \"content\": \"\\\"$txtvalue\\\"\", \"disabled\": false, \"ttl\": $PDNS_Ttl}]}]}" ; then
|
||||
_err "Set txt record error."
|
||||
return 1
|
||||
fi
|
||||
if ! _pdns_rest "PUT" "/api/v1/servers/$PDNS_ServerId/zones/$root./notify" ; then
|
||||
_err "Notify servers error."
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
#################### Private functions bellow ##################################
|
||||
#_acme-challenge.www.domain.com
|
||||
#returns
|
||||
# _domain=domain.com
|
||||
_get_root() {
|
||||
domain=$1
|
||||
i=1
|
||||
p=1
|
||||
|
||||
if _pdns_rest "GET" "/api/v1/servers/$PDNS_ServerId/zones" ; then
|
||||
_zones_response=$response
|
||||
fi
|
||||
|
||||
while [ '1' ] ; do
|
||||
h=$(printf $domain | cut -d . -f $i-100)
|
||||
if [ -z "$h" ] ; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if printf "$_zones_response" | grep "\"name\": \"$h.\"" >/dev/null ; then
|
||||
_domain=$h
|
||||
return 0
|
||||
fi
|
||||
|
||||
p=$i
|
||||
i=$(expr $i + 1)
|
||||
done
|
||||
_debug "$domain not found"
|
||||
return 1
|
||||
}
|
||||
|
||||
_pdns_rest() {
|
||||
method=$1
|
||||
ep=$2
|
||||
data=$3
|
||||
|
||||
_H1="X-API-Key: $PDNS_Token"
|
||||
|
||||
if [ ! "$method" = "GET" ] ; then
|
||||
_debug data "$data"
|
||||
response="$(_post "$data" "$PDNS_Url$ep" "" "$method")"
|
||||
else
|
||||
response="$(_get "$PDNS_Url$ep")"
|
||||
fi
|
||||
|
||||
if [ "$?" != "0" ] ; then
|
||||
_err "error $ep"
|
||||
return 1
|
||||
fi
|
||||
_debug2 response "$response"
|
||||
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user