Commit Graph

7 Commits

Author SHA1 Message Date
Warren
dbca6e6d35 Fix clippy warnings: unused imports, minor style fixes 2026-06-20 21:08:50 +08:00
Warren
eb80c07c85 Implement WebDAV VFS integration: dav-server 0.11 compatible
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add webdav.rs module: VfsDavFs, VfsDavFile, VfsDavMetaData
- Implement DavFileSystem + Clone for GuardedFileSystem blanket impl
- Add clone_boxed to VfsBackend trait (required for Sync)
- Update CLI webdav.rs to use VFS instead of SQLite
- Add bytes dependency
- All 155 tests pass
2026-06-19 08:19:16 +08:00
Warren
d94cb2df4c Fix code quality: trailing whitespace, unused imports, clippy warnings
- Fix trailing whitespace in kex.rs and s3.rs
- Add missing KexProposal import in kex_complete.rs
- Auto-fix clippy warnings across all crates
- All 153 tests pass
2026-06-19 05:21:38 +08:00
Warren
f90e4f496c VFS/DataProvider/Config refactoring + SSH public key authentication
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Phase 1-6 of refactoring plan:
- VFS abstraction (VfsBackend trait + LocalFs + OpenFlags builder)
- DataProvider trait (SqliteProvider + PgProvider, SFTPGo-compatible)
- Config refactoring (AppConfig unified sections, env overrides)
- SSH handlers (sftp/scp/rsync) migrated to VFS + DataProvider
- SSH public key authentication (Ed25519 signature verification)
- SSH stderr → CHANNEL_EXTENDED_DATA support
- Web auth uses DataProvider instead of direct SQL
- User home directory from provider (per-user isolation)
- PostgreSQL auth provider for SFTPGo compatibility
2026-06-18 23:35:18 +08:00
Warren
a9098a3c48 fix(cli): resolve all command name duplication issues
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
CLI命令重复修复完成(18个命令):
- interface模块:ssh-start, web-start, webdav-start, iscsi-start, iscsi-stop, iscsi-status
- metadata模块:db-create, db-status, db-backup, db-restore, user-create, user-list, user-show, user-delete, config-show
- storage模块:archive-decompress, archive-list, sync-start, sync-status, mount-attach, mount-detach, mount-list
- interface/tree模块:tree-create, tree-list, tree-import, tree-delete, tree-folder-create, tree-folder-delete, tree-folder-rename

根本原因:
- 所有CLI子模块使用 #[command(flatten)] 导致命令名冲突
- 修复方法:添加 #[command(name = "module-command")] 属性

测试结果:
-  编译成功(150 warnings, 0 errors)
-  CLI命令列表正确(所有命令在顶层命名空间)
-  SSH服务器启动成功(port 2024)
-  SSH版本交换测试通过(SSH-2.0-MarkBaseSSH_1.0)

影响范围:
- 13个CLI文件修改
- 18个命令添加唯一命名属性
- CLI结构从 interface/metadata/storage/tools 四层变为扁平化单层
2026-06-13 17:56:56 +08:00
Warren
6205748519 虚拟Tree文件夹操作完整实现:folder增删改 + ls/cp/mv操作(330行代码)
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
虚拟Tree操作命令扩展:
- Tree管理:create/list/import/delete(已有)
- Folder操作:create/delete/rename(新增)
- 文件操作:ls/cp/mv(新增)

Folder操作命令:
 folder create: 创建文件夹(path/name/tree_type)
   markbase interface tree folder create --user accusys --path / --name NewFolder --tree-type categories

 folder delete: 删除文件夹(path/name/tree_type)
   markbase interface tree folder delete --user accusys --path / --name OldFolder --tree-type categories

 folder rename: 重命名文件夹(path/old_name/new_name/tree_type)
   markbase interface tree folder rename --user accusys --path / --old-name OldName --new-name NewName --tree-type categories

文件操作命令:
 ls: 列出文件夹内容(path/tree_type)
   markbase interface tree ls --user accusys --path /Downloads --tree-type categories
   输出:📁文件夹 📄文件,带文件大小显示

 cp: 复制文件/文件夹(source/target/tree_type)
   markbase interface tree cp --user accusys --source /Downloads/File.txt --target /Backup --tree-type categories
   生成新node_id,保持原文件属性

 mv: 移动/重命名文件/文件夹(source/target/tree_type)
   markbase interface tree mv --user accusys --source /Downloads/File.txt --target /Archive --tree-type categories
   更新parent_id,不生成新node_id

技术实现:
- 使用SQLite数据库(file_nodes表)
- Path解析:支持多级路径(/path/to/folder)
- Node查找:递归查找parent_id
- UUID生成:Uuid::new_v4()
- 时间戳:chrono::Utc::now().to_rfc3339()

数据表结构:
- node_id: TEXT PRIMARY KEY(UUID)
- label: TEXT NOT NULL(文件夹/文件名)
- parent_id: TEXT(父文件夹ID)
- node_type: TEXT(folder/file)
- tree_type: TEXT(categories/series)
- file_uuid: TEXT(文件UUID)
- file_size: INTEGER(文件大小)
- created_at/updated_at: TEXT(时间戳)

代码统计:
- tree.rs: 330行(新增263行)
- 编译成功:151警告,0错误
- 修改文件:1个(tree.rs)

Git提交:
- 文件变更:markbase-core/src/cli/interface/tree.rs
- 新增代码:263行功能实现
- 编译状态:成功
2026-06-13 02:31:32 +08:00
Warren
cdc2e4b9d6 CLI三层架构重构完成:interface/metadata/storage/tools层
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
架构设计:
- 上层(interface):虚拟操作系统层
  - web.rs: HTTP Server
  - ssh.rs: SSH/SFTP Server
  - webdav.rs: WebDAV Server
  - iscsi.rs: iSCSI Server
  - tree.rs: File Tree管理(categories/series)

- 中层(metadata):核心数据库层
  - config.rs: 配置管理(从framework.rs迁移)
  - user.rs: 用户管理
  - db.rs: 数据库管理
  - auth.rs: 认证授权

- 底层(storage):文件存取层
  - scan.rs: 文件扫描导入(从framework.rs迁移)
  - hash.rs: 哈希计算(从framework.rs迁移)
  - archive.rs: 压缩解压缩
  - sync.rs: 文件同步
  - mount.rs: 存储挂载

- 辅助工具(tools):辅助功能
  - render.rs: Markdown渲染(从framework.rs迁移)
  - test.rs: 测试命令(从framework.rs迁移)

架构优势:
 清晰的三层分离,符合架构理念
 21个独立模块,职责清晰
 main.rs简化至23行,cli/mod.rs24行
 删除旧架构(cli/apps和framework.rs)
 编译成功,所有CLI命令可用

命令範例:
markbase interface web start --port 11438
markbase interface ssh start --port 2024
markbase interface tree import --user accusys --tree-type categories
markbase metadata config show
markbase storage scan directory --user accusys --dir data/downloads
markbase tools render file --file README.md

文件统计:
- 新增文件:20个Rust模块
- 删除文件:3个旧架构文件
- 修改文件:2个核心入口
- 总计:21个文件变更
2026-06-13 01:36:15 +08:00