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
8be3465f
Unverified
Commit
8be3465f
authored
Apr 30, 2022
by
neil
Committed by
GitHub
Apr 30, 2022
Browse files
Merge pull request #4061 from acmesh-official/dev
Dev
parents
c8c1c091
8ba7d02f
Changes
9
Hide whitespace changes
Inline
Side-by-side
Dockerfile
View file @
8be3465f
...
...
@@ -65,7 +65,8 @@ RUN for verb in help \
RUN
printf
"%b"
'#!'
"/usr/bin/env sh
\n
\
if [
\"\$
1
\"
=
\"
daemon
\"
]; then
\n
\
trap
\"
echo stop && killall crond && exit 0
\"
SIGTERM SIGINT
\n
\
crond && while true; do sleep 1; done;
\n
\
crond && sleep infinity &
\n
\
wait
\n
\
else
\n
\
exec --
\"\$
@
\"\n
\
fi"
>
/entry.sh
&&
chmod
+x /entry.sh
...
...
acme.sh
View file @
8be3465f
...
...
@@ -983,9 +983,9 @@ _base64() {
#Usage: multiline
_dbase64
()
{
if
[
"
$1
"
]
;
then
${
ACME_OPENSSL_BIN
:-
openssl
}
base64
-d
-A
else
${
ACME_OPENSSL_BIN
:-
openssl
}
base64
-d
else
${
ACME_OPENSSL_BIN
:-
openssl
}
base64
-d
-A
fi
}
...
...
@@ -4530,7 +4530,7 @@ issue() {
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
_debug2 response
"
$response
"
_d
=
"
$(
echo
"
$response
"
| _egrep_o
'"value" *: *"[^"]*"'
|
cut
-d
:
-f
2 |
tr
-d
' "'
)
"
_d
=
"
$(
echo
"
$response
"
| _egrep_o
'"value" *: *"[^"]*"'
|
cut
-d
:
-f
2
-
|
tr
-d
' "'
)
"
if
_contains
"
$response
"
"
\"
wildcard
\"
*: *true"
;
then
_d
=
"*.
$_d
"
fi
...
...
@@ -4680,6 +4680,7 @@ $_authorizations_map"
_dns_root_d
=
"
$(
echo
"
$_dns_root_d
"
|
sed
's/*.//'
)
"
fi
_d_alias
=
"
$(
_getfield
"
$_challenge_alias
"
"
$_alias_index
"
)
"
test
"
$_d_alias
"
=
"
$NO_VALUE
"
&&
_d_alias
=
""
_alias_index
=
"
$(
_math
"
$_alias_index
"
+ 1
)
"
_debug
"_d_alias"
"
$_d_alias
"
if
[
"
$_d_alias
"
]
;
then
...
...
@@ -4974,7 +4975,7 @@ $_authorizations_map"
return
1
fi
_debug
"sleep 2 secs to verify again"
sleep
2
_
sleep 2
_debug
"checking"
_send_signed_request
"
$uri
"
...
...
@@ -5151,7 +5152,7 @@ $_authorizations_map"
Le_CertCreateTime
=
$(
_time
)
_savedomainconf
"Le_CertCreateTime"
"
$Le_CertCreateTime
"
Le_CertCreateTimeStr
=
$(
date
-u
)
Le_CertCreateTimeStr
=
$(
_time2str
"
$Le_CertCreateTime
"
)
_savedomainconf
"Le_CertCreateTimeStr"
"
$Le_CertCreateTimeStr
"
if
[
-z
"
$Le_RenewalDays
"
]
||
[
"
$Le_RenewalDays
"
-lt
"0"
]
;
then
...
...
@@ -5249,7 +5250,8 @@ renew() {
fi
_isEcc
=
"
$2
"
#the server specified from commandline
_acme_server_back
=
"
$ACME_DIRECTORY
"
_initpath
"
$Le_Domain
"
"
$_isEcc
"
_set_level
=
${
NOTIFY_LEVEL
:-
$NOTIFY_LEVEL_DEFAULT
}
_info
"
$(
__green
"Renew: '
$Le_Domain
'"
)
"
...
...
@@ -5270,35 +5272,36 @@ renew() {
Le_API
=
"
$CA_LETSENCRYPT_V2
"
fi
#revert from staging CAs back to production CAs
if
[
-z
"
$ACME_DIRECTORY
"
]
;
then
case
"
$Le_API
"
in
"
$CA_LETSENCRYPT_V2_TEST
"
)
_info
"Switching back to
$CA_LETSENCRYPT_V2
"
Le_API
=
"
$CA_LETSENCRYPT_V2
"
;;
"
$CA_BUYPASS_TEST
"
)
_info
"Switching back to
$CA_BUYPASS
"
Le_API
=
"
$CA_BUYPASS
"
;;
"
$CA_GOOGLE_TEST
"
)
_info
"Switching back to
$CA_GOOGLE
"
Le_API
=
"
$CA_GOOGLE
"
;;
esac
if
[
"
$_acme_server_back
"
]
;
then
export
ACME_DIRECTORY
=
"
$_acme_server_back
"
else
export
ACME_DIRECTORY
=
"
$Le_API
"
fi
if
[
"
$Le_API
"
]
;
then
case
"
$Le_API
"
in
"
$CA_LETSENCRYPT_V2_TEST
"
)
_info
"Switching back to
$CA_LETSENCRYPT_V2
"
Le_API
=
"
$CA_LETSENCRYPT_V2
"
;;
"
$CA_BUYPASS_TEST
"
)
_info
"Switching back to
$CA_BUYPASS
"
Le_API
=
"
$CA_BUYPASS
"
;;
"
$CA_GOOGLE_TEST
"
)
_info
"Switching back to
$CA_GOOGLE
"
Le_API
=
"
$CA_GOOGLE
"
;;
esac
if
[
"
$Le_API
"
]
&&
[
"
$ACME_DIRECTORY
"
]
;
then
if
[
"
$Le_API
"
!=
"
$ACME_DIRECTORY
"
]
;
then
_clearAPI
fi
export
ACME_DIRECTORY
=
"
$Le_API
"
#reload ca configs
ACCOUNT_KEY_PATH
=
""
ACCOUNT_JSON_PATH
=
""
CA_CONF
=
""
_debug
3
"initpath again."
_debug
2
"initpath again."
_initpath
"
$Le_Domain
"
"
$_isEcc
"
fi
...
...
@@ -5544,10 +5547,13 @@ showcsr() {
_initpath
_csrsubj
=
$(
_readSubjectFromCSR
"
$_csrfile
"
)
if
[
"
$?
"
!=
"0"
]
||
[
-z
"
$_csrsubj
"
]
;
then
if
[
"
$?
"
!=
"0"
]
;
then
_err
"Can not read subject from csr:
$_csrfile
"
return
1
fi
if
[
-z
"
$_csrsubj
"
]
;
then
_info
"The Subject is empty"
fi
_info
"Subject=
$_csrsubj
"
...
...
@@ -6956,6 +6962,10 @@ _processAccountConf() {
}
_checkSudo
()
{
if
[
-z
"__INTERACTIVE"
]
;
then
#don't check if it's not in an interactive shell
return
0
fi
if
[
"
$SUDO_GID
"
]
&&
[
"
$SUDO_COMMAND
"
]
&&
[
"
$SUDO_USER
"
]
&&
[
"
$SUDO_UID
"
]
;
then
if
[
"
$SUDO_USER
"
=
"root"
]
&&
[
"
$SUDO_UID
"
=
"0"
]
;
then
#it's root using sudo, no matter it's using sudo or not, just fine
...
...
deploy/mailcow.sh
View file @
8be3465f
...
...
@@ -20,18 +20,23 @@ mailcow_deploy() {
_debug _cca
"
$_cca
"
_debug _cfullchain
"
$_cfullchain
"
_mailcow_path
=
"
${
DEPLOY_MAILCOW_PATH
}
"
_getdeployconf DEPLOY_MAILCOW_PATH
_getdeployconf DEPLOY_MAILCOW_RELOAD
if
[
-z
"
$_mailcow_path
"
]
;
then
_debug DEPLOY_MAILCOW_PATH
"
$DEPLOY_MAILCOW_PATH
"
_debug DEPLOY_MAILCOW_RELOAD
"
$DEPLOY_MAILCOW_RELOAD
"
if
[
-z
"
$DEPLOY_MAILCOW_PATH
"
]
;
then
_err
"Mailcow path is not found, please define DEPLOY_MAILCOW_PATH."
return
1
fi
#Tests if _ssl_path is the mailcow root directory.
if
[
-f
"
${
_mailcow_path
}
/generate_config.sh"
]
;
then
_ssl_path
=
"
${
_mailcow_path
}
/data/assets/ssl/"
else
_ssl_path
=
"
${
_mailcow_path
}
"
_savedeployconf DEPLOY_MAILCOW_PATH
"
$DEPLOY_MAILCOW_PATH
"
[
-n
"
$DEPLOY_MAILCOW_RELOAD
"
]
&&
_savedeployconf DEPLOY_MAILCOW_RELOAD
"
$DEPLOY_MAILCOW_RELOAD
"
_ssl_path
=
"
$DEPLOY_MAILCOW_PATH
"
if
[
-f
"
$DEPLOY_MAILCOW_PATH
/generate_config.sh"
]
;
then
_ssl_path
=
"
$DEPLOY_MAILCOW_PATH
/data/assets/ssl/"
fi
if
[
!
-d
"
$_ssl_path
"
]
;
then
...
...
@@ -40,16 +45,15 @@ mailcow_deploy() {
fi
# ECC or RSA
if
[
-z
"
${
Le_Keylength
}
"
]
;
then
Le_Keylength
=
""
fi
if
_isEccKey
"
${
Le_Keylength
}
"
;
then
length
=
$(
_readdomainconf Le_Keylength
)
if
_isEccKey
"
$length
"
;
then
_info
"ECC key type detected"
_cert_name_prefix
=
"ecdsa-"
else
_info
"RSA key type detected"
_cert_name_prefix
=
""
fi
_info
"Copying key and cert"
_real_key
=
"
$_ssl_path
/
${
_cert_name_prefix
}
key.pem"
if
!
cat
"
$_ckey
"
>
"
$_real_key
"
;
then
...
...
@@ -63,7 +67,7 @@ mailcow_deploy() {
return
1
fi
DEFAULT_MAILCOW_RELOAD
=
"docker restart
$(
docker ps
-
qaf
name
=
postfix-mailcow
)
; docker restart
$(
docker ps
-qaf
name
=
nginx-mailcow
)
; docker restart
$(
docker ps
-qaf
name
=
dovecot-mailcow
)
"
DEFAULT_MAILCOW_RELOAD
=
"docker restart
\
$
(docker ps -
-quiet --filter name=nginx-mailcow --filter
name=dovecot-mailcow)"
_reload
=
"
${
DEPLOY_MAILCOW_RELOAD
:-
$DEFAULT_MAILCOW_RELOAD
}
"
_info
"Run reload:
$_reload
"
...
...
dnsapi/dns_1984hosting.sh
View file @
8be3465f
...
...
@@ -42,7 +42,7 @@ dns_1984hosting_add() {
_debug
"Add TXT record
$fulldomain
with value '
$txtvalue
'"
value
=
"
$(
printf
'%s'
"
$txtvalue
"
| _url_encode
)
"
url
=
"https://
management.
1984hosting
.com
/domains/entry/"
url
=
"https://1984
.
hosting/domains/entry/"
postdata
=
"entry=new"
postdata
=
"
$postdata
&type=TXT"
...
...
@@ -95,7 +95,7 @@ dns_1984hosting_rm() {
_debug _domain
"
$_domain
"
_debug
"Delete
$fulldomain
TXT record"
url
=
"https://
management.
1984hosting
.com
/domains"
url
=
"https://1984
.
hosting/domains"
if
!
_get_zone_id
"
$url
"
"
$_domain
"
;
then
_err
"invalid zone"
"
$_domain
"
return
1
...
...
@@ -138,7 +138,7 @@ _1984hosting_login() {
_debug
"Login to 1984Hosting as user
$One984HOSTING_Username
"
username
=
$(
printf
'%s'
"
$One984HOSTING_Username
"
| _url_encode
)
password
=
$(
printf
'%s'
"
$One984HOSTING_Password
"
| _url_encode
)
url
=
"https://
management.
1984hosting
.com
/accounts/checkuserauth/"
url
=
"https://1984
.
hosting/accounts/checkuserauth/"
response
=
"
$(
_post
"username=
$username
&password=
$password
&otpkey="
$url
)
"
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
...
...
@@ -175,7 +175,7 @@ _check_cookies() {
return
1
fi
_authget
"https://
management.
1984hosting
.com
/accounts/loginstatus/"
_authget
"https://1984
.
hosting/accounts/loginstatus/"
if
_contains
"
$response
"
'"ok": true'
;
then
_debug
"Cached cookies still valid"
return
0
...
...
@@ -204,7 +204,7 @@ _get_root() {
return
1
fi
_authget
"https://
management.
1984hosting
.com
/domains/soacheck/?zone=
$h
&nameserver=ns0.1984.is."
_authget
"https://1984
.
hosting/domains/soacheck/?zone=
$h
&nameserver=ns0.1984.is."
if
_contains
"
$_response
"
"serial"
&&
!
_contains
"
$_response
"
"null"
;
then
_sub_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
1-
$p
)
_domain
=
"
$h
"
...
...
@@ -251,11 +251,11 @@ _htmlget() {
# add extra headers to request
_authpost
()
{
url
=
"https://
management.
1984hosting
.com
/domains"
url
=
"https://1984
.
hosting/domains"
_get_zone_id
"
$url
"
"
$_domain
"
csrf_header
=
"
$(
echo
"
$One984HOSTING_CSRFTOKEN_COOKIE
"
| _egrep_o
"=[^=][0-9a-zA-Z]*"
|
tr
-d
"="
)
"
export
_H1
=
"Cookie:
$One984HOSTING_CSRFTOKEN_COOKIE
;
$One984HOSTING_SESSIONID_COOKIE
"
export
_H2
=
"Referer: https://
management.
1984hosting
.com
/domains/
$_zone_id
"
export
_H2
=
"Referer: https://1984
.
hosting/domains/
$_zone_id
"
export
_H3
=
"X-CSRFToken:
$csrf_header
"
_response
=
$(
_post
"
$1
"
"
$2
"
)
}
dnsapi/dns_fornex.sh
0 → 100644
View file @
8be3465f
#!/usr/bin/env sh
#Author: Timur Umarov <inbox@tumarov.com>
FORNEX_API_URL
=
"https://fornex.com/api/dns/v0.1"
######## Public functions #####################
#Usage: dns_fornex_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_fornex_add
()
{
fulldomain
=
$1
txtvalue
=
$2
if
!
_Fornex_API
;
then
return
1
fi
if
!
_get_root
"
$fulldomain
"
;
then
_err
"Unable to determine root domain"
return
1
else
_debug _domain
"
$_domain
"
fi
_info
"Adding record"
if
_rest POST
"
$_domain
/entry_set/add/"
"host=
$fulldomain
&type=TXT&value=
$txtvalue
&apikey=
$FORNEX_API_KEY
"
;
then
_debug _response
"
$response
"
if
_contains
"
$response
"
'"ok": true'
||
_contains
"
$response
"
'Такая запись уже существует.'
;
then
_info
"Added, OK"
return
0
fi
fi
_err
"Add txt record error."
return
1
}
#Usage: dns_fornex_rm _acme-challenge.www.domain.com
dns_fornex_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
if
!
_Fornex_API
;
then
return
1
fi
if
!
_get_root
"
$fulldomain
"
;
then
_err
"Unable to determine root domain"
return
1
else
_debug _domain
"
$_domain
"
fi
_debug
"Getting txt records"
_rest GET
"
$_domain
/entry_set.json?apikey=
$FORNEX_API_KEY
"
if
!
_contains
"
$response
"
"
$txtvalue
"
;
then
_err
"Txt record not found"
return
1
fi
_record_id
=
"
$(
echo
"
$response
"
| _egrep_o
"{[^{]*
\"
value
\"
*:*
\"
$txtvalue
\"
[^}]*}"
|
sed
-n
-e
's#.*"id": \([0-9]*\).*#\1#p'
)
"
_debug
"_record_id"
"
$_record_id
"
if
[
-z
"
$_record_id
"
]
;
then
_err
"can not find _record_id"
return
1
fi
if
!
_rest POST
"
$_domain
/entry_set/
$_record_id
/delete/"
"apikey=
$FORNEX_API_KEY
"
;
then
_err
"Delete record error."
return
1
fi
return
0
}
#################### Private functions below ##################################
#_acme-challenge.www.domain.com
#returns
# _sub_domain=_acme-challenge.www
# _domain=domain.com
_get_root
()
{
domain
=
$1
i
=
1
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
!
_rest GET
"domain_list.json?q=
$h
&apikey=
$FORNEX_API_KEY
"
;
then
return
1
fi
if
_contains
"
$response
"
"
\"
$h
\"
"
>
/dev/null
;
then
_domain
=
$h
return
0
else
_debug
"
$h
not found"
fi
i
=
$(
_math
"
$i
"
+ 1
)
done
return
1
}
_Fornex_API
()
{
FORNEX_API_KEY
=
"
${
FORNEX_API_KEY
:-
$(
_readaccountconf_mutable FORNEX_API_KEY
)
}
"
if
[
-z
"
$FORNEX_API_KEY
"
]
;
then
FORNEX_API_KEY
=
""
_err
"You didn't specify the Fornex API key yet."
_err
"Please create your key and try again."
return
1
fi
_saveaccountconf_mutable FORNEX_API_KEY
"
$FORNEX_API_KEY
"
}
#method method action data
_rest
()
{
m
=
$1
ep
=
"
$2
"
data
=
"
$3
"
_debug
"
$ep
"
export
_H1
=
"Accept: application/json"
if
[
"
$m
"
!=
"GET"
]
;
then
_debug data
"
$data
"
response
=
"
$(
_post
"
$data
"
"
$FORNEX_API_URL
/
$ep
"
""
"
$m
"
)
"
else
response
=
"
$(
_get
"
$FORNEX_API_URL
/
$ep
"
| _normalizeJson
)
"
fi
_ret
=
"
$?
"
if
[
"
$_ret
"
!=
"0"
]
;
then
_err
"error
$ep
"
return
1
fi
_debug2 response
"
$response
"
return
0
}
dnsapi/dns_gdnsdk.sh
deleted
100755 → 0
View file @
c8c1c091
#!/usr/bin/env sh
#Author: Herman Sletteng
#Report Bugs here: https://github.com/loial/acme.sh
#
#
# Note, gratisdns requires a login first, so the script needs to handle
# temporary cookies. Since acme.sh _get/_post currently don't directly support
# cookies, I've defined wrapper functions _myget/_mypost to set the headers
GDNSDK_API
=
"https://admin.gratisdns.com"
######## Public functions #####################
#Usage: dns_gdnsdk_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_gdnsdk_add
()
{
fulldomain
=
$1
txtvalue
=
$2
_info
"Using gratisdns.dk"
_debug fulldomain
"
$fulldomain
"
_debug txtvalue
"
$txtvalue
"
if
!
_gratisdns_login
;
then
_err
"Login failed!"
return
1
fi
#finding domain zone
if
!
_get_domain
;
then
_err
"No matching root domain for
$fulldomain
found"
return
1
fi
# adding entry
_info
"Adding the entry"
_mypost
"action=dns_primary_record_added_txt&user_domain=
$_domain
&name=
$fulldomain
&txtdata=
$txtvalue
&ttl=1"
if
_successful_update
;
then return
0
;
fi
_err
"Couldn't create entry!"
return
1
}
#Usage: fulldomain txtvalue
#Remove the txt record after validation.
dns_gdnsdk_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
_info
"Using gratisdns.dk"
_debug fulldomain
"
$fulldomain
"
_debug txtvalue
"
$txtvalue
"
if
!
_gratisdns_login
;
then
_err
"Login failed!"
return
1
fi
if
!
_get_domain
;
then
_err
"No matching root domain for
$fulldomain
found"
return
1
fi
_findentry
"
$fulldomain
"
"
$txtvalue
"
if
[
-z
"
$_id
"
]
;
then
_info
"Entry doesn't exist, nothing to delete"
return
0
fi
_debug
"Deleting record..."
_mypost
"action=dns_primary_delete_txt&user_domain=
$_domain
&id=
$_id
"
# removing entry
if
_successful_update
;
then return
0
;
fi
_err
"Couldn't delete entry!"
return
1
}
#################### Private functions below ##################################
_checkcredentials
()
{
GDNSDK_Username
=
"
${
GDNSDK_Username
:-
$(
_readaccountconf_mutable GDNSDK_Username
)
}
"
GDNSDK_Password
=
"
${
GDNSDK_Password
:-
$(
_readaccountconf_mutable GDNSDK_Password
)
}
"
if
[
-z
"
$GDNSDK_Username
"
]
||
[
-z
"
$GDNSDK_Password
"
]
;
then
GDNSDK_Username
=
""
GDNSDK_Password
=
""
_err
"You haven't specified gratisdns.dk username and password yet."
_err
"Please add credentials and try again."
return
1
fi
#save the credentials to the account conf file.
_saveaccountconf_mutable GDNSDK_Username
"
$GDNSDK_Username
"
_saveaccountconf_mutable GDNSDK_Password
"
$GDNSDK_Password
"
return
0
}
_checkcookie
()
{
GDNSDK_Cookie
=
"
${
GDNSDK_Cookie
:-
$(
_readaccountconf_mutable GDNSDK_Cookie
)
}
"
if
[
-z
"
$GDNSDK_Cookie
"
]
;
then
_debug
"No cached cookie found"
return
1
fi
_myget
"action="
if
(
echo
"
$_result
"
|
grep
-q
"logmeout"
)
;
then
_debug
"Cached cookie still valid"
return
0
fi
_debug
"Cached cookie no longer valid"
GDNSDK_Cookie
=
""
_saveaccountconf_mutable GDNSDK_Cookie
"
$GDNSDK_Cookie
"
return
1
}
_gratisdns_login
()
{
if
!
_checkcredentials
;
then return
1
;
fi
if
_checkcookie
;
then
_debug
"Already logged in"
return
0
fi
_debug
"Logging into GratisDNS with user
$GDNSDK_Username
"
if
!
_mypost
"login=
$GDNSDK_Username
&password=
$GDNSDK_Password
&action=logmein"
;
then
_err
"GratisDNS login failed for user
$GDNSDK_Username
bad RC from _post"
return
1
fi
GDNSDK_Cookie
=
"
$(
grep
-A
15
'302 Found'
"
$HTTP_HEADER
"
| _egrep_o
'Cookie: [^;]*'
| _head_n 1 |
cut
-d
' '
-f2
)
"
if
[
-z
"
$GDNSDK_Cookie
"
]
;
then
_err
"GratisDNS login failed for user
$GDNSDK_Username
. Check
$HTTP_HEADER
file"
return
1
fi
export
GDNSDK_Cookie
_saveaccountconf_mutable GDNSDK_Cookie
"
$GDNSDK_Cookie
"
return
0
}
_myget
()
{
#Adds cookie to request
export
_H1
=
"Cookie:
$GDNSDK_Cookie
"
_result
=
$(
_get
"
$GDNSDK_API
?
$1
"
)
}
_mypost
()
{
#Adds cookie to request
export
_H1
=
"Cookie:
$GDNSDK_Cookie
"
_result
=
$(
_post
"
$1
"
"
$GDNSDK_API
"
)
}
_get_domain
()
{
_myget
'action=dns_primarydns'
_domains
=
$(
echo
"
$_result
"
| _egrep_o
' domain="[[:alnum:]._-]+'
|
sed
's/^.*"//'
)
if
[
-z
"
$_domains
"
]
;
then
_err
"Primary domain list not found!"
return
1
fi
for
_domain
in
$_domains
;
do
if
(
_endswith
"
$fulldomain
"
"
$_domain
"
)
;
then
_debug
"Root domain:
$_domain
"
return
0
fi
done
return
1
}
_successful_update
()
{
if
(
echo
"
$_result
"
|
grep
-q
'table-success'
)
;
then return
0
;
fi
return
1
}
_findentry
()
{
#args $1: fulldomain, $2: txtvalue
#returns id of dns entry, if it exists
_myget
"action=dns_primary_changeDNSsetup&user_domain=
$_domain
"
_debug3
"_result:
$_result
"
_tmp_result
=
$(
echo
"
$_result
"
|
tr
-d
'\n\r'
| _egrep_o
"<td>
$1
</td>
\s
*<td>
$2
</td>[^?]*[^&]*&id=[^&]*"
)
_debug _tmp_result
"
$_tmp_result
"
if
[
-z
"
${
_tmp_result
:-}
"
]
;
then
_debug
"The variable is _tmp_result is not supposed to be empty, there may be something wrong with the script"
fi
_id
=
$(
echo
"
$_tmp_result
"
|
sed
's/^.*=//'
)
if
[
-n
"
$_id
"
]
;
then
_debug
"Entry found with _id=
$_id
"
return
0
fi
return
1
}
dnsapi/dns_loopia.sh
View file @
8be3465f
...
...
@@ -79,7 +79,7 @@ dns_loopia_rm() {
response
=
"
$(
_post
"
$xml_content
"
"
$LOOPIA_Api
"
""
"POST"
)
"
if
!
_contains
"
$response
"
"OK"
;
then
err_response
=
$(
echo
"
$response
"
|
grep
-oPm1
"(?<=<string>)[^<]+"
)
err_response
=
$(
echo
"
$response
"
|
sed
's/.*<string>\(.*\)<\/string>.*/\1/'
)
_err
"Error could not get txt records:
$err_response
"
return
1
fi
...
...
@@ -148,7 +148,7 @@ _loopia_get_records() {
response
=
"
$(
_post
"
$xml_content
"
"
$LOOPIA_Api
"
""
"POST"
)
"
if
!
_contains
"
$response
"
"<array>"
;
then
err_response
=
$(
echo
"
$response
"
|
grep
-oPm1
"(?<=<string>)[^<]+"
)
err_response
=
$(
echo
"
$response
"
|
sed
's/.*<string>\(.*\)<\/string>.*/\1/'
)
_err
"Error:
$err_response
"
return
1
fi
...
...
@@ -245,7 +245,7 @@ _loopia_add_record() {
response
=
"
$(
_post
"
$xml_content
"
"
$LOOPIA_Api
"
""
"POST"
)
"
if
!
_contains
"
$response
"
"OK"
;
then
err_response
=
$(
echo
"
$response
"
|
grep
-oPm1
"(?<=<string>)[^<]+"
)
err_response
=
$(
echo
"
$response
"
|
sed
's/.*<string>\(.*\)<\/string>.*/\1/'
)
_err
"Error:
$err_response
"
return
1
fi
...
...
@@ -310,7 +310,7 @@ _loopia_add_sub_domain() {
response
=
"
$(
_post
"
$xml_content
"
"
$LOOPIA_Api
"
""
"POST"
)
"
if
!
_contains
"
$response
"
"OK"
;
then
err_response
=
$(
echo
"
$response
"
|
grep
-oPm1
"(?<=<string>)[^<]+"
)
err_response
=
$(
echo
"
$response
"
|
sed
's/.*<string>\(.*\)<\/string>.*/\1/'
)
_err
"Error:
$err_response
"
return
1
fi
...
...
dnsapi/dns_mydevil.sh
View file @
8be3465f
...
...
@@ -74,7 +74,7 @@ dns_mydevil_rm() {
validRecords
=
"^
${
num
}${
w
}${
fulldomain
}${
w
}
TXT
${
w
}${
any
}${
txtvalue
}
$"
for
id
in
$(
devil dns list
"
$domain
"
|
tail
-n
+2 |
grep
"
${
validRecords
}
"
|
cut
-w
-s
-f
1
)
;
do
_info
"Removing record
$id
from domain
$domain
"
devil dns del
"
$domain
"
"
$id
"
||
_err
"Could not remove DNS record."
echo
"y"
|
devil dns del
"
$domain
"
"
$id
"
||
_err
"Could not remove DNS record."
done
}
...
...
@@ -87,7 +87,9 @@ mydevil_get_domain() {
domain
=
""
for
domain
in
$(
devil dns list |
cut
-w
-s
-f
1 |
tail
-n
+2
)
;
do
_debug
"Checking domain:
$domain
"
if
_endswith
"
$fulldomain
"
"
$domain
"
;
then
_debug
"Fulldomain '
$fulldomain
' matches '
$domain
'"
printf
--
"%s"
"
$domain
"
return
0
fi
...
...
dnsapi/dns_world4you.sh
View file @
8be3465f
...
...
@@ -54,15 +54,14 @@ dns_world4you_add() {
if
_contains
"
$res
"
"successfully"
;
then
return
0
else
msg
=
$(
echo
"
$res
"
|
tr
'\n'
'\t'
|
sed
's/.*<h3 class="mb-5">[^\t]*\t *\([^\t]*\)\t.*/\1/'
)
if
_contains
"
$msg
"
'^<\!DOCTYPE html>'
;
then
msg
=
'Unknown error'
fi
_err
"Unable to add record:
$msg
"
if
_contains
"
$msg
"
'^<\!DOCTYPE html>'
;
then
msg
=
$(
echo
"
$res
"
|
grep
-A
15
'data-type="danger"'
|
grep
"<h3[^>]*>[^<]"
|
sed
's/<[^>]*>\|^\s*//g'
)
if
[
"
$msg
"
=
''
]
;
then
_err
"Unable to add record: Unknown error"
echo
"
$ret
"
>
'error-01.html'
echo
"
$res
"
>
'error-02.html'
_err
"View error-01.html and error-02.html for debugging"
else
_err
"Unable to add record: my.world4you.com:
$msg
"
fi
return
1
fi
...
...
@@ -119,15 +118,14 @@ dns_world4you_rm() {
if
_contains
"
$res
"
"successfully"
;
then
return
0
else
msg
=
$(
echo
"
$res
"
|
tr
'\n'
'\t'
|
sed
's/.*<h3 class="mb-5">[^\t]*\t *\([^\t]*\)\t.*/\1/'
)
if
_contains
"
$msg
"
'^<\!DOCTYPE html>'
;
then
msg
=
'Unknown error'
fi
_err
"Unable to remove record:
$msg
"
if
_contains
"
$msg
"
'^<\!DOCTYPE html>'
;
then
msg
=
$(
echo
"
$res
"
|
grep
-A
15
'data-type="danger"'
|
grep
"<h3[^>]*>[^<]"
|
sed
's/<[^>]*>\|^\s*//g'
)
if
[
"
$msg
"
=
''
]
;
then
_err
"Unable to remove record: Unknown error"
echo
"
$ret
"
>
'error-01.html'
echo
"
$res
"
>
'error-02.html'
_err
"View error-01.html and error-02.html for debugging"
else
_err
"Unable to remove record: my.world4you.com:
$msg
"
fi
return
1
fi
...
...
@@ -199,6 +197,6 @@ _get_paketnr() {
TLD
=
"
$domain
"
_debug domain
"
$domain
"
RECORD
=
$(
echo
"
$fqdn
"
|
cut
-c
"1-
$((${#
fqdn
}
-
${#
TLD
}
-
1
))
"
)
PAKETNR
=
$(
echo
"
$form
"
|
grep
"data-textfilter=
\"
.*
$domain
"
| _
head
_n 1 |
sed
's/^.* \([0-9]*\) .*$/\1/'
)
PAKETNR
=
$(
echo
"
$form
"
|
grep
"data-textfilter=
\"
.*
$domain
"
| _
tail
_n 1 |
sed
"s|.*
$WORLD4YOU_API
/
\\
([0-9]*
\\
)/.*|
\\
1|"
)
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