0.1.1 • Published 7 years ago

959.js v0.1.1

Weekly downloads
15
License
-
Repository
github
Last release
7 years ago

959.js

A simple FTP server written in pure ECMAScript 6.

Features:

  • User management through simple JSON configuration file
  • Implements RFC 959 (but without active data transfer)
  • Implements RFC 697 (CWD)
  • CHMOD of files
  • Working directories per user
  • port ranges for passive mode
  • instant configuration reloading. you do not have to restart the ftp server when you change the ftp-config.json

Planned features:

I plan implementing the following features. Pull requests are welcomed.

  • Simple installation: npm install -g 959.js && 959.js
  • configurable configuration file name
  • Docker image
  • Windows compatibility
  • Anonymous support
  • Testing...
  • Remove moment.js dependency
  • TLS support (FTPS, FTPES)
  • RFC 2428 (IPv6)
  • RFC 7151 (Virtual Hosts)
  • RFC 3659

Usage

Because there is no npm module published, you need to git clone this repository directly and run the following command:

grunt babel && node dist/user.js [YOUR_USERNAME] [YOUR_PASSWORD]

This outputs something like:

sha512#9ba1f63365a6caf66e46348f43cdef956015bea997adeb06e69007ee3ff517df10fc5eb860da3d43b82c2a040c931119d2dfc6d08e253742293a868cc2d82015

Copy this string and put it in a file named ftp-config.json

{
  "users": [
    {
      "directory": "/var/ftp/[YOUR_USERNAME]",
      "username": "[YOUR_USERNAME]",
      "password": "sha512#9ba1f63365a6caf66e46348f43cdef956015bea997adeb06e69007ee3ff517df10fc5eb860da3d43b82c2a040c931119d2dfc6d08e253742293a868cc2d82015"
    }
  ]
}

After this, you can start your FTP-Server like the following:

sudo node dist/server.js

sudo is necessary, because it has to be bound to port 21.

To configure the passive ports used you can edit the configuration file like this:

{
    "passivePorts": ["10000-11000", "1337"],
    "users": [
        // ...
    ]
}

License

Copyright (c) 2017 Timm Decker Licensed under the MIT license.