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
50a91453
Commit
50a91453
authored
Mar 01, 2018
by
raidenii
Browse files
Rewrote to adapt the new name.com v4 API.
parent
9046509b
Changes
1
Hide whitespace changes
Inline
Side-by-side
dnsapi/dns_namecom.sh
View file @
50a91453
#!/usr/bin/env sh
#!/usr/bin/env sh
#Author: Raid
n
eII
#Author: Raide
n
II
#Created 06/28/2017
#Created 06/28/2017
#Updated 03/01/2018, rewrote to support name.com API v4
#Utilize name.com API to finish dns-01 verifications.
#Utilize name.com API to finish dns-01 verifications.
######## Public functions #####################
######## Public functions #####################
Namecom_API
=
"https://api.name.com/api"
Namecom_API
=
"https://api.name.com/v4"
# First we need name.com credentials.
if
[
-z
"
$Namecom_Username
"
]
;
then
Namecom_Username
=
""
_err
"Username for name.com is missing."
_err
"Please specify that in your environment variable."
return
1
fi
if
[
-z
"
$Namecom_Token
"
]
;
then
Namecom_Token
=
""
_err
"API token for name.com is missing."
_err
"Please specify that in your environment variable."
return
1
fi
# Save them in configuration.
_saveaccountconf Namecom_Username
"
$Namecom_Username
"
_saveaccountconf Namecom_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
=
`
echo
-n
"
$Namecom_Username
:
$Namecom_Token
"
|
base64
`
#Usage: dns_namecom_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
#Usage: dns_namecom_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_namecom_add
()
{
dns_namecom_add
()
{
fulldomain
=
$1
fulldomain
=
$1
txtvalue
=
$2
txtvalue
=
$2
# First we need name.com credentials.
if
[
-z
"
$Namecom_Username
"
]
;
then
Namecom_Username
=
""
_err
"Username for name.com is missing."
_err
"Please specify that in your environment variable."
return
1
fi
if
[
-z
"
$Namecom_Token
"
]
;
then
Namecom_Token
=
""
_err
"API token for name.com is missing."
_err
"Please specify that in your environment variable."
return
1
fi
# Save them in configuration.
_saveaccountconf Namecom_Username
"
$Namecom_Username
"
_saveaccountconf Namecom_Token
"
$Namecom_Token
"
# Login in using API
# Login in using API
if
!
_namecom_login
;
then
if
!
_namecom_login
;
then
return
1
return
1
...
@@ -39,21 +45,18 @@ dns_namecom_add() {
...
@@ -39,21 +45,18 @@ dns_namecom_add() {
# Find domain in domain list.
# Find domain in domain list.
if
!
_namecom_get_root
"
$fulldomain
"
;
then
if
!
_namecom_get_root
"
$fulldomain
"
;
then
_err
"Unable to find domain specified."
_err
"Unable to find domain specified."
_namecom_logout
return
1
return
1
fi
fi
# Add TXT record.
# Add TXT record.
_namecom_addtxt_json
=
"{
\"
host
name
\"
:
\"
$_sub_domain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"
$txtvalue
\"
,
\"
ttl
\"
:
\"
300
\"
,
\"
priority
\"
:
\"
10
\"
}"
_namecom_addtxt_json
=
"{
\"
host
\"
:
\"
$_sub_domain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
answer
\"
:
\"
$txtvalue
\"
,
\"
ttl
\"
:
\"
300
\"
}"
if
_namecom_rest POST
"d
ns/create/
$_domain
"
"
$_namecom_addtxt_json
"
;
then
if
_namecom_rest POST
"d
omains/
$_domain
/records
"
"
$_namecom_addtxt_json
"
;
then
ret
cod
e
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100
"
)
_
ret
valu
e
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
$_sub_domain
\"
"
)
if
[
"
$ret
cod
e
"
]
;
then
if
[
"
$
_
ret
valu
e
"
]
;
then
_info
"Successfully added TXT record, ready for validation."
_info
"Successfully added TXT record, ready for validation."
_namecom_logout
return
0
return
0
else
else
_err
"Unable to add the DNS record."
_err
"Unable to add the DNS record."
_namecom_logout
return
1
return
1
fi
fi
fi
fi
...
@@ -72,37 +75,28 @@ dns_namecom_rm() {
...
@@ -72,37 +75,28 @@ dns_namecom_rm() {
# Find domain in domain list.
# Find domain in domain list.
if
!
_namecom_get_root
"
$fulldomain
"
;
then
if
!
_namecom_get_root
"
$fulldomain
"
;
then
_err
"Unable to find domain specified."
_err
"Unable to find domain specified."
_namecom_logout
return
1
return
1
fi
fi
# Get the record id.
# Get the record id.
if
_namecom_rest GET
"dns/list/
$_domain
"
;
then
if
_namecom_rest GET
"domains/
$_domain
/records"
;
then
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100"
)
_record_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
id
\"
:[0-9]+,
\"
domainName
\"
:
\"
$_domain
\"
,
\"
host
\"
:
\"
$_sub_domain
\"
"
|
cut
-d
\"
-f
3 | _egrep_o
[
0-9]+
)
if
[
"
$retcode
"
]
;
then
_debug record_id
"
$_record_id
"
_record_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
record_id
\"
:
\"
[0-9]+
\"
,
\"
name
\"
:
\"
$fulldomain
\"
,
\"
type
\"
:
\"
TXT
\"
"
|
cut
-d
\"
-f
4
)
if
[
"
$_record_id
"
]
;
then
_debug record_id
"
$_record_id
"
_info
"Successfully retrieved the record id for ACME challenge."
_info
"Successfully retrieved the record id for ACME challenge."
else
else
_err
"Unable to retrieve the record id."
_err
"Unable to retrieve the record id."
_namecom_logout
return
1
return
1
fi
fi
fi
fi
# Remove the DNS record using record id.
# Remove the DNS record using record id.
_namecom_rmtxt_json
=
"{
\"
record_id
\"
:
\"
$_record_id
\"
}"
if
_namecom_rest DELETE
"domains/
$_domain
/records/
$_record_id
"
;
then
if
_namecom_rest POST
"dns/delete/
$_domain
"
"
$_namecom_rmtxt_json
"
;
then
_info
"Successfully removed the TXT record."
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100"
)
return
0
if
[
"
$retcode
"
]
;
then
else
_info
"Successfully removed the TXT record."
_err
"Unable to delete record id."
_namecom_logout
return
1
return
0
else
_err
"Unable to remove the DNS record."
_namecom_logout
return
1
fi
fi
fi
}
}
...
@@ -112,8 +106,9 @@ _namecom_rest() {
...
@@ -112,8 +106,9 @@ _namecom_rest() {
param
=
$2
param
=
$2
data
=
$3
data
=
$3
export
_H1
=
"Content-Type: application/json"
export
_H1
=
"Authorization: Basic
$_namecom_auth
"
export
_H2
=
"Api-Session-Token:
$sessionkey
"
export
_H2
=
"Content-Type: application/json"
if
[
"
$method
"
!=
"GET"
]
;
then
if
[
"
$method
"
!=
"GET"
]
;
then
response
=
"
$(
_post
"
$data
"
"
$Namecom_API
/
$param
"
""
"
$method
"
)
"
response
=
"
$(
_post
"
$data
"
"
$Namecom_API
/
$param
"
""
"
$method
"
)
"
else
else
...
@@ -125,25 +120,15 @@ _namecom_rest() {
...
@@ -125,25 +120,15 @@ _namecom_rest() {
return
1
return
1
fi
fi
_debug
2
response
"
$response
"
_debug response
"
$response
"
return
0
return
0
}
}
_namecom_login
()
{
_namecom_login
()
{
namecom_login_json
=
"{
\"
username
\"
:
\"
$Namecom_Username
\"
,
\"
api_token
\"
:
\"
$Namecom_Token
\"
}"
if
_namecom_rest GET
"hello"
;
then
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
username
\"\:\"
$Namecom_Username
\"
"
)
if
_namecom_rest POST
"login"
"
$namecom_login_json
"
;
then
retcode
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
code
\"
:100"
)
if
[
"
$retcode
"
]
;
then
if
[
"
$retcode
"
]
;
then
_info
"Successfully logged in. Fetching session token..."
_info
"Successfully logged in."
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
else
else
_err
"Logging in failed."
_err
"Logging in failed."
return
1
return
1
...
@@ -151,24 +136,12 @@ _namecom_login() {
...
@@ -151,24 +136,12 @@ _namecom_login() {
fi
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
()
{
_namecom_get_root
()
{
domain
=
$1
domain
=
$1
i
=
2
i
=
2
p
=
1
p
=
1
if
!
_namecom_rest GET
"domain
/list
"
;
then
if
!
_namecom_rest GET
"domain
s
"
;
then
return
1
return
1
fi
fi
...
@@ -191,3 +164,4 @@ _namecom_get_root() {
...
@@ -191,3 +164,4 @@ _namecom_get_root() {
done
done
return
1
return
1
}
}
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