Skip to content

Latest commit

 

History

History
89 lines (63 loc) · 2.77 KB

README.md

File metadata and controls

89 lines (63 loc) · 2.77 KB

ftp

Build Status star this repo fork this repo GitHub Issues GitHub contributors Contributions welcome License

lightweight RFC959 FTP server written in crystal lang

Note from the creator

Hello guys! ;)

This little baby is still under development. My goal is to make a shard of it once totally finished.

Actually, it's my first project written in Crystal : feel free to contribute, or to send tips ! I'm doing it only to train myself.

And don't hesitate to give a star if you like it, of course!

Installation

  1. Add the dependency to your shard.yml:
dependencies:
  ftp:
    github: LeChatErrant/ftp
  1. Run shards install

Usage

require "ftp"

server = Ftp::FTPServer.new(8000, "/home")
server.start
sleep

Run example

You can find an example of utilisation at the root of the repository

To try it, simply run crystal build example.cr --release

Then you can execute it with ./example port root_directory

This will run a FTP server, listening on the specified port and mounted on 'root_directory'

Documentation

https://lechaterrant.github.io/ftp/

Roadmap

  • Simple server
  • Handling multiple clients (one fiber per client)
  • Basic commands (QUIT, NOOP, USER, PASS, UNKNOWN)
  • Basic working directory commands (PWD, CWD, CDUP)
  • DELE command
  • TYPE command
  • HELP command
  • Object oriented version
  • Configuration file in JSON or YAML
  • Documentation
  • Specs
  • ACTIV mode
  • PASSIV mode
  • Basic data transferts (LIST, RETR, STOR)
  • Other RFC959 compliant commands
  • Making a shard of it
  • Testing concurrency of the server
  • Multiple simultaneous data transfert on the same user

Contributing

  1. Fork it (https://github.com/LeChatErrant/ftp/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors