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)}")