| #!/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" |