1 unstable release
0.1.0 | Sep 22, 2019 |
---|
#47 in #scenario
2KB
InTray
InTray 📥 is a lightweight and simplistic CLI tool with a clean Web UI to facilitate collecting files over HTTP.
Written in Rust and powered by the succinct web framework tide, InTray has reasonable performance and decent concurrency support. It provides nothing other than receiving upload, but with great convenience and reliability.
It can be an alternative to python -m pyftpdlib
, even though it does not cover all usage scenarios of the latter.
Install
cargo install intray
(Not published yet because some upstream dependencies are still unstable.)
Visit https://github.com/Gowee/intray/releases .
Interface
Server
intray [OPTIONS] [--] [port]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-a, --ip-addr <ip-addr> IP address to bind on [default: ::]
-d, --dir <dir> Directory to store received files [default: ./]
-c, --credentials <auth-credentials>... Credentials for HTTP Basic Auth in the format "USERNAME:PASSWD" [env:
CREDENTIALS=]
-r, --realm <auth-realm> Realm to send in `WWW-Authenticate` HTTP header for HTTP Basic Auth
[default: Intray]
ARGS:
<port> Port to bind on [default: 8080]
Upload with curl
Upload without name
curl -X POST --data-binary @FILENAME http://HOSTNAME:PORT/upload/full
Upload with name
curl -X POST --data-binary @FILENAME http://HOSTNAME:PORT/upload/full/FILENAME
Web UI
Notes
Listen on
By default, intray listens on [::]:8080
.
For Linux-based system with net.ipv6.bindv6only
be 0
(false), which is the default, it can be reached over either IPv4
(e.g. http://127.0.0.1:8080
) or IPv6 (e.g. http://[::1]:8080
). See also
IPV6(7)
.
For Windows and Linux other than the above, it can only be reached over IPv6. In case IPv4 is preferred, specify address manually.
Intray is not serving locally by default. Keeping service exposed on the public Internet may lead to suffering from flooding.
Compatibility
Due to the usage of modern Web features here and there and the lack of skills of the author to set up a Babel pipeline, Intray has poor compatibility with old-fashioned browsers, which unfortunately includes some of major browsers such as IE and some (even slightly) old versions of Chrome and Firefox.
TODO
- Rewrite with tide (deprecating the original actix-web version).
- Rewrite Web UI (#1).
- No chunking for small files.
- Better reverse proxy support.
- Authentication (HTTP Basic Auth).
- Support HTTPS without the need to set up Web server separately.
- Support to limit space usage.
- Upgrade tokio{,-fs} to 0.2 (still in alpha).
- Fallback Web-page to support IE11 and so on.
- Support retrying failed tasks and pausing/resuming progressing tasks.