Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
* text=auto eol=lf
*.bat text eol=crlf
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ fastapi>=0.100.0
uvicorn[standard]>=0.23.0
jinja2>=3.1.0
python-multipart>=0.0.6
requests>=2.32.5
sqlalchemy>=2.0.0
aiosqlite>=0.19.0
psycopg[binary]>=3.1.18
Expand Down
9 changes: 9 additions & 0 deletions src/config/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class EmailServiceType(str, Enum):
DUCK_MAIL = "duck_mail"
FREEMAIL = "freemail"
IMAP_MAIL = "imap_mail"
CLOUD_MAIL = "cloud_mail"


# ============================================================================
Expand Down Expand Up @@ -140,6 +141,14 @@ class EmailServiceType(str, Enum):
"password": "",
"timeout": 30,
"max_retries": 3,
},
"cloud_mail": {
"base_url": "",
"admin_email": "",
"admin_password": "",
"domain": "",
"timeout": 30,
"max_retries": 3,
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ class SettingDefinition:
# 验证码配置
"email_code_timeout": SettingDefinition(
db_key="email_code.timeout",
default_value=120,
default_value=30,
category=SettingCategory.EMAIL,
description="验证码等待超时时间(秒)"
),
Expand Down Expand Up @@ -690,7 +690,7 @@ def proxy_url(self) -> Optional[str]:
cpa_api_token: SecretStr = SecretStr("")

# 验证码配置
email_code_timeout: int = 120
email_code_timeout: int = 30
email_code_poll_interval: int = 3

# Outlook 配置
Expand Down
2 changes: 1 addition & 1 deletion src/core/register.py
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ def _get_verification_code(self) -> Optional[str]:
code = self.email_service.get_verification_code(
email=self.email,
email_id=email_id,
timeout=120,
timeout=30,
pattern=OTP_CODE_PATTERN,
otp_sent_at=self._otp_sent_at,
)
Expand Down
4 changes: 2 additions & 2 deletions src/database/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class Account(Base):
cpa_uploaded = Column(Boolean, default=False) # 是否已上传到 CPA
cpa_uploaded_at = Column(DateTime) # 上传时间
source = Column(String(20), default='register') # 'register' 或 'login',区分账号来源
subscription_type = Column(String(20)) # None / 'plus' / 'team'
subscription_type = Column(String(20)) # 'free' / 'plus' / 'team'
subscription_at = Column(DateTime) # 订阅开通时间
cookies = Column(Text) # 完整 cookie 字符串,用于支付请求
created_at = Column(DateTime, default=datetime.utcnow)
Expand Down Expand Up @@ -226,4 +226,4 @@ def proxy_url(self) -> str:
if self.username and self.password:
auth = f"{self.username}:{self.password}@"

return f"{scheme}://{auth}{self.host}:{self.port}"
return f"{scheme}://{auth}{self.host}:{self.port}"
3 changes: 3 additions & 0 deletions src/services/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from .duck_mail import DuckMailService
from .freemail import FreemailService
from .imap_mail import ImapMailService
from .cloud_mail import CloudMailService

# 注册服务
EmailServiceFactory.register(EmailServiceType.TEMPMAIL, TempmailService)
Expand All @@ -26,6 +27,7 @@
EmailServiceFactory.register(EmailServiceType.DUCK_MAIL, DuckMailService)
EmailServiceFactory.register(EmailServiceType.FREEMAIL, FreemailService)
EmailServiceFactory.register(EmailServiceType.IMAP_MAIL, ImapMailService)
EmailServiceFactory.register(EmailServiceType.CLOUD_MAIL, CloudMailService)

# 导出 Outlook 模块的额外内容
from .outlook.base import (
Expand Down Expand Up @@ -59,6 +61,7 @@
'DuckMailService',
'FreemailService',
'ImapMailService',
'CloudMailService',
# Outlook 模块
'ProviderType',
'EmailMessage',
Expand Down
Loading