diff --git a/ssl_manager/route_watcher.py b/ssl_manager/route_watcher.py index 8675e94..7211a98 100755 --- a/ssl_manager/route_watcher.py +++ b/ssl_manager/route_watcher.py @@ -39,11 +39,7 @@ class RouteWatcher: self.apisix_admin_url = os.getenv('APISIX_ADMIN_URL', 'http://localhost:9180') self.apisix_admin_key = os.getenv('APISIX_ADMIN_KEY', '8206e6e42b6b53243c52a767cc633137') - # 已处理的域名集合 - self.processed_domains: Set[str] = set() - - # 加载已处理的域名 - self._load_processed_domains() + # 不再使用已处理列表,直接检查实际 SSL 配置 def _get_apisix_headers(self): """获取 APISIX Admin API 请求头""" @@ -52,27 +48,6 @@ class RouteWatcher: 'Content-Type': 'application/json' } - def _load_processed_domains(self): - """加载已处理的域名列表""" - state_file = '/var/lib/apisix-ssl-manager/processed_domains.json' - if os.path.exists(state_file): - try: - with open(state_file, 'r') as f: - self.processed_domains = set(json.load(f)) - logger.info(f"加载已处理域名: {len(self.processed_domains)} 个") - except Exception as e: - logger.warning(f"加载已处理域名失败: {e}") - - def _save_processed_domains(self): - """保存已处理的域名列表""" - state_file = '/var/lib/apisix-ssl-manager/processed_domains.json' - os.makedirs(os.path.dirname(state_file), exist_ok=True) - try: - with open(state_file, 'w') as f: - json.dump(list(self.processed_domains), f) - except Exception as e: - logger.error(f"保存已处理域名失败: {e}") - def get_all_routes(self) -> list: """获取所有路由""" try: @@ -158,10 +133,6 @@ class RouteWatcher: def should_request_cert(self, domain: str) -> bool: """判断是否需要申请证书""" - # 跳过已处理的域名 - if domain in self.processed_domains: - return False - # 跳过本地域名 if domain in ['localhost', '127.0.0.1', '0.0.0.0']: return False @@ -170,13 +141,12 @@ class RouteWatcher: if domain.replace('.', '').isdigit(): return False - # 检查是否已有 SSL 配置 + # 检查是否已有 SSL 配置(直接检查实际配置,最准确) ssls = self.get_all_ssls() for ssl in ssls: ssl_domains = self.extract_domains_from_ssl(ssl) if domain in ssl_domains: logger.info(f"域名已有 SSL 配置: {domain}") - self.processed_domains.add(domain) return False return True @@ -202,8 +172,6 @@ class RouteWatcher: try: if self.ssl_manager.request_certificate(domain): logger.info(f"证书申请成功: {domain}") - self.processed_domains.add(domain) - self._save_processed_domains() else: logger.error(f"证书申请失败: {domain}") except Exception as e: