registration_manager.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import time
  2. from typing import Optional, Tuple
  3. from utils.device_id import get_device_id
  4. from utils.registration import validate_registration
  5. from regex import T
  6. from utils.logger import chat_logger
  7. class RegistrationManager:
  8. """注册状态管理器"""
  9. def __init__(self, check_interval: int = 3600):
  10. self._is_registered: Optional[bool] = None
  11. self._last_check_time: float = 0
  12. self._check_interval = check_interval # 检查间隔(秒)
  13. async def check_registration(self) -> bool:
  14. """检查注册状态,带缓存"""
  15. current_time = time.time()
  16. # 如果缓存未过期,直接返回缓存结果
  17. if (
  18. self._is_registered is True
  19. and current_time - self._last_check_time < self._check_interval
  20. ):
  21. return self._is_registered
  22. try:
  23. is_valid, message = await self._check_license_validity()
  24. self._is_registered = is_valid
  25. self._last_check_time = current_time
  26. if is_valid:
  27. chat_logger.info(f"✅ {message}")
  28. else:
  29. chat_logger.warning(f"❌ {message}")
  30. return is_valid
  31. except Exception as e:
  32. chat_logger.error(f"注册检查失败: {str(e)}")
  33. # 检查失败时保守处理
  34. self._is_registered = False
  35. return False
  36. async def _check_license_validity(self) -> Tuple[bool, str]:
  37. """实际的注册检查逻辑"""
  38. secret_key = "ialwayslovelongjoe"
  39. try:
  40. is_valid, message, reg_info = validate_registration(
  41. secret_key, get_device_id
  42. )
  43. print(f"验证结果: {is_valid}")
  44. print(f"消息: {message}")
  45. if reg_info:
  46. print(f"注册信息: {reg_info}")
  47. return is_valid, message # 临时返回True
  48. except Exception as e:
  49. chat_logger.error(f"许可证检查异常: {str(e)}")
  50. return False, message
  51. def force_refresh(self):
  52. """强制刷新注册状态"""
  53. self._is_registered = None
  54. self._last_check_time = 0
  55. chat_logger.info("强制刷新注册状态")
  56. def get_status(self):
  57. """获取当前状态信息"""
  58. return {
  59. "is_registered": self._is_registered,
  60. "last_check_time": self._last_check_time,
  61. "check_interval": self._check_interval,
  62. }
  63. # 全局实例
  64. registration_manager = RegistrationManager()