No setup, zero-config, multi-platform, multi-protocol, standalone server for developers or whoever wants to promptly serve some files over the network.
It can be used both headless or for an even more friendly experience, it can be used with a GUI:
As an embedded software engineer, I routinely encounter the need for seamless file transfers between host and target devices in the course of various development tasks. Whether the objective is upgrading a system image, booting a Linux Kernel from the bootloader, retrieving packages from remote repositories, fetching a Git repository or sharing files with your colleague next desk, the constant requirement is a quick and straightforward file server. The capability to promptly set up an FTP, TFTP, or HTTP server proves to be a time-saving and efficient solution in navigating the most diverse file exchange scenarios.
I developed this application as an exercise in learning Rust because I couldn't find a solution that seamlessly served multiple protocols, was headless, and supported various platforms. Unlike many dedicated servers tailored for either Windows or Linux, with or without a UI, my app aims to bridge the gap by offering a versatile, multi-platform, and protocol-agnostic solution.
Options:
--headless Headless
-b, --bind-ip=<IP> Bind IP [default: 127.0.0.1]
-d, --serve-dir=<PATH> Directory to serve [default: /tmp/]
-v, --verbose... Verbose logging
--http[=<PORT>] Start the HTTP server [default port: 8080]
--ftp[=<PORT>] Start the FTP server [default port: 2121]
--tftp[=<PORT>] Start the TFTP server [default port: 6969]
--dhcp[=<PORT>] Start the DHCP server [default port: 6767]
-h, --help Print help (see more with '--help')
-V, --version Print versionsudo dnf install glibc2-devel atk-devel cairo-devel pango-devel gdk-pixbuf2-devel gtk3-devel gcc cmake clang clang-libssudo apt install libatk1.0-dev libcairo2-dev libpango1.0-dev libgdk-pixbuf2.0-dev libgtk-3-dev build-essentialcargo install quick-serve
quick-servegit clone https://github.com/joaofl/quick-serve.git
cd quick-serve
cargo run --releaseThe ui is optional and can be refrained from compilation with:
cargo build --release --no-default-featuresEven if it is compiled, the UI can still be disabled at runtime.
- Install Docker
- Install Cross
cargo install cross --git https://github.com/cross-rs/cross- Build
./cross-build-all.shsudo apt install wget tftp-hpa
cargo build
cargo test- FTP
- HTTP
- TFTP
- DHCP
- HTTPS
- SFTP
- NFS
- SAMBA
- Command line
- Local interface
- Web interface
- Terminal interface
- Serve
nfiles and exit - Serve for
tseconds and exit - Show number of files being served
- Report transfer rate
- Report transferred files
- Show statistics when exit
- Color-code logs according to protocol
- Add log filtering options
- Fix excessive CPU usage when using the UI
- Refine on each protocol's specific logs