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
9299a83b
Unverified
Commit
9299a83b
authored
Oct 27, 2019
by
stilez
Committed by
GitHub
Oct 27, 2019
Browse files
Travis fixes
parent
a6614abd
Changes
1
Hide whitespace changes
Inline
Side-by-side
dnsapi/dns_pleskxml
View file @
9299a83b
...
...
@@ -30,8 +30,7 @@
##
## The `pleskxml_uri`, `pleskxml_user` and `pleskxml_pass` will be saved in `~/.acme.sh/account.conf` and reused when needed.
#################### INTERNAL VARIABLES + NEWLINE ##################################
#################### INTERNAL VARIABLES + NEWLINE + API TEMPLATES ##################################
pleskxml_init_checks_done
=
0
...
...
@@ -40,9 +39,6 @@ pleskxml_init_checks_done=0
NEWLINE
=
'\
'
#################### API Templates ##################################
pleskxml_tplt_get_domains
=
"<packet><customer><get-domain-list><filter/></get-domain-list></customer></packet>"
# Get a list of domains that PLESK can manage, so we can check root domain + host for acme.sh
# Also used to test credentials and URI.
...
...
@@ -60,7 +56,6 @@ pleskxml_tplt_rmv_dns_record="<packet><dns><del_rec><filter><id>%s</id></filter>
# Add a TXT record to a domain.
# ARG = the Plesk internal ID for the dns record to be deleted
#################### Public functions ##################################
#Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
...
...
@@ -141,7 +136,7 @@ dns_pleskxml_rm() {
reclist
=
"
$(
_api_response_split
"
$pleskxml_prettyprint_result
"
'result'
'<status>ok</status>'
\
|
grep
"<site-id>
${
root_domain_id
}
</site-id>"
\
|
grep
-E
'<id>[0-9]+</id>'
\
|
grep
'<type>TXT</type>'
\
|
grep
'<type>TXT</type>'
)
"
if
[
-z
"
$reclist
"
]
;
then
...
...
@@ -154,8 +149,8 @@ dns_pleskxml_rm() {
recid
=
"
$(
_value
"
$reclist
"
\
|
grep
"<host>
$1
.</host>"
\
|
grep
"<value>
$txtvalue
</value>"
\
|
sed
-E
's/(^.*<id>|<\/id>.*$)//g'
\
)
"
|
sed
-E
's/(^.*<id>|<\/id>.*$)//g'
)
"
_debug
"List of DNS TXT records for host:"
'\n'
"
$(
_value
"
$reclist
"
|
grep
"<host>
$1
.</host>"
)
"
...
...
@@ -193,8 +188,6 @@ dns_pleskxml_rm() {
return
0
}
#################### Private functions below ##################################
# Outputs value of a variable
...
...
@@ -202,7 +195,6 @@ _value() {
printf
'%s'
"
$1
"
}
# Outputs value of a variable (FQDN) and cuts it at 2 delimiters
# $1, $2 = where to cut
# $3 = FQDN
...
...
@@ -210,20 +202,18 @@ _valuecut() {
printf
'%s'
"
$3
"
|
cut
-d
.
-f
"
${
1
}
-
${
2
}
"
}
# Cleans up an API response, splits it "per item" and greps for a string to validate useful lines
# $1 - result string from API
# $2 - tag to resplit on (usually "result" or "domain")
# $3 - regex to recognise useful return lines
_api_response_split
()
{
printf
'%s'
"
$1
"
\
|
sed
-E
's/(^[[:space:]]+|[[:space:]]+$)//g'
\
|
tr
-d
'\n\r'
\
|
sed
-E
"s/<
\/
?
$2
>/
${
NEWLINE
}
/g"
\
|
grep
-E
"
$3
"
|
sed
-E
's/(^[[:space:]]+|[[:space:]]+$)//g'
\
|
tr
-d
'\n\r'
\
|
sed
-E
"s/<
\/
?
$2
>/
${
NEWLINE
}
/g"
\
|
grep
-E
"
$3
"
}
# Calls Plesk XML API, and checks results for obvious issues
_call_api
()
{
request
=
"
$1
"
...
...
@@ -249,11 +239,11 @@ _call_api() {
if
_value
"
$statuslines
"
|
grep
-qv
'<status>ok</status>'
;
then
# We have some status lines that aren't "ok". Get the details
errtext
=
"
$(
_value
"
$pleskxml_prettyprint_result
"
\
errtext
=
"
$(
_value
"
$pleskxml_prettyprint_result
"
\
|
grep
-iE
"(<status>|<errcode>|<errtext>)"
\
|
sed
-E
's/(^[[:space:]]+|<\/[a-z]+$)//g'
\
|
sed
-E
's/^<([a-z]+)>/\1: /'
\
)
"
|
sed
-E
's/^<([a-z]+)>/\1: /'
)
"
elif
!
_value
"
$statuslines
"
|
grep
-q
'<status>ok</status>'
;
then
...
...
@@ -278,10 +268,8 @@ _call_api() {
return
0
}
# Startup checks (credentials, URI)
_credential_check
()
{
# Startup checks (credentials, URI)
_debug
"Checking Plesk XML API login credentials and URI..."
if
[
"
$pleskxml_init_checks_done
"
-eq
1
]
;
then
...
...
@@ -289,7 +277,6 @@ _credential_check() {
return
0
fi
pleskxml_user
=
"
${
pleskxml_user
:-
$(
_readaccountconf_mutable pleskxml_user
)
}
"
pleskxml_pass
=
"
${
pleskxml_pass
:-
$(
_readaccountconf_mutable pleskxml_pass
)
}
"
pleskxml_uri
=
"
${
pleskxml_uri
:-
$(
_readaccountconf_mutable pleskxml_uri
)
}
"
...
...
@@ -325,7 +312,6 @@ _credential_check() {
return
0
}
# For a FQDN, identify the root domain managed by Plesk, its domain ID in Plesk, and the host if any.
# IMPORTANT NOTE: a result with host = empty string is OK for this API, see
...
...
@@ -369,7 +355,7 @@ _pleskxml_get_root_domain() {
_debug
"Checking if '
$root_domain_name
' is managed by the Plesk server..."
root_domain_id
=
"
$(
_value
"
$output
"
|
grep
"<name>
$root_domain_name
</name>"
| _head_n 1 |
sed
-E
's/^.*<id>([0-9]+)<\/id>.*$/\1/'
)
"
root_domain_id
=
"
$(
_value
"
$output
"
|
grep
"<name>
$root_domain_name
</name>"
| _head_n 1 |
sed
-E
's/^.*<id>([0-9]+)<\/id>.*$/\1/'
)
"
if
[
-n
"
$root_domain_id
"
]
;
then
# Found a match
...
...
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