Update accounts module description

This commit is contained in:
CJACK.
2026-02-04 14:12:42 +08:00
parent a917e19e9d
commit 94238070d8
2 changed files with 4 additions and 218 deletions

View File

@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
"""Admin 账号管理模块 - 账号验证和测试"""
"""Admin 账号管理模块 - 账号测试与导入"""
import asyncio
import json
import base64
@@ -24,145 +24,6 @@ from .auth import verify_admin
router = APIRouter()
# ----------------------------------------------------------------------
# 账号验证
# ----------------------------------------------------------------------
async def validate_single_account(account: dict) -> dict:
"""验证单个账号的有效性"""
acc_id = get_account_identifier(account)
result = {
"account": acc_id,
"valid": False,
"has_token": bool(account.get("token", "").strip()),
"message": "",
}
def _is_token_invalid(status_code: int, data: dict) -> bool:
msg = (data.get("msg") or data.get("message") or "").lower()
code = data.get("code")
return status_code in {401, 403} or code in {40001, 40002, 40003} or "token" in msg or "unauthorized" in msg
def _create_session(token: str) -> dict:
headers = {**BASE_HEADERS, "authorization": f"Bearer {token}"}
try:
session_resp = cffi_requests.post(
DEEPSEEK_CREATE_SESSION_URL,
headers=headers,
json={"agent": "chat"},
impersonate="safari15_3",
timeout=15,
)
except Exception as e:
return {"success": False, "message": f"请求异常: {e}", "status_code": 0, "data": {}}
try:
data = session_resp.json()
except Exception:
data = {}
finally:
session_resp.close()
if session_resp.status_code == 200 and data.get("code") == 0:
return {
"success": True,
"session_id": data.get("data", {}).get("biz_data", {}).get("id"),
"status_code": session_resp.status_code,
"data": data,
}
return {
"success": False,
"message": data.get("msg") or f"HTTP {session_resp.status_code}",
"status_code": session_resp.status_code,
"data": data,
}
try:
token = account.get("token", "").strip()
if token:
session_result = _create_session(token)
if session_result["success"]:
result["valid"] = True
result["message"] = "Token 有效"
return result
if _is_token_invalid(session_result["status_code"], session_result["data"]):
token = ""
account["token"] = ""
if not token:
try:
login_deepseek_via_account(account)
token = account.get("token", "").strip()
session_result = _create_session(token)
if session_result["success"]:
result["valid"] = True
result["has_token"] = True
result["message"] = "登录成功并验证通过"
else:
result["message"] = f"登录成功但验证失败: {session_result['message']}"
except Exception as e:
result["valid"] = False
result["message"] = f"登录失败: {str(e)}"
except Exception as e:
result["message"] = f"验证出错: {str(e)}"
return result
@router.post("/accounts/validate")
async def validate_account(request: Request, _: bool = Depends(verify_admin)):
"""验证单个账号"""
data = await request.json()
identifier = data.get("identifier", "").strip()
if not identifier:
raise HTTPException(status_code=400, detail="需要账号标识email 或 mobile")
account = None
for acc in CONFIG.get("accounts", []):
if acc.get("email") == identifier or acc.get("mobile") == identifier:
account = acc
break
if not account:
raise HTTPException(status_code=404, detail="账号不存在")
result = await validate_single_account(account)
if result["valid"] and result["has_token"]:
save_config(CONFIG)
return JSONResponse(content=result)
@router.post("/accounts/validate-all")
async def validate_all_accounts(_: bool = Depends(verify_admin)):
"""批量验证所有账号"""
accounts = CONFIG.get("accounts", [])
if not accounts:
return JSONResponse(content={
"total": 0, "valid": 0, "invalid": 0, "results": [],
})
results = []
valid_count = 0
for acc in accounts:
result = await validate_single_account(acc)
results.append(result)
if result["valid"]:
valid_count += 1
await asyncio.sleep(0.5)
save_config(CONFIG)
return JSONResponse(content={
"total": len(accounts),
"valid": valid_count,
"invalid": len(accounts) - valid_count,
"results": results,
})
# ----------------------------------------------------------------------
# 账号 API 测试
# ----------------------------------------------------------------------