下载任务与目录分享
当前是源码候选功能,正式发版前不包含在 PyPI
0.2.8中。线上候选验收后才发布新的包版本。
登录 chatshare serve 的目录页后,可使用两个中文入口:
- 从链接下载:输入一个 HTTP/HTTPS 文件直链和目标相对路径。目标框默认当前目录;补上文件名后提交。任务立即返回 ID,并显示排队、下载、提交、完成、失败、取消或重启中断状态、真实字节、已知/未知总量及速度。刷新页面不会丢失历史状态。
- 分享当前目录:为当前已存在且可写的目录生成独立链接。链接采用
/s/<短码>/的 128-bit 不可猜标识,旧长地址继续兼容;任何持有者都能浏览该目录及子目录,请只发给可信的人并在不用时撤销。
分享访客只有只读目录浏览权限,没有搜索、zip、上传、管理或任务权限。目录导航留在 capability 路由内;文件链接始终指向原始 URI,因此撤销分享会立即关闭目录浏览,却不会撤销本来就公开的具体文件直链。
API
浏览器 API 复用 ChatLogin session。所有写操作还要求同源 Origin 和 X-CSRF-Token:
POST/GET /_chatshare/downloads:创建或列出自己的任务。GET/DELETE /_chatshare/downloads/<id>:读取或取消自己的任务。POST/GET /_chatshare/shares:创建或列出自己的目录分享。DELETE /_chatshare/shares/<id>:撤销自己的分享。
下载创建体为 {"url":"https://…","target":"目录/文件名"};分享创建体为 {"directory":"/目录/"}。服务在接纳任务与最终提交前都向真实 Dufs 查询精确目标路径的当前用户及 allow_upload;分享创建要求精确目录已存在。CLI 命令树没有新增入口。
默认边界
下载 worker 并发 2,最多 20 个活动任务,单文件 20 GiB,连接超时 5 秒,读取空闲超时 30 秒,任务开始执行后总时限 24 小时(不含排队时间),最多 5 次重定向。状态最多保留 200 条。私有状态位于有效 ChatSharePaths.base 下的 downloads/ 与 shares/,目录为 0700、元数据为 0600;URL 查询/路径秘密和写入凭据不会持久化。部署存储必须让私有暂存与分享根位于同一文件系统,以便无覆盖原子发布。