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
58cfc0d0
Unverified
Commit
58cfc0d0
authored
Jan 14, 2020
by
Phlegx Systems OG
Committed by
GitHub
Jan 14, 2020
Browse files
Merge pull request #4 from Marco4223/Fix-issues-and-reslolve-zone-and-record-name
Update dns_kas.sh
parents
239d5342
8dd1df71
Changes
1
Hide whitespace changes
Inline
Side-by-side
dnsapi/dns_kas.sh
View file @
58cfc0d0
...
@@ -12,22 +12,19 @@
...
@@ -12,22 +12,19 @@
# Credits: Inspired by dns_he.sh. Thanks a lot man!
# Credits: Inspired by dns_he.sh. Thanks a lot man!
# Git repo: https://github.com/phlegx/acme.sh
# Git repo: https://github.com/phlegx/acme.sh
# TODO: Better Error handling
# TODO: Better Error handling
# TODO: Does not work with Domains that have double endings like i.e. 'co.uk'
########################################################################
# => Get all root zones and compare once the provider offers that.
KAS_Api
=
"https://kasapi.kasserver.com/dokumentation/formular.php"
KAS_Api
=
"https://kasapi.kasserver.com/dokumentation/formular.php"
######## Public functions #####################
######## Public functions #####################
dns_kas_add
(){
dns_kas_add
()
{
_fulldomain
=
$1
_fulldomain
=
$1
_txtvalue
=
$2
_txtvalue
=
$2
_info
"Using DNS-01 All-inkl/Kasserver hook"
_info
"Using DNS-01 All-inkl/Kasserver hook"
_info
"Adding or Updating
$_fulldomain
DNS TXT entry on All-inkl/Kasserver"
_info
"Adding or Updating
$_fulldomain
DNS TXT entry on All-inkl/Kasserver"
_info
"Check and Save Props"
_check_and_save
_check_and_save
_get_zone
"
$_fulldomain
"
_info
"Checking Zone and Record_Name"
_get_record_name
"
$_fulldomain
"
_get_zone_and_record_name
"
$_fulldomain
"
_info
"Getting Record ID"
_get_record_id
_get_record_id
_info
"Creating TXT DNS record"
_info
"Creating TXT DNS record"
...
@@ -63,12 +60,14 @@ dns_kas_rm() {
...
@@ -63,12 +60,14 @@ dns_kas_rm() {
_info
"Using DNS-01 All-inkl/Kasserver hook"
_info
"Using DNS-01 All-inkl/Kasserver hook"
_info
"Cleaning up after All-inkl/Kasserver hook"
_info
"Cleaning up after All-inkl/Kasserver hook"
_info
"Removing
$_fulldomain
DNS TXT entry on All-inkl/Kasserver"
_info
"Removing
$_fulldomain
DNS TXT entry on All-inkl/Kasserver"
_info
"Check and Save Props"
_check_and_save
_check_and_save
_get_zone
"
$_fulldomain
"
_info
"Checking Zone and Record_Name"
_get_record_name
"
$_fulldomain
"
_get_zone_and_record_name
"
$_fulldomain
"
_info
"Getting Record ID"
_get_record_id
_get_record_id
# If there is a record_id, delete the entry
# If there is a record_id, delete the entry
if
[
-n
"
$_record_id
"
]
;
then
if
[
-n
"
$_record_id
"
]
;
then
params
=
"?kas_login=
$KAS_Login
"
params
=
"?kas_login=
$KAS_Login
"
...
@@ -116,20 +115,36 @@ _check_and_save() {
...
@@ -116,20 +115,36 @@ _check_and_save() {
return
0
return
0
}
}
# Gets back the base domain/zone.
# Gets back the base domain/zone and record name.
# TODO Get a list of all possible root zones and compare (Currently not possible via provider)
# See: https://github.com/Neilpang/acme.sh/wiki/DNS-API-Dev-Guide
# See: https://github.com/Neilpang/acme.sh/wiki/DNS-API-Dev-Guide
_get_zone
()
{
_get_zone_and_record_name
()
{
_zone
=
$(
echo
"
$1
"
| rev |
cut
-d
.
-f1-2
| rev
)
.
return
0
params
=
"?kas_login=
$KAS_Login
"
}
params
=
"
$params
&kas_auth_type=
$KAS_Authtype
"
params
=
"
$params
&kas_auth_data=
$KAS_Authdata
"
params
=
"
$params
&kas_action=get_domains"
# Removes the domain/subdomain from the entry since kasserver
_debug2
"Wait for 10 seconds by default before calling KAS API."
# cannot handle _fulldomain
sleep
10
# TODO Get a list of all possible root zones and compare (Currently not possible via provider)
response
=
"
$(
_get
"
$KAS_Api$params
"
)
"
# See: https://github.com/Neilpang/acme.sh/wiki/DNS-API-Dev-Guide
_debug2
"response"
"
$response
"
_get_record_name
()
{
_zonen
=
"
$(
echo
"
$response
"
|
tr
-d
"
\n\r
"
|
tr
-d
" "
|
tr
'[]'
'<>'
|
sed
"s/=>Array/
\n
=> Array/g"
|
tr
' '
'\n'
|
grep
"domain_name"
|
tr
'<'
'\n'
|
grep
"domain_name"
|
sed
"s/domain_name>=>//g"
)
"
_record_name
=
$(
echo
"
$1
"
| rev |
cut
-d
"."
-f3-
| rev
)
_domain
=
"
$1
"
_temp_domain
=
"
$(
echo
"
$1
"
|
sed
's/\.$//'
)
"
_rootzone
=
"
$_domain
"
for
i
in
$_zonen
;
do
l1
=
${#
_rootzone
}
l2
=
${#
i
}
if
_endswith
"
$_domain
"
"
$i
"
&&
[
"
$l1
"
-ge
"
$l2
"
]
;
then
_rootzone
=
"
$i
"
fi
done
_zone
=
"
${
_rootzone
}
."
_temp_record_name
=
"
$(
echo
"
$_temp_domain
"
|
sed
"s/"
$_rootzone
"//g"
)
"
_record_name
=
"
$(
echo
"
$_temp_record_name
"
|
sed
's/\.$//'
)
"
_debug2
"Zone:"
"
$_zone
"
_debug2
"Domain:"
"
$_domain
"
_debug2
"Record_Name:"
"
$_record_name
"
return
0
return
0
}
}
...
@@ -146,8 +161,7 @@ _get_record_id() {
...
@@ -146,8 +161,7 @@ _get_record_id() {
sleep
10
sleep
10
response
=
"
$(
_get
"
$KAS_Api$params
"
)
"
response
=
"
$(
_get
"
$KAS_Api$params
"
)
"
_debug2
"response"
"
$response
"
_debug2
"response"
"
$response
"
_record_id
=
"
$(
echo
"
$response
"
|
tr
-d
"
\n\r
"
|
tr
-d
" "
|
tr
'[]'
'<>'
|
sed
"s/=>Array/
\n
=> Array/g"
|
tr
' '
'\n'
|
grep
"=>
$_record_name
<"
|
grep
'>TXT<'
|
tr
'<'
'\n'
|
grep
record_id |
sed
"s/record_id>=>//g"
)
"
_record_id
=
"
$(
echo
"
$response
"
|
tr
-d
"
\n\r
"
|
sed
"s/=> Array/
\n
=> Array/g"
|
tr
-d
" "
|
tr
'[]'
'<>'
|
grep
"=>
$_record_name
<"
|
grep
'>TXT<'
|
tr
'<'
'\n'
|
grep
record_id |
cut
-d
'>'
-f
3
)
"
_debug2 _record_id
"
$_record_id
"
_debug2 _record_id
"
$_record_id
"
return
0
return
0
}
}
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