|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TOKEN=$1 |
|
|
OWNER=$2 |
|
|
REPO=$3 |
|
|
|
|
|
if [ -z "$TOKEN" ] || [ -z "$OWNER" ] || [ -z "$REPO" ]; then |
|
|
echo "❌ 用法: $0 <github_token> <owner> <repo>" |
|
|
echo "例如: $0 ghp_xxxxxxxxxxxx myusername myrepo" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
echo "🔍 检查 GitHub Token 权限..." |
|
|
echo "Token: ${TOKEN:0:8}..." |
|
|
echo "仓库: $OWNER/$REPO" |
|
|
echo "=" * 50 |
|
|
|
|
|
|
|
|
echo "📋 1. 检查 Token 基本权限..." |
|
|
USER_RESPONSE=$(curl -s -H "Authorization: token $TOKEN" \ |
|
|
-H "User-Agent: VvvebJs-Check/1.0" \ |
|
|
https://api.github.com/user) |
|
|
|
|
|
if echo "$USER_RESPONSE" | grep -q '"login"'; then |
|
|
USERNAME=$(echo "$USER_RESPONSE" | grep '"login"' | sed 's/.*"login": *"\([^"]*\)".*/\1/') |
|
|
echo "✅ Token 有效 - 用户: $USERNAME" |
|
|
else |
|
|
echo "❌ Token 无效或无权限" |
|
|
echo "详情: $USER_RESPONSE" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
echo "📁 2. 检查仓库访问权限..." |
|
|
REPO_RESPONSE=$(curl -s -H "Authorization: token $TOKEN" \ |
|
|
-H "User-Agent: VvvebJs-Check/1.0" \ |
|
|
https://api.github.com/repos/$OWNER/$REPO) |
|
|
|
|
|
if echo "$REPO_RESPONSE" | grep -q '"full_name"'; then |
|
|
echo "✅ 仓库可访问" |
|
|
|
|
|
|
|
|
if echo "$REPO_RESPONSE" | grep -q '"permissions"'; then |
|
|
ADMIN=$(echo "$REPO_RESPONSE" | grep '"admin"' | sed 's/.*"admin": *\([^,]*\).*/\1/') |
|
|
PUSH=$(echo "$REPO_RESPONSE" | grep '"push"' | sed 's/.*"push": *\([^,]*\).*/\1/') |
|
|
PULL=$(echo "$REPO_RESPONSE" | grep '"pull"' | sed 's/.*"pull": *\([^,]*\).*/\1/') |
|
|
|
|
|
echo " - Admin: $ADMIN" |
|
|
echo " - Push: $PUSH" |
|
|
echo " - Pull: $PULL" |
|
|
|
|
|
if [ "$PUSH" = "true" ]; then |
|
|
echo "✅ 有写入权限" |
|
|
else |
|
|
echo "❌ 缺少写入权限" |
|
|
fi |
|
|
fi |
|
|
else |
|
|
echo "❌ 仓库不存在或无访问权限" |
|
|
echo "详情: $REPO_RESPONSE" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
echo "✏️ 3. 测试文件创建权限..." |
|
|
TEST_FILE="vvvebjs-test-$(date +%s).txt" |
|
|
TEST_CONTENT=$(echo "VvvebJs Test - $(date)" | base64) |
|
|
|
|
|
CREATE_RESPONSE=$(curl -s -X PUT \ |
|
|
-H "Authorization: token $TOKEN" \ |
|
|
-H "User-Agent: VvvebJs-Check/1.0" \ |
|
|
-H "Content-Type: application/json" \ |
|
|
-d "{\"message\":\"VvvebJs permission test\",\"content\":\"$TEST_CONTENT\"}" \ |
|
|
https://api.github.com/repos/$OWNER/$REPO/contents/$TEST_FILE) |
|
|
|
|
|
if echo "$CREATE_RESPONSE" | grep -q '"sha"'; then |
|
|
echo "✅ 文件创建成功" |
|
|
|
|
|
|
|
|
SHA=$(echo "$CREATE_RESPONSE" | grep '"sha"' | head -1 | sed 's/.*"sha": *"\([^"]*\)".*/\1/') |
|
|
curl -s -X DELETE \ |
|
|
-H "Authorization: token $TOKEN" \ |
|
|
-H "User-Agent: VvvebJs-Check/1.0" \ |
|
|
-H "Content-Type: application/json" \ |
|
|
-d "{\"message\":\"Clean up test file\",\"sha\":\"$SHA\"}" \ |
|
|
https://api.github.com/repos/$OWNER/$REPO/contents/$TEST_FILE > /dev/null |
|
|
echo "🧹 测试文件已清理" |
|
|
else |
|
|
echo "❌ 文件创建失败" |
|
|
echo "详情: $CREATE_RESPONSE" |
|
|
fi |
|
|
|
|
|
echo "" |
|
|
echo "🎉 权限检查完成!" |
|
|
echo "" |
|
|
echo "📋 配置建议:" |
|
|
echo "GITHUB_TOKEN=$TOKEN" |
|
|
echo "GITHUB_OWNER=$OWNER" |
|
|
echo "GITHUB_REPO=$REPO" |
|
|
echo "GITHUB_BRANCH=main" |
|
|
echo "GITHUB_PATH=pages/" |
|
|
echo "STORAGE_TYPE=github" |