Skip to content

vernisaz/simcom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

328 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple Commander (simcom)

Goal

Mimic Norton Commander functionality using a web interface and the websocket.

Technologies

  • 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.

Dependencies

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

Why the author is so concerened about dependencies

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.

Web server

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.

File upload

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.

Platforms

Windows, Mac, Linux and Free BSD are supported.

Installation

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 -

http://localhost:3000/cmd/

You can edit env.conf to change a host name or port.

Terminal customization

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')
}

Known issues

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.

No-Cargo build

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.

Status

The product is in the beta state.

About

Web Norton commander implemented in Rust and SimHttp

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors