YinjiangCN/dsh-plugin-ftp-server ↗★ 1
dsh-plugin-ftp-server
Run a configurable FTP file server inside DeepSeek Harness, managed from a browser settings panel (host a shared directory over plain FTP).
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:YinjiangCN/dsh-plugin-ftp-server说明文档
阅读完整 README ↗dsh-plugin-ftp-server
在 DeepSeek Harness 内运行可配置的 FTP 文件服务器,通过浏览器设置面板管理。把任意目录共享为明文 FTP,任何 FTP 客户端都可以浏览、上传、下载、改名、删除文件。
⚠️ 明文 FTP 没有 TLS,账号密码和数据都是明文传输,请仅在可信网络使用。
功能
- 零依赖 FTP 服务内核(纯 Node 内置模块),以宿主子进程方式运行
- 完整命令支持:
USER/PASS、PWD/CWD/CDUP、LIST/NLST/MLSD、RETR/STOR/APPE/STOU、DELE/MKD/RMD、RNFR/RNTO、SIZE/MDTM/REST(断点续传)、PASV/EPSV/PORT、FEAT/STAT/ABOR/NOOP - chroot 到共享根目录:
..越权被拦截,根目录本身禁止删除/重命名 - 单账号密码或匿名模式
- 浏览器面板(设置 → FTP 服务):配置监听地址/端口/根目录/账号密码、启停服务、实时状态(PID、运行时长)、共享目录浏览、服务日志
- 空闲超时(180 秒)、崩溃检测、插件停止时自动清理子进程
安装
dsh plugin --profile web add github:YinjiangCN/dsh-plugin-ftp-server
然后重启 dsh,打开 设置 → FTP 服务,填写表单后点击「启动服务」。
使用
| 字段 | 默认值 | 说明 |
|---|---|---|
| 监听地址 | 0.0.0.0 | 绑定地址 |
| 端口 | 2121 | 控制端口 |
| 共享根目录 | workspace/ftp-root | 通过 FTP 共享的目录(启动时自动创建) |
| 用户名 | ftp | 登录账号(匿名模式下忽略) |
| 密码 | (空) | 登录密码 |
| 允许匿名 | 关 | 是否允许匿名登录 |
客户端用 ftp://@: 连接。密码只保存在内存中,作为子进程参数传入,不会写入磁盘。
安全提示
- 不要把「共享根目录」设为
/,除非你真的要共享整个文件系统——任何拿到凭据的人都能读写所有文件(服务器以宿主用户权限运行)。 - 明文 FTP 不加密,建议仅在内网/可信网络使用。
- 服务器只支持一个账号;需要多账号可多开几个实例、用不同端口。
开发
lib/index.js 宿主端 —— FTP 进程管理 + Typert Remote 服务 ftpServer
lib/client.js 浏览器端 —— 设置面板(module-loader 打包格式)
lib/ftp-server.js 独立 FTP 服务器(由宿主端拉起)
cordis.patch.yml 挂载宿主端的 loader 补丁
宿主端注册 ftpServer Remote 服务,面板通过 Typert Gateway 调用 status/start/stop/listRoot(宿主端 SRC 发现 + 手写 strict 客户端 descriptors)。
License
MIT