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
68c533f7
Unverified
Commit
68c533f7
authored
Aug 15, 2022
by
Awalon
Committed by
GitHub
Aug 15, 2022
Browse files
Merge branch 'acmesh-official:master' into master
parents
2d4aa7ff
eb27013f
Changes
8
Hide whitespace changes
Inline
Side-by-side
.github/workflows/DNS.yml
View file @
68c533f7
...
...
@@ -54,6 +54,8 @@ jobs:
CASE
:
le_test_dnsapi
TEST_LOCAL
:
1
DEBUG
:
${{ secrets.DEBUG }}
http_proxy
:
${{ secrets.http_proxy }}
https_proxy
:
${{ secrets.https_proxy }}
steps
:
-
uses
:
actions/checkout@v2
-
name
:
Clone acmetest
...
...
@@ -77,10 +79,20 @@ jobs:
echo "${{ secrets.TokenName5}}=${{ secrets.TokenValue5}}" >> docker.env
fi
echo "TEST_DNS_NO_WILDCARD" >> docker.env
echo "TEST_DNS_SLEEP" >> docker.env
echo "http_proxy" >> docker.env
echo "https_proxy" >> docker.env
-
name
:
Run acmetest
run
:
cd ../acmetest && ./rundocker.sh testall
-
uses
:
actions/upload-artifact@v1
if
:
failure()
with
:
name
:
Docker-logs
path
:
|
../acmetest/*.log
../acmetest/logs
MacOS
:
runs-on
:
macos-latest
needs
:
Docker
...
...
@@ -93,6 +105,8 @@ jobs:
CASE
:
le_test_dnsapi
TEST_LOCAL
:
1
DEBUG
:
${{ secrets.DEBUG }}
http_proxy
:
${{ secrets.http_proxy }}
https_proxy
:
${{ secrets.https_proxy }}
steps
:
-
uses
:
actions/checkout@v2
-
name
:
Install tools
...
...
@@ -119,6 +133,15 @@ jobs:
cd ../acmetest
./letest.sh
-
uses
:
actions/upload-artifact@v1
if
:
failure()
with
:
name
:
MacOS-logs
path
:
|
../acmetest/*.log
Windows
:
runs-on
:
windows-latest
needs
:
MacOS
...
...
@@ -131,6 +154,8 @@ jobs:
CASE
:
le_test_dnsapi
TEST_LOCAL
:
1
DEBUG
:
${{ secrets.DEBUG }}
http_proxy
:
${{ secrets.http_proxy }}
https_proxy
:
${{ secrets.https_proxy }}
steps
:
-
name
:
Set git to use LF
run
:
|
...
...
@@ -172,6 +197,13 @@ jobs:
cd ../acmetest
./letest.sh
-
uses
:
actions/upload-artifact@v1
if
:
failure()
with
:
name
:
Windows-logs
path
:
|
../acmetest/*.log
FreeBSD
:
runs-on
:
macos-12
needs
:
Windows
...
...
@@ -184,13 +216,15 @@ jobs:
CASE
:
le_test_dnsapi
TEST_LOCAL
:
1
DEBUG
:
${{ secrets.DEBUG }}
http_proxy
:
${{ secrets.http_proxy }}
https_proxy
:
${{ secrets.https_proxy }}
steps
:
-
uses
:
actions/checkout@v2
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
uses
:
vmactions/freebsd-vm@v0
with
:
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
http_proxy
https_proxy
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
prepare
:
pkg install -y socat curl
usesh
:
true
copyback
:
false
...
...
@@ -213,6 +247,14 @@ jobs:
cd ../acmetest
./letest.sh
-
uses
:
actions/upload-artifact@v1
if
:
failure()
with
:
name
:
FreeBSD-logs
path
:
|
../acmetest/*.log
Solaris
:
runs-on
:
macos-12
needs
:
FreeBSD
...
...
@@ -225,13 +267,15 @@ jobs:
CASE
:
le_test_dnsapi
TEST_LOCAL
:
1
DEBUG
:
${{ secrets.DEBUG }}
http_proxy
:
${{ secrets.http_proxy }}
https_proxy
:
${{ secrets.https_proxy }}
steps
:
-
uses
:
actions/checkout@v2
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
uses
:
vmactions/solaris-vm@v0
with
:
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
http_proxy
https_proxy
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
copyback
:
false
prepare
:
pkgutil -y -i socat
run
:
|
...
...
@@ -255,6 +299,13 @@ jobs:
cd ../acmetest
./letest.sh
-
uses
:
actions/upload-artifact@v1
if
:
failure()
with
:
name
:
Solaris-logs
path
:
|
../acmetest/*.log
OpenBSD
:
runs-on
:
macos-12
...
...
@@ -268,13 +319,15 @@ jobs:
CASE
:
le_test_dnsapi
TEST_LOCAL
:
1
DEBUG
:
${{ secrets.DEBUG }}
http_proxy
:
${{ secrets.http_proxy }}
https_proxy
:
${{ secrets.https_proxy }}
steps
:
-
uses
:
actions/checkout@v2
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
uses
:
vmactions/openbsd-vm@v0
with
:
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
http_proxy
https_proxy
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
prepare
:
pkg_add socat curl
usesh
:
true
copyback
:
false
...
...
@@ -297,6 +350,14 @@ jobs:
cd ../acmetest
./letest.sh
-
uses
:
actions/upload-artifact@v1
if
:
failure()
with
:
name
:
OpenBSD-logs
path
:
|
../acmetest/*.log
NetBSD
:
runs-on
:
macos-12
needs
:
OpenBSD
...
...
@@ -309,13 +370,15 @@ jobs:
CASE
:
le_test_dnsapi
TEST_LOCAL
:
1
DEBUG
:
${{ secrets.DEBUG }}
http_proxy
:
${{ secrets.http_proxy }}
https_proxy
:
${{ secrets.https_proxy }}
steps
:
-
uses
:
actions/checkout@v2
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
uses
:
vmactions/netbsd-vm@v0
with
:
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
http_proxy
https_proxy
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
prepare
:
|
pkg_add curl socat
usesh
:
true
...
...
@@ -338,7 +401,15 @@ jobs:
fi
cd ../acmetest
./letest.sh
-
uses
:
actions/upload-artifact@v1
if
:
failure()
with
:
name
:
NetBSD-logs
path
:
|
../acmetest/*.log
DragonFlyBSD
:
runs-on
:
macos-12
needs
:
NetBSD
...
...
@@ -351,13 +422,15 @@ jobs:
CASE
:
le_test_dnsapi
TEST_LOCAL
:
1
DEBUG
:
${{ secrets.DEBUG }}
http_proxy
:
${{ secrets.http_proxy }}
https_proxy
:
${{ secrets.https_proxy }}
steps
:
-
uses
:
actions/checkout@v2
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
uses
:
vmactions/dragonflybsd-vm@v0
with
:
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
envs
:
'
TEST_DNS
TestingDomain
TEST_DNS_NO_WILDCARD
TEST_DNS_NO_SUBDOMAIN
TEST_DNS_SLEEP
CASE
TEST_LOCAL
DEBUG
http_proxy
https_proxy
${{
secrets.TokenName1}}
${{
secrets.TokenName2}}
${{
secrets.TokenName3}}
${{
secrets.TokenName4}}
${{
secrets.TokenName5}}'
prepare
:
|
pkg install -y curl socat
usesh
:
true
...
...
@@ -381,3 +454,14 @@ jobs:
cd ../acmetest
./letest.sh
-
uses
:
actions/upload-artifact@v1
if
:
failure()
with
:
name
:
DragonFlyBSD-logs
path
:
|
../acmetest/*.log
.github/workflows/PebbleStrict.yml
View file @
68c533f7
...
...
@@ -41,8 +41,8 @@ jobs:
PebbleStrict_IPCert
:
runs-on
:
ubuntu-latest
env
:
TestingDomain
:
1
0.30.50.1
ACME_DIRECTORY
:
https://localhost:14000/dir
TestingDomain
:
1
.23.45.67
TEST_ACME_Server
:
https://localhost:14000/dir
HTTPS_INSECURE
:
1
Le_HTTPPort
:
5002
Le_TLSPort
:
5001
...
...
@@ -55,7 +55,10 @@ jobs:
-
name
:
Install tools
run
:
sudo apt-get install -y socat
-
name
:
Run Pebble
run
:
cd .. && curl https://raw.githubusercontent.com/letsencrypt/pebble/master/docker-compose.yml >docker-compose.yml && docker-compose up -d
run
:
|
docker run --rm -itd --name=pebble \
-e PEBBLE_VA_ALWAYS_VALID=1 \
-p 14000:14000 -p 15000:15000 letsencrypt/pebble:latest pebble -config /test/config/pebble-config.json -strict
-
name
:
Clone acmetest
run
:
cd .. && git clone https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
-
name
:
Run acmetest
...
...
.github/workflows/issue.yml
View file @
68c533f7
...
...
@@ -14,5 +14,11 @@ jobs:
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'Please provode the log with `--debug 2` if this is a bug report.'
body: '
Please upgrade to the latest code and try again first. Maybe it's already fixed.
`acme.sh --upgrade`
If it's still not working, please provode the log with `--debug 2`, otherwise, nobody can help you.'
})
\ No newline at end of file
.github/workflows/pr_dns.yml
View file @
68c533f7
...
...
@@ -22,6 +22,9 @@ jobs:
owner: context.repo.owner,
repo: context.repo.repo,
body: `**Welcome**
Please make sure you're read our [DNS API Dev Guide](../wiki/DNS-API-Dev-Guide) and we look forward to reviewing your Pull request shortly ✨`
Please make sure you're read our [DNS API Dev Guide](../wiki/DNS-API-Dev-Guide) and [DNS-API-Test](../wiki/DNS-API-Test).
Then reply on this message, otherwise, your code will not be reviewed or merged.
We look forward to reviewing your Pull request shortly ✨
`
})
acme.sh
View file @
68c533f7
...
...
@@ -1186,7 +1186,7 @@ _createkey() {
_is_idn
()
{
_is_idn_d
=
"
$1
"
_debug2 _is_idn_d
"
$_is_idn_d
"
_idn_temp
=
$(
printf
"%s"
"
$_is_idn_d
"
|
tr
-d
[
0-9] |
tr
-d
[
a-z] |
tr
-d
[
A-Z] |
tr
-d
'*.,-_'
)
_idn_temp
=
$(
printf
"%s"
"
$_is_idn_d
"
|
tr
-d
'
[0-9]
'
|
tr
-d
'
[a-z]
'
|
tr
-d
'
[A-Z]
'
|
tr
-d
'*.,-_'
)
_debug2 _idn_temp
"
$_idn_temp
"
[
"
$_idn_temp
"
]
}
...
...
@@ -4195,7 +4195,7 @@ _match_issuer() {
_isIPv4
()
{
for
seg
in
$(
echo
"
$1
"
|
tr
'.'
' '
)
;
do
_debug2 seg
"
$seg
"
if
[
"
$(
echo
"
$seg
"
|
tr
-d
[
0-9]
)
"
]
;
then
if
[
"
$(
echo
"
$seg
"
|
tr
-d
'
[0-9]
'
)
"
]
;
then
#not all number
return
1
fi
...
...
dnsapi/dns_kas.sh
View file @
68c533f7
...
...
@@ -14,39 +14,43 @@
# Git repo: https://github.com/phlegx/acme.sh
# TODO: Better Error handling
########################################################################
KAS_Api
=
"https://kasapi.kasserver.com/dokumentation/formular.php"
KAS_Api
=
"https://kasapi.kasserver.com/soap/KasApi.php"
KAS_Auth
=
"https://kasapi.kasserver.com/soap/KasAuth.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"
_info
"### -> Using DNS-01 All-inkl/Kasserver hook"
_info
"### -> Adding
$_fulldomain
DNS TXT entry on All-inkl/Kasserver"
_info
"### -> Retriving Credential Token"
_get_credential_token
_info
"### -> Check and Save Props"
_check_and_save
_info
"Checking Zone and Record_Name"
_info
"### -> Checking Zone and Record_Name"
_get_zone_and_record_name
"
$_fulldomain
"
_info
"Getting Record ID"
_info
"### -> Checking for existing Record entries"
_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 there is a record_id, delete the entry
if
[
-n
"
$_record_id
"
]
;
then
_info
"Existing records found. Now deleting old entries"
for
i
in
$_record_id
;
do
_delete_RecordByID
"
$i
"
done
else
_info
"No record found."
fi
_info
"### -> Creating TXT DNS record"
action
=
"add_dns_settings"
kasReqParam
=
"{
\"
record_name
\"
:
\"
$_record_name
\"
,
\"
record_type
\"
:
\"
TXT
\"
,
\"
record_data
\"
:
\"
$_txtvalue
\"
,
\"
record_aux
\"
:
\"
0
\"
,
\"
zone_host
\"
:
\"
$_zone
\"
}"
response
=
"
$(
_callAPI
"
$action
"
"
$kasReqParam
"
)
"
_debug2
"Response"
"
$response
"
if
!
_contains
"
$response
"
"TRUE"
;
then
_err
"An unkown error occurred, please check manually."
...
...
@@ -58,45 +62,46 @@ dns_kas_add() {
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"
_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
"### -> Retriving Credential Token"
_get_credential_token
_info
"### -> Check and Save Props"
_check_and_save
_info
"Checking Zone and Record_Name"
_info
"### -> Checking Zone and Record_Name"
_get_zone_and_record_name
"
$_fulldomain
"
_info
"Getting Record ID"
_info
"### -> Getting Record ID"
_get_record_id
_info
"### -> Removing entries with ID:
$_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
_delete_RecordByID
"
$i
"
done
else
# Cannot delete or unkown error
_err
"No record_id found that can be deleted. Please check manually."
return
1
_info
"No record_id found that can be deleted. Please check manually."
fi
return
0
}
########################## PRIVATE FUNCTIONS ###########################
# Delete Record ID
_delete_RecordByID
()
{
recId
=
$1
action
=
"delete_dns_settings"
kasReqParam
=
"{
\"
record_id
\"
:
\"
$recId
\"
}"
response
=
"
$(
_callAPI
"
$action
"
"
$kasReqParam
"
)
"
_debug2
"Response"
"
$response
"
if
!
_contains
"
$response
"
"TRUE"
;
then
_info
"Either the txt record is not found or another error occurred, please check manually."
fi
}
# Checks for the ENV variables and saves them
_check_and_save
()
{
KAS_Login
=
"
${
KAS_Login
:-
$(
_readaccountconf_mutable KAS_Login
)
}
"
...
...
@@ -119,50 +124,77 @@ _check_and_save() {
# 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
}
action
=
"get_domains"
kasReqParam
=
"[]"
response
=
"
$(
_callAPI
"
$action
"
"
$kasReqParam
"
)
"
_debug2
"Response"
"
$response
"
zonen
=
"
$(
echo
"
$response
"
|
sed
's/<item>/\n/g'
|
sed
-r
's/(.*<key xsi:type="xsd:string">domain_name<\/key><value xsi:type="xsd:string">)(.*)(<\/value.*)/\2/'
|
sed
'/^</d'
)
"
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
"
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/\.$//'
)
"
_debug
2
"Zone:"
"
$_zone
"
_debug
2
"Domain:"
"
$
_
domain
"
_debug
2
"Record_Name:"
"
$_record_name
"
_zone
=
"
${
rootzone
}
."
temp_record_name
=
"
$(
echo
"
$temp_domain
"
|
sed
"s/
$rootzone
//g"
)
"
_record_name
=
"
$(
echo
"
$temp_record_name
"
|
sed
's/\.$//'
)
"
_debug
"Zone:"
"
$_zone
"
_debug
"Domain:"
"
$domain
"
_debug
"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."
action
=
"get_dns_settings"
kasReqParam
=
"{
\"
zone_host
\"
:
\"
$_zone
\"
,
\"
nameserver
\"
:
\"
ns5.kasserver.com
\"
}"
response
=
"
$(
_callAPI
"
$action
"
"
$kasReqParam
"
)
"
_debug2
"Response"
"
$response
"
_record_id
=
"
$(
echo
"
$response
"
|
sed
's/<item xsi:type="ns2:Map">/\n/g'
|
sed
-n
-e
"/^.*
$_record_name
.*/Ip"
|
sed
-n
-e
"/^.*
$_txtvalue
.*/Ip"
|
sed
-r
's/(.*record_id<\/key><value xsi:type="xsd:string">)([0-9]+)(<\/value.*)/\2/'
)
"
_debug
"Record Id: "
"
$_record_id
"
return
0
}
# Retrieve credential token
_get_credential_token
()
{
data
=
"<SOAP-ENV:Envelope xmlns:SOAP-ENV=
\"
http://schemas.xmlsoap.org/soap/envelope/
\"
xmlns:ns1=
\"
urn:xmethodsKasApiAuthentication
\"
xmlns:xsd=
\"
http://www.w3.org/2001/XMLSchema
\"
xmlns:xsi=
\"
http://www.w3.org/2001/XMLSchema-instance
\"
xmlns:SOAP-ENC=
\"
http://schemas.xmlsoap.org/soap/encoding/
\"
SOAP-ENV:encodingStyle=
\"
http://schemas.xmlsoap.org/soap/encoding/
\"
><SOAP-ENV:Body><ns1:KasAuth>"
data
=
"
$data
<Params xsi:type=
\"
xsd:string
\"
>{
\"
kas_login
\"
:
\"
$KAS_Login
\"
,
\"
kas_auth_type
\"
:
\"
$KAS_Authtype
\"
,
\"
kas_auth_data
\"
:
\"
$KAS_Authdata
\"
,
\"
session_lifetime
\"
:600,
\"
session_update_lifetime
\"
:
\"
Y
\"
,
\"
session_2fa
\"
:123456}</Params>"
data
=
"
$data
</ns1:KasAuth></SOAP-ENV:Body></SOAP-ENV:Envelope>"
_debug
"Be frindly and wait 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
"
contentType
=
"text/xml"
export
_H1
=
"SOAPAction: ns1:KasAuth"
response
=
"
$(
_post
"
$data
"
"
$KAS_Auth
"
""
"POST"
"
$contentType
"
)
"
_debug2
"Response"
"
$response
"
_credential_token
=
"
$(
echo
"
$response
"
|
tr
'\n'
' '
|
sed
's/.*return xsi:type="xsd:string">\(.*\)<\/return>/\1/'
|
sed
's/<\/ns1:KasAuthResponse\(.*\)Envelope>.*//'
)
"
_debug
"Credential Token: "
"
$_credential_token
"
return
0
}
_callAPI
()
{
kasaction
=
$1
kasReqParams
=
$2
baseParam
=
"<Params xsi:type=
\"
xsd:string
\"
>{
\"
kas_login
\"
:
\"
$KAS_Login
\"
,
\"
kas_auth_type
\"
:
\"
session
\"
,
\"
kas_auth_data
\"
:
\"
$_credential_token
\"
,
\"
kas_action
\"
:
\"
$kasaction
\"
,
\"
KasRequestParams
\"
:
$kasReqParams
"
baseParamClosing
=
"}</Params>"
data
=
"<SOAP-ENV:Envelope xmlns:SOAP-ENV=
\"
http://schemas.xmlsoap.org/soap/envelope/
\"
xmlns:ns1=
\"
urn:xmethodsKasApi
\"
xmlns:xsd=
\"
http://www.w3.org/2001/XMLSchema
\"
xmlns:xsi=
\"
http://www.w3.org/2001/XMLSchema-instance
\"
xmlns:SOAP-ENC=
\"
http://schemas.xmlsoap.org/soap/encoding/
\"
SOAP-ENV:encodingStyle=
\"
http://schemas.xmlsoap.org/soap/encoding/
\"
><SOAP-ENV:Body><ns1:KasApi>"
data
=
"
$data$baseParam$baseParamClosing
"
data
=
"
$data
</ns1:KasApi></SOAP-ENV:Body></SOAP-ENV:Envelope>"
_debug2
"Request"
"
$data
"
_debug
"Be frindly and wait 10 seconds by default before calling KAS API."
_sleep 10
contentType
=
"text/xml"
export
_H1
=
"SOAPAction: ns1:KasApi"
response
=
"
$(
_post
"
$data
"
"
$KAS_Api
"
""
"POST"
"
$contentType
"
)
"
_debug2
"Response"
"
$response
"
echo
"
$response
"
}
dnsapi/dns_ovh.sh
View file @
68c533f7
...
...
@@ -92,7 +92,7 @@ _initAuth() {
if
[
"
$OVH_AK
"
!=
"
$(
_readaccountconf OVH_AK
)
"
]
;
then
_info
"It seems that your ovh key is changed, let's clear consumer key first."
_clearaccountconf OVH_CK
_clearaccountconf
_mutable
OVH_CK
fi
_saveaccountconf_mutable OVH_AK
"
$OVH_AK
"
_saveaccountconf_mutable OVH_AS
"
$OVH_AS
"
...
...
@@ -118,14 +118,14 @@ _initAuth() {
#return and wait for retry.
return
1
fi
_saveaccountconf OVH_CK
"
$OVH_CK
"
_saveaccountconf
_mutable
OVH_CK
"
$OVH_CK
"
_info
"Checking authentication"
if
!
_ovh_rest GET
"domain"
||
_contains
"
$response
"
"INVALID_CREDENTIAL"
||
_contains
"
$response
"
"NOT_CREDENTIAL"
;
then
_err
"The consumer key is invalid:
$OVH_CK
"
_err
"Please retry to create a new one."
_clearaccountconf OVH_CK
_clearaccountconf
_mutable
OVH_CK
return
1
fi
_info
"Consumer key is ok."
...
...
@@ -236,7 +236,7 @@ _ovh_authentication() {
_secure_debug consumerKey
"
$consumerKey
"
OVH_CK
=
"
$consumerKey
"
_saveaccountconf_mutable OVH_CK
"
$OVH_CK
"
_info
"Please open this link to do authentication:
$(
__green
"
$validationUrl
"
)
"
_info
"Here is a guide for you:
$(
__green
"
$wiki
"
)
"
...
...
dnsapi/dns_regru.sh
View file @
68c533f7
...
...
@@ -92,10 +92,10 @@ _get_root() {
domains_list
=
$(
echo
"
${
response
}
"
|
grep
dname |
sed
-r
"s/.*dname=
\"
([^
\"
]+)
\"
.*/
\\
1/g"
)
for
ITEM
in
${
domains_list
}
;
do
IDN_ITEM
=
"
$(
_idn
"
${
ITEM
}
"
)
"
IDN_ITEM
=
${
ITEM
}
case
"
${
domain
}
"
in
*${
IDN_ITEM
}*
)
_domain
=
${
IDN_
ITEM
}
_domain
=
"
$(
_idn
"
${
ITEM
}
"
)
"
_debug _domain
"
${
_domain
}
"
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