mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-24 03:05:41 +00:00
391 lines
14 KiB
Markdown
391 lines
14 KiB
Markdown
Cloud Commander v2.0.0
|
||
===============
|
||
###[Main][MainURL] [Blog][BlogURL] Live(![JitSu][JitSu_LIVE_IMG] [JitSu][JitSuURL], ![Heroku][Heroku_LIVE_IMG] [Heroku][HerokuURL])
|
||
[NPM_INFO_IMG]: https://nodei.co/npm/cloudcmd.png?downloads=true&&stars "npm install cloudcmd"
|
||
[MainURL]: http://cloudcmd.io "Main"
|
||
[BlogURL]: http://blog.cloudcmd.io "Blog"
|
||
[JitSuURL]: http://cloudcmd.jit.su "JitSu"
|
||
[HerokuURL]: http://cloudcmd.herokuapp.com/ "Heroku"
|
||
[JitSu_LIVE_IMG]: https://status-io.cloudcmd.io/host/cloudcmd.jit.su/img/txt.png "JitSu"
|
||
[HEROKU_LIVE_IMG]: https://status-io.cloudcmd.io/host/cloudcmd.herokuapp.com/img/txt.png "Heroku"
|
||
|
||
**Cloud Commander** orthodox web file manager with console and editor. Will help you manage the server and work with files, folders and programs in browser from any computer, mobile or tablet device.
|
||
|
||

|
||
|
||
Benefits
|
||
---------------
|
||
|
||
- Open Source (**MIT License**).
|
||
- Has 2 classic panels.
|
||
- Optional **authorization**.
|
||
- Client works in web browser.
|
||
- Server works on **Windows**, **Linux** and **Mac OS**.
|
||
- Could be used local or remotely.
|
||
- Adapting to screen size.
|
||
- **Editor** with support of **syntax highlighting** for over 110 languages.
|
||
- **Console** with support of default OS command line.
|
||
- Written in **JavaScript/Node.js**.
|
||
|
||
Install
|
||
---------------
|
||
|
||
The installation of file manager is very simple.
|
||
|
||
- install [node.js](http://nodejs.org/ "node.js") if you still have not.
|
||
- install ```cloudcmd``` via ```npm``` with:
|
||
|
||
```sh
|
||
npm i cloudcmd -g
|
||
```
|
||
|
||
![NPM_INFO][NPM_INFO_IMG]
|
||
|
||
Start
|
||
---------------
|
||
For starting just type in console:
|
||
|
||
```sh
|
||
cloudcmd
|
||
```
|
||
|
||
Cloud Commander supports command line parameters:
|
||
|
||
|Parameter |Operation
|
||
|:----------------------|:--------------------------------------------
|
||
| `-h, --help` | display help and exit
|
||
| `-v, --version` | output version information and exit
|
||
| `-p, --port` | set port number and start
|
||
|
||
If no parameters given Cloud Commander reads information from `~/.cloudcmd.json` and use
|
||
port from it (`8000` default). if port variables `PORT` or `VCAP_APP_PORT` isn't exist.
|
||
|
||
To begin use, type in address bar of your browser:
|
||
|
||
```
|
||
http://localhost:<port>
|
||
```
|
||
|
||
With default settings it would be:
|
||
|
||
```
|
||
http://localhost:8000
|
||
```
|
||
|
||
Update
|
||
---------------
|
||
If you installed Cloud Commander with `npm`, stop application and
|
||
re-install it:
|
||
|
||
```sh
|
||
npm i cloudcmd -g
|
||
```
|
||
|
||
Then start it again, clear cache of your browser and reload page.
|
||
|
||
Hot keys
|
||
---------------
|
||
|
||
|Key |Operation
|
||
|:----------------------|:--------------------------------------------
|
||
| `F1` | help
|
||
| `F2` | rename
|
||
| `F3` | view
|
||
| `Shift + F3` | view as `markdown`
|
||
| `F4` | edit
|
||
| `F5` | copy
|
||
| `F6` | rename/move
|
||
| `F7` | new dir
|
||
| `Shift + F7` | new file
|
||
| `F8`, `Delete` | remove
|
||
| `Shift + Delete` | remove without prompt
|
||
| `F9` | menu
|
||
| `F10` | config
|
||
| `*` | select/unselect all
|
||
| `+` | expand selection
|
||
| `-` | shrink selection
|
||
| `Ctrl + x` | cut to buffer
|
||
| `Ctrl + с` | copy to buffer
|
||
| `Ctrl + v` | paste from buffer
|
||
| `Ctrl + z` | clear buffer
|
||
| `Ctrl + r` | refresh
|
||
| `Ctrl + d` | clear local storage
|
||
| `Ctrl + a` | select all files in a panel
|
||
| `Up`, `Down`, `Enter` | filesystem navigation
|
||
| `Ctrl + \` | go to the root directory
|
||
| `Tab` | move via panels
|
||
| `Page Up` | up on one page
|
||
| `Page Down` | down on one page
|
||
| `Home` | to begin of list
|
||
| `End` | to end of list
|
||
| `Space` | select current file (and get size of directory)
|
||
| `Insert` | select current file (and move to next)
|
||
| `F9` | context menu
|
||
| `~` | console
|
||
| `Ctrl + Click` | open file on new tab
|
||
|
||
View
|
||
---------------
|
||

|
||
|
||
### Features
|
||
- View images.
|
||
- View text files.
|
||
- Playing audio.
|
||
- Playing video.
|
||
|
||
###Hot keys
|
||
|Key |Operation
|
||
|:----------------------|:--------------------------------------------
|
||
| `F3` | open
|
||
| `Esc` | close
|
||
|
||
Edit
|
||
---------------
|
||

|
||
|
||
### Features
|
||
- Syntax highlighting based on extension of file for over 110 languages.
|
||
- Built-in `emmet` (for html files)
|
||
- Drag n drop (drag file from desktop to editor).
|
||
- Built-in `jshint` (with options in `.jshintrc` file)
|
||
- Built-in `beautifier` (with options in `json/beautify.json`, could be overriden in `~/.beautify.json`)
|
||
- Configurable options (could be edited in `json/edit.json`)
|
||
|
||
###Hot keys
|
||
|Key |Operation
|
||
|:----------------------|:--------------------------------------------
|
||
|`F4` | open
|
||
| `Ctrl + s` | save
|
||
| `Ctrl + f` | find
|
||
| `Ctrl + h` | replace
|
||
| `Ctrl + g` | go to line
|
||
| `Ctrl + b` | beautify js, css or html
|
||
| `Ctrl + m` | minify js, css or html
|
||
| `Esc` | close
|
||
|
||
For more details see [Ace keyboard shortcuts](https://github.com/ajaxorg/ace/wiki/Default-Keyboard-Shortcuts "Ace keyboard shortcuts").
|
||
|
||
Console
|
||
---------------
|
||

|
||
|
||
###Hot keys
|
||
|Key |Operation
|
||
|:----------------------|:--------------------------------------------
|
||
| `~` | open
|
||
| `Ctrl + p` | paste path of current directory
|
||
| `Ctrl + z` | cancel current prompt
|
||
| `Ctrl + l` | clear
|
||
| `Esc` | close
|
||
|
||
For more details see [Jq-console keyboard shortcuts](https://github.com/replit/jq-console#default-key-config).
|
||
|
||
Config
|
||
---------------
|
||

|
||
|
||
###Hot keys
|
||
|Key |Operation
|
||
|:----------------------|:--------------------------------------------
|
||
| `F10` | open
|
||
| `Esc` | close
|
||
|
||
When you change one of options file `~/.cloudcmd.json` would be saved.
|
||
It could be edited manually with any text editor.
|
||
Here is description of options:
|
||
|
||
```js
|
||
{
|
||
"auth" : false, /* enable http authentication */
|
||
"username" : "root", /* username for authentication */
|
||
"password" : "toor", /* password hash in sha-1 for authentication*/
|
||
"diff" : true, /* when save - send patch, not whole file */
|
||
"zip" : true, /* zip text before send / unzip before save */
|
||
"notifications" : false, /* show notifications when tab is not active*/
|
||
"localStorage" : true, /* cache directory data */
|
||
"buffer" : true, /* buffer for copying files */
|
||
"dirStorage" : true, /* store directory listing to localStorage */
|
||
"minify" : true, /* minification of js,css,html and img */
|
||
"online" : true, /* load js files from cdn or local path */
|
||
"cache" : true, /* add cache-control */
|
||
"showKeysPanel" : true, /* show classic panel with buttons of keys */
|
||
"port" : 8000, /* http port */
|
||
"ip" : null, /* ip or null(default) */
|
||
}
|
||
```
|
||
|
||
Menu
|
||
---------------
|
||

|
||
Right mouse click button shows context menu with items:
|
||
|
||
- View
|
||
- Edit
|
||
- Rename
|
||
- Delete
|
||
- Pack
|
||
- Unpack
|
||
- Upload
|
||
- Upload to (Dropbox, Github, GDrive, FilePicker)
|
||
- Download
|
||
- New (File, Dir, from FilePicker)
|
||
- Cut
|
||
- Copy
|
||
- Paste
|
||
- (Un)Select All
|
||
|
||
###Hot keys
|
||
|Key |Operation
|
||
|:----------------------|:--------------------------------------------
|
||
| `F9` | open
|
||
| `Esc` | close
|
||
|
||
Server
|
||
---------------
|
||
Standard practices say no non-root process gets to talk to
|
||
the Internet on a port less than 1024. Anyway I suggest you
|
||
to start Cloud Commander as non-root. How it could be solved?
|
||
There is a couple easy and fast ways. One of them is port forwarding.
|
||
###Iptables
|
||
Just run `shell/addtables.sh` for default options.
|
||
|
||
```sh
|
||
iptables -t nat -L # look rules before
|
||
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000
|
||
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 4430
|
||
iptables -t nat -L # look rules after
|
||
```
|
||
|
||
You should see something like this ( **8000** and **4430** should be in config as **port** and **sslPort** )
|
||
|
||
```sh
|
||
target prot opt source destination
|
||
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8000
|
||
REDIRECT tcp -- anywhere anywhere tcp dpt:https redir ports 4430
|
||
```
|
||
If you would want to get things back just clear rules ( **1** and **2** it's rule numbers,
|
||
in your list they could differ).
|
||
|
||
```sh
|
||
iptables -t nat -D PREROUTING 2
|
||
iptables -t nat -D PREROUTING 1
|
||
```
|
||
|
||
###nginx
|
||
Get [nginx](http://nginx.org/ "nginx"). On linux it could be done this way:
|
||
|
||
```sh
|
||
sudo apt-get install nginx #for ubuntu and debian
|
||
```
|
||
|
||
Than make host file **/etc/nginx/sites-enabled/io.cloudcmd.io**
|
||
( *io.cloudcmd.io* is your domain name) with content:
|
||
|
||
```sh
|
||
server {
|
||
listen 80;
|
||
client_max_body_size 100m;
|
||
server_name io.cloudcmd.io;
|
||
access_log /var/log/nginx/io.cloudcmd.io.access.log;
|
||
location / {
|
||
proxy_pass http://127.0.0.1:8000/;
|
||
}
|
||
}
|
||
```
|
||
|
||
If you want add **ssl**, add a couple lines to server block:
|
||
|
||
```sh
|
||
server {
|
||
listen 443;
|
||
client_max_body_size 100m;
|
||
ssl on;
|
||
ssl_certificate /home/coderaiser/cloudcmd/ssl/ssl.crt;
|
||
ssl_certificate_key /home/coderaiser/cloudcmd/ssl/ssl.key;
|
||
server_name io.cloudcmd.io;
|
||
access_log /var/log/nginx/io.cloudcmd.io.access.log;
|
||
location / {
|
||
proxy_pass http://127.0.0.1:8000/;
|
||
}
|
||
}
|
||
```
|
||
|
||
For websocket support (nginx >= v1.3.13) modify server block:
|
||
|
||
```sh
|
||
location / {
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection "upgrade";
|
||
|
||
proxy_pass http://127.0.0.1:8000/;
|
||
}
|
||
```
|
||
|
||
|
||
If you need redirection from **http** to **https**, it's simple:
|
||
|
||
```sh
|
||
server {
|
||
listen 80;
|
||
server_name admin.cloudcmd.io;
|
||
rewrite ^ https://io.cloudcmd.io$request_uri? permanent; #301 redirect
|
||
access_log /var/log/nginx/io.cloudcmd.io.access.log;
|
||
}
|
||
```
|
||
|
||
```sh
|
||
# create symlink of this file
|
||
ln -s ./sites-enabled/io.cloudcmd.io ./sites-available
|
||
# restart nginx
|
||
/etc/init.d/nginx restart
|
||
```
|
||
|
||
Version history
|
||
---------------
|
||
- *2014.12.09*, **[v2.0.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v2.0.0.zip)**
|
||
- *2014.11.21*, **[v1.5.1](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.5.1.zip)**
|
||
- *2014.11.19*, **[v1.5.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.5.0.zip)**
|
||
- *2014.11.05*, **[v1.4.1](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.4.1.zip)**
|
||
- *2014.10.28*, **[v1.4.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.4.0.zip)**
|
||
- *2014.10.02*, **[v1.3.2](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.3.2.zip)**
|
||
- *2014.09.22*, **[v1.3.1](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.3.1.zip)**
|
||
- *2014.09.18*, **[v1.3.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.3.0.zip)**
|
||
- *2014.08.29*, **[v1.2.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.2.0.zip)**
|
||
- *2014.07.18*, **[v1.1.1](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.1.1.zip)**
|
||
- *2014.07.10*, **[v1.1.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.1.0.zip)**
|
||
- *2014.07.03*, **[v1.0.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v1.0.0.zip)**
|
||
- *2014.06.16*, **[v0.9.2](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.9.2.zip)**
|
||
- *2014.06.11*, **[v0.9.1](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.9.1.zip)**
|
||
- *2014.06.10*, **[v0.9.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.9.0.zip)**
|
||
- *2014.04.28*, **[v0.8.4](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.8.4.zip)**
|
||
- *2014.03.19*, **[v0.8.3](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.8.3.zip)**
|
||
- *2014.03.03*, **[v0.8.2](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.8.2.zip)**
|
||
- *2014.02.13*, **[v0.8.1](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.8.1.zip)**
|
||
- *2014.02.13*, **[v0.8.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.8.0.zip)**
|
||
- *2013.12.09*, **[v0.7.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.7.0.zip)**
|
||
- *2013.11.08*, **[v0.6.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.6.0.zip)**
|
||
- *2013.10.17*, **[v0.5.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.5.0.zip)**
|
||
- *2013.09.27*, **[v0.4.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.4.0.zip)**
|
||
- *2013.08.01*, **[v0.3.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.3.0.zip)**
|
||
- *2013.04.22*, **[v0.2.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.2.0.zip)**
|
||
- *2013.03.01*, **[v0.1.9](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.9.zip)**
|
||
- *2012.12.12*, **[v0.1.8](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.8.zip)**
|
||
- *2012.10.01*, **[v0.1.7](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.7.zip)**
|
||
- *2012.08.24*, **[v0.1.6](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.6.zip)**
|
||
- *2012.08.06*, **[v0.1.5](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.5.zip)**
|
||
- *2012.07.27*, **[v0.1.4](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.4.zip)**
|
||
- *2012.07.19*, **[v0.1.3](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.3.zip)**
|
||
- *2012.07.14*, **[v0.1.2](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.2.zip)**
|
||
- *2012.07.11*, **[v0.1.1](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.1.zip)**
|
||
- *2012.07.09*, **[v0.1.0](//github.com/cloudcmd/archive/raw/master/cloudcmd-v0.1.0.zip)**
|
||
|
||
Special Thanks
|
||
---------------
|
||
- [Polietilena](http://polietilena.github.io/ "Polietilena") for **logo** and **favicon**.
|
||
- [TarZak](https://github.com/tarzak)
|
||
- Russian and Ukrainian translations;
|
||
- config template and style;
|
||
- change order of directories and files;
|
||
- add ability do not hide path and header when files are scrolling;
|