153 lines
5.3 KiB
Python
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)}")
|