user
|
1a4d750a4e
|
feat: 增加开发/生产启动脚本,默认内网监听,并修复账号根 PROPFIND 404
默认监听改为 0.0.0.0:18900,内网设备可直接访问;sso 模式仍要求绑回环。
启动日志不再把 0.0.0.0 写成 http://0.0.0.0。
新增 start-dev.sh 与 start-prod.sh(后台 nohup,不占用终端),公共逻辑在
start-lib.sh。开发脚本可按源码指纹决定是否编译;生产脚本在普通启动和
注册 systemd 时同样比对二进制,不一致则 make build。无完整源码时只用现有
二进制。指纹与 pid/日志写入 .run/(已 gitignore)。
生产脚本交互菜单支持后台启动、注册/取消系统服务与开机自启。占用端口时:
本仓库开发或脚本实例先停再接管默认 18900;其它进程才改用相邻端口。临时
换端口不写回下次默认地址。启动信息为每个内网地址同时打印管理页和文件页。
WebDAV 账号根无尾斜杠(如 /ccswitch)会按 /ccswitch/ 处理,避免客户端
PROPFIND 得到 404。补充对应测试。README 同步启动、部署与 systemd 说明。
|
2026-10-03 11:39:14 +08:00 |
|
Yunling Zhang
|
3f2077fcf5
|
docs: 重写 README 对齐现状
|
2026-09-30 10:19:05 +08:00 |
|
Yunling Zhang
|
90aa6c9c43
|
docs: 认证段再收敛——只说自带口令可关闭,SSO 重定向归前置认证层
|
2026-09-29 17:51:43 +08:00 |
|
Yunling Zhang
|
c172e499f9
|
docs: 认证说明收敛——只说自带口令可关闭,不展开接入方式
|
2026-09-29 17:51:18 +08:00 |
|
Yunling Zhang
|
2d7307c4c2
|
docs: 开源准备——README 重写(特性/快速开始/部署)、去除内部路径与工具痕迹
|
2026-09-29 15:58:59 +08:00 |
|
Yunling Zhang
|
d543c873a2
|
chore: 添加 MIT LICENSE
|
2026-09-29 15:58:59 +08:00 |
|
Yunling Zhang
|
62f1a5a6ab
|
chore: -data 与 Makefile DATA 默认值改为相对路径 ./data
|
2026-09-29 15:55:58 +08:00 |
|
Yunling Zhang
|
f23e252d3c
|
docs: 同步认证模式说明(README / .env.example / AGENTS.md)
- README 新增「认证模式」章节:两种模式、默认值、SSO 安全前提与 nginx 接线示意
- .env.example 提供 AUTH_MODE=builtin 占位
- AGENTS.md 约定默认必须 builtin、协议端点永远保留自带账号
- 示例域名统一 example.com,无真实域名/私有 IP
|
2026-09-29 13:45:09 +08:00 |
|
Yunling Zhang
|
06fe172bea
|
feat(web): admin 页按认证模式切换,SSO 下隐去口令框并跳网关登录
- api.ts 新增 AuthMode 类型与 /api/admin/mode 调用
- AdminPage:先探测模式;sso 下 401 统一跳 /_auth/login?next=...,退出跳 /_auth/logout
- 探测失败按 builtin 处理,默认行为不变
|
2026-09-29 13:44:32 +08:00 |
|
Yunling Zhang
|
b3c7f04c2b
|
feat(auth): 管理端新增 AUTH_MODE=builtin|sso,默认 builtin 行为不变
- internal/auth/mode.go:Mode 解析/归一化,X-Auth-User 头常量
- server:adminAuth 按模式鉴权,sso 只认网关注入的 X-Auth-User(缺失 401 JSON)
- 新增公开 /api/admin/mode 供前端识别模式;sso 下 login/logout 返回 404
- main:读取 AUTH_MODE,sso 时跳过自带口令并打印启动提示
- 测试覆盖两种模式、伪造 header 不绕过、数据面不受影响
|
2026-09-29 13:43:57 +08:00 |
|
Yunling Zhang
|
a730929bf6
|
docs: 记录第二轮 4 项修复、litmus 前后对比与已知偏差
- SPEC 同步:未知账号 401、只读含 LOCK/UNLOCK、client /me
- 完成报告新增 §0:修复前后原始输出、litmus 四段 summary、逐条定性
|
2026-09-28 17:39:59 +08:00 |
|
Yunling Zhang
|
673dcef340
|
chore(server): gofmt 排序 admin.go 导入分组
|
2026-09-28 17:39:13 +08:00 |
|
Yunling Zhang
|
73f253581a
|
feat(client): 新增 GET /api/client/me,刷新后显示当前账号名
- 会话内返回账号名与只读标记,不含口令
- client 页加载列表后拉取 me,顶栏展示账号名,刷新不丢失
|
2026-09-28 17:38:20 +08:00 |
|
Yunling Zhang
|
5417c747aa
|
fix(server): 不存在的账号返回 401 而非 404,避免泄漏账号存在性
未知账号与未认证/停用账号统一返回 401 + WWW-Authenticate。
新增 account_test.go 验证带/不带凭据均为 401。
|
2026-09-28 17:38:16 +08:00 |
|
Yunling Zhang
|
068ccf7560
|
fix(webdav): 只读账号拒绝 LOCK/UNLOCK,返回 403
LOCK 会改变服务端锁状态并可能创建资源,属于写操作;
UNLOCK 一并对齐,避免只读账号出现不一致语义。
|
2026-09-28 17:38:16 +08:00 |
|
Yunling Zhang
|
6a3689d17d
|
feat(webdav): 实现死属性持久化(PROPPATCH/PROPFIND/COPY/MOVE/DELETE)
- 新增 deadPropFS,包装 webdav.Dir 并让 File 实现 DeadPropsHolder
- sidecar 存于数据目录 davprops/<user>/(账号 root 之外),
从结构上保证不污染用户可见目录与用量统计
- COPY/MOVE/DELETE/remove 跟随并清理死属性
- 新增 deadprops_test.go 覆盖读写/复制/移动/删除/隐藏
|
2026-09-28 17:38:06 +08:00 |
|
Yunling Zhang
|
d32600dd27
|
docs: 更新状态、运行说明与完成报告
|
2026-09-28 16:52:57 +08:00 |
|
Yunling Zhang
|
b060df3048
|
feat(web): React+Vite+TS 的 admin 与 client 页面
- Swiss 极简、中文文案、无 emoji、内联 SVG 图标、浅色/深色变量
- admin:口令登录、账号列表与用量、新建(弹连接信息)、复制、换口令、只读/停用、删除
- client:账号登录、面包屑、上传(点击+拖拽)、下载、新建文件夹、重命名、删除
- Makefile:build/run/test/clean;accounts.example.json 示例配置
|
2026-09-28 16:52:53 +08:00 |
|
Yunling Zhang
|
df5bff9b3c
|
feat(server): 装配 WebDAV 与 admin/client API
- /<账号>/ chroot 隔离 + Basic 认证(401 带 WWW-Authenticate)+ 只读 403 + 路径逃逸 400
- admin API:登录/列表/新建/换口令/局部更新/删除(保留目录)/连接信息
- client API:登录/列表/上传/下载(Range)/新建文件夹/重命名/删除
- go:embed 内嵌前端,SPA 路由 / 与 /admin
- 修正 .gitignore 中误伤 cmd/davbox 的规则
|
2026-09-28 16:52:49 +08:00 |
|
Yunling Zhang
|
78673558c8
|
feat(core): Go 模块与账号、认证、用量基础包
- account: accounts.json 原子读写、常量时间口令校验、增删改查与用户名校验
- auth: HMAC 会话签名 + 管理员 bcrypt 凭据初始化
- randstr: 口令生成;usage: 目录用量统计
- 单测覆盖口令对错、账号禁用、只读、路径逃逸、持久化与 0600 权限
|
2026-09-28 16:52:33 +08:00 |
|
Hermes
|
0c5d160bd2
|
docs: 补实现规格(阶段一底盘 + 阶段二 admin/client 页)
- 硬性边界:不许 systemctl/pkill/碰生产端口/加第三方依赖(Go 只准 x/net,npm 只准 SPEC 列出的 7 个)
- 数据布局 /data/davbox/(accounts.json 明文+0600 / admin 用 bcrypt / secret.key 会话密钥)
- WebDAV:/<账号>/ 前缀 chroot、401 必带 WWW-Authenticate、只读账号 403、路径逃逸显式拒绝
- admin/client API 全部端点与前端页面规格、视觉与文案硬要求
- 交付前自测 11 项 + 完成报告要求
|
2026-09-28 16:29:09 +08:00 |
|
Hermes
|
666c43a3ec
|
chore: 项目立项 —— davbox(极简 WebDAV:admin 管账号 / client 管文件)
- 技术选型:Go + golang.org/x/net/webdav(官方底盘,7543 行实现/4275 行测试)
- 前端:React + Vite + TS,产物 embed 进单二进制
- 账号:JSON 文件,不上数据库
- docs/DECISIONS.md 记录全部候选与被否理由(含实测证据)
- docs/REQUIREMENTS.md 阶段一/二/三范围与验收标准
|
2026-09-28 16:07:23 +08:00 |
|