YinjiangCN / dsh-plugin-ftp-server

목록에 있음

Configurable FTP file server for DeepSeek Harness with a browser settings panel (zero-dependency FTP core).

main도구 소스 보기

설치

npx -y @deepseek-ai/dsh plugin --profile web add github:YinjiangCN/dsh-plugin-ftp-server

이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.

README

유지 관리자가 작성한 문서 스냅샷입니다.

GitHub에서 보기 ↗
커밋 498a522동기화 2026. 8. 18.

dsh-plugin-ftp-server

Run a configurable FTP file server inside DeepSeek Harness, managed from a browser settings panel. Host any directory over plain FTP — browse, upload, download, rename and delete files with any FTP client.

⚠️ Plain FTP has no TLS: credentials and data travel in cleartext. Use it on trusted networks only.

Features

  • Zero-dependency FTP server core (pure Node built-ins), spawned as a child process of the harness
  • Full command support: USER/PASS, PWD/CWD/CDUP, LIST/NLST/MLSD, RETR/STOR/APPE/STOU, DELE/MKD/RMD, RNFR/RNTO, SIZE/MDTM/REST (resume), PASV/EPSV/PORT, FEAT/STAT/ABOR/NOOP
  • Chrooted to the shared root — path escape (..) is blocked, and the root itself cannot be deleted or renamed
  • Single account + password, or anonymous mode
  • Browser panel (Settings → FTP 服务): configure host/port/root/credentials, start/stop, live status (PID, uptime), shared-root listing and server log
  • Idle timeout (180 s), crash detection, automatic child-process cleanup when the plugin is stopped

Install

dsh plugin --profile web add github:YinjiangCN/dsh-plugin-ftp-server

Then restart dsh. Open Settings → FTP 服务, fill in the form and click 启动服务.

Usage

FieldDefaultMeaning
监听地址 (host)0.0.0.0Bind address
端口 (port)2121Control port
共享根目录 (root)workspace/ftp-rootDirectory shared over FTP (created on start)
用户名 (user)ftpLogin account (ignored in anonymous mode)
密码 (pass)(empty)Login password
允许匿名 (anonymous)offAllow anonymous login

Clients connect with ftp://<user>@<host>:<port>. The password is kept in memory only; it is passed as a child-process argument and never written to disk.

Security notes

  • Do not set 共享根目录 to / unless you really want to share the whole filesystem — anyone with the credentials can read/modify every file (the server runs with the harness user's privileges).
  • Plain FTP is unencrypted; prefer an internal/trusted network.
  • The server supports one account; for multiple users run multiple instances on different ports.

Development

lib/index.js      host half — FTP process management + Typert Remote service `ftpServer`
lib/client.js     browser half — settings panel (module-loader bundle)
lib/ftp-server.js standalone FTP server (spawned by the host half)
cordis.patch.yml  loader patch mounting the host half

The host half registers the ftpServer Remote service; the panel calls status/start/stop/listRoot through the Typert Gateway (host-side SRC-mode discovery with hand-written strict client descriptors).

License

MIT

저장소 정보

언어
JavaScript
라이선스
MIT
마지막 업데이트
2026. 8. 15. 오후 7:40

신중하게 설치하기

소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.