Mimic Norton Commander functionality using a web interface and the websocket.
- Rust
- WebSocket
This application doesn't use HTTP besides of loading the 'index' page. All exchanges with a server are the websocket based. Every websocket packet is a JSON object.
Currently the project has 4 direct dependencies:
And one optional dependency:
You will need also common scripts to build them.
The project uses also 2 3rd party dependencies for viewing an info of image files. How to get and build them is described in dep crates/README.md. Since the crate license requires to list it for a distribution in a source or a binary form, I release the Simple Commander without the crate. When you build the Simple Commander, you can specify your desire to use the crate as bellow,
show_exif=true
First, every dependency tells that a certain functionality goes from other product. And other product can present it better. Second, every dependency adds own security risks, so the security of the entire product will depend on the security of the weakest product in the chain.
Since the project uses a websocket endpoint implemented on WS CGI technology, only the SimHTTP can be used to run it properly. It isn't a drawback since the server exists on all platforms. Hopefully, more vendors will adopt the WS CGI soon and the list of supporting servers will be extended.
Read a note in the above server description regarding running it in a background mode without setup as a service.
The functionality handled by upload CGI project. Make sure that upload URL configured properly accordingly your web server settings. Default value is ./upload.
Upload functionality is also possible using websocket, however currently SimHTTP doesn't support binary packets.
Windows, Mac, Linux and Free BSD are supported.
Unzip the provided archive accordingly your platform and the processor type. Launch simcom script, or directly ./bin/simhttp from the directory where the installation archive was opened. The access URL will look like -
You can edit env.conf to change a host name or port.
If you have RustBee installed in your system, then you can try an additional
customization a terminal session. Create file : $HOME/.beerc.7b which will produce out in lines in the format
name=value. If name starts with alias , then the line will be considered as an alias definition.
Otherwise, it will be considered as an environment variable definition, for example:
target env {
dependency{}
display("LS_COLORS=di=01;33:ln=01;36:ex=01;32:*.zip=01;31:*.7b=01;35:*.md=94")
display(FORCE_COLOR=true)
display(alias ll='ls -la')
display(alias gs='git status')
display(alias ..='cd ..')
display(alias dir='dir --color')
}
If the WebSocket connection was closed for some reason, then the first packet can get lost after restoring communication, and repeating command can be required.
This product uses an alternative tool to the Cargo building tool. It makes sense especially for products having 0 dependencies on the crates.io. Some 3rd party dependency exists though, however they can be built without Cargo as well.
The product is in the beta state.