Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!
250 ₴

HTTP-Shell repeater

closed by moderator


Клиентская часть программы «HTTP-Shell repeater».

Техническое задание

 Задача программы — установить соединение по схеме №2 с сайтом, при получении в качестве ответа определенной команды, - направить ее командному интерпретатору Shell-а операционной системы linux, как будто эта команда введена через TUI, а результат, возвращаемый командным интерпретатором для TUI, получить и передать исходящим HTTP-запросом на сайт. В результате связка HTTP-сервер + программа-клиент должна предоставить возможность управления linux-компьютером аналогично тому как это делает putty ssh client. При этом управляемый компьютер может находится за несколькими NAT с серым IP адресом и без всяких пробросов портов.

Shell (Оболочка операционной системы)

TUI (Текстовый пользовательский интерфейс)


Схема №1. Стандартная схема соединения HTTP-сервера с программой-клиентом, где (з) — запрос, (о) — ответ.

 1. Отправка текста с командой для shell с помощью запроса от HTTP-сервера к программе-клиенту

(з) [HTTP-сервер] –> [интернет]–> [маршрутизатор–> [NAT]]–> [порт 80]–> [программа-клиент]

 2. Ответ программы-клиента HTTP-серверу (текстовые данные, возвращаемые shell-ом после выполнения)

(о) [HTTP-сервер] <– [интернет]<– [программа-клиент]

 Схема №1 нам не подходит из-за невозможности проброса 80 порта с маршрутизатора на компьютер, в котором находится наша  программа-клиент. Поэтому необходима другая схема - схема №2.


Схема №2. Нестандартная схема соединения HTTP-сервера с программой-клиентом, где (з) — запрос, (о) — ответ.

 1. Каждые 1-2 секунды отправка исходящего запроса к серверу, цель которого получить в ответ текст с командой для shell

(з) [программа-клиент]—>[интернет]—>[HTTP-сервер]

 2. Отправка текста с командой для shell с помощью ответа от HTTP-сервера к программе-клиенту

(о) [программа-клиент]<—[порт 80]<—[маршрутизатор<— [NAT]]<—[интернет]<—[HTTP-сервер]

 3. Ответ программы-клиента HTTP-серверу с помощью отправки HTTP-запроса (текстовые данные, возвращаемые shell-ом после выполнения)

(з) [программа-клиент]—>[интернет]—>[HTTP-сервер]


 Программа-клиент также должна поддерживать все основные linux-системы и запускаться вместе с компьютером в режиме демона (службы/сервиса).

Интервал между запросами должен быть в миллисекундах равен случайному числу между 1000 и 2000, должна быть возможность переключить между плавающим интервалом или точным.

Для того чтобы компьютеры можно было различить между собой программа должна будет передать токен.

 Адрес сервера, токен, интервал между повторами, переключатель точное/случайное число поместить в файле настроек /etc/http-shell_repeater.conf

 Для взаимодействия программы с сервером “HTTP-console” будет предоставлена документация по API.



  1. 3 daysconcealedWinning proposal
    Ярослав Ерстенюк
     208   6   0

    +

    Ukraine Ivano-Frankovsk | 2 September 2016 |

Client
Project published
2 September 2016
27 views