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
178e0ba8
Unverified
Commit
178e0ba8
authored
Nov 02, 2020
by
neil
Committed by
GitHub
Nov 02, 2020
Browse files
Merge pull request #3237 from ma331/patch-1
Anexia CloudDNS Support
parents
23eccb2f
d58fb2bb
Changes
2
Show whitespace changes
Inline
Side-by-side
.github/workflows/DNS.yml
View file @
178e0ba8
...
...
@@ -94,7 +94,7 @@ jobs:
steps
:
-
uses
:
actions/checkout@v2
-
name
:
Install tools
run
:
brew
update && brew
install socat
;
run
:
brew install socat
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
name
:
Run acmetest
...
...
dnsapi/dns_anx.sh
0 → 100644
View file @
178e0ba8
#!/usr/bin/env sh
# Anexia CloudDNS acme.sh hook
# Author: MA
#ANX_Token="xxxx"
ANX_API
=
'https://engine.anexia-it.com/api/clouddns/v1'
######## Public functions #####################
dns_anx_add
()
{
fulldomain
=
$1
txtvalue
=
$2
_info
"Using ANX CDNS API"
ANX_Token
=
"
${
ANX_Token
:-
$(
_readaccountconf_mutable ANX_Token
)
}
"
_debug fulldomain
"
$fulldomain
"
_debug txtvalue
"
$txtvalue
"
if
[
"
$ANX_Token
"
]
;
then
_saveaccountconf_mutable ANX_Token
"
$ANX_Token
"
else
_err
"You didn't specify a ANEXIA Engine API token."
return
1
fi
_debug
"First detect the root zone"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"invalid domain"
return
1
fi
# Always add records, wildcard need two records with the same name
_anx_rest POST
"zone.json/
${
_domain
}
/records"
"{
\"
name
\"
:
\"
$_sub_domain
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
rdata
\"
:
\"
$txtvalue
\"
}"
if
_contains
"
$response
"
"
$txtvalue
"
;
then
return
0
else
return
1
fi
}
dns_anx_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
_info
"Using ANX CDNS API"
ANX_Token
=
"
${
ANX_Token
:-
$(
_readaccountconf_mutable ANX_Token
)
}
"
_debug fulldomain
"
$fulldomain
"
_debug txtvalue
"
$txtvalue
"
_debug
"First detect the root zone"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"invalid domain"
return
1
fi
_get_record_id
if
_is_uuid
"
$_record_id
"
;
then
if
!
_anx_rest DELETE
"zone.json/
${
_domain
}
/records/
$_record_id
"
;
then
_err
"Delete record"
return
1
fi
else
_info
"No record found."
fi
echo
"
$response
"
|
tr
-d
" "
|
grep
\"
status
\"
:
\"
OK
\"
>
/dev/null
}
#################### Private functions below ##################################
_is_uuid
()
{
pattern
=
'^\{?[A-Z0-9a-z]{8}-[A-Z0-9a-z]{4}-[A-Z0-9a-z]{4}-[A-Z0-9a-z]{4}-[A-Z0-9a-z]{12}\}?$'
if
echo
"
$1
"
| _egrep_o
"
$pattern
"
>
/dev/null
;
then
return
0
fi
return
1
}
_get_record_id
()
{
_debug subdomain
"
$_sub_domain
"
_debug domain
"
$_domain
"
if
_anx_rest GET
"zone.json/
${
_domain
}
/records?name=
$_sub_domain
&type=TXT"
;
then
_debug response
"
$response
"
if
_contains
"
$response
"
"
\"
name
\"
:
\"
$_sub_domain
\"
"
>
/dev/null
;
then
_record_id
=
$(
printf
"%s
\n
"
"
$response
"
| _egrep_o
"
\[
.
\"
identifier
\"
:
\"
[^
\"
]*
\"
"
|
head
-n
1 |
cut
-d
:
-f
2 |
tr
-d
\"
)
else
_record_id
=
''
fi
else
_err
"Search existing record"
fi
}
_anx_rest
()
{
m
=
$1
ep
=
"
$2
"
data
=
"
$3
"
_debug
"
$ep
"
export
_H1
=
"Content-Type: application/json"
export
_H2
=
"Authorization: Token
$ANX_Token
"
if
[
"
$m
"
!=
"GET"
]
;
then
_debug data
"
$data
"
response
=
"
$(
_post
"
$data
"
"
${
ANX_API
}
/
$ep
"
""
"
$m
"
)
"
else
response
=
"
$(
_get
"
${
ANX_API
}
/
$ep
"
)
"
fi
# shellcheck disable=SC2181
if
[
"
$?
"
!=
"0"
]
;
then
_err
"error
$ep
"
return
1
fi
_debug response
"
$response
"
return
0
}
_get_root
()
{
domain
=
$1
i
=
1
p
=
1
_anx_rest GET
"zone.json"
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
}
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