You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(sftp): real SFTP via the File Transfer protocol dropdown (#16)
Selecting SFTP in the File Transfer (src.ftp) Protocol dropdown now does real
SFTP (SSH), not a broken FTP attempt. SFTP runs on russh + russh-sftp with the
ring crypto backend (default-features=false drops aws-lc-rs, so no NASM and no
C toolchain; reuses the ring stack we already ship, builds on all release
targets incl. windows-arm64). The old 'blocked on aws-lc-sys NASM' note was
outdated.
- protocol=sftp routes to SftpSourceSpec + run_sftp_source (async russh wrapped
in block_on like the mongo / tiberius sources). Password or OpenSSH
private-key auth (paste or key file); optional SHA256 host-fingerprint pin
enforced in check_server_key (the Host Fingerprint ask). Lists a directory,
glob filter, downloads up to maxFiles, emits {filename, size, content_b64,
modified} - same row shape as FTP.
- reconcile the form field keys with the engine (user / directory, with
username / remotePath fallbacks); add key-passphrase + host-fingerprint fields.
- README: Sources table + roadmap updated.
Verified live against a public SFTP server: connect, host fingerprint, password
auth, sftp subsystem, directory listing with metadata.
|**Vector / AI databases**| pgvector (postgres ATTACH), Qdrant (`/points/scroll`), Weaviate (`/v1/objects`), Milvus (`/v1/vector/query`) | Available |
217
217
|**Vector / AI databases**| Pinecone (no list-all-vectors API), Chroma, LanceDB | Preview |
218
-
|**File transfer**| FTP / FTPS (pure-Rust `suppaftp` with glob filter and base64-content per file)| Available |
218
+
|**File transfer**| FTP / FTPS (pure-Rust `suppaftp`) and SFTP (SSH, pure-Rust `russh` + `russh-sftp` on the ring backend; password or private-key auth, optional host-fingerprint pin) - one File Transfer component, pick the protocol. Glob filter, base64 content per file | Available |
219
219
|**Mailbox**| IMAP (rustls TLS, `mail-parser`) - basic auth today, OAuth (gmail / o365) on the roadmap | Available |
220
220
|**Webhook listener**| Binds `127.0.0.1:port`, collects N inbound HTTP requests with a timeout, parses JSON-object / JSON-array bodies into rows | Available |
221
221
|**Desktop**| System clipboard (pure-Rust `arboard`, auto-detects JSON-array shape) | Available |
@@ -991,7 +991,7 @@ A complete planned-component breakdown lives in [`docs/roadmap.md`](docs/roadmap
991
991
992
992
-[ ]**Multi-shard Kinesis** and **Pulsar** streaming (Pulsar blocked on `protoc` at build time)
993
993
-[ ]**Apache ORC** read / write (blocked on the Arrow version conflict between `orc-rust` and our workspace pin)
994
-
-[]**SFTP** source (blocked on the `aws-lc-sys` NASM build dep in `russh`)
994
+
-[x]**SFTP** source (shipped - `russh` + `russh-sftp` on the ring backend, password / key auth, host-fingerprint pin)
0 commit comments