Nattiden 1 tahun lalu
induk
melakukan
8e37233fa0
2 mengubah file dengan 62 tambahan dan 1 penghapusan
  1. 18 1
      .github/workflows/generate_page.yml
  2. 44 0
      Actions/purge_cdn_cache.sh

+ 18 - 1
.github/workflows/generate_page.yml

@@ -1,4 +1,3 @@
-name: Generate Pages
 on: 
    workflow_dispatch:
    push:
@@ -7,6 +6,7 @@ on:
 
 jobs:
    generate:
+      name: Generate Pages
       runs-on: ubuntu-latest
       steps:
        - name: 签出工程储存库
@@ -55,3 +55,20 @@ jobs:
             git config --local user.name "Hilda Bot"
             git add *
             git diff-index --quiet HEAD || git commit -S -m "upload generated pages" && git push
+
+   purge_cdn:
+      name: Purge CDN
+      runs-on: ubuntu-latest
+      needs: generate
+      steps:
+       - name: 签出工程储存库
+         uses: actions/checkout@v4
+         with: 
+            path: 'project'
+       - name: 刷新 CDN 缓存
+         shell: bash
+         run: bash Actions/purge_cdn_cache.sh
+         env:
+            secret_id: ${{ secrets.TENCENT_CLOUD_SECRET_ID }}
+            secret_key: ${{ secrets.TENCENT_CLOUD_SECRET_KEY }}
+            purge_urls: ${{ secrets.TENCENT_CLOUD_CDN_URLS }}

+ 44 - 0
Actions/purge_cdn_cache.sh

@@ -0,0 +1,44 @@
+token=""
+
+service="cdn"
+host="cdn.tencentcloudapi.com"
+region=""
+action="PurgeUrlsCache"
+version="2018-06-06"
+algorithm="TC3-HMAC-SHA256"
+timestamp=$(date +%s)
+date=$(date -u -d @$timestamp +"%Y-%m-%d")
+payload="{\"Urls\":$purge_urls}"
+
+# ************* 步骤 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"