Skip to content

tnewman/dray

Repository files navigation

🚚 Dray 🚚

A cloud native SFTP server designed to support multiple data storage backends, starting with S3.

Why?

Many enterprise applications, such as ADP, SAP, and Workday, are used within companies as a source of truth for their data. These applications offer automated SFTP uploads to synchronize data with other applications. In short, applications that want to interface with enterprise data need to support SFTP.

Dray aims to tackle the undifferentiated heavy lifting of handling SFTP integrations, so developers can focus on differentiating their product.

What's With the Name

A dray is a cart used to transport heavy cargo short distances. Dray transports files of any size to the storage backend.

Demo

Demo

Hacking

Prerequisites

  • Install Rust
  • Docker
  • cd to the dray repository
  • Generate an SSH keypair in the dray directory (mkdir -p .ssh && ssh-keygen -t ed25519 -f .ssh/id_ed25519)

Test, Build, and Run

  • Start Containers (docker-compose up)
  • Run Tests (cargo test)
  • Run Dray (cargo run)

🚧 Work in Progress 🚧

Dray fully implements SSH File Transfer Protocol Version 3 Draft 2; however, it has only been tested against a limited number of SFTP clients. Production usage is not recommended.

Minimum Viable Product (MVP) Roadmap

  • Deserialize and Serialize SSH File Transfer Protocol Version 3 Draft 2
  • Accept SSH connections
  • Verify SSH keys against authorized keys stored in S3
  • SFTP subsystem initialization
  • List directory (S3-Compatible Storage Only)
  • Create directory (S3-Compatible Storage Only)
  • Rename directory (S3-Compatible Storage Only)
  • Remove directory (S3-Compatible Storage Only)
  • Read file (S3-Compatible Storage Only)
  • Write file (S3-Compatible Storage Only)
  • Rename file (S3-Compatible Storage Only)
  • Remove file (S3-Compatible Storage Only)
  • Stat commands (S3-Compatible Storage Only)
  • Permission checks
  • Set Stat commands return "Not Implemented"

About

A cloud native SFTP server designed to support multiple data storage backends, starting with S3.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published