From 33289b633d8a598876fcec724d92469dc290caaf Mon Sep 17 00:00:00 2001 From: kyx236 Date: Tue, 3 Feb 2026 07:48:06 +0800 Subject: [PATCH] feat: add Codex API authentication module with TLS fingerprinting and PoW solving, and introduce team processing API. --- backend/internal/api/team_process.go | 14 ++++++++------ backend/internal/auth/codex_api.go | 6 +++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/backend/internal/api/team_process.go b/backend/internal/api/team_process.go index 50e0c94..94d685d 100644 --- a/backend/internal/api/team_process.go +++ b/backend/internal/api/team_process.go @@ -593,7 +593,13 @@ func processSingleTeam(idx int, req TeamProcessRequest) (result TeamProcessResul s2aSem <- struct{}{} defer func() { <-s2aSem }() - logger.Status(fmt.Sprintf("%s 入库中... | 邮箱: %s", memberLogPrefix, memberEmail), memberEmail, "team") + // 解析代理 + proxyToUse := database.Instance.ResolveProxy(req.Proxy) + proxyDisplay := "无代理" + if proxyToUse != "" { + proxyDisplay = getProxyDisplay(proxyToUse) + } + logger.Status(fmt.Sprintf("%s 入库中... | 邮箱: %s | 代理: %s", memberLogPrefix, memberEmail, proxyDisplay), memberEmail, "team") var s2aSuccess bool var lastError string @@ -633,12 +639,8 @@ func processSingleTeam(idx int, req TeamProcessRequest) (result TeamProcessResul // 根据配置选择授权方式 var code string if config.Global.AuthMethod == "api" { - proxyToUse := database.Instance.ResolveProxy(req.Proxy) - if proxyToUse != req.Proxy && proxyToUse != "" { - logger.Info(fmt.Sprintf("%s 使用解析代理: %s", memberLogPrefix, getProxyDisplay(proxyToUse)), memberEmail, "team") - } code, err = auth.CompleteWithCodexAPI(memberEmail, memberPassword, teamID, s2aResp.Data.AuthURL, s2aResp.Data.SessionID, proxyToUse, authLogger) - if proxyToUse != req.Proxy && proxyToUse != "" { + if proxyToUse != "" { database.Instance.UpdateCodexProxyStats(proxyToUse, err == nil) } } else { diff --git a/backend/internal/auth/codex_api.go b/backend/internal/auth/codex_api.go index 922f1bb..8f53dce 100644 --- a/backend/internal/auth/codex_api.go +++ b/backend/internal/auth/codex_api.go @@ -622,7 +622,11 @@ func min(a, b int) int { // authURL 和 sessionID 由 S2A 生成 func CompleteWithCodexAPI(email, password, workspaceID, authURL, sessionID, proxy string, logger *AuthLogger) (string, error) { if logger != nil { - logger.LogStep(StepBrowserStart, "使用 CodexAuth API 模式...") + if proxy != "" { + logger.LogStep(StepBrowserStart, "使用 CodexAuth API 模式 (代理: %s)", proxy) + } else { + logger.LogStep(StepBrowserStart, "使用 CodexAuth API 模式 (无代理)") + } } auth, err := NewCodexAPIAuth(email, password, workspaceID, authURL, sessionID, proxy, logger)