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
fd56fe6e
Unverified
Commit
fd56fe6e
authored
Mar 06, 2018
by
neil
Committed by
GitHub
Mar 06, 2018
Browse files
Merge pull request #1318 from raidenii/master
New DNS plugin for name.com for new API.
parents
92dfa8be
3052ba43
Changes
1
Show whitespace changes
Inline
Side-by-side
dnsapi/dns_namecom.sh
View file @
fd56fe6e
#!/usr/bin/env sh
#Author: Raid
n
eII
#Author: Raide
n
II
#Created 06/28/2017
#Updated 03/01/2018, rewrote to support name.com API v4
#Utilize name.com API to finish dns-01 verifications.
######## Public functions #####################
Namecom_API
=
"https://api.name.com/
api
"
Namecom_API
=
"https://api.name.com/
v4
"
#Usage: dns_namecom_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_namecom_add
()
{
...
...
@@ -39,21 +40,18 @@ dns_namecom_add() {
# Find domain in domain list.
if
!
_namecom_get_root
"
$fulldomain
"
;
then
_err
"Unable to find domain specified."
_namecom_logout
return
1
fi
# Add TXT record.
_namecom_addtxt_json
=
"{
\"
host
name
\"
:
\"
$_sub_domain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"
$txtvalue
\"
,
\"
ttl
\"
:
\"
300
\"
,
\"
priority
\"
:
\"
10
\"
}"
if
_namecom_rest POST
"d
ns/create/
$_domain
"
"
$_namecom_addtxt_json
"
;
then
ret
cod
e
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100
"
)
if
[
"
$ret
cod
e
"
]
;
then
_namecom_addtxt_json
=
"{
\"
host
\"
:
\"
$_sub_domain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
answer
\"
:
\"
$txtvalue
\"
,
\"
ttl
\"
:
\"
300
\"
}"
if
_namecom_rest POST
"d
omains/
$_domain
/records
"
"
$_namecom_addtxt_json
"
;
then
_
ret
valu
e
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
$_sub_domain
\"
"
)
if
[
"
$
_
ret
valu
e
"
]
;
then
_info
"Successfully added TXT record, ready for validation."
_namecom_logout
return
0
else
_err
"Unable to add the DNS record."
_namecom_logout
return
1
fi
fi
...
...
@@ -72,38 +70,29 @@ dns_namecom_rm() {
# Find domain in domain list.
if
!
_namecom_get_root
"
$fulldomain
"
;
then
_err
"Unable to find domain specified."
_namecom_logout
return
1
fi
# Get the record id.
if
_namecom_rest GET
"dns/list/
$_domain
"
;
then
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100"
)
if
[
"
$retcode
"
]
;
then
_record_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
record_id
\"
:
\"
[0-9]+
\"
,
\"
name
\"
:
\"
$fulldomain
\"
,
\"
type
\"
:
\"
TXT
\"
"
|
cut
-d
\"
-f
4
)
if
_namecom_rest GET
"domains/
$_domain
/records"
;
then
_record_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
id
\"
:[0-9]+,
\"
domainName
\"
:
\"
$_domain
\"
,
\"
host
\"
:
\"
$_sub_domain
\"
,
\"
fqdn
\"
:
\"
$fulldomain
.
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
answer
\"
:
\"
$txtvalue
\"
"
|
cut
-d
\"
-f
3 | _egrep_o
[
0-9]+
)
_debug record_id
"
$_record_id
"
if
[
"
$_record_id
"
]
;
then
_info
"Successfully retrieved the record id for ACME challenge."
else
_err
"Unable to retrieve the record id."
_namecom_logout
return
1
fi
fi
# Remove the DNS record using record id.
_namecom_rmtxt_json
=
"{
\"
record_id
\"
:
\"
$_record_id
\"
}"
if
_namecom_rest POST
"dns/delete/
$_domain
"
"
$_namecom_rmtxt_json
"
;
then
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100"
)
if
[
"
$retcode
"
]
;
then
if
_namecom_rest DELETE
"domains/
$_domain
/records/
$_record_id
"
;
then
_info
"Successfully removed the TXT record."
_namecom_logout
return
0
else
_err
"Unable to remove the DNS record."
_namecom_logout
_err
"Unable to delete record id."
return
1
fi
fi
}
#################### Private functions below ##################################
...
...
@@ -112,8 +101,9 @@ _namecom_rest() {
param
=
$2
data
=
$3
export
_H1
=
"Content-Type: application/json"
export
_H2
=
"Api-Session-Token:
$sessionkey
"
export
_H1
=
"Authorization: Basic
$_namecom_auth
"
export
_H2
=
"Content-Type: application/json"
if
[
"
$method
"
!=
"GET"
]
;
then
response
=
"
$(
_post
"
$data
"
"
$Namecom_API
/
$param
"
""
"
$method
"
)
"
else
...
...
@@ -130,20 +120,15 @@ _namecom_rest() {
}
_namecom_login
()
{
namecom_login_json
=
"{
\"
username
\"
:
\"
$Namecom_Username
\"
,
\"
api_token
\"
:
\"
$Namecom_Token
\"
}"
# Auth string
# Name.com API v4 uses http basic auth to authenticate
# need to convert the token for http auth
_namecom_auth
=
$(
printf
"%s:%s"
"
$Namecom_Username
"
"
$Namecom_Token
"
|
base64
)
if
_namecom_rest
POST
"login"
"
$namecom_login_json
"
;
then
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100
"
)
if
_namecom_rest
GET
"hello
"
;
then
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
username
\"\:\"
$Namecom_Username
\"
"
)
if
[
"
$retcode
"
]
;
then
_info
"Successfully logged in. Fetching session token..."
sessionkey
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
session_token
\"
:
\"
.+"
|
cut
-d
\"
-f
4
)
if
[
!
-z
"
$sessionkey
"
]
;
then
_debug sessionkey
"
$sessionkey
"
_info
"Session key obtained."
else
_err
"Unable to get session key."
return
1
fi
_info
"Successfully logged in."
else
_err
"Logging in failed."
return
1
...
...
@@ -151,24 +136,12 @@ _namecom_login() {
fi
}
_namecom_logout
()
{
if
_namecom_rest GET
"logout"
;
then
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100"
)
if
[
"
$retcode
"
]
;
then
_info
"Successfully logged out."
else
_err
"Error logging out."
return
1
fi
fi
}
_namecom_get_root
()
{
domain
=
$1
i
=
2
p
=
1
if
!
_namecom_rest GET
"domain
/list
"
;
then
if
!
_namecom_rest GET
"domain
s
"
;
then
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