-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcf-security-level.sh
More file actions
41 lines (38 loc) · 1.82 KB
/
Copy pathcf-security-level.sh
File metadata and controls
41 lines (38 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env bash
# 用法: bash <(wget --no-check-certificate -qO- 'https://iilog.com/cf-security-level.sh') admin@badiu.com apikey30be7032ba0b0d870e74e3cdcd934ef zoneidcfe29838c671fbd522bc81856e under_attack
# 更多信息参考 https://limbopro.com/archives/ChangeSecurity-Level-setting.html
# 官方API https://developers.cloudflare.com/api/operations/zone-settings-change-security-level-setting
# 读取环境变量或从命令行参数获取
CFEMAIL=${CFEMAIL:-$1}
CFAPIKEY=${CFAPIKEY:-$2}
ZONEID=${ZONEID:-$3}
LEVEL=${LEVEL:-$4}
# 检查是否所有必要的变量都已设置
if [ -z "$CFEMAIL" ] || [ -z "$CFAPIKEY" ] || [ -z "$ZONEID" ] || [ -z "$LEVEL" ]; then
echo "错误! 必须提供 参数: CFEMAIL CFAPIKEY ZONEID LEVEL"
echo "CFEMAIL: Cloudflare注册邮箱"
echo "CFAPIKEY: https://dash.cloudflare.com/profile/api-tokens中的 Global API Key"
echo "ZONEID: https://dash.cloudflare.com - 选择您的域名 - 概览 - API(在右侧栏) - 区域 ID"
echo "LEVEL: 安全等级 off/essentially_off/low/medium/high/under_attack "
echo "API Doc: https://developers.cloudflare.com/api/operations/zone-settings-change-security-level-setting"
exit 1
else
echo "CFEMAIL: $CFEMAIL"
echo "CFAPIKEY: $CFAPIKEY"
echo "ZONEID: $ZONEID"
echo "LEVEL: $LEVEL"
fi
# 调用 Cloudflare API 更新安全级别
response=$(curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/${ZONEID}/settings/security_level" \
-H "X-Auth-Email: ${CFEMAIL}" \
-H "X-Auth-Key: ${CFAPIKEY}" \
-H "Content-Type: application/json" \
--data '{"value": "'$LEVEL'"}')
# 检查 API 调用是否成功
if echo "$response" | grep -q '"success":true'; then
echo "安全级别设置成功更新为${LEVEL}。"
else
echo "错误:更新安全级别失败。"
echo "响应内容:$response"
exit 1
fi