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
8dea5192
Unverified
Commit
8dea5192
authored
Jan 12, 2020
by
neil
Committed by
GitHub
Jan 12, 2020
Browse files
Merge pull request #2689 from Neilpang/dev
sync
parents
ef15e559
0712e989
Changes
8
Show whitespace changes
Inline
Side-by-side
acme.sh
View file @
8dea5192
...
...
@@ -2019,7 +2019,7 @@ _send_signed_request() {
_debug code
"
$code
"
_debug2 original
"
$response
"
if
echo
"
$responseHeaders
"
|
grep
-i
"Content-Type: application/json"
>
/dev/null 2>&1
;
then
if
echo
"
$responseHeaders
"
|
grep
-i
"Content-Type:
*
application/json"
>
/dev/null 2>&1
;
then
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
fi
_debug2 response
"
$response
"
...
...
@@ -2040,8 +2040,10 @@ _send_signed_request() {
continue
fi
fi
b
re
ak
re
turn
0
done
_info
"Giving up sending to CA server after
$MAX_REQUEST_RETRY_TIMES
retries."
return
1
}
...
...
@@ -3445,7 +3447,7 @@ _regAccount() {
fi
_debug2 responseHeaders
"
$responseHeaders
"
_accUri
=
"
$(
echo
"
$responseHeaders
"
|
grep
-i
"^Location:"
| _head_n 1 |
cut
-d
'
'
-f
2 |
tr
-d
"
\r\n
"
)
"
_accUri
=
"
$(
echo
"
$responseHeaders
"
|
grep
-i
"^Location:"
| _head_n 1 |
cut
-d
'
:
'
-f
2
-
|
tr
-d
"
\r\n
"
)
"
_debug
"_accUri"
"
$_accUri
"
if
[
-z
"
$_accUri
"
]
;
then
_err
"Can not find account id url."
...
...
@@ -3819,9 +3821,11 @@ _check_dns_entries() {
_sleep 10
else
_info
"All success, let's return"
b
re
ak
re
turn
0
fi
done
_info
"Timed out waiting for DNS."
return
1
}
...
...
@@ -4002,7 +4006,7 @@ issue() {
_on_issue_err
"
$_post_hook
"
return
1
fi
Le_LinkOrder
=
"
$(
echo
"
$responseHeaders
"
|
grep
-i
'^Location.*$'
| _tail_n 1 |
tr
-d
"
\r\n
"
|
cut
-d
"
"
-f
2
)
"
Le_LinkOrder
=
"
$(
echo
"
$responseHeaders
"
|
grep
-i
'^Location.*$'
| _tail_n 1 |
tr
-d
"
\r\n
"
|
cut
-d
"
:
"
-f
2
-
)
"
_debug Le_LinkOrder
"
$Le_LinkOrder
"
Le_OrderFinalize
=
"
$(
echo
"
$response
"
| _egrep_o
'"finalize" *: *"[^"]*"'
|
cut
-d
'"'
-f
4
)
"
_debug Le_OrderFinalize
"
$Le_OrderFinalize
"
...
...
@@ -4082,7 +4086,7 @@ $_authorizations_map"
if
[
"
$ACME_VERSION
"
=
"2"
]
;
then
_idn_d
=
"
$(
_idn
"
$d
"
)
"
_candindates
=
"
$(
echo
"
$_authorizations_map
"
|
grep
"^
$_idn_d
,"
)
"
_candindates
=
"
$(
echo
"
$_authorizations_map
"
|
grep
-i
"^
$_idn_d
,"
)
"
_debug2 _candindates
"
$_candindates
"
if
[
"
$(
echo
"
$_candindates
"
|
wc
-l
)
"
-gt
1
]
;
then
for
_can
in
$_candindates
;
do
...
...
@@ -4517,7 +4521,7 @@ $_authorizations_map"
return
1
fi
if
[
-z
"
$Le_LinkOrder
"
]
;
then
Le_LinkOrder
=
"
$(
echo
"
$responseHeaders
"
|
grep
-i
'^Location.*$'
| _tail_n 1 |
tr
-d
"
\r\n
"
|
cut
-d
"
"
-f
2
)
"
Le_LinkOrder
=
"
$(
echo
"
$responseHeaders
"
|
grep
-i
'^Location.*$'
| _tail_n 1 |
tr
-d
"
\r\n
"
|
cut
-d
"
:
"
-f
2
-
)
"
fi
_savedomainconf
"Le_LinkOrder"
"
$Le_LinkOrder
"
...
...
@@ -5568,7 +5572,7 @@ _deactivate() {
return
1
fi
authzUri
=
"
$(
echo
"
$responseHeaders
"
|
grep
"^Location:"
| _head_n 1 |
cut
-d
'
'
-f
2 |
tr
-d
"
\r\n
"
)
"
authzUri
=
"
$(
echo
"
$responseHeaders
"
|
grep
"^Location:"
| _head_n 1 |
cut
-d
'
:
'
-f
2
-
|
tr
-d
"
\r\n
"
)
"
_debug
"authzUri"
"
$authzUri
"
if
[
"
$code
"
]
&&
[
!
"
$code
"
=
'201'
]
;
then
_err
"new-authz error:
$response
"
...
...
@@ -6299,6 +6303,7 @@ _installOnline() {
chmod
+x
$PROJECT_ENTRY
if
./
$PROJECT_ENTRY
install
"
$_nocron
"
""
"
$_noprofile
"
;
then
_info
"Install success!"
_saveaccountconf
"UPGRADE_HASH"
"
$(
_getMasterHash
)
"
fi
cd
..
...
...
@@ -6308,9 +6313,15 @@ _installOnline() {
)
}
_getMasterHash
()
{
_hash_url
=
"https://api.github.com/repos/Neilpang/acme.sh/git/refs/heads/master"
_get
$_hash_url
|
tr
-d
"
\r\n
"
|
tr
'{},'
'\n'
|
grep
'"sha":'
|
cut
-d
'"'
-f
4
}
upgrade
()
{
if
(
_initpath
[
-z
"
$FORCE
"
]
&&
[
"
$(
_getMasterHash
)
"
=
"
$(
_readaccountconf
"UPGRADE_HASH"
)
"
]
&&
_info
"Already uptodate!"
&&
exit
0
export
LE_WORKING_DIR
cd
"
$LE_WORKING_DIR
"
_installOnline
"nocron"
"noprofile"
...
...
deploy/routeros.sh
View file @
8dea5192
...
...
@@ -85,19 +85,19 @@ routeros_deploy() {
scp
"
$_ckey
"
"
$ROUTER_OS_USERNAME
@
$ROUTER_OS_HOST
:
$_cdomain
.key"
_info
"Trying to push cert '
$_cfullchain
' to router"
scp
"
$_cfullchain
"
"
$ROUTER_OS_USERNAME
@
$ROUTER_OS_HOST
:
$_cdomain
.cer"
DEPLOY_SCRIPT_CMD
=
"/system script add name=
\"
LE Cert Deploy -
$_cdomain
\"
owner=admin policy=ftp,read,write,password,sensitive
source=
\"
## generated by routeros deploy script in acme.sh
\n
/certificate remove [ find name=
$_cdomain
.cer_0 ]
\n
/certificate remove [ find name=
$_cdomain
.cer_1 ]
\n
delay 1
\n
/certificate import file-name=
$_cdomain
.cer passphrase=
\\\"\\\"
\n
/certificate import file-name=
$_cdomain
.key passphrase=
\\\"\\\"
\n
delay 1
\n
/file remove
$_cdomain
.cer
\n
/file remove
$_cdomain
.key
\n
delay 2
\n
/ip service set www-ssl certificate=
$_cdomain
.cer_0
\n
$ROUTER_OS_ADDITIONAL_SERVICES
DEPLOY_SCRIPT_CMD
=
"/system script add name=
\"
LE Cert Deploy -
$_cdomain
\"
owner=admin policy=ftp,read,write,password,sensitive
\
source=
\"
## generated by routeros deploy script in acme.sh
;
\
\n
/certificate remove [ find name=
$_cdomain
.cer_0 ]
;
\
\n
/certificate remove [ find name=
$_cdomain
.cer_1 ]
;
\
\n
delay 1
;
\
\n
/certificate import file-name=
$_cdomain
.cer passphrase=
\\\"\\\"
;
\
\n
/certificate import file-name=
$_cdomain
.key passphrase=
\\\"\\\"
;
\
\n
delay 1
;
\
\n
/file remove
$_cdomain
.cer
;
\
\n
/file remove
$_cdomain
.key
;
\
\n
delay 2
;
\
\n
/ip service set www-ssl certificate=
$_cdomain
.cer_0
;
\
\n
$ROUTER_OS_ADDITIONAL_SERVICES
;
\
\n\"
"
# shellcheck disable=SC2029
...
...
dnsapi/dns_easydns.sh
0 → 100644
View file @
8dea5192
#!/usr/bin/env sh
#######################################################
#
# easyDNS REST API for acme.sh by Neilpang based on dns_cf.sh
#
# Please note: # API is currently beta and subject to constant change
# http://sandbox.rest.easydns.net:3000/
#
# Author: wurzelpanzer [wurzelpanzer@maximolider.net]
# Report Bugs here: https://github.com/Neilpang/acme.sh/issues/2647
#
#################### Public functions #################
#EASYDNS_Key="xxxxxxxxxxxxxxxxxxxxxxxx"
#EASYDNS_Token="xxxxxxxxxxxxxxxxxxxxxxxx"
EASYDNS_Api
=
"https://rest.easydns.net"
#Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_easydns_add
()
{
fulldomain
=
$1
txtvalue
=
$2
EASYDNS_Token
=
"
${
EASYDNS_Token
:-
$(
_readaccountconf_mutable EASYDNS_Token
)
}
"
EASYDNS_Key
=
"
${
EASYDNS_Key
:-
$(
_readaccountconf_mutable EASYDNS_Key
)
}
"
if
[
-z
"
$EASYDNS_Token
"
]
||
[
-z
"
$EASYDNS_Key
"
]
;
then
_err
"You didn't specify an easydns.net token or api key. Please sign up at http://docs.sandbox.rest.easydns.net/beta_signup.php"
return
1
else
_saveaccountconf_mutable EASYDNS_Token
"
$EASYDNS_Token
"
_saveaccountconf_mutable EASYDNS_Key
"
$EASYDNS_Key
"
fi
_debug
"First detect the root zone"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"invalid domain"
return
1
fi
_debug _sub_domain
"
$_sub_domain
"
_debug _domain
"
$_domain
"
_debug
"Getting txt records"
_EASYDNS_rest GET
"zones/records/all/
${
_domain
}
/search/
${
_sub_domain
}
"
if
!
printf
"%s"
"
$response
"
|
grep
\"
status
\"
:200
>
/dev/null
;
then
_err
"Error"
return
1
fi
_info
"Adding record"
if
_EASYDNS_rest PUT
"zones/records/add/
$_domain
/TXT"
"{
\"
host
\"
:
\"
$_sub_domain
\"
,
\"
rdata
\"
:
\"
$txtvalue
\"
}"
;
then
if
_contains
"
$response
"
"
\"
status
\"
:201"
;
then
_info
"Added, OK"
return
0
elif
_contains
"
$response
"
"Record already exists"
;
then
_info
"Already exists, OK"
return
0
else
_err
"Add txt record error."
return
1
fi
fi
_err
"Add txt record error."
return
1
}
dns_easydns_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
EASYDNS_Token
=
"
${
EASYDNS_Token
:-
$(
_readaccountconf_mutable EASYDNS_Token
)
}
"
EASYDNS_Key
=
"
${
EASYDNS_Key
:-
$(
_readaccountconf_mutable EASYDNS_Key
)
}
"
_debug
"First detect the root zone"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"invalid domain"
return
1
fi
_debug _sub_domain
"
$_sub_domain
"
_debug _domain
"
$_domain
"
_debug
"Getting txt records"
_EASYDNS_rest GET
"zones/records/all/
${
_domain
}
/search/
${
_sub_domain
}
"
if
!
printf
"%s"
"
$response
"
|
grep
\"
status
\"
:200
>
/dev/null
;
then
_err
"Error"
return
1
fi
count
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
count
\"
:[^,]*"
|
cut
-d
:
-f
2
)
_debug count
"
$count
"
if
[
"
$count
"
=
"0"
]
;
then
_info
"Don't need to remove."
else
record_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
id
\"
:
\"
[^
\"
]*
\"
"
|
cut
-d
:
-f
2 |
tr
-d
\"
|
head
-n
1
)
_debug
"record_id"
"
$record_id
"
if
[
-z
"
$record_id
"
]
;
then
_err
"Can not get record id to remove."
return
1
fi
if
!
_EASYDNS_rest DELETE
"zones/records/
$_domain
/
$record_id
"
;
then
_err
"Delete record error."
return
1
fi
_contains
"
$response
"
"
\"
status
\"
:200"
fi
}
#################### Private functions below ##################################
#_acme-challenge.www.domain.com
#returns
# _sub_domain=_acme-challenge.www
# _domain=domain.com
_get_root
()
{
domain
=
$1
i
=
1
p
=
1
while
true
;
do
h
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
$i
-100
)
_debug h
"
$h
"
if
[
-z
"
$h
"
]
;
then
#not valid
return
1
fi
if
!
_EASYDNS_rest GET
"zones/records/all/
$h
"
;
then
return
1
fi
if
_contains
"
$response
"
"
\"
status
\"
:200"
;
then
_sub_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
1-
$p
)
_domain
=
$h
return
0
fi
p
=
$i
i
=
$(
_math
"
$i
"
+ 1
)
done
return
1
}
_EASYDNS_rest
()
{
m
=
$1
ep
=
"
$2
"
data
=
"
$3
"
_debug
"
$ep
"
basicauth
=
$(
printf
"%s"
"
$EASYDNS_Token
"
:
"
$EASYDNS_Key
"
| _base64
)
export
_H1
=
"accept: application/json"
if
[
"
$basicauth
"
]
;
then
export
_H2
=
"Authorization: Basic
$basicauth
"
fi
if
[
"
$m
"
!=
"GET"
]
;
then
export
_H3
=
"Content-Type: application/json"
_debug data
"
$data
"
response
=
"
$(
_post
"
$data
"
"
$EASYDNS_Api
/
$ep
"
""
"
$m
"
)
"
else
response
=
"
$(
_get
"
$EASYDNS_Api
/
$ep
"
)
"
fi
if
[
"
$?
"
!=
"0"
]
;
then
_err
"error
$ep
"
return
1
fi
_debug2 response
"
$response
"
return
0
}
dnsapi/dns_lexicon.sh
View file @
8dea5192
...
...
@@ -63,6 +63,16 @@ _lexicon_init() {
_saveaccountconf_mutable
"
$Lx_domaintoken
"
"
$Lx_domaintoken_v
"
eval export
"
$Lx_domaintoken
"
fi
# shellcheck disable=SC2018,SC2019
Lx_api_key
=
$(
echo
LEXICON_
"
${
PROVIDER
}
"
_API_KEY |
tr
'a-z'
'A-Z'
)
eval
"
$Lx_api_key
=
\$
{
$Lx_api_key
:-
$(
_readaccountconf_mutable
"
$Lx_api_key
"
)
}"
Lx_api_key_v
=
$(
eval echo
\$
"
$Lx_api_key
"
)
_secure_debug
"
$Lx_api_key
"
"
$Lx_api_key_v
"
if
[
"
$Lx_api_key_v
"
]
;
then
_saveaccountconf_mutable
"
$Lx_api_key
"
"
$Lx_api_key_v
"
eval export
"
$Lx_api_key
"
fi
}
######## Public functions #####################
...
...
dnsapi/dns_misaka.sh
0 → 100755
View file @
8dea5192
#!/usr/bin/env sh
# bug reports to support+acmesh@misaka.io
# based on dns_nsone.sh by dev@1e.ca
#
#Misaka_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
#
Misaka_Api
=
"https://dnsapi.misaka.io/dns"
######## Public functions #####################
#Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_misaka_add
()
{
fulldomain
=
$1
txtvalue
=
$2
if
[
-z
"
$Misaka_Key
"
]
;
then
Misaka_Key
=
""
_err
"You didn't specify misaka.io dns api key yet."
_err
"Please create you key and try again."
return
1
fi
#save the api key and email to the account conf file.
_saveaccountconf Misaka_Key
"
$Misaka_Key
"
_debug
"checking root zone [
$fulldomain
]"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"invalid domain"
return
1
fi
_debug _sub_domain
"
$_sub_domain
"
_debug _domain
"
$_domain
"
_debug
"Getting txt records"
_misaka_rest GET
"zones/
${
_domain
}
/recordsets?search=
${
_sub_domain
}
"
if
!
_contains
"
$response
"
"
\"
results
\"
:"
;
then
_err
"Error"
return
1
fi
count
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
name
\"
:
\"
$_sub_domain
\"
,[^{]*
\"
type
\"
:
\"
TXT
\"
"
|
wc
-l
|
tr
-d
" "
)
_debug count
"
$count
"
if
[
"
$count
"
=
"0"
]
;
then
_info
"Adding record"
if
_misaka_rest PUT
"zones/
${
_domain
}
/recordsets/
${
_sub_domain
}
/TXT"
"{
\"
records
\"
:[{
\"
value
\"
:
\"\\\"
$txtvalue
\\\"\"
}],
\"
filters
\"
:[],
\"
ttl
\"
:1}"
;
then
_debug response
"
$response
"
if
_contains
"
$response
"
"
$_sub_domain
"
;
then
_info
"Added"
return
0
else
_err
"Add txt record error."
return
1
fi
fi
_err
"Add txt record error."
else
_info
"Updating record"
_misaka_rest POST
"zones/
${
_domain
}
/recordsets/
${
_sub_domain
}
/TXT?append=true"
"{
\"
records
\"
: [{
\"
value
\"
:
\"\\\"
$txtvalue
\\\"\"
}],
\"
ttl
\"
:1}"
if
[
"
$?
"
=
"0"
]
&&
_contains
"
$response
"
"
$_sub_domain
"
;
then
_info
"Updated!"
#todo: check if the record takes effect
return
0
fi
_err
"Update error"
return
1
fi
}
#fulldomain
dns_misaka_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
_debug
"First detect the root zone"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"invalid domain"
return
1
fi
_debug _sub_domain
"
$_sub_domain
"
_debug _domain
"
$_domain
"
_debug
"Getting txt records"
_misaka_rest GET
"zones/
${
_domain
}
/recordsets?search=
${
_sub_domain
}
"
count
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\"
name
\"
:
\"
$_sub_domain
\"
,[^{]*
\"
type
\"
:
\"
TXT
\"
"
|
wc
-l
|
tr
-d
" "
)
_debug count
"
$count
"
if
[
"
$count
"
=
"0"
]
;
then
_info
"Don't need to remove."
else
if
!
_misaka_rest DELETE
"zones/
${
_domain
}
/recordsets/
${
_sub_domain
}
/TXT"
;
then
_err
"Delete record error."
return
1
fi
_contains
"
$response
"
""
fi
}
#################### Private functions below ##################################
#_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
!
_misaka_rest GET
"zones?limit=1000"
;
then
return
1
fi
while
true
;
do
h
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
$i
-100
)
_debug h
"
$h
"
if
[
-z
"
$h
"
]
;
then
#not valid
return
1
fi
if
_contains
"
$response
"
"
\"
name
\"
:
\"
$h
\"
"
;
then
_sub_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
1-
$p
)
_domain
=
"
$h
"
return
0
fi
p
=
$i
i
=
$(
_math
"
$i
"
+ 1
)
done
return
1
}
_misaka_rest
()
{
m
=
$1
ep
=
"
$2
"
data
=
"
$3
"
_debug
"
$ep
"
export
_H1
=
"Content-Type: application/json"
export
_H2
=
"User-Agent: acme.sh/
$VER
misaka-dns-acmesh/20191213"
export
_H3
=
"Authorization: Token
$Misaka_Key
"
if
[
"
$m
"
!=
"GET"
]
;
then
_debug data
"
$data
"
response
=
"
$(
_post
"
$data
"
"
$Misaka_Api
/
$ep
"
""
"
$m
"
)
"
else
response
=
"
$(
_get
"
$Misaka_Api
/
$ep
"
)
"
fi
if
[
"
$?
"
!=
"0"
]
;
then
_err
"error
$ep
"
return
1
fi
_debug2 response
"
$response
"
return
0
}
dnsapi/dns_nic.sh
View file @
8dea5192
#!/usr/bin/env sh
#
#NIC_
Token="sdfsdfsdfljlbjkljlkjsdfoiwjedfglgkdlfgkfgldfkg"
#
#NIC_
ClientID='0dc0xxxxxxxxxxxxxxxxxxxxxxxxce88'
#
NIC_ClientSecret='3LTtxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxnuW8'
#NIC_Username="000000/NIC-D"
#NIC_Password="xxxxxxx"
NIC_Api
=
"https://api.nic.ru"
...
...
@@ -13,22 +12,7 @@ dns_nic_add() {
fulldomain
=
"
${
1
}
"
txtvalue
=
"
${
2
}
"
NIC_Token
=
"
${
NIC_Token
:-
$(
_readaccountconf_mutable NIC_Token
)
}
"
NIC_Username
=
"
${
NIC_Username
:-
$(
_readaccountconf_mutable NIC_Username
)
}
"
NIC_Password
=
"
${
NIC_Password
:-
$(
_readaccountconf_mutable NIC_Password
)
}
"
if
[
-z
"
$NIC_Token
"
]
||
[
-z
"
$NIC_Username
"
]
||
[
-z
"
$NIC_Password
"
]
;
then
NIC_Token
=
""
NIC_Username
=
""
NIC_Password
=
""
_err
"You must export variables: NIC_Token, NIC_Username and NIC_Password"
return
1
fi
_saveaccountconf_mutable NIC_Customer
"
$NIC_Token
"
_saveaccountconf_mutable NIC_Username
"
$NIC_Username
"
_saveaccountconf_mutable NIC_Password
"
$NIC_Password
"
if
!
_nic_get_authtoken
"
$NIC_Username
"
"
$NIC_Password
"
"
$NIC_Token
"
;
then
if
!
_nic_get_authtoken save
;
then
_err
"get NIC auth token failed"
return
1
fi
...
...
@@ -59,18 +43,7 @@ dns_nic_rm() {
fulldomain
=
"
${
1
}
"
txtvalue
=
"
${
2
}
"
NIC_Token
=
"
${
NIC_Token
:-
$(
_readaccountconf_mutable NIC_Token
)
}
"
NIC_Username
=
"
${
NIC_Username
:-
$(
_readaccountconf_mutable NIC_Username
)
}
"
NIC_Password
=
"
${
NIC_Password
:-
$(
_readaccountconf_mutable NIC_Password
)
}
"
if
[
-z
"
$NIC_Token
"
]
||
[
-z
"
$NIC_Username
"
]
||
[
-z
"
$NIC_Password
"
]
;
then
NIC_Token
=
""
NIC_Username
=
""
NIC_Password
=
""
_err
"You must export variables: NIC_Token, NIC_Username and NIC_Password"
return
1
fi
if
!
_nic_get_authtoken
"
$NIC_Username
"
"
$NIC_Password
"
"
$NIC_Token
"
;
then
if
!
_nic_get_authtoken
;
then
_err
"get NIC auth token failed"
return
1
fi
...
...
@@ -103,17 +76,64 @@ dns_nic_rm() {
#################### Private functions below ##################################
#_nic_get_auth_elements [need2save]
_nic_get_auth_elements
()
{
_need2save
=
$1
NIC_ClientID
=
"
${
NIC_ClientID
:-
$(
_readaccountconf_mutable NIC_ClientID
)
}
"
NIC_ClientSecret
=
"
${
NIC_ClientSecret
:-
$(
_readaccountconf_mutable NIC_ClientSecret
)
}
"
NIC_Username
=
"
${
NIC_Username
:-
$(
_readaccountconf_mutable NIC_Username
)
}
"
NIC_Password
=
"
${
NIC_Password
:-
$(
_readaccountconf_mutable NIC_Password
)
}
"
## for backward compatibility
if
[
-z
"
$NIC_ClientID
"
]
||
[
-z
"
$NIC_ClientSecret
"
]
;
then
NIC_Token
=
"
${
NIC_Token
:-
$(
_readaccountconf_mutable NIC_Token
)
}
"
_debug NIC_Token
"
$NIC_Token
"
if
[
-n
"
$NIC_Token
"
]
;
then
_two_values
=
"
$(
echo
"
${
NIC_Token
}
"
| _dbase64
)
"
_debug _two_values
"
$_two_values
"
NIC_ClientID
=
$(
echo
"
$_two_values
"
|
cut
-d
':'
-f1
)
NIC_ClientSecret
=
$(
echo
"
$_two_values
"
|
cut
-d
':'
-f2-
)
_debug restored_NIC_ClientID
"
$NIC_ClientID
"
_debug restored_NIC_ClientSecret
"
$NIC_ClientSecret
"
fi
fi
if
[
-z
"
$NIC_ClientID
"
]
||
[
-z
"
$NIC_ClientSecret
"
]
||
[
-z
"
$NIC_Username
"
]
||
[
-z
"
$NIC_Password
"
]
;
then
NIC_ClientID
=
""
NIC_ClientSecret
=
""
NIC_Username
=
""
NIC_Password
=
""
_err
"You must export variables: NIC_ClientID, NIC_ClientSecret, NIC_Username and NIC_Password"
return
1
fi
if
[
"
$_need2save
"
]
;
then
_saveaccountconf_mutable NIC_ClientID
"
$NIC_ClientID
"
_saveaccountconf_mutable NIC_ClientSecret
"
$NIC_ClientSecret
"
_saveaccountconf_mutable NIC_Username
"
$NIC_Username
"
_saveaccountconf_mutable NIC_Password
"
$NIC_Password
"
fi
NIC_BasicAuth
=
$(
printf
"%s:%s"
"
${
NIC_ClientID
}
"
"
${
NIC_ClientSecret
}
"
| _base64
)
_debug NIC_BasicAuth
"
$NIC_BasicAuth
"
}
#_nic_get_authtoken [need2save]
_nic_get_authtoken
()
{
username
=
"
$1
"
password
=
"
$2
"
token
=
"
$3
"
_need2save
=
$1
if
!
_nic_get_auth_elements
"
$_need2save
"
;
then
return
1
fi
_info
"Getting NIC auth token"
export
_H1
=
"Authorization: Basic
$
token
"
export
_H1
=
"Authorization: Basic
$
{
NIC_BasicAuth
}
"
export
_H2
=
"Content-Type: application/x-www-form-urlencoded"
res
=
$(
_post
"grant_type=password&username=
$
u
sername
&password=
$
p
assword
&scope=%28GET%7CPUT%7CPOST%7CDELETE%29%3A%2Fdns-master%2F.%2B"
"
$NIC_Api
/oauth/token"
""
"POST"
)
res
=
$(
_post
"grant_type=password&username=
$
{
NIC_U
sername
}
&password=
$
{
NIC_P
assword
}
&scope=%28GET%7CPUT%7CPOST%7CDELETE%29%3A%2Fdns-master%2F.%2B"
"
$NIC_Api
/oauth/token"
""
"POST"
)
if
_contains
"
$res
"
"access_token"
;
then
_auth_token
=
$(
printf
"%s"
"
$res
"
|
cut
-d
,
-f2
|
tr
-d
"
\"
"
|
sed
"s/access_token://"
)
_info
"Token received"
...
...
@@ -146,7 +166,7 @@ _get_root() {
if
_contains
"
$_all_domains
"
"^
$h
$"
;
then
_sub_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
1-
$p
)
_domain
=
$h
_service
=
$(
printf
"%s"
"
$response
"
|
grep
"
$_domain
"
|
sed
-r
"s/.*service=
\"
(.*)
\"
.*
$/
\1
/"
)
_service
=
$(
printf
"%s"
"
$response
"
|
grep
"idn-name=
\
"
$_domain
\"
"
|
sed
-r
"s/.*service=
\"
(.*)
\"
.*
$/
\1
/"
)
return
0
fi
p
=
"
$i
"
...
...
dnsapi/dns_unoeuro.sh
View file @
8dea5192
...
...
@@ -52,7 +52,7 @@ dns_unoeuro_add() {
fi
_info
"Adding record"
if
_uno_rest POST
"my/products/
$h
/dns/records"
"{
\"
name
\"
:
\"
$fulldomain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
data
\"
:
\"
$txtvalue
\"
,
\"
ttl
\"
:120}"
;
then
if
_uno_rest POST
"my/products/
$h
/dns/records"
"{
\"
name
\"
:
\"
$fulldomain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
data
\"
:
\"
$txtvalue
\"
,
\"
ttl
\"
:120
,
\"
priority
\"
:0
}"
;
then
if
_contains
"
$response
"
"
\"
status
\"
: 200"
>
/dev/null
;
then
_info
"Added, OK"
return
0
...
...
dnsapi/dns_zone.sh
View file @
8dea5192
...
...
@@ -136,10 +136,10 @@ _get_root() {
if
[
-z
"
$h
"
]
;
then
return
1
fi
if
!
_zone_rest GET
"dns/
$h
/a
"
;
then
if
!
_zone_rest GET
"dns/
$h
"
;
then
return
1
fi
if
_contains
"
$response
"
"
\"
name
\"
:
\"
$h
\"
"
>
/dev/null
;
then
if
_contains
"
$response
"
"
\"
identificator
\"
:
\"
$h
\"
"
>
/dev/null
;
then
_domain
=
$h
return
0
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