Last active
October 12, 2023 11:38
-
-
Save watsuyo/85efa9ff801362704cbf48eaa5a264f8 to your computer and use it in GitHub Desktop.
Cloudflare Workers Route を作成、削除する shell script。API Token、Zone ID、Worker、Worker 名 、Route パターンの入力をユーザーに求める
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# カラーコード | |
GREEN='\033[0;32m' # 緑 | |
RED='\033[0;31m' # 赤 | |
NC='\033[0m' # リセット | |
# プロンプトでユーザーからの入力を収集 | |
read -p "API Token を入力して下さい: " YOUR_API_KEY | |
read -p "Zone ID を入力して下さい: " ZONE_ID | |
read -p "Worker 名 を入力して下さい: " Worker | |
read -p "Route パターン を入力して下さい: " Route | |
# ルート一覧を取得 | |
routes=$(curl --request GET \ | |
--url "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \ | |
--header "Authorization: Bearer $YOUR_API_KEY" \ | |
--header 'Content-Type: application/json') | |
# 重複したルートを検出 | |
duplicate_route_id=$(echo "$routes" | jq -r --arg Route "$Route" --arg Worker "$Worker" '.result[] | select(.pattern == $Route and .script == $Worker) | .id') | |
if [ -n "$duplicate_route_id" ]; then | |
# 重複したルートが見つかった場合 | |
printf "${RED}重複したルートが見つかりました。ROUTE_ID: $duplicate_route_id${NC}\n" | |
# ルートを削除するかどうかの質問 | |
read -p "既存の Workers Route を削除しますか?(yes): " delete_route | |
if [ "$delete_route" == "yes" ]; then | |
# 重複したルートを削除するCurlコマンドを実行 | |
delete_response=$(curl --request DELETE \ | |
--url "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes/$duplicate_route_id" \ | |
--header "Authorization: Bearer $YOUR_API_KEY" \ | |
--header 'Content-Type: application/json') | |
echo "$delete_response" | |
printf "${GREEN}Workers Route が削除されました。${NC}\n" | |
else | |
printf "${RED}ルートの削除をキャンセルしました。${NC}\n" | |
fi | |
else | |
# 新しい Workers Route を作成 | |
read -p "新しい Workers Route を作成しますか?(yes): " create_route | |
if [ "$create_route" == "yes" ]; then | |
# ルートを作成するCurlコマンドを実行 | |
create_response=$(curl --request POST \ | |
--url "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \ | |
--header "Authorization: Bearer $YOUR_API_KEY" \ | |
--header 'Content-Type: application/json' \ | |
--data '{ | |
"pattern": "'"$Route"'", | |
"script": "'"$Worker"'" | |
}') | |
echo "$create_response" | |
IS_SUCCESS=$(echo "$create_response" | jq -r '.success') | |
if [ "$IS_SUCCESS" == "true" ]; then | |
ROUTE_ID=$(echo "$create_response" | jq -r '.result.id') | |
printf "${GREEN}新しい Workers Route が作成されました。ROUTE_ID: $ROUTE_ID${NC}\n" | |
# 新しい Workers Route が作成されたら、削除の会話に進む | |
read -p "新しい Workers Route を削除しますか?(yes): " delete_route | |
if [ "$delete_route" == "yes" ]; then | |
# 新しい Workers Route を削除するCurlコマンドを実行 | |
delete_response=$(curl --request DELETE \ | |
--url "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes/$ROUTE_ID" \ | |
--header "Authorization: Bearer $YOUR_API_KEY" \ | |
--header 'Content-Type: application/json') | |
echo "$delete_response" | |
printf "${GREEN}新しい Workers Route が削除されました。${NC}\n" | |
else | |
printf "${RED}ルートの削除をキャンセルしました。${NC}\n" | |
fi | |
else | |
printf "${RED}新しい Workers Route の作成に失敗しました。 レスポンスの内容を確認して下さい。${NC}\n" | |
fi | |
else | |
printf "${RED}新しい Workers Route の作成をキャンセルしました。${NC}\n" | |
fi | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment