Skip to content

feat(webdav): 实现WebDAV写入功能和STRM文件支持。 - #15

Merged
xxcheng123 merged 11 commits into
masterfrom
feature/webdav-write
Aug 13, 2025
Merged

feat(webdav): 实现WebDAV写入功能和STRM文件支持。#15
xxcheng123 merged 11 commits into
masterfrom
feature/webdav-write

Conversation

@xxcheng123

Copy link
Copy Markdown
Owner

📦 本次合并更新

✨ 新增功能

  1. WebDAV 写入支持

    • 支持 PUT / DELETE 操作
    • 实现文件上传、删除
  2. STRM 文件自动生成

    • 为视频文件自动生成 .strm 播放列表
    • 适配各大媒体服务器(Emby / Jellyfin / Plex)

🌟 主要特性

  • 双 WebDAV 端点

    • /dav:标准端点,返回原始文件
    • /strm_dav:媒体服务器端点,返回 STRM 文件
  • 权限控制

    • 支持全局与用户级别的 WebDAV 写入权限管理
  • 文件管理

    • 一键上传 / 删除 / 创建目录
  • STRM 配置

    • 可定制支持的视频格式
    • 一键开启 / 关闭 STRM 功能
  • 媒体服务器集成

    • 与 Emby、Jellyfin、Plex 无缝对接

🔧 技术实现

  • 新增 service_put.goservice_delete.go,处理 WebDAV 写入与删除
  • job_scan_file.go 中集成 STRM 文件生成任务
  • 路由层支持完整的 WebDAV 方法集(GET、PUT、DELETE、PROPFIND 等)
  • 前端新增权限管理和 STRM 配置页面

⚠️ 使用须知

  • 功能处于测试阶段,建议先在非生产环境充分验证
  • WebDAV 写入会占用服务器存储空间,请预留足够磁盘
  • 媒体服务器建议指向 /strm_dav 端点以获得最佳播放体验

refactor(scan_file): 移除重复的运行检查并改进停止逻辑
修复停止方法中的竞态条件,添加互斥锁保护

refactor(fs): 统一使用filepath代替path处理路径
改进文件删除操作的错误处理和日志记录

fix(fs): 在批量创建前设置ParentId并添加空值检查
防止潜在的nil指针异常
将多处直接使用字符串作为文件附加属性键的代码替换为使用预定义的常量,提高代码可维护性和可读性
修复多处类型断言未检查的问题,避免潜在panic风险
优化删除操作的响应格式,直接返回状态码
添加缓存URL的类型检查,格式错误时记录警告并继续处理
确保HTTP响应体关闭,避免资源泄漏
修复FileDetail.vue中复制链接成功后toast提示被重复显示的问题,现在无论通过现代API还是降级方法都会正确显示一次提示
在FileBrowser.vue中添加管理员权限检查,只有管理员才能看到删除按钮
- 在配置文件中新增fileDir和logFile配置项
- 实现自动创建日志目录和文件存储目录功能
- 更新文档说明新增的STRM文件生成和WebDAV写入功能
- 优化Docker镜像构建流程,改进版本标签处理
@xxcheng123 xxcheng123 added enhancement New feature or request webdav strm labels Aug 13, 2025
@xxcheng123
xxcheng123 merged commit f027bd2 into master Aug 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request strm webdav

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant