Files
cursorregasscountken/config.py
huangzhenpc d28e2f35c8
Some checks failed
Remove old artifacts / remove-old-artifacts (push) Has been cancelled
feat: 改造配置系统,使用API获取配置,支持IMAP和临时邮箱,移除本地env依赖
2025-02-11 12:48:54 +08:00

153 lines
5.3 KiB
Python

import os
import sys
import requests
from logger import logging
class Config:
def __init__(self):
self.api_base_url = "https://cursorapi.nosqli.com/admin"
self.load_config()
def load_config(self):
"""从API加载配置"""
try:
endpoint = f"{self.api_base_url}/api.mail/getRandom"
headers = {
"Content-Type": "application/json"
}
response = requests.get(
endpoint,
headers=headers,
timeout=10
)
response_data = response.json()
if response_data["code"] == 0:
logging.info(f"成功获取配置: {response_data['data']['name']}")
env_config = response_data["data"]["env"]
# 设置配置项
self.domain = env_config.get("DOMAIN", "").strip()
self.temp_mail = env_config.get("TEMP_MAIL", "").strip()
self.temp_mail_ext = env_config.get("TEMP_MAIL_EXT", "").strip()
self.temp_mail_epin = env_config.get("TEMP_MAIL_EPIN", "").strip()
self.browser_user_agent = env_config.get("BROWSER_USER_AGENT", "").strip()
self.mail_server = env_config.get("MAIL_SERVER", "").strip()
# IMAP相关配置
self.imap = env_config.get("TEMP_MAIL", "") == "null"
if self.imap:
self.imap_server = env_config.get("IMAP_SERVER", "").strip()
self.imap_port = env_config.get("IMAP_PORT", "").strip()
self.imap_user = env_config.get("IMAP_USER", "").strip()
self.imap_pass = env_config.get("IMAP_PASS", "").strip()
self.imap_dir = env_config.get("IMAP_DIR", "inbox").strip()
else:
self.imap_server = ""
self.imap_port = ""
self.imap_user = ""
self.imap_pass = ""
self.imap_dir = "inbox"
self.check_config()
else:
raise ValueError(f"获取配置失败: {response_data['msg']}")
except Exception as e:
logging.error(f"加载配置失败: {str(e)}")
raise
def get_temp_mail(self):
return self.temp_mail
def get_temp_mail_ext(self):
return self.temp_mail_ext
def get_temp_mail_epin(self):
return self.temp_mail_epin
def get_domain(self):
return self.domain
def get_mail_server(self):
return self.mail_server
def get_browser_user_agent(self):
return self.browser_user_agent
def get_imap(self):
"""获取IMAP配置"""
if not self.imap:
return False
return {
"imap_server": self.imap_server,
"imap_port": self.imap_port,
"imap_user": self.imap_user,
"imap_pass": self.imap_pass,
"imap_dir": self.imap_dir,
}
def check_config(self):
"""检查配置项是否有效"""
# 基础配置检查
required_configs = {
"domain": "域名",
"browser_user_agent": "浏览器UA",
"mail_server": "邮件服务器"
}
for key, name in required_configs.items():
if not self.check_is_valid(getattr(self, key)):
raise ValueError(f"{name}配置无效")
# 检查邮箱配置
if not self.imap:
# tempmail.plus 模式
if not self.check_is_valid(self.temp_mail) or not self.check_is_valid(self.temp_mail_ext):
raise ValueError("临时邮箱配置无效")
else:
# IMAP 模式
imap_configs = {
"imap_server": "IMAP服务器",
"imap_port": "IMAP端口",
"imap_user": "IMAP用户名",
"imap_pass": "IMAP密码"
}
for key, name in imap_configs.items():
if not self.check_is_valid(getattr(self, key)):
raise ValueError(f"{name}配置无效")
def check_is_valid(self, value):
"""检查配置项是否有效"""
return isinstance(value, str) and len(str(value).strip()) > 0
def print_config(self):
"""打印当前配置"""
logging.info("\n=== 当前配置 ===")
logging.info(f"域名: {self.domain}")
if self.imap:
logging.info("=== IMAP配置 ===")
logging.info(f"IMAP服务器: {self.imap_server}")
logging.info(f"IMAP端口: {self.imap_port}")
logging.info(f"IMAP用户名: {self.imap_user}")
logging.info(f"IMAP密码: {'*' * len(self.imap_pass)}")
logging.info(f"IMAP目录: {self.imap_dir}")
else:
logging.info(f"临时邮箱: {self.temp_mail}{self.temp_mail_ext}")
if self.temp_mail_epin:
logging.info(f"邮箱PIN码: {self.temp_mail_epin}")
logging.info(f"邮件服务器: {self.mail_server}")
logging.info(f"浏览器UA: {self.browser_user_agent}")
# 使用示例
if __name__ == "__main__":
try:
config = Config()
print("配置加载成功!")
config.print_config()
except Exception as e:
print(f"错误: {str(e)}")