核心用法
expiring-local-fileshare 是一个轻量级的本地文件分享技能,允许用户通过命令行快速生成带有时间限制和令牌验证的 HTTP 分享链接。
基本调用格式:
{baseDir}/scripts/share.sh <文件路径> [端口] [小时] [once]- 必需参数:文件绝对路径
- 可选参数:端口号(默认自动分配 8888+)、有效期小时数(默认 1h,最大 24h)、一次性访问标记
该技能会自动启动 Node.js HTTP 服务器,生成 128 位随机令牌,返回可点击的 URL(如 http://192.168.x.x:PORT/?token=XXXXX)。
显著优点
1. 即开即用:无需配置复杂的服务器,一行命令即可生成分享链接
2. 多重安全机制:
3. 智能编码:自动检测 MIME 类型,强制 UTF-8 编码,正确处理德文变音等特殊字符
4. 防缓存设计:强制浏览器重新加载,避免旧版本困扰
5. 自动清理:支持手动终止进程,释放端口资源
- 仅响应 RFC1918 私有网段和 localhost(VPN 环境可用)
- 128 位随机令牌,难以暴力破解
- 硬编码时间到期(1-24 小时可调)
- 支持一次性令牌,下载后立即失效
潜在缺点与局限性
- 单文件限制:无法分享整个目录
- 网络边界依赖:严格限定私网/VPN,公网直接访问被拒绝
- 无持久化存储:服务器进程结束即分享失效
- Node.js 依赖:目标环境必须预装 Node 运行时
- 无访问统计:仅记录日志,无可视化仪表盘
- 令牌不可撤销:生成后无法提前失效,只能杀进程
适合人群
- 远程协作开发者:快速分享配置文件、日志、截图给同 VPN 同事
- 本地调试场景:在浏览器中预览 Markdown、图片、PDF
- 临时文件传递:避免使用微信/邮件传输敏感文件
- CI/CD 流程:生成构建产物临时下载链接
常规风险
| 风险项 | 说明 | 缓解措施 |
|--------|------|---------|
| 令牌泄露 | 链接被转发至非预期人员 | 启用 `once` 模式,缩短有效期 |
| 网络边界绕过 | VPN 配置错误导致暴露 | 验证 source IP 为 RFC1918 网段 |
| 端口冲突 | 自动分配端口被占用 | 手动指定端口或清理旧进程 |
| 文件遍历 | 理论上可能存在路径注入 | 代码层面应校验路径合法性 |
| 进程残留 | 服务器未正常退出 | 使用 `pkill -f "share-file.js"` 批量清理 |
使用建议
敏感文件务必启用 once 参数并设置 1 小时短有效期,分享后立即通过即时通讯确认对方接收,随后手动终止服务进程。