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
b887fd15
Unverified
Commit
b887fd15
authored
Apr 18, 2020
by
neil
Committed by
GitHub
Apr 18, 2020
Browse files
Merge pull request #2843 from der-berni/patch-1
Update to work with new one.com procedure
parents
d083674f
da7b1fb0
Changes
1
Hide whitespace changes
Inline
Side-by-side
dnsapi/dns_one.sh
View file @
b887fd15
...
@@ -5,8 +5,11 @@
...
@@ -5,8 +5,11 @@
# Author: github: @diseq
# Author: github: @diseq
# Created: 2019-02-17
# Created: 2019-02-17
# Fixed by: @der-berni
# Fixed by: @der-berni
# Modified: 2019-05-31
# Modified: 2020-04-07
#
#
# Use ONECOM_KeepCnameProxy to keep the CNAME DNS record
# export ONECOM_KeepCnameProxy="1"
#
# export ONECOM_User="username"
# export ONECOM_User="username"
# export ONECOM_Password="password"
# export ONECOM_Password="password"
#
#
...
@@ -30,32 +33,45 @@ dns_one_add() {
...
@@ -30,32 +33,45 @@ dns_one_add() {
return
1
return
1
fi
fi
mysubdomain
=
$_sub_domain
subdomain
=
"
${
_sub_domain
}
"
mydomain
=
$_domain
maindomain
=
${
_domain
}
_debug mysubdomain
"
$mysubdomain
"
_debug mydomain
"
$mydomain
"
# get entries
useProxy
=
0
response
=
"
$(
_get
"https://www.one.com/admin/api/domains/
$mydomain
/dns/custom_records"
)
"
if
[
"
${
_sub_domain
}
"
=
"_acme-challenge"
]
;
then
_debug response
"
$response
"
subdomain
=
"proxy
${
_sub_domain
}
"
useProxy
=
1
fi
# Update the IP address for domain entry
_debug subdomain
"
$subdomain
"
postdata
=
"{
\"
type
\"
:
\"
dns_custom_records
\"
,
\"
attributes
\"
:{
\"
priority
\"
:0,
\"
ttl
\"
:600,
\"
type
\"
:
\"
TXT
\"
,
\"
prefix
\"
:
\"
$mysubdomain
\"
,
\"
content
\"
:
\"
$txtvalue
\"
}}"
_debug maindomain
"
$maindomain
"
_debug postdata
"
$postdata
"
response
=
"
$(
_post
"
$postdata
"
"https://www.one.com/admin/api/domains/
$mydomain
/dns/custom_records"
""
"POST"
"application/json"
)
"
if
[
$useProxy
-eq
1
]
;
then
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
#Check if the CNAME exists
_debug response
"
$response
"
_dns_one_getrecord
"CNAME"
"
$_sub_domain
"
"
$subdomain
.
$maindomain
"
if
[
-z
"
$id
"
]
;
then
_info
"
$(
__red
"Add CNAME Proxy record: '
$(
__green
"
\"
$_sub_domain
\"
=>
\"
$subdomain
.
$maindomain
\"
"
)
'"
)
"
_dns_one_addrecord
"CNAME"
"
$_sub_domain
"
"
$subdomain
.
$maindomain
"
id
=
$(
echo
"
$response
"
|
sed
-n
"s/{
\"
result
\"
:{
\"
data
\"
:{
\"
type
\"
:
\"
dns_custom_records
\"
,
\"
id
\"
:
\"\(
[^
\"
]*
\)\"
,
\"
attributes
\"
:{
\"
prefix
\"
:
\"
$mysubdomain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"
$txtvalue
\"
,
\"
priority
\"
:0,
\"
ttl
\"
:600}}},
\"
metadata
\"
:null}/
\1
/p"
)
_info
"Not valid yet, let's wait 1 hour to take effect."
_sleep 3600
fi
fi
#Check if the TXT exists
_dns_one_getrecord
"TXT"
"
$subdomain
"
"
$txtvalue
"
if
[
-n
"
$id
"
]
;
then
_info
"
$(
__green
"Txt record with the same value found. Skip adding."
)
"
return
0
fi
_dns_one_addrecord
"TXT"
"
$subdomain
"
"
$txtvalue
"
if
[
-z
"
$id
"
]
;
then
if
[
-z
"
$id
"
]
;
then
_err
"Add
txt
record error."
_err
"Add
TXT
record error."
return
1
return
1
else
else
_info
"Added, OK (
$id
)"
_info
"
$(
__green
"Added, OK (
$id
)"
)
"
return
0
return
0
fi
fi
}
}
dns_one_rm
()
{
dns_one_rm
()
{
...
@@ -73,36 +89,45 @@ dns_one_rm() {
...
@@ -73,36 +89,45 @@ dns_one_rm() {
return
1
return
1
fi
fi
mysubdomain
=
$_sub_domain
subdomain
=
"
${
_sub_domain
}
"
mydomain
=
$_domain
maindomain
=
${
_domain
}
_debug mysubdomain
"
$mysubdomain
"
_debug mydomain
"
$mydomain
"
# get entries
useProxy
=
0
response
=
"
$(
_get
"https://www.one.com/admin/api/domains/
$mydomain
/dns/custom_records"
)
"
if
[
"
${
_sub_domain
}
"
=
"_acme-challenge"
]
;
then
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
subdomain
=
"proxy
${
_sub_domain
}
"
_debug response
"
$response
"
useProxy
=
1
fi
id
=
$(
printf
--
"%s"
"
$response
"
|
sed
-n
"s/.*{
\"
type
\"
:
\"
dns_custom_records
\"
,
\"
id
\"
:
\"\(
[^
\"
]*
\)\"
,
\"
attributes
\"
:{
\"
prefix
\"
:
\"
$mysubdomain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"
$txtvalue
\"
,
\"
priority
\"
:0,
\"
ttl
\"
:600}.*/
\1
/p"
)
_debug subdomain
"
$subdomain
"
_debug maindomain
"
$maindomain
"
if
[
$useProxy
-eq
1
]
;
then
if
[
"
$ONECOM_KeepCnameProxy
"
=
"1"
]
;
then
_info
"
$(
__red
"Keeping CNAME Proxy record: '
$(
__green
"
\"
$_sub_domain
\"
=>
\"
$subdomain
.
$maindomain
\"
"
)
'"
)
"
else
#Check if the CNAME exists
_dns_one_getrecord
"CNAME"
"
$_sub_domain
"
"
$subdomain
.
$maindomain
"
if
[
-n
"
$id
"
]
;
then
_info
"
$(
__red
"Removing CNAME Proxy record: '
$(
__green
"
\"
$_sub_domain
\"
=>
\"
$subdomain
.
$maindomain
\"
"
)
'"
)
"
_dns_one_delrecord
"
$id
"
fi
fi
fi
#Check if the TXT exists
_dns_one_getrecord
"TXT"
"
$subdomain
"
"
$txtvalue
"
if
[
-z
"
$id
"
]
;
then
if
[
-z
"
$id
"
]
;
then
_err
"Txt record not found."
_err
"Txt record not found."
return
1
return
1
fi
fi
# delete entry
# delete entry
response
=
"
$(
_post
"
$postdata
"
"https://www.one.com/admin/api/domains/
$mydomain
/dns/custom_records/
$id
"
""
"DELETE"
"application/json"
)
"
if
_dns_one_delrecord
"
$id
"
;
then
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
_info
"
$(
__green Removed, OK
)
"
_debug response
"
$response
"
if
[
"
$response
"
=
'{"result":null,"metadata":null}'
]
;
then
_info
"Removed, OK"
return
0
return
0
else
else
_err
"Removing txt record error."
_err
"Removing txt record error."
return
1
return
1
fi
fi
}
}
#_acme-challenge.www.domain.com
#_acme-challenge.www.domain.com
...
@@ -138,6 +163,8 @@ _get_root() {
...
@@ -138,6 +163,8 @@ _get_root() {
_dns_one_login
()
{
_dns_one_login
()
{
# get credentials
# get credentials
ONECOM_KeepCnameProxy
=
"
${
ONECOM_KeepCnameProxy
:-
$(
_readaccountconf_mutable ONECOM_KeepCnameProxy
)
}
"
ONECOM_KeepCnameProxy
=
"
${
ONECOM_KeepCnameProxy
:-
0
}
"
ONECOM_User
=
"
${
ONECOM_User
:-
$(
_readaccountconf_mutable ONECOM_User
)
}
"
ONECOM_User
=
"
${
ONECOM_User
:-
$(
_readaccountconf_mutable ONECOM_User
)
}
"
ONECOM_Password
=
"
${
ONECOM_Password
:-
$(
_readaccountconf_mutable ONECOM_Password
)
}
"
ONECOM_Password
=
"
${
ONECOM_Password
:-
$(
_readaccountconf_mutable ONECOM_Password
)
}
"
if
[
-z
"
$ONECOM_User
"
]
||
[
-z
"
$ONECOM_Password
"
]
;
then
if
[
-z
"
$ONECOM_User
"
]
||
[
-z
"
$ONECOM_Password
"
]
;
then
...
@@ -149,6 +176,7 @@ _dns_one_login() {
...
@@ -149,6 +176,7 @@ _dns_one_login() {
fi
fi
#save the api key and email to the account conf file.
#save the api key and email to the account conf file.
_saveaccountconf_mutable ONECOM_KeepCnameProxy
"
$ONECOM_KeepCnameProxy
"
_saveaccountconf_mutable ONECOM_User
"
$ONECOM_User
"
_saveaccountconf_mutable ONECOM_User
"
$ONECOM_User
"
_saveaccountconf_mutable ONECOM_Password
"
$ONECOM_Password
"
_saveaccountconf_mutable ONECOM_Password
"
$ONECOM_Password
"
...
@@ -177,3 +205,75 @@ _dns_one_login() {
...
@@ -177,3 +205,75 @@ _dns_one_login() {
return
0
return
0
}
}
_dns_one_getrecord
()
{
type
=
"
$1
"
name
=
"
$2
"
value
=
"
$3
"
if
[
-z
"
$type
"
]
;
then
type
=
"TXT"
fi
if
[
-z
"
$name
"
]
;
then
_err
"Record name is empty."
return
1
fi
response
=
"
$(
_get
"https://www.one.com/admin/api/domains/
$maindomain
/dns/custom_records"
)
"
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
_debug response
"
$response
"
if
[
-z
"
${
value
}
"
]
;
then
id
=
$(
printf
--
"%s"
"
$response
"
|
sed
-n
"s/.*{
\"
type
\"
:
\"
dns_custom_records
\"
,
\"
id
\"
:
\"\(
[^
\"
]*
\)\"
,
\"
attributes
\"
:{
\"
prefix
\"
:
\"
${
name
}
\"
,
\"
type
\"
:
\"
${
type
}
\"
,
\"
content
\"
:
\"
[^
\"
]*
\"
,
\"
priority
\"
:0,
\"
ttl
\"
:600}.*/
\1
/p"
)
response
=
$(
printf
--
"%s"
"
$response
"
|
sed
-n
"s/.*{
\"
type
\"
:
\"
dns_custom_records
\"
,
\"
id
\"
:
\"
[^
\"
]*
\"
,
\"
attributes
\"
:{
\"
prefix
\"
:
\"
${
name
}
\"
,
\"
type
\"
:
\"
${
type
}
\"
,
\"
content
\"
:
\"\(
[^
\"
]*
\)\"
,
\"
priority
\"
:0,
\"
ttl
\"
:600}.*/
\1
/p"
)
else
id
=
$(
printf
--
"%s"
"
$response
"
|
sed
-n
"s/.*{
\"
type
\"
:
\"
dns_custom_records
\"
,
\"
id
\"
:
\"\(
[^
\"
]*
\)\"
,
\"
attributes
\"
:{
\"
prefix
\"
:
\"
${
name
}
\"
,
\"
type
\"
:
\"
${
type
}
\"
,
\"
content
\"
:
\"
${
value
}
\"
,
\"
priority
\"
:0,
\"
ttl
\"
:600}.*/
\1
/p"
)
fi
if
[
-z
"
$id
"
]
;
then
return
1
fi
return
0
}
_dns_one_addrecord
()
{
type
=
"
$1
"
name
=
"
$2
"
value
=
"
$3
"
if
[
-z
"
$type
"
]
;
then
type
=
"TXT"
fi
if
[
-z
"
$name
"
]
;
then
_err
"Record name is empty."
return
1
fi
postdata
=
"{
\"
type
\"
:
\"
dns_custom_records
\"
,
\"
attributes
\"
:{
\"
priority
\"
:0,
\"
ttl
\"
:600,
\"
type
\"
:
\"
${
type
}
\"
,
\"
prefix
\"
:
\"
${
name
}
\"
,
\"
content
\"
:
\"
${
value
}
\"
}}"
_debug postdata
"
$postdata
"
response
=
"
$(
_post
"
$postdata
"
"https://www.one.com/admin/api/domains/
$maindomain
/dns/custom_records"
""
"POST"
"application/json"
)
"
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
_debug response
"
$response
"
id
=
$(
echo
"
$response
"
|
sed
-n
"s/{
\"
result
\"
:{
\"
data
\"
:{
\"
type
\"
:
\"
dns_custom_records
\"
,
\"
id
\"
:
\"\(
[^
\"
]*
\)\"
,
\"
attributes
\"
:{
\"
prefix
\"
:
\"
$subdomain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"
$txtvalue
\"
,
\"
priority
\"
:0,
\"
ttl
\"
:600}}},
\"
metadata
\"
:null}/
\1
/p"
)
if
[
-z
"
$id
"
]
;
then
return
1
else
return
0
fi
}
_dns_one_delrecord
()
{
id
=
"
$1
"
if
[
-z
"
$id
"
]
;
then
return
1
fi
response
=
"
$(
_post
""
"https://www.one.com/admin/api/domains/
$maindomain
/dns/custom_records/
$id
"
""
"DELETE"
"application/json"
)
"
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
_debug response
"
$response
"
if
[
"
$response
"
=
'{"result":null,"metadata":null}'
]
;
then
return
0
else
return
1
fi
}
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