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
51fc8532
Unverified
Commit
51fc8532
authored
Feb 11, 2020
by
neil
Committed by
GitHub
Feb 11, 2020
Browse files
Merge pull request #1341 from phlegx/all-inkl-kasserver-dns-script
All inkl kasserver dns script
parents
3cdc523d
7a30cb9d
Changes
1
Show whitespace changes
Inline
Side-by-side
dnsapi/dns_kas.sh
0 → 100755
View file @
51fc8532
#!/usr/bin/env sh
########################################################################
# All-inkl Kasserver hook script for acme.sh
#
# Environment variables:
#
# - $KAS_Login (Kasserver API login name)
# - $KAS_Authtype (Kasserver API auth type. Default: sha1)
# - $KAS_Authdata (Kasserver API auth data.)
#
# Author: Martin Kammerlander, Phlegx Systems OG <martin.kammerlander@phlegx.com>
# Updated by: Marc-Oliver Lange <git@die-lang.es>
# Credits: Inspired by dns_he.sh. Thanks a lot man!
# Git repo: https://github.com/phlegx/acme.sh
# TODO: Better Error handling
########################################################################
KAS_Api
=
"https://kasapi.kasserver.com/dokumentation/formular.php"
######## Public functions #####################
dns_kas_add
()
{
_fulldomain
=
$1
_txtvalue
=
$2
_info
"Using DNS-01 All-inkl/Kasserver hook"
_info
"Adding
$_fulldomain
DNS TXT entry on All-inkl/Kasserver"
_info
"Check and Save Props"
_check_and_save
_info
"Checking Zone and Record_Name"
_get_zone_and_record_name
"
$_fulldomain
"
_info
"Getting Record ID"
_get_record_id
_info
"Creating TXT DNS record"
params
=
"?kas_login=
$KAS_Login
"
params
=
"
$params
&kas_auth_type=
$KAS_Authtype
"
params
=
"
$params
&kas_auth_data=
$KAS_Authdata
"
params
=
"
$params
&var1=record_name"
params
=
"
$params
&wert1=
$_record_name
"
params
=
"
$params
&var2=record_type"
params
=
"
$params
&wert2=TXT"
params
=
"
$params
&var3=record_data"
params
=
"
$params
&wert3=
$_txtvalue
"
params
=
"
$params
&var4=record_aux"
params
=
"
$params
&wert4=0"
params
=
"
$params
&kas_action=add_dns_settings"
params
=
"
$params
&var5=zone_host"
params
=
"
$params
&wert5=
$_zone
"
_debug2
"Wait for 10 seconds by default before calling KAS API."
_sleep 10
response
=
"
$(
_get
"
$KAS_Api$params
"
)
"
_debug2
"response"
"
$response
"
if
!
_contains
"
$response
"
"TRUE"
;
then
_err
"An unkown error occurred, please check manually."
return
1
fi
return
0
}
dns_kas_rm
()
{
_fulldomain
=
$1
_txtvalue
=
$2
_info
"Using DNS-01 All-inkl/Kasserver hook"
_info
"Cleaning up after All-inkl/Kasserver hook"
_info
"Removing
$_fulldomain
DNS TXT entry on All-inkl/Kasserver"
_info
"Check and Save Props"
_check_and_save
_info
"Checking Zone and Record_Name"
_get_zone_and_record_name
"
$_fulldomain
"
_info
"Getting Record ID"
_get_record_id
# If there is a record_id, delete the entry
if
[
-n
"
$_record_id
"
]
;
then
params
=
"?kas_login=
$KAS_Login
"
params
=
"
$params
&kas_auth_type=
$KAS_Authtype
"
params
=
"
$params
&kas_auth_data=
$KAS_Authdata
"
params
=
"
$params
&kas_action=delete_dns_settings"
for
i
in
$_record_id
;
do
params2
=
"
$params
&var1=record_id"
params2
=
"
$params2
&wert1=
$i
"
_debug2
"Wait for 10 seconds by default before calling KAS API."
_sleep 10
response
=
"
$(
_get
"
$KAS_Api$params2
"
)
"
_debug2
"response"
"
$response
"
if
!
_contains
"
$response
"
"TRUE"
;
then
_err
"Either the txt record is not found or another error occurred, please check manually."
return
1
fi
done
else
# Cannot delete or unkown error
_err
"No record_id found that can be deleted. Please check manually."
return
1
fi
return
0
}
########################## PRIVATE FUNCTIONS ###########################
# Checks for the ENV variables and saves them
_check_and_save
()
{
KAS_Login
=
"
${
KAS_Login
:-
$(
_readaccountconf_mutable KAS_Login
)
}
"
KAS_Authtype
=
"
${
KAS_Authtype
:-
$(
_readaccountconf_mutable KAS_Authtype
)
}
"
KAS_Authdata
=
"
${
KAS_Authdata
:-
$(
_readaccountconf_mutable KAS_Authdata
)
}
"
if
[
-z
"
$KAS_Login
"
]
||
[
-z
"
$KAS_Authtype
"
]
||
[
-z
"
$KAS_Authdata
"
]
;
then
KAS_Login
=
KAS_Authtype
=
KAS_Authdata
=
_err
"No auth details provided. Please set user credentials using the
\$
KAS_Login,
\$
KAS_Authtype, and
\$
KAS_Authdata environment variables."
return
1
fi
_saveaccountconf_mutable KAS_Login
"
$KAS_Login
"
_saveaccountconf_mutable KAS_Authtype
"
$KAS_Authtype
"
_saveaccountconf_mutable KAS_Authdata
"
$KAS_Authdata
"
return
0
}
# Gets back the base domain/zone and record name.
# See: https://github.com/Neilpang/acme.sh/wiki/DNS-API-Dev-Guide
_get_zone_and_record_name
()
{
params
=
"?kas_login=
$KAS_Login
"
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"
_debug2
"Wait for 10 seconds by default before calling KAS API."
_sleep 10
response
=
"
$(
_get
"
$KAS_Api$params
"
)
"
_debug2
"response"
"
$response
"
_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"
)
"
_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
}
# Retrieve the DNS record ID
_get_record_id
()
{
params
=
"?kas_login=
$KAS_Login
"
params
=
"
$params
&kas_auth_type=
$KAS_Authtype
"
params
=
"
$params
&kas_auth_data=
$KAS_Authdata
"
params
=
"
$params
&kas_action=get_dns_settings"
params
=
"
$params
&var1=zone_host"
params
=
"
$params
&wert1=
$_zone
"
_debug2
"Wait for 10 seconds by default before calling KAS API."
_sleep 10
response
=
"
$(
_get
"
$KAS_Api$params
"
)
"
_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"
)
"
_debug2 _record_id
"
$_record_id
"
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