Update README.md

This commit is contained in:
Zhong Lufan 2020-04-21 03:14:07 +08:00
parent b688e3d965
commit 68de6308ca
No known key found for this signature in database
GPG Key ID: 373C08F7FFF84D26
2 changed files with 18 additions and 12 deletions

View File

@ -10,6 +10,8 @@
## 依赖
* bash
* coreutils
* curl
* openssl
@ -23,21 +25,25 @@
2. 导入 `AliyunOpenApiSDK.sh`
3. 调用 `aliapi_rpc` 函数
函数签名:`aliapi_rpc(host, http_method, api_version, api_action, api_custom_key[], api_custom_value[]): JsonResult | ErrorCode`
函数签名:
```
aliapi_rpc(host, http_method, api_version, api_action, api_custom_key[], api_custom_value[]): JsonResult | ErrorCode
```
**示例:**
```bash
#!/usr/bin/env bash
# 导出 AliAccessKeyId 和 AliAccessKeySecret
export AliAccessKeyId="<AliAccessKeyId>"
export AliAccessKeySecret="<AliAccessKeySecret>"
# 导入 SDK
. AliyunOpenApiSDK.sh
source AliyunOpenApiSDK.sh
# 自定义请求参数的键值数组顺序要一一对应,数组成员不能包含空格。
# 自定义值支持自定义函数,如果你需要包含空格或者读取文件等操作,可以声明一个自定义函数,像下面这样。
# 如果自定义值数组成员以 () 结尾SDK 在获取值的时候会判断自定义函数是否存在并执行,如果不存在则原始值。
# 如果自定义值数组成员以 () 结尾SDK 在获取值的时候会判断自定义函数是否存在并执行,如果不存在则使用原始值。
get_show_size() {
echo 50
@ -51,18 +57,17 @@ api_custom_key=(
# 自定义请求参数的值
api_custom_value=(
"1"
"get_show_size()" # 这个值会在解析的时候执行函数获取
"get_show_size()" # 解析参数时会执行函数 (所以最后提交的值是 50)
)
# 获取 SSL 证书列表https://help.aliyun.com/document_detail/126511.html
aliapi_rpc "cas.aliyuncs.com" "GET" "2018-07-13" "DescribeUserCertificateList" "${api_custom_key[*]}" "${api_custom_value[*]}"
# $? (返回代码) 等于 0 (HTTP 状态码 == 200) 代表执行成功
# 执行成功返回 JSON 数据,执行失败返回 HTTP 状态码或 curl 的错误代码。
# 执行成功返回 JSON 数据,执行失败返回 HTTP 状态码或 curl 的错误代码 ($?)
if [[ $? -eq 0 ]]; then
# 执行成功
else
# 执行失败
fi
```
更多示例请参考 `example` 下的文件

View File

@ -10,7 +10,7 @@
export AliAccessKeyId="<AliAccessKeyId>"
export AliAccessKeySecret="<AliAccessKeySecret>"
# shellcheck disable=SC1091
. ../AliyunOpenApiSDK.sh
source ../AliyunOpenApiSDK.sh
# acme.sh 执行 renewHook 时导出的环境变量列表
ACME_ENV_LIST=(
@ -22,21 +22,22 @@ ACME_ENV_LIST=(
)
# 检查环境变量是否存在
for value in "${ACME_ENV_LIST[@]}" ; do
printenv "$value" > /dev/null || exit 1
declare -p "$value" &>/dev/null || exit 1
done
unset value
# 获取证书自定义函数
get_cert() {
# 使用 sed 删除掉证书文件的空行
sed -e "/^$/d" "$(printenv CERT_FULLCHAIN_PATH)"
sed -e "/^$/d" "$CERT_FULLCHAIN_PATH"
}
# 获取密钥自定义函数
get_key() {
cat "$(printenv CERT_KEY_PATH)"
cat "$CERT_KEY_PATH"
}
DOMAIN=$(printenv Le_Domain)
# shellcheck disable=SC2154
DOMAIN=$Le_Domain
# 证书名称
CERT_NAME="${DOMAIN}-$(date +%s)"
# 需要更新证书的 CDN 域名列表
@ -55,7 +56,7 @@ api_custom_value=(
# 获取证书列表
result=$(aliapi_rpc "cas.aliyuncs.com" "GET" "2018-07-13" "DescribeUserCertificateList" "${api_custom_key[*]}" "${api_custom_value[*]}" || exit 101)
# 使用 jq 处理返回的 JSON 数据并提取出匹配当前证书域名的证书列表的 ID用于稍后的删除旧证书操作。
cert_list=$(echo "$result" | jq -cr ".CertificateList|map(select(.common == \"${DOMAIN}\"))|map(.id)|.[]")
cert_list=$(jq -cr ".CertificateList|map(select(.common == \"${DOMAIN}\"))|map(.id)|.[]" <<< "$result")
api_custom_key=(
"Cert"