问题描述
所有订阅链接的 subscription-userinfo 响应头中 expire 字段始终为 0:
subscription-userinfo: upload=0; download=0; total=0; expire=0
Unix timestamp 0 = 1970-01-01 00:00:00,所以导入到任意代理软件(Shadowrocket、v2rayN、Clash Verge 等)后到期时间全部显示为 1970/1/1。
环境
- SublinkPro v1.2.16
- Docker: zerodeng/sublink-pro:latest
- 数据库
subscription_shares 表 expire_at 字段有正确到期时间
复现
curl -sI 'https://domain/c/?token=TOKEN&target=clash' | grep subscription-userinfo
# 输出: subscription-userinfo: upload=0; download=0; total=0; expire=0
数据库中 expire_at 存了正确的 2026-08-16 15:48:00+08:00,但没有被转换成 Unix 时间戳写入响应头。
期望
subscription-userinfo: upload=0; download=0; total=0; expire=1786866480
(1786866480 = 2026-08-16 15:48:00 CST)
建议修复
在订阅请求 handler 中根据 subscription_shares 表的 expire_type / expire_days / expire_at 计算:
| expire_type |
逻辑 |
| 0(永不过期) |
expire=0 或不输出 |
| 1(按天数) |
expire = now_ts + expire_days * 86400 |
| 2(绝对日期) |
expire = unixtime(expire_at) |
响应头规范参考
https://www.davidc.net/sites/default/subscriptions/subscription-userinfo.md
问题描述
所有订阅链接的
subscription-userinfo响应头中expire字段始终为0:Unix timestamp 0 = 1970-01-01 00:00:00,所以导入到任意代理软件(Shadowrocket、v2rayN、Clash Verge 等)后到期时间全部显示为 1970/1/1。
环境
subscription_shares表expire_at字段有正确到期时间复现
数据库中
expire_at存了正确的2026-08-16 15:48:00+08:00,但没有被转换成 Unix 时间戳写入响应头。期望
(1786866480 = 2026-08-16 15:48:00 CST)
建议修复
在订阅请求 handler 中根据
subscription_shares表的expire_type/expire_days/expire_at计算:expire = now_ts + expire_days * 86400expire = unixtime(expire_at)响应头规范参考
https://www.davidc.net/sites/default/subscriptions/subscription-userinfo.md