Cloud Commander

Облачный файловый менеджер с консолью и редактором

Посмотреть на GitHub

Исправить ошибку на сайте
Связаться с автором

Cloud Commander 17.1.3

Главная Блог Поддержать

Cloud Commander - двухпанельный веб файл менеджер с консолью и редактором. Поможет вам управлять сервером и работать с файлами, каталогами и программами в браузере на любом компьютере, смартфоне или планшете.

Cloud Commander

Преимущества

Установка

Установить Cloud Commander проще простого.

npm i cloudcmd -g

Возникли проблемы:

npm i cloudcmd -g --force

Запуск

Для запуска наберите в консоли:

cloudcmd

Cloud Commander поддерживает параметры командной строки:

Параметр Действие
-h, --help помощь
-v, --version вывести версию и выйти
-s, --save сохранить настройки
-o, --online загружать скрипты с удаленных серверов
-a, --auth включить авторизацию
-u, --username установить имя пользователя
-p, --password установить пароль
-c, --config путь к файлу с настройками
--editor назначить редактор: “dword”, “edward” или “deepword”
--root установить корневой каталог
--prefix установить url префикс
--port назначить порт
--minify включить минификацию
--progress показывать состояние файловых операций
--html-dialogs показывать html диалоги
--open открыть веб браузер после старта сервера
--one-panel-mode включить однопанельный режим
--config-dialog включить диалог конфигурирования
--console включить консоль
--no-server не запускать сервер
--no-auth выключить авторизацию
--no-online загружать скрипты с локального сервера
--no-open не открывать веб браузер после старта сервер
--no-minify выключить минификацию
--no-progress не показывать состояние файловых операций
--no-one-panel-mode выключить однопанельный режим
--no-config-dialog выключить диалог конфигурирования
--no-console выключить консоль

Если не задано параметров, Cloud Commander читает информацию с ~/.cloudcmd.json и использует порт оттуда (8000 по умолчанию), если переменных PORT или VCAP_APP_PORT не существует.

Что бы начать работу, введите в адресной строке вашего браузера:

http://localhost:8000

Обновление

Если Вы установили Cloud Commander при помощи npm, остановите приложение и переустановите его:

npm update cloudcmd -g

После чего запустите его снова, почистите кэш и обновите страницу.

Горячие клавиши

Клавиша Действие
F1 помощь
F2 переименовать
F3 просмотр
Shift + F3 просмотр в markdown
F4 редактировать
F5 копировать
F6 переименовать/переместить
F7 новый каталог
Shift + F7 новый файл
F8, Delete удалить текущий файл
Shift + Delete удалить без запроса о подтверждении
F9 меню
F10 настройки
(*) выделить/снять выделение со всех файлов
(+) расширить выделение
(-) сузить выделение
Ctrl + x вырезать в буфер
Ctrl + с копировать в буфер
Ctrl + v вставить из буфера
Ctrl + r обновить
Ctrl + d очистить локальное хранилище
Ctrl + a выбрать (выделить) все файлы на панели
Ctrl + u поменять панели местами
Up, Down, Enter перемещение по файловой системе
Alt + Left/Right показать содержимое каталога под курсором в целевой панели
Alt + g перейти к каталогу
Ctrl + \ перейти в корневой каталог
Tab переключение между панелями
Page Up вверх на одну страницу
Page Down вниз на одну страницу
Home в начало списка
End в конец списка
Space выделить текущий файл (и получить размер каталога)
Insert выделить текущий файл (и перейти к следующему)
Shift + F10 контекстное меню
~ консоль
Ctrl + Click открыть файл в новой вкладке

Просмотр

Просмотр

Возможности

Горячие клавиши

Клавиша Действие
F3 открыть
Esc закрыть

Редактор

Редактор

Горячие клавиши

Клавиша Действие
F4 открыть
Esc закрыть

Горячие клавиши Edward.

Консоль

Консоль

Горячие клавиши

Клавиша Действие
~ открыть
Ctrl + p вставить путь текущего каталога
Esc закрыть

Горячие клавиши console.

Настройки

Настройки

Горячие клавиши

Клавиша Действие
F10 открыть
Esc закрыть

Результат настройки файлового менеджера записывается в текстовый файл доступный для чтения и редактирования. Он называется ~/.cloudcmd.json и содержит следующие поля:

{
    "auth"              : false,            /* разрешить http авторизацию                                      */
    "username"          : "root",           /* имя пользователя для авторизации                                */
    "password"          : "toor",           /* хеш пароля в sha-1 для авторизации                              */
    "algo"              : "sha512WithRSAEncryption", /* криптографический алгоритм                             */
    "editor"            : "edward",         /* по умолчанию, может быть "dword" или "edward"                   */
    "diff"              : false,            /* при сохранении - отсылает патч, а не весь файл                  */
    "zip"               : false,            /* zip текст перед отсылкой / unzip перед сохранением              */
    "localStorage"      : true,             /* локальное хранилище                                             */
    "buffer"            : true,             /* буфер для копирования файлов                                    */
    "dirStorage"        : true,             /* сохранить листинг каталога в localStorage                       */
    "minify"            : false,            /* минификация js, css, html и изображений                         */
    "online"            : true,             /* загрузить файлы js из cdn или Local path                        */
    "open"              : false,            /* открыть веб браузер после старта сервера                        */
    "cache"             : true,             /* кеширование                                                     */
    "showKeysPanel"     : true,             /* показать классическую панель с кнопками функциональных клавиш   */
    "port"              : 8000,             /* http порт                                                       */
    "ip"                : null,             /* ip или null(по умолчанию)                                       */
    "root"              : "/",              /* корневой каталог                                                */
    "prefix"            : "",               /* url префикс                                                     */
    "progress"          : true,             /* показывать состояние файловых операций                          */
    "onePanelMode"      : false,            /* включить однопанельный режим                                    */
    "configDialog"      : true,             /* включить диалог конфигурирования                                */
    "console"           : true              /* включить консоль                                                */
}

Меню

Меню

Щелчок правой кнопкой мыши вызывает контекстное меню с такими пунктами:

Горячие клавиши

Клавиша Действие
F9 открыть
Esc закрыть

Режим одной панели

Cloud Commander может работать в режиме одной панели, в том случае, если размер экрана не позволяет разместить вторую панель. Такое может случится в случае использования мобильного, планшета или маленького окна браузера для взаимодействия с файловым менеджером.

Режим одной панели

Использование в качестве Middleware

Cloud Commander может использоваться в качестве middleware для node.js приложений основанных на socket.io и express:

Инициализируйте package.json:

npm init -y

Установите зависимости:

npm i cloudcmd express socket.io -S

И создайте index.js:

const http = require('http');
const cloudcmd = require('cloudcmd');
const io = require('socket.io');
const app = require('express')();
    
const port = 1337;
const prefix = '/cloudcmd';
    
const server = http.createServer(app);
const socket = io.listen(server, {
    path: `${prefix}/socket.io`
});
    
const config = {
    prefix /* основной URL или функция которая возвращает основной URL (не обязательно) */
};

const plugins = [
    __dirname + '/plugin.js'
];

app.use(cloudcmd({
    socket,          /* используется Config'ом, Edit'ом (не обязательно) и Console'ью (обязательно)  */
    config,          /* опции настроек (не обязательно)                                              */
    plugins,         /* не обязательно */
}));

server.listen(port);

Сервер

Обычно процессы, запущенные с правами отличными от root, не могут слушать порты с номером меньше, чем 1024. В любом случае, я советую запускать Cloud Commander не под root. Как это сделать? Существует несколько простых и быстрых вариантов. Один из них - перенаправление портов.

Iptables

Просто запустите shell/addtables.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 reles after

Вы должны увидеть что-то вроде ( 8000 и 4430 должно быть в config как port и sslPort )

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

Если захотите всё вернуть, просто очистите правила ( 1 и 2 — это номера правил, в вашем случае они могут отличаться).

iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 2

nginx

Возьмите nginx. В Linux это можно сделать так:

sudo apt-get install nginx #for ubuntu and debian

И сделайте хост файл /etc/nginx/sites-enabled/io.cloudcmd.io ( io.cloudcmd.io ваше доменное имя) с содержимым:

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/;
    }
}

Если Вы хотите включить SSL, добавьте несколько строчек в раздел сервера:

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/;
    }
}

Если Вам нужно перенаправление с http на https, просто сделайте так:

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;
}
# create symlink of this file
ln -s ./sites-enabled/io.cloudcmd.io ./sites-available
# restart nginx
/etc/init.d/nginx restart

Разворачивание

Cloud Commander можно легко развернуть на Heroku.

Развернуть

Docker

Cloud Commander можно использовать как docker контейнер:

docker run -v ~:/root -v /:/mnt/fs -t -p 8000:8000 coderaiser/cloudcmd

Настройки будут читаться из домашнего каталога, корень файловой системы монтирован к /mnt/fs, 8000 порт контейнера будет доступен через порт главной системы.

Также Вы можете использовать docker compose с docker-compose.yml:

version: '2'
services:
  web:
    ports:
      - 8000:8000
    volumes:
      - ~:/root
      - /:/mnt/fs
    image: coderaiser/cloudcmd

Когда создадите этот файл, запустите:

docker-compose up

Присоединяйтесь

Существует масса способов поучаствовать в разработке Cloud Commander:

История версий

Особая благодарность: