MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / Login

Method Login

sdk/auth/codex.go:38–198  ·  view source on GitHub ↗
(ctx context.Context, cfg *config.Config, opts *LoginOptions)

Source from the content-addressed store, hash-verified

36}
37
38func (a *CodexAuthenticator) Login(ctx context.Context, cfg *config.Config, opts *LoginOptions) (*coreauth.Auth, error) {
39 if cfg == nil {
40 return nil, fmt.Errorf("cliproxy auth: configuration is required")
41 }
42 if ctx == nil {
43 ctx = context.Background()
44 }
45 if opts == nil {
46 opts = &LoginOptions{}
47 }
48
49 if shouldUseCodexDeviceFlow(opts) {
50 return a.loginWithDeviceFlow(ctx, cfg, opts)
51 }
52
53 callbackPort := a.CallbackPort
54 if opts.CallbackPort > 0 {
55 callbackPort = opts.CallbackPort
56 }
57
58 pkceCodes, err := codex.GeneratePKCECodes()
59 if err != nil {
60 return nil, fmt.Errorf("codex pkce generation failed: %w", err)
61 }
62
63 state, err := misc.GenerateRandomState()
64 if err != nil {
65 return nil, fmt.Errorf("codex state generation failed: %w", err)
66 }
67
68 oauthServer := codex.NewOAuthServer(callbackPort)
69 if err = oauthServer.Start(); err != nil {
70 if strings.Contains(err.Error(), "already in use") {
71 return nil, codex.NewAuthenticationError(codex.ErrPortInUse, err)
72 }
73 return nil, codex.NewAuthenticationError(codex.ErrServerStartFailed, err)
74 }
75 defer func() {
76 stopCtx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
77 defer cancel()
78 if stopErr := oauthServer.Stop(stopCtx); stopErr != nil {
79 log.Warnf("codex oauth server stop error: %v", stopErr)
80 }
81 }()
82
83 authSvc := codex.NewCodexAuth(cfg)
84
85 authURL, err := authSvc.GenerateAuthURL(state, pkceCodes)
86 if err != nil {
87 return nil, fmt.Errorf("codex authorization url generation failed: %w", err)
88 }
89
90 if !opts.NoBrowser {
91 fmt.Println("Opening browser for Codex authentication")
92 if !browser.IsAvailable() {
93 log.Warn("No browser available; please open the URL manually")
94 util.PrintSSHTunnelInstructions(callbackPort)
95 fmt.Printf("Visit the following URL to continue authentication:\n%s\n", authURL)

Callers

nothing calls this directly

Calls 15

loginWithDeviceFlowMethod · 0.95
StartMethod · 0.95
StopMethod · 0.95
GenerateAuthURLMethod · 0.95
WaitForCallbackMethod · 0.95
ExchangeCodeForTokensMethod · 0.95
buildAuthRecordMethod · 0.95
GeneratePKCECodesFunction · 0.92
GenerateRandomStateFunction · 0.92
NewOAuthServerFunction · 0.92
NewAuthenticationErrorFunction · 0.92
NewCodexAuthFunction · 0.92

Tested by

no test coverage detected