Git Product home page Git Product logo

courier's Introduction

๐Ÿšš๐Ÿ’ผ Courier ๐Ÿšš๐Ÿ’ผ

CI

Courier is a cloud native, S3-backed SFTP server with Webhook support.

Although the MVP will support S3 and Webhooks, the goal is to provide pluggable storage and notification mechanisms.

Work in Progress

Courier is under active development. This README will be updated when a working build is available for testing.

Motivation

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.

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

courier's People

Contributors

msdottee avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

tnewman

courier's Issues

SSH Public Key Authentication

As a user, I want to be able to login with my SSH public key, so that access to my files is secure.

Acceptance Criteria:

  1. Database tables are created to store usernames and SSH public keys. A user can have multiple SSH public keys.
  2. Spring Data creates the tables automatically if they do not exist.
  3. A user who has a valid username and SSH public key can log in using Putty.

Notes:

  1. Initializing databases with Spring: https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/html/howto-database-initialization.html#howto-initialize-a-database-using-spring-jdbc
  2. Implement PublickeyAuthenticator (https://mina.apache.org/sshd-project/apidocs/org/apache/sshd/server/auth/pubkey/PublickeyAuthenticator.html) to facilitate logging in using database-provided usernames and public keys. Once implemented, set the SSH server to use this new authenticator.

SSH Server Initial Setup

As an application developer, I want the initial SSH server setup, so that I can start using SFTP.

Acceptance Criteria:

  • The port is configurable in application.properties, and defaults to port 2200
  • A login prompt is displayed when Putty connects to port 2200
  • The initial connection fails due to an authentication error
  • The SSH server is configured as a Spring Service
  • Uses SimpleGeneratorHostKeyProvider
  • Does not address configuration items not discussed above
  • Fully tested with automated tests

Notes:

S3 SftpFileSystemAccessor

Blocked by #2

As a user, I want the S3 SFTP File System Accessor implemented and configured, so I can read and write my files from S3.

Acceptance Criteria:

  1. The AWS SDK is added as a dependency.
  2. SftpFileSystemAccessor is implemented using S3 for file operations.
  3. Operations that are not supposed by S3 throw an UnimplementedException.
  4. Listing directories shows the contents of the given S3 folder.
  5. Files can be uploaded through Filezilla and show up in the S3 bucket.
  6. Files can be downloaded through Filezilla.
  7. Appropriate exceptions are thrown for missing files or invalid folders.
  8. MinIO can be used in place of the real S3 for testing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.