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
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