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
21f16b50
Commit
21f16b50
authored
Nov 07, 2016
by
neil
Committed by
GitHub
Nov 07, 2016
Browse files
Merge pull request #368 from justmwa/master
bash support for luadns api
parents
a9b4a2a1
f58e83ee
Changes
3
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
21f16b50
...
@@ -254,6 +254,7 @@ You don't have do anything manually!
...
@@ -254,6 +254,7 @@ You don't have do anything manually!
7.
PowerDNS API
7.
PowerDNS API
8.
lexicon dns api: https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-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.)
(DigitalOcean, DNSimple, DnsMadeEasy, DNSPark, EasyDNS, Namesilo, NS1, PointHQ, Rage4 and Vultr etc.)
9.
LuaDNS.com API
##### More APIs are coming soon...
##### More APIs are coming soon...
...
...
dnsapi/README.md
View file @
21f16b50
...
@@ -136,4 +136,22 @@ For more details, please check our sample script: [dns_myapi.sh](dns_myapi.sh)
...
@@ -136,4 +136,22 @@ For more details, please check our sample script: [dns_myapi.sh](dns_myapi.sh)
https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api
https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api
## Use LuaDNS domain API
Get your API token at https://api.luadns.com/settings
```
export LUA_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export LUA_Email="xxxx@sss.com"
```
To issue a cert:
```
acme.sh --issue --dns dns_lua --dnssleep 3 -d example.com -d www.example.com
```
The
`LUA_Key`
and
`LUA_Email`
will be saved in
`~/.acme.sh/account.conf`
, and will be reused when needed.
dnsapi/dns_lua.sh
0 → 100644
View file @
21f16b50
#!/usr/bin/env sh
# bug reports to dev@1e.ca
#
#LUA_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
#
#LUA_Email="user@luadns.net"
LUA_Api
=
"https://api.luadns.com/v1"
LUA_auth
=
$(
printf
$LUA_Email
:
$LUA_Key
| _base64
)
######## Public functions #####################
#Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_lua_add
()
{
fulldomain
=
$1
txtvalue
=
$2
if
[
-z
"
$LUA_Key
"
]
||
[
-z
"
$LUA_Email
"
]
;
then
_err
"You don't specify luadns api key and email yet."
_err
"Please create you key and try again."
return
1
fi
#save the api key and email to the account conf file.
_saveaccountconf LUA_Key
"
$LUA_Key
"
_saveaccountconf LUA_Email
"
$LUA_Email
"
_debug
"First detect the root zone"
if
!
_get_root
$fulldomain
;
then
_err
"invalid domain"
return
1
fi
_debug _domain_id
"
$_domain_id
"
_debug _sub_domain
"
$_sub_domain
"
_debug _domain
"
$_domain
"
_debug
"Getting txt records"
_LUA_rest GET
"zones/
${
_domain_id
}
/records"
if
!
printf
"
$response
"
|
grep
\"
id
\"
:
>
/dev/null
;
then
_err
"Error"
return
1
fi
count
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
\"
name
\"
:
\"
$fulldomain
\"
|
wc
-l
)
_debug count
"
$count
"
if
[
"
$count
"
=
"0"
]
;
then
_info
"Adding record"
if
_LUA_rest POST
"zones/
$_domain_id
/records"
"{
\"
type
\"
:
\"
TXT
\"
,
\"
name
\"
:
\"
$fulldomain
.
\"
,
\"
content
\"
:
\"
$txtvalue
\"
,
\"
ttl
\"
:120}"
;
then
if
printf
--
"%s"
"
$response
"
|
grep
$fulldomain
>
/dev/null
;
then
_info
"Added"
#todo: check if the record takes effect
return
0
else
_err
"Add txt record error."
return
1
fi
fi
_err
"Add txt record error."
else
_info
"Updating record"
record_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
\"
id
\"
:[^,]
*
,
\"
name
\"
:
\"
$fulldomain
.
\"
,
\"
type
\"
:
\"
TXT
\"
|
cut
-d
:
-f2
|cut
-d
,
-f1
)
_debug
"record_id"
$record_id
_LUA_rest PUT
"zones/
$_domain_id
/records/
$record_id
"
"{
\"
id
\"
:
\"
$record_id
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
name
\"
:
\"
$fulldomain
.
\"
,
\"
content
\"
:
\"
$txtvalue
\"
,
\"
zone_id
\"
:
\"
$_domain_id
\"
,
\"
ttl
\"
:120}"
if
[
"
$?
"
=
"0"
]
;
then
_info
"Updated!"
#todo: check if the record takes effect
return
0
;
fi
_err
"Update error"
return
1
fi
}
#fulldomain
dns_lua_rm
()
{
fulldomain
=
$1
}
#################### Private functions bellow ##################################
#_acme-challenge.www.domain.com
#returns
# _sub_domain=_acme-challenge.www
# _domain=domain.com
# _domain_id=sdjkglgdfewsdfg
_get_root
()
{
domain
=
$1
i
=
2
p
=
1
if
!
_LUA_rest GET
"zones"
;
then
return
1
fi
while
[
'1'
]
;
do
h
=
$(
printf
$domain
|
cut
-d
.
-f
$i
-100
)
if
[
-z
"
$h
"
]
;
then
#not valid
return
1
;
fi
if
printf
$response
|
grep
\"
name
\"
:
\"
$h
\"
>
/dev/null
;
then
_domain_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
\"
id
\"
:[^,]
*
,
\"
name
\"
:
\"
$h
\"
|
cut
-d
:
-f
2 |
cut
-d
,
-f
1
)
if
[
"
$_domain_id
"
]
;
then
_sub_domain
=
$(
printf
$domain
|
cut
-d
.
-f
1-
$p
)
_domain
=
$h
return
0
fi
return
1
fi
p
=
$i
i
=
$(
expr
$i
+ 1
)
done
return
1
}
_LUA_rest
()
{
m
=
$1
ep
=
"
$2
"
data
=
"
$3
"
_debug
$ep
_H1
=
"Accept: application/json"
_H2
=
"Authorization: Basic
$LUA_auth
"
if
[
"
$data
"
]
;
then
_debug data
"
$data
"
response
=
"
$(
_post
"
$data
"
"
$LUA_Api
/
$ep
"
""
$m
)
"
else
response
=
"
$(
_get
"
$LUA_Api
/
$ep
"
)
"
fi
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