LINUX.ORG.RU

Хочу познать тайны писания Вебморд к софтинам.


0

0

Прошу пинка в правильном направлении на самые азы и схематичного разъяснения как работает вебморда, к тому же Deluge (или чему угодно) каким макаром оно через браузер подключается?

★★★★★

>каким макаром оно через браузер подключается?

Я думаю использует какие-то функции, которые заранее сделаны в API\Плагине нужной проги. Может между ними есть прослойка в виде консольной тулзы, а может и сама прога умеет понимать аргументы. Только как именно - не знаю. Но вроде бы на php это реализуется. А вообще лучше заглянуть в простенькую веб-морду и её приложение.


// За точность сведений не отвечаю. Наблюдения и предположения.

ShTH
()

А я уже давно не делаю графического софта, все нужные графические морды - через веб. Очень удобно, и требует минимум затрат (простенький CGI на баше, являющийся посредником между консольной утилитой и браузером). Еще проще - сразу в С-шной программе обрабатывать запросы - и работает быстрее.

Eddy_Em ☆☆☆☆☆
()

В rtorrent все организовано примерно так:
rtorrent выступает в роли scgi-сервера, к нему подключается lighthttpd как клиент, и для обмена они используют xmlrpc over scgi. Ну а браузеры уже дергают lighthttpd.
Немного задом-наперед получилось :)

Кто в теме, правильно я все понял, а то самому интересно?

urxvt ★★★★★
()
Ответ на: комментарий от yoghurt

и да, вебморды всяких рторрентов/трансмиссий это такой наглядный пример Model-View-Controller

yoghurt ★★★★★
()

Самый простой вариант CGI. В форме заполняются поля и отправляется GET/POST запрос. CGI прога подставляет полученые параметры в командную строку или направляет на stdin софтины, получает stderr и stdout и код ошибки. И всё это дело отправляется в браузер с предварительным форматированием.

Это делается когда софтинка простая типа gcc или make.

Эсли это чтото типа пакетного менеджера, то уже надо писать парсер, создавать fifo и уже так работать.

Однако большенство софта спроэктировано так что весь функционал находится в динамической библиотеке, а собственно прога это всего лиш интерфейс к этой библиотеке. В таких случаях работать лутше напрямую, а не через командную строку.

PS Вебморды быстро клепаются на webpy

SV0L0CH
()

> как работает вебморда

дёргает программу за API. Например, через d-bus. Второй вариант - сокеты. В один написал, из другого прочитал ответ. Третий вариант - дёргать специальную прогу-прокладку или саму тулзу типа как в консоли (exec или shell или system, в зависимости от языка программирования): ты ему аргументы командной строки, он тебе в ответ текст или код возврата.

Если с первыми вариантам все понятно, то для третьего могу сделать пример: ktorrent принимает параметр командной строки, позволяющий не запускать новое приложение, а добавить торрент-файл в уже запущенное. Веб-морда на php сохраняет принятый с формы торрент-файл в tmp и делает вызов system(«ktorrent --add-torrent /tmp/randomfilename.torrent») - и торрент добавляется в список закачек. Пример вымышленный.

есть ещё описанный выше вариант, когда сама программа рисует веб-морду и является cgi-приложением. Например, наш радиус-сервер сам слушает порт 8080 (выполняет роль апача) при обращении к порту отдаёт страницу (роль cgi-приложения) и при определённых запросах что-то делает (кеш, там, обновляет, или сессии дропает)

Выбирай вариант, более подходящий для твоей задачи.

name_no ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.