腾讯云EO缓存刷新
· 2.3 KiB · Text
Исходник
#!/bin/bash
secret_id=""
secret_key=""
token=""
service="teo"
host="teo.tencentcloudapi.com"
region=""
action="CreatePurgeTask"
version="2022-09-01"
algorithm="TC3-HMAC-SHA256"
timestamp=$(date +%s)
date=$(date -u -d @$timestamp +"%Y-%m-%d")
payload="{\"ZoneId\":\"",\"Type\":\"purge_host\",\"Method\":\"invalidate\",\"Targets\":[\"www.hudi.space\"]}"
# ************* 步骤 1:拼接规范请求串 *************
http_request_method="POST"
canonical_uri="/"
canonical_querystring=""
canonical_headers="content-type:application/json; charset=utf-8\nhost:$host\nx-tc-action:$(echo $action | awk '{print tolower($0)}')\n"
signed_headers="content-type;host;x-tc-action"
hashed_request_payload=$(echo -n "$payload" | openssl sha256 -hex | awk '{print $2}')
canonical_request="$http_request_method\n$canonical_uri\n$canonical_querystring\n$canonical_headers\n$signed_headers\n$hashed_request_payload"
echo "$canonical_request"
# ************* 步骤 2:拼接待签名字符串 *************
credential_scope="$date/$service/tc3_request"
hashed_canonical_request=$(printf "$canonical_request" | openssl sha256 -hex | awk '{print $2}')
string_to_sign="$algorithm\n$timestamp\n$credential_scope\n$hashed_canonical_request"
echo "$string_to_sign"
# ************* 步骤 3:计算签名 *************
secret_date=$(printf "$date" | openssl sha256 -hmac "TC3$secret_key" | awk '{print $2}')
echo $secret_date
secret_service=$(printf $service | openssl dgst -sha256 -mac hmac -macopt hexkey:"$secret_date" | awk '{print $2}')
echo $secret_service
secret_signing=$(printf "tc3_request" | openssl dgst -sha256 -mac hmac -macopt hexkey:"$secret_service" | awk '{print $2}')
echo $secret_signing
signature=$(printf "$string_to_sign" | openssl dgst -sha256 -mac hmac -macopt hexkey:"$secret_signing" | awk '{print $2}')
echo "$signature"
# ************* 步骤 4:拼接 Authorization *************
authorization="$algorithm Credential=$secret_id/$credential_scope, SignedHeaders=$signed_headers, Signature=$signature"
echo $authorization
# ************* 步骤 5:构造并发起请求 *************
curl -XPOST "https://$host" -d "$payload" -H "Authorization: $authorization" -H "Content-Type: application/json; charset=utf-8" -H "Host: $host" -H "X-TC-Action: $action" -H "X-TC-Timestamp: $timestamp" -H "X-TC-Version: $version" -H "X-TC-Region: $region" -H "X-TC-Token: $token"
1 | #!/bin/bash |
2 | |
3 | secret_id="" |
4 | secret_key="" |
5 | token="" |
6 | |
7 | service="teo" |
8 | host="teo.tencentcloudapi.com" |
9 | region="" |
10 | action="CreatePurgeTask" |
11 | version="2022-09-01" |
12 | algorithm="TC3-HMAC-SHA256" |
13 | timestamp=$(date +%s) |
14 | date=$(date -u -d @$timestamp +"%Y-%m-%d") |
15 | payload="{\"ZoneId\":\"",\"Type\":\"purge_host\",\"Method\":\"invalidate\",\"Targets\":[\"www.hudi.space\"]}" |
16 | |
17 | # ************* 步骤 1:拼接规范请求串 ************* |
18 | http_request_method="POST" |
19 | canonical_uri="/" |
20 | canonical_querystring="" |
21 | canonical_headers="content-type:application/json; charset=utf-8\nhost:$host\nx-tc-action:$(echo $action | awk '{print tolower($0)}')\n" |
22 | signed_headers="content-type;host;x-tc-action" |
23 | hashed_request_payload=$(echo -n "$payload" | openssl sha256 -hex | awk '{print $2}') |
24 | canonical_request="$http_request_method\n$canonical_uri\n$canonical_querystring\n$canonical_headers\n$signed_headers\n$hashed_request_payload" |
25 | echo "$canonical_request" |
26 | |
27 | # ************* 步骤 2:拼接待签名字符串 ************* |
28 | credential_scope="$date/$service/tc3_request" |
29 | hashed_canonical_request=$(printf "$canonical_request" | openssl sha256 -hex | awk '{print $2}') |
30 | string_to_sign="$algorithm\n$timestamp\n$credential_scope\n$hashed_canonical_request" |
31 | echo "$string_to_sign" |
32 | |
33 | # ************* 步骤 3:计算签名 ************* |
34 | secret_date=$(printf "$date" | openssl sha256 -hmac "TC3$secret_key" | awk '{print $2}') |
35 | echo $secret_date |
36 | secret_service=$(printf $service | openssl dgst -sha256 -mac hmac -macopt hexkey:"$secret_date" | awk '{print $2}') |
37 | echo $secret_service |
38 | secret_signing=$(printf "tc3_request" | openssl dgst -sha256 -mac hmac -macopt hexkey:"$secret_service" | awk '{print $2}') |
39 | echo $secret_signing |
40 | signature=$(printf "$string_to_sign" | openssl dgst -sha256 -mac hmac -macopt hexkey:"$secret_signing" | awk '{print $2}') |
41 | echo "$signature" |
42 | |
43 | # ************* 步骤 4:拼接 Authorization ************* |
44 | authorization="$algorithm Credential=$secret_id/$credential_scope, SignedHeaders=$signed_headers, Signature=$signature" |
45 | echo $authorization |
46 | |
47 | # ************* 步骤 5:构造并发起请求 ************* |
48 | curl -XPOST "https://$host" -d "$payload" -H "Authorization: $authorization" -H "Content-Type: application/json; charset=utf-8" -H "Host: $host" -H "X-TC-Action: $action" -H "X-TC-Timestamp: $timestamp" -H "X-TC-Version: $version" -H "X-TC-Region: $region" -H "X-TC-Token: $token" |
49 |