This commit is contained in:
cnlimiter
2026-03-14 16:51:57 +08:00
parent dc1334fbab
commit 9d3099fcd8
35 changed files with 9490 additions and 0 deletions

265
src/config/constants.py Normal file
View File

@@ -0,0 +1,265 @@
"""
常量定义
"""
from enum import Enum
from typing import Dict, List, Tuple
# ============================================================================
# 枚举类型
# ============================================================================
class AccountStatus(str, Enum):
"""账户状态"""
ACTIVE = "active"
EXPIRED = "expired"
BANNED = "banned"
FAILED = "failed"
class TaskStatus(str, Enum):
"""任务状态"""
PENDING = "pending"
RUNNING = "running"
COMPLETED = "completed"
FAILED = "failed"
CANCELLED = "cancelled"
class EmailServiceType(str, Enum):
"""邮箱服务类型"""
TEMPMAIL = "tempmail"
OUTLOOK = "outlook"
CUSTOM_DOMAIN = "custom_domain"
# ============================================================================
# 应用常量
# ============================================================================
APP_NAME = "OpenAI/Codex CLI 自动注册系统"
APP_VERSION = "2.0.0"
APP_DESCRIPTION = "自动注册 OpenAI/Codex CLI 账号的系统"
# ============================================================================
# OpenAI OAuth 相关常量
# ============================================================================
# OAuth 参数
OAUTH_CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann"
OAUTH_AUTH_URL = "https://auth.openai.com/oauth/authorize"
OAUTH_TOKEN_URL = "https://auth.openai.com/oauth/token"
OAUTH_REDIRECT_URI = "http://localhost:1455/auth/callback"
OAUTH_SCOPE = "openid email profile offline_access"
# OpenAI API 端点
OPENAI_API_ENDPOINTS = {
"sentinel": "https://sentinel.openai.com/backend-api/sentinel/req",
"signup": "https://auth.openai.com/api/accounts/authorize/continue",
"register": "https://auth.openai.com/api/accounts/user/register",
"send_otp": "https://auth.openai.com/api/accounts/email-otp/send",
"validate_otp": "https://auth.openai.com/api/accounts/email-otp/validate",
"create_account": "https://auth.openai.com/api/accounts/create_account",
"select_workspace": "https://auth.openai.com/api/accounts/workspace/select",
}
# ============================================================================
# 邮箱服务相关常量
# ============================================================================
# Tempmail.lol API 端点
TEMPMAIL_API_ENDPOINTS = {
"create_inbox": "/inbox/create",
"get_inbox": "/inbox",
}
# 自定义域名邮箱 API 端点
CUSTOM_DOMAIN_API_ENDPOINTS = {
"get_config": "/api/config",
"create_email": "/api/emails/generate",
"list_emails": "/api/emails",
"get_email_messages": "/api/emails/{emailId}",
"delete_email": "/api/emails/{emailId}",
"get_message": "/api/emails/{emailId}/{messageId}",
}
# 邮箱服务默认配置
EMAIL_SERVICE_DEFAULTS = {
"tempmail": {
"base_url": "https://api.tempmail.lol/v2",
"timeout": 30,
"max_retries": 3,
},
"outlook": {
"imap_server": "outlook.office365.com",
"imap_port": 993,
"smtp_server": "smtp.office365.com",
"smtp_port": 587,
"timeout": 30,
},
"custom_domain": {
"base_url": "", # 需要用户配置
"api_key_header": "X-API-Key",
"timeout": 30,
"max_retries": 3,
}
}
# ============================================================================
# 注册流程相关常量
# ============================================================================
# 验证码相关
OTP_CODE_PATTERN = r"(?<!\d)(\d{6})(?!\d)"
OTP_WAIT_TIMEOUT = 120 # 秒
OTP_POLL_INTERVAL = 3 # 秒
OTP_MAX_ATTEMPTS = 40 # 最大轮询次数
# 密码生成
PASSWORD_CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
DEFAULT_PASSWORD_LENGTH = 12
# 用户信息(用于注册)
DEFAULT_USER_INFO = {
"name": "Neo",
"birthdate": "2000-02-20",
}
# ============================================================================
# 代理相关常量
# ============================================================================
PROXY_TYPES = ["http", "socks5", "socks5h"]
DEFAULT_PROXY_CONFIG = {
"enabled": False,
"type": "http",
"host": "127.0.0.1",
"port": 7890,
}
# ============================================================================
# 数据库相关常量
# ============================================================================
# 数据库表名
DB_TABLE_NAMES = {
"accounts": "accounts",
"email_services": "email_services",
"registration_tasks": "registration_tasks",
"settings": "settings",
}
# 默认设置
DEFAULT_SETTINGS = [
# (key, value, description, category)
("system.name", APP_NAME, "系统名称", "general"),
("system.version", APP_VERSION, "系统版本", "general"),
("logs.retention_days", "30", "日志保留天数", "general"),
("openai.client_id", OAUTH_CLIENT_ID, "OpenAI OAuth Client ID", "openai"),
("openai.auth_url", OAUTH_AUTH_URL, "OpenAI 认证地址", "openai"),
("openai.token_url", OAUTH_TOKEN_URL, "OpenAI Token 地址", "openai"),
("openai.redirect_uri", OAUTH_REDIRECT_URI, "OpenAI 回调地址", "openai"),
("openai.scope", OAUTH_SCOPE, "OpenAI 权限范围", "openai"),
("proxy.enabled", "false", "是否启用代理", "proxy"),
("proxy.type", "http", "代理类型 (http/socks5)", "proxy"),
("proxy.host", "127.0.0.1", "代理主机", "proxy"),
("proxy.port", "7890", "代理端口", "proxy"),
("registration.max_retries", "3", "最大重试次数", "registration"),
("registration.timeout", "120", "超时时间(秒)", "registration"),
("registration.default_password_length", "12", "默认密码长度", "registration"),
("webui.host", "0.0.0.0", "Web UI 监听主机", "webui"),
("webui.port", "8000", "Web UI 监听端口", "webui"),
("webui.debug", "true", "调试模式", "webui"),
]
# ============================================================================
# Web UI 相关常量
# ============================================================================
# WebSocket 事件
WEBSOCKET_EVENTS = {
"CONNECT": "connect",
"DISCONNECT": "disconnect",
"LOG": "log",
"STATUS": "status",
"ERROR": "error",
"COMPLETE": "complete",
}
# API 响应状态码
API_STATUS_CODES = {
"SUCCESS": 200,
"CREATED": 201,
"BAD_REQUEST": 400,
"UNAUTHORIZED": 401,
"FORBIDDEN": 403,
"NOT_FOUND": 404,
"CONFLICT": 409,
"INTERNAL_ERROR": 500,
}
# 分页
DEFAULT_PAGE_SIZE = 20
MAX_PAGE_SIZE = 100
# ============================================================================
# 错误消息
# ============================================================================
ERROR_MESSAGES = {
# 通用错误
"DATABASE_ERROR": "数据库操作失败",
"CONFIG_ERROR": "配置错误",
"NETWORK_ERROR": "网络连接失败",
"TIMEOUT": "操作超时",
"VALIDATION_ERROR": "参数验证失败",
# 邮箱服务错误
"EMAIL_SERVICE_UNAVAILABLE": "邮箱服务不可用",
"EMAIL_CREATION_FAILED": "创建邮箱失败",
"OTP_NOT_RECEIVED": "未收到验证码",
"OTP_INVALID": "验证码无效",
# OpenAI 相关错误
"OPENAI_AUTH_FAILED": "OpenAI 认证失败",
"OPENAI_RATE_LIMIT": "OpenAI 接口限流",
"OPENAI_CAPTCHA": "遇到验证码",
# 代理错误
"PROXY_FAILED": "代理连接失败",
"PROXY_AUTH_FAILED": "代理认证失败",
# 账户错误
"ACCOUNT_NOT_FOUND": "账户不存在",
"ACCOUNT_ALREADY_EXISTS": "账户已存在",
"ACCOUNT_INVALID": "账户无效",
# 任务错误
"TASK_NOT_FOUND": "任务不存在",
"TASK_ALREADY_RUNNING": "任务已在运行中",
"TASK_CANCELLED": "任务已取消",
}
# ============================================================================
# 正则表达式
# ============================================================================
REGEX_PATTERNS = {
"EMAIL": r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",
"URL": r"https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+",
"IP_ADDRESS": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",
"OTP_CODE": OTP_CODE_PATTERN,
}
# ============================================================================
# 时间常量
# ============================================================================
TIME_CONSTANTS = {
"SECOND": 1,
"MINUTE": 60,
"HOUR": 3600,
"DAY": 86400,
"WEEK": 604800,
}