1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/shibingli-webconsole

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Добро пожаловать, все желающие! Используйте своё свободное время для расширения этого проекта и добавления новых функций.

Стандартное развёртывание

1. Скачайте go1.8.1.linux-amd64.tar.gz.
2. Распакуйте архив с помощью команды tar zxvf go1.8.1.linux-amd64.tar.gz в каталог /usr/local.
3. Добавьте строку export PATH="/usr/local/go/bin:$PATH" в файл /etc/profile.
4. Обновите файл профиля командой source /etc/profile.
5. Перейдите в каталог /opt и выполните команду git clone --recurse-submodules https://github.com/shibingli/webconsole.git. Затем перейдите в папку webconsole и выполните git submodule update --init --recursive.
6. Перейдите в директорию /opt/webconsole/src/apibox.club/apibox и выполните команду GOPATH=/opt/webconsole go install.
7. Настройте автозапуск:
   - Скопируйте файл webconsole из папки /opt/webconsole/bin в /etc/init.d/.
   - Измените права доступа к файлу с помощью chmod 755 /etc/init.d/webconsole.
   - Запустите chkconfig --add webconsole, чтобы добавить сервис в автозагрузку.
   - Включите сервис командой chkconfig webconsole on и запустите его командой service webconsole start.

Скачайте Golang.

Развёртывание в контейнере Docker

1. Установите Docker.
2. Перейдите в каталог /opt и выполните команды git clone --recurse-submodules https://github.com/shibingli/webconsole.git и cd webconsole && git submodule update --init --recursive.
3. Перейдите в папку /opt/webconsole/src/apibox.club/apibox и выполните команду GOPATH=/opt/webconsole go install.
4. Перейдите в каталог /opt/webconsole и выполните docker build -t webconsole:latest.
5. Запустите контейнер командой docker run -d -p 8080:8080 --restart=always --name webconsole webconsole:latest.

Установите Docker.

Журнал изменений

28 декабря 2018 года

* Обновления:
    * Обновлена основная библиотека JavaScript.
    * Добавлена поддержка доступа через контейнеры Docker.
    * Выполнены стандартные исправления ошибок.

31 июля 2017 года

* Обновления:
    * Обновлено xTerm.js.

20 июля 2017 года

* Исправления:
    * Исправлены ошибки отображения символов UTF-8 и обработки больших файлов.
    * Эти исправления были выполнены @AEGQ и сопровождались предоставлением кода.

19 апреля 2017 года

* Обновления:
    * Удалён файл build.sh.
    * Предоставлены инструкции по развёртыванию.

15 апреля 2017 года

* Исправления:
    * Устранены некоторые проблемы с отображением страниц.
    * Обновлён xTerm.js и добавлены примеры использования внешних ссылок.

11 апреля 2017 года

* Обновления:
    * Поддержка JSONP добавлена для удовлетворения потребностей запросов JQuery через междоменные запросы.
    * Конфигурационный файл также поддерживает JSONP.
    * Запрос на поддержку JSONP был сделан @朱小四 (weichat:juechengke).

27 марта 2017 года

* Исправления:
    * Проблема с копированием строк устранена.
    * xTerm обновлён до последней версии.

14 марта 2017 года

* Исправления:
    * Проблемы с протоколом WSS исправлены.
    * Программа Golang обновлена до версии 1.8, а также исправлена ошибка в функции url.Parse.
    * Терминал term.js заменён на xterm.js.
    * Улучшена поддержка китайских, японских и корейских символов, а также IME.
    * Обеспечена лучшая совместимость с популярными программами под Linux, такими как VIM и Tmux.

25 мая 2016 года

* Исправления:
    * Ошибка, связанная с отсутствием каталога log и препятствующая запуску программы, устранена.
    * Ошибки, мешающие сборке проекта с использованием файла Dockerfile, исправлены.

21 мая 2016 года

* Исправление:
    * Проблема с выходом из SSH-сеанса после завершения работы программы устранена.

17 мая 2016 года

* Новые возможности:
    * Добавлена поддержка белого списка для междоменного доступа (conf/conf.json cors_white_list:"127.0.0.1,www.xxx.com").
    * Предложение о добавлении этой функции было сделано @玩蝴蝶的法师.

5 марта 2016 года

* Новое:
    * Файл Dockerfile добавлен.

4 марта 2016 года выпущена версия v1.1

* Новое:
    * Команды запуска, остановки и проверки состояния программы добавлены.

3 марта 2016 года

* Исправления:
    * Независимый режим входа в систему теперь работает корректно.

* Новое:
    * Режимы запуска программы в фоновом режиме и без него добавлены (conf/conf.json daemon:true/false).
    * Файлы PID, содержащие информацию о состоянии программы во время её выполнения, добавлены (log/apibox.pid).

Примерная схема потока данных:

Браузер → WebSocket → SSH → ОС Linux.

Код доступен по следующим адресам:

Структура пакета программы:

├── bin
│   └── apibox
├── conf
│   ├── ssl_cert.crt (по умолчанию не существует)
│   ├── ssl_cert.key (по умолчанию не существует)
│   ├── conf.json
│   └── mime.types
├── log
├── pkg
├── static
│   ├── images
│   └── scripts
└── template

Требования к среде выполнения:

1. Ядро Linux версии 3.x/x86_64 или более поздней версии.
2. Рекомендуется использовать операционные системы CentOS 7.0+ или Ubuntu 14.04+.
3. Для поддержки SSL/TLS при необходимости создайте соответствующие файлы сертификатов SSL и поместите их в папку «conf», настроив файл «conf.json».
4. Клиенты должны использовать IE9, Chrome 40, Firefox 38 или Safari 9 или более поздние версии браузеров.
5. Серверу необходимо разрешить доступ через внешний порт для брандмауэра. Конкретные порты, которые необходимо открыть, см. в файле «conf» и разделе портов файла «conf.json».
6. Программа работает только на операционных системах Unix/Linux и поддерживает SSH.
7. Go1.6+ изначально поддерживает HTTP2.


Процесс развёртывания:
1. Разархивируйте программу или загрузите её в любой каталог и запустите «build.sh» для создания исполняемого файла.
2. Запустите файл «apibox» в папке «bin», например: "./apibox start/stop".
3. Файл конфигурации находится в папке «conf», основной файл конфигурации — «conf.json», при развёртывании добавьте белый список для поддержки доступа других машин.
4. Чтобы запустить программу в фоновом режиме, настройте файл «conf» в папке «conf.json» так, чтобы параметр «daemon» был установлен в значение «true».
5. Журналы программы хранятся в папке «log» с именами, соответствующими дате.
6. Также можно настроить программу для работы в режиме fcgi Nginx, используя Nginx в качестве точки входа. Способ 1: отправьте параметр «vm_addr» на адрес «http(s)://ip:port/console/chksshdaddr», после успешного выполнения получите зашифрованную информацию «en_addr». Примечание: формат vm_addr — «ip:port», если порт не указан, используется порт по умолчанию — 22.

Результат будет в формате JSON (ниже приведены тестовые данные):

Успех:
{
    «ok»: true,
    «msg»: "",
    «data»: { «en_addr»: «0b-nDgcazQKTmUw4oBLfxott», «sshd_addr»: «192.168.220.173:22» }
}

Неудача:
{ «ok»: false, «msg»: «Unable to resolve host address.», «data»: null }

Способ 2: после успешного получения зашифрованной информации «en_addr», можно получить доступ к адресу «http(s)://ip:port/console/login/'en_addr'» с помощью методов GET или POST. Примечание: «en_addr» — это данные, полученные в результате операции из способа 1.

## JQuery Demo:

### Первый способ (требуется повторный вход, но для доступа к одному домену можно использовать междоменный доступ):

```javascript
var protocol = (location.protocol === "https:") ? "https://" : "http://";
var addr = protocol + location.hostname + ((location.port) ? (":" + location.port) : "")

$.post(addr+"/console/chksshdaddr?rnd=" + Math.random(), {
    "vm_addr": "192.168.220.177:22"
}, function(data) {
    var json = data;
    if (typeof(data) != "object") {
        json = $.parseJSON(data);
    }
    if (json.ok) {
        location.href = addr + json.data.sshd_addr;
    }
});

Второй способ (прямой ввод адреса удалённого хоста, имени пользователя и пароля, затем прямой вход. Междоменный доступ):

<button class="btn btn-primary" onclick="testDemo();">Test</button>

<script type="text/javascript">
    //Примечание: если удалённый хост доступен по IP-адресу, этот шаг можно пропустить и вызвать метод login напрямую. Пожалуйста, измените адрес и порт входа в соответствии с реальной ситуацией.
    var testDemo = function() {
        $.ajax({
            url: "http://a.com:8081/console/chksshdaddr?rnd=" + Math.random(),
            method: "POST",
            data: {
                "vm_addr": "172.16.18.223:22",
            },
            dataType: "jsonp",
            cache: false,
        }).done(function(data) {
            var json = data;
            if (typeof(data) != "object") {
                json = $.parseJSON(data);
            }
            if (json.ok) {
                console.log("en_addr:", json.data.sshd_addr);
                login(json.data.sshd_addr, "shibingli", "cloud123456");
            } else {
                alert("Ошибка входа, пожалуйста, проверьте вашу информацию о хосте.");
            }
        }).fail(function() {
            alert("Неизвестная ошибка, пожалуйста, свяжитесь с администратором.");
        });
    };


    //Примечание: если удалённое устройство доступно по доменному имени или IP-адресу хоста, вы можете выполнить предыдущий шаг, а затем вызвать этот метод. Пожалуйста, измените адрес входа и порт в соответствии с вашей реальной ситуацией.
    var login = function(enVMAddr, username, password) {
        $.ajax({
            url: "http://a.com:8081/console/login?rnd=" + Math.random(),
            method: "POST",
            data: {
                "vm_addr": enVMAddr,
                "user_name": username,
                "user_pwd": password
            },
            dataType: "jsonp",
            cache: false,
        }).done(function(data) {
            var json = data;
            if (typeof(data) != "object") {
                json = $.parseJSON(data);
            }
            if (json.ok) {
                location.href = "http://a.com:8081" + json.data;
            } else {
                alert("Ошибка входа, пожалуйста, подтвердите свою информацию для входа.");
            }
        }).fail(function() {
            alert("Неизвестная ошибка, пожалуйста, обратитесь к администратору.");
        });
    };
</script>

Введение

Веб-SSH удалённый терминал на основе Golang, WebSocket и xTermJS. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/shibingli-webconsole.git
git@api.gitlife.ru:oschina-mirror/shibingli-webconsole.git
oschina-mirror
shibingli-webconsole
shibingli-webconsole
master