10 Commits

Author SHA1 Message Date
3478db383e feat: 限制解除后增加15分钟缓冲期再重试
问题:
- 限制解除后立即重试,可能再次触发速率限制
- 没有缓冲时间,容易导致连续失败

修复:
- 限制解除后,增加15分钟缓冲期
- 缓冲期内不申请证书,避免立即重试
- 优化检查间隔计算,在缓冲期结束后才重试

实现:
- should_request_cert: 检查缓冲期,缓冲期内返回 False
- run: 计算重试时间时加上15分钟缓冲期
- 实际重试时间 = 限制解除时间 + 15分钟

优势:
- 避免立即重试再次触发限制
- 给 Let's Encrypt 足够的恢复时间
- 提高证书申请成功率
2026-01-01 20:31:54 +00:00
a5ccb1f951 refactor: 优化路由监听器代码,减少重复和冗余
主要优化:

1. 移除未使用的代码:
   - 删除未使用的 import json
   - 删除未使用的 _get_apisix_headers() 方法(headers 已在 session 中设置)

2. 减少代码重复:
   - 提取 _handle_cert_request() 公共方法
   - 统一单个和多个域名的证书申请处理逻辑
   - 减少约 40 行重复代码

3. 代码简化:
   - 简化 process_new_domains() 中的逻辑
   - 提高代码可读性和可维护性

优势:
- 更简洁:移除所有冗余代码
- 更易维护:减少重复,统一处理逻辑
- 更符合 DRY 原则:单一职责,代码复用
2026-01-01 20:27:44 +00:00
f34c2e28d1 feat: 添加速率限制处理机制,优化代码质量
主要改进:

1. 速率限制处理:
   - 添加 RateLimitError 异常类,用于标识速率限制错误
   - 在 ssl_manager.py 中检测 Let's Encrypt 速率限制错误
   - 解析重试时间,提供详细的错误提示
   - 在 route_watcher.py 中记录被限制的域名和重试时间
   - 自动跳过限制期间的域名,避免持续触发限制
   - 限制解除后自动恢复申请

2. 代码优化:
   - 修复重复导入 sys 的问题
   - 修复 API 调用未使用 session 连接复用的问题
   - 移除未使用的 _get_apisix_headers 方法
   - 将 RateLimitError 导入移到文件顶部

优势:
- 避免持续触发速率限制,形成死循环
- 自动等待限制解除,无需手动干预
- 提升代码质量和可维护性
- 充分利用 HTTP 连接复用,提升性能
2026-01-01 20:24:36 +00:00
b30fafd34f perf: 优化路由监听服务性能,减少 API 调用
主要优化:
- 性能优化:只调用一次 get_all_ssls() API,在内存中构建域名集合进行快速查找
  - 之前:N 个域名 = N 次 API 调用
  - 现在:N 个域名 = 1 次 API 调用
  - 性能提升:从 O(N×M) 降低到 O(N+M)

- HTTP 连接复用:使用 requests.Session() 复用连接,减少连接开销

- 代码重构:
  - 提取 _fetch_apisix_data() 公共方法,减少重复代码
  - 提取 _is_valid_domain() 方法,改进 IP 地址检测(支持 IPv4/IPv6)
  - 提取 _build_ssl_domains_set() 方法,构建 SSL 域名集合

- IP 地址检测改进:使用 ipaddress 模块,更准确地检测 IPv4 和 IPv6

这些优化显著提升了服务性能,特别是在处理大量路由和域名时。
2026-01-01 19:58:16 +00:00
7c464126a9 fix: 修复 f-string 语法错误
- 修复 f-string 中表达式解析错误
- 将计算移到 f-string 外面,避免语法错误
- 修复前: {len(additional_domains)} + 1} (语法错误)
- 修复后: total_domains = len(additional_domains) + 1; {total_domains}
2026-01-01 19:40:38 +00:00
cd346ec94b feat: 优化证书申请逻辑,同一路由的多个域名合并到一个证书
- 按路由处理域名,而不是按域名处理
- 同一路由中的多个域名合并到一个证书申请(使用 SAN)
- 减少证书数量,简化管理
- 符合最佳实践:一个证书包含多个相关域名

优势:
- 减少证书数量(从 N 个减少到 1 个)
- 减少续期次数
- 降低 Let's Encrypt API 调用频率
- 简化证书管理

示例:
- 路由包含 jingrowtools.cn 和 www.jingrowtools.cn
- 现在会申请一个包含两个域名的证书(SAN)
- 而不是分别申请两个独立证书
2026-01-01 19:38:34 +00:00
7198a1376b refactor: 优化路由监听服务,移除已处理域名列表
- 移除 processed_domains 状态管理,改为直接检查 APISIX 实际 SSL 配置
- 简化代码逻辑,提高可靠性
- 修复 SSL 配置查找时的类型错误(key 字段是字符串而非字典)
- 添加路由状态检查,跳过禁用的路由(status=0)

优势:
- 更简单:无需维护状态文件
- 更准确:直接检查实际配置,避免状态不一致
- 更可靠:即使证书被删除,也能自动检测并重新申请
2026-01-01 19:32:58 +00:00
2421089e68 添加了路由状态检查,跳过禁用路由 2026-01-01 18:43:06 +00:00
88f5127d9b 优化ssl自动化功能 2026-01-01 17:12:14 +00:00
7d885471c0 增加ssl_manager功能实现创建路由时自动申请并续期ssl免费证书,测试成功 2026-01-01 15:21:37 +00:00