Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
15c68c95
Unverified
Commit
15c68c95
authored
Jul 24, 2021
by
neil
Committed by
GitHub
Jul 24, 2021
Browse files
Merge pull request #3620 from acmesh-official/dev
sync
parents
a76dcd4b
08438608
Changes
4
Show whitespace changes
Inline
Side-by-side
README.md
View file @
15c68c95
...
...
@@ -20,18 +20,18 @@
-
An ACME protocol client written purely in Shell (Unix shell) language.
-
Full ACME protocol implementation.
-
Support
ACME v1 and ACME v2
-
Support
ACME v2
wildcard certs
-
Support
ECDSA certs
-
Support
SAN and
wildcard certs
-
Simple, powerful and very easy to use. You only need 3 minutes to learn it.
-
Bash, dash and sh compatible.
-
Purely written in Shell with no dependencies on python
or the official Let's Encrypt client
.
-
Purely written in Shell with no dependencies on python.
-
Just one script to issue, renew and install your certificates automatically.
-
DOES NOT require
`root/sudoer`
access.
-
Docker
friendl
y
-
IPv6
support
-
Docker
read
y
-
IPv6
ready
-
Cron job notifications for renewal or error etc.
It's probably the
`easiest & smartest`
shell script to automatically issue & renew the free certificates
from Let's Encrypt
.
It's probably the
`easiest & smartest`
shell script to automatically issue & renew the free certificates.
Wiki: https://github.com/acmesh-official/acme.sh/wiki
...
...
acme.sh
View file @
15c68c95
...
...
@@ -1768,7 +1768,7 @@ _inithttp() {
if
[
-z
"
$ACME_HTTP_NO_REDIRECTS
"
]
;
then
_ACME_CURL
=
"
$_ACME_CURL
-L "
fi
if
[
"
$DEBUG
"
]
&&
[
"
$DEBUG
"
-ge
"2"
]
;
then
if
[
"
$DEBUG
"
]
&&
[
"
$DEBUG
"
-ge
2
]
;
then
_CURL_DUMP
=
"
$(
_mktemp
)
"
_ACME_CURL
=
"
$_ACME_CURL
--trace-ascii
$_CURL_DUMP
"
fi
...
...
@@ -1808,6 +1808,8 @@ _inithttp() {
}
_HTTP_MAX_RETRY
=
8
# body url [needbase64] [POST|PUT|DELETE] [ContentType]
_post
()
{
body
=
"
$1
"
...
...
@@ -1815,6 +1817,33 @@ _post() {
needbase64
=
"
$3
"
httpmethod
=
"
$4
"
_postContentType
=
"
$5
"
_sleep_retry_sec
=
1
_http_retry_times
=
0
_hcode
=
0
while
[
"
${
_http_retry_times
}
"
-le
"
$_HTTP_MAX_RETRY
"
]
;
do
[
"
$_http_retry_times
"
=
"
$_HTTP_MAX_RETRY
"
]
_lastHCode
=
"
$?
"
_debug
"Retrying post"
_post_impl
"
$body
"
"
$_post_url
"
"
$needbase64
"
"
$httpmethod
"
"
$_postContentType
"
"
$_lastHCode
"
_hcode
=
"
$?
"
_debug _hcode
"
$_hcode
"
if
[
"
$_hcode
"
=
"0"
]
;
then
break
fi
_http_retry_times
=
$(
_math
$_http_retry_times
+ 1
)
_sleep
$_sleep_retry_sec
done
return
$_hcode
}
# body url [needbase64] [POST|PUT|DELETE] [ContentType] [displayError]
_post_impl
()
{
body
=
"
$1
"
_post_url
=
"
$2
"
needbase64
=
"
$3
"
httpmethod
=
"
$4
"
_postContentType
=
"
$5
"
displayError
=
"
$6
"
if
[
-z
"
$httpmethod
"
]
;
then
httpmethod
=
"POST"
...
...
@@ -1866,7 +1895,9 @@ _post() {
fi
_ret
=
"
$?
"
if
[
"
$_ret
"
!=
"0"
]
;
then
if
[
-z
"
$displayError
"
]
||
[
"
$displayError
"
=
"0"
]
;
then
_err
"Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code:
$_ret
"
fi
if
[
"
$DEBUG
"
]
&&
[
"
$DEBUG
"
-ge
"2"
]
;
then
_err
"Here is the curl dump log:"
_err
"
$(
cat
"
$_CURL_DUMP
"
)
"
...
...
@@ -1922,8 +1953,10 @@ _post() {
_debug
"wget returns 8, the server returns a 'Bad request' response, lets process the response later."
fi
if
[
"
$_ret
"
!=
"0"
]
;
then
if
[
-z
"
$displayError
"
]
||
[
"
$displayError
"
=
"0"
]
;
then
_err
"Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code:
$_ret
"
fi
fi
_sed_i
"s/^ *//g"
"
$HTTP_HEADER
"
else
_ret
=
"
$?
"
...
...
@@ -1936,13 +1969,38 @@ _post() {
# url getheader timeout
_get
()
{
url
=
"
$1
"
onlyheader
=
"
$2
"
t
=
"
$3
"
_sleep_retry_sec
=
1
_http_retry_times
=
0
_hcode
=
0
while
[
"
${
_http_retry_times
}
"
-le
"
$_HTTP_MAX_RETRY
"
]
;
do
[
"
$_http_retry_times
"
=
"
$_HTTP_MAX_RETRY
"
]
_lastHCode
=
"
$?
"
_debug
"Retrying GET"
_get_impl
"
$url
"
"
$onlyheader
"
"
$t
"
"
$_lastHCode
"
_hcode
=
"
$?
"
_debug _hcode
"
$_hcode
"
if
[
"
$_hcode
"
=
"0"
]
;
then
break
fi
_http_retry_times
=
$(
_math
$_http_retry_times
+ 1
)
_sleep
$_sleep_retry_sec
done
return
$_hcode
}
# url getheader timeout displayError
_get_impl
()
{
_debug GET
url
=
"
$1
"
onlyheader
=
"
$2
"
t
=
"
$3
"
displayError
=
"
$4
"
_debug url
"
$url
"
_debug
"timeout=
$t
"
_debug
"displayError"
"
$displayError
"
_inithttp
if
[
"
$_ACME_CURL
"
]
&&
[
"
${
ACME_USE_WGET
:-
0
}
"
=
"0"
]
;
then
...
...
@@ -1961,7 +2019,9 @@ _get() {
fi
ret
=
$?
if
[
"
$ret
"
!=
"0"
]
;
then
if
[
-z
"
$displayError
"
]
||
[
"
$displayError
"
=
"0"
]
;
then
_err
"Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code:
$ret
"
fi
if
[
"
$DEBUG
"
]
&&
[
"
$DEBUG
"
-ge
"2"
]
;
then
_err
"Here is the curl dump log:"
_err
"
$(
cat
"
$_CURL_DUMP
"
)
"
...
...
@@ -1987,8 +2047,10 @@ _get() {
_debug
"wget returns 8, the server returns a 'Bad request' response, lets process the response later."
fi
if
[
"
$ret
"
!=
"0"
]
;
then
if
[
-z
"
$displayError
"
]
||
[
"
$displayError
"
=
"0"
]
;
then
_err
"Please refer to https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html for error code:
$ret
"
fi
fi
else
ret
=
$?
_err
"Neither curl nor wget is found, can not do GET."
...
...
@@ -3925,7 +3987,7 @@ _ns_lookup_ali() {
}
_ns_is_available_dp
()
{
if
_get
"https://d
ns.alidns.com
"
""
1
>
/dev/null 2>&1
;
then
if
_get
"https://d
oh.pub
"
""
1
>
/dev/null 2>&1
;
then
return
0
else
return
1
...
...
@@ -4712,26 +4774,13 @@ $_authorizations_map"
return
1
fi
_debug
"sleep 2 secs to verify"
sleep
2
_debug
"checking"
_send_signed_request
"
$uri
"
if
[
"
$?
"
!=
"0"
]
;
then
_err
"
$d
:Verify error:
$response
"
_clearupwebbroot
"
$_currentRoot
"
"
$removelevel
"
"
$token
"
_clearup
_on_issue_err
"
$_post_hook
"
"
$vlist
"
return
1
fi
_debug2 original
"
$response
"
response
=
"
$(
echo
"
$response
"
| _normalizeJson
)
"
_debug2 response
"
$response
"
status
=
$(
echo
"
$response
"
| _egrep_o
'"status":"[^"]*'
|
cut
-d
:
-f
2 |
tr
-d
'"'
)
_debug2 status
"
$status
"
if
_contains
"
$status
"
"invalid"
;
then
error
=
"
$(
echo
"
$response
"
| _egrep_o
'"error":\{[^\}]*'
)
"
_debug2 error
"
$error
"
...
...
@@ -4763,9 +4812,9 @@ $_authorizations_map"
fi
if
[
"
$status
"
=
"pending"
]
;
then
_info
"Pending"
_info
"Pending
, The CA is processing your order, please just wait. (
$waittimes
/
$MAX_RETRY_TIMES
)
"
elif
[
"
$status
"
=
"processing"
]
;
then
_info
"Processing"
_info
"Processing
, The CA is processing your order, please just wait. (
$waittimes
/
$MAX_RETRY_TIMES
)
"
else
_err
"
$d
:Verify error:
$response
"
_clearupwebbroot
"
$_currentRoot
"
"
$removelevel
"
"
$token
"
...
...
@@ -4773,7 +4822,19 @@ $_authorizations_map"
_on_issue_err
"
$_post_hook
"
"
$vlist
"
return
1
fi
_debug
"sleep 2 secs to verify again"
sleep
2
_debug
"checking"
_send_signed_request
"
$uri
"
if
[
"
$?
"
!=
"0"
]
;
then
_err
"
$d
:Verify error:
$response
"
_clearupwebbroot
"
$_currentRoot
"
"
$removelevel
"
"
$token
"
_clearup
_on_issue_err
"
$_post_hook
"
"
$vlist
"
return
1
fi
done
done
...
...
dnsapi/dns_ovh.sh
View file @
15c68c95
...
...
@@ -261,7 +261,9 @@ _get_root() {
return
1
fi
if
!
_contains
"
$response
"
"This service does not exist"
>
/dev/null
&&
!
_contains
"
$response
"
"NOT_GRANTED_CALL"
>
/dev/null
;
then
if
!
_contains
"
$response
"
"This service does not exist"
>
/dev/null
&&
!
_contains
"
$response
"
"This call has not been granted"
>
/dev/null
&&
!
_contains
"
$response
"
"NOT_GRANTED_CALL"
>
/dev/null
;
then
_sub_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
1-
$p
)
_domain
=
"
$h
"
return
0
...
...
notify/sendgrid.sh
View file @
15c68c95
...
...
@@ -37,11 +37,19 @@ sendgrid_send() {
fi
_saveaccountconf_mutable SENDGRID_FROM
"
$SENDGRID_FROM
"
SENDGRID_FROM_NAME
=
"
${
SENDGRID_FROM_NAME
:-
$(
_readaccountconf_mutable SENDGRID_FROM_NAME
)
}
"
_saveaccountconf_mutable SENDGRID_FROM_NAME
"
$SENDGRID_FROM_NAME
"
export
_H1
=
"Authorization: Bearer
$SENDGRID_API_KEY
"
export
_H2
=
"Content-Type: application/json"
_content
=
"
$(
echo
"
$_content
"
| _json_encode
)
"
if
[
-z
"
$SENDGRID_FROM_NAME
"
]
;
then
_data
=
"{
\"
personalizations
\"
: [{
\"
to
\"
: [{
\"
email
\"
:
\"
$SENDGRID_TO
\"
}]}],
\"
from
\"
: {
\"
email
\"
:
\"
$SENDGRID_FROM
\"
},
\"
subject
\"
:
\"
$_subject
\"
,
\"
content
\"
: [{
\"
type
\"
:
\"
text/plain
\"
,
\"
value
\"
:
\"
$_content
\"
}]}"
else
_data
=
"{
\"
personalizations
\"
: [{
\"
to
\"
: [{
\"
email
\"
:
\"
$SENDGRID_TO
\"
}]}],
\"
from
\"
: {
\"
email
\"
:
\"
$SENDGRID_FROM
\"
,
\"
name
\"
:
\"
$SENDGRID_FROM_NAME
\"
},
\"
subject
\"
:
\"
$_subject
\"
,
\"
content
\"
: [{
\"
type
\"
:
\"
text/plain
\"
,
\"
value
\"
:
\"
$_content
\"
}]}"
fi
response
=
"
$(
_post
"
$_data
"
"https://api.sendgrid.com/v3/mail/send"
)
"
if
[
"
$?
"
=
"0"
]
&&
[
-z
"
$response
"
]
;
then
...
...
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