MCPcopy Create free account
hub / github.com/Tron521/codex-console-temp / RegistrationEngine

Class RegistrationEngine

src/core/register.py:132–3306  ·  view source on GitHub ↗

注册引擎 负责协调邮箱服务、OAuth 流程和 OpenAI API 调用

Source from the content-addressed store, hash-verified

130
131
132class RegistrationEngine:
133 """
134 注册引擎
135 负责协调邮箱服务、OAuth 流程和 OpenAI API 调用
136 """
137
138 def __init__(
139 self,
140 email_service: BaseEmailService,
141 proxy_url: Optional[str] = None,
142 callback_logger: Optional[Callable[[str], None]] = None,
143 task_uuid: Optional[str] = None,
144 cancel_checker: Optional[Callable[[], bool]] = None,
145 ):
146 """
147 初始化注册引擎
148
149 Args:
150 email_service: 邮箱服务实例
151 proxy_url: 代理 URL
152 callback_logger: 日志回调函数
153 task_uuid: 任务 UUID(用于数据库记录)
154 """
155 self.email_service = email_service
156 self.proxy_url = proxy_url
157 self.callback_logger = callback_logger or (lambda msg: logger.info(msg))
158 self.task_uuid = task_uuid
159 self.cancel_checker = cancel_checker or (lambda: False)
160
161 # 创建 HTTP 客户端
162 self.http_client = OpenAIHTTPClient(proxy_url=proxy_url)
163
164 # 创建 OAuth 管理器
165 settings = get_settings()
166 self.oauth_manager = OAuthManager(
167 client_id=settings.openai_client_id,
168 auth_url=settings.openai_auth_url,
169 token_url=settings.openai_token_url,
170 redirect_uri=settings.openai_redirect_uri,
171 scope=settings.openai_scope,
172 proxy_url=proxy_url # 传递代理配置
173 )
174 entry_flow = str(getattr(settings, "registration_entry_flow", "native") or "native").strip().lower()
175 # 配置层仅保留 native/abcard;Outlook 邮箱在执行时自动切换 outlook 链路。
176 self.registration_entry_flow: str = entry_flow if entry_flow in {"native", "abcard"} else "native"
177 self.anyauto_browser_mode: str = str(
178 getattr(settings, "registration_anyauto_browser_mode", "headless") or "headless"
179 ).strip().lower()
180
181 # 状态变量
182 self.email: Optional[str] = None
183 self.inbox_email: Optional[str] = None # 邮箱服务原始地址(用于收件)
184 self.password: Optional[str] = None # 注册密码
185 self.email_info: Optional[Dict[str, Any]] = None
186 self.oauth_start: Optional[OAuthStart] = None
187 self.session: Optional[cffi_requests.Session] = None
188 self.session_token: Optional[str] = None # 会话令牌
189 self.device_id: Optional[str] = None # oai-did

Calls

no outgoing calls