реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Web-интерфейс, Как и в чем это все делается...
Славка
сообщение May 12 2010, 09:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Как сделать примитивный web-интерфейс на процессоре под управлением Linux? есть веб-сервер боа... Но на нем пока получается только обычные html-страницы вешать... Хочется через вебинтерфейс управлять приложениями, модулями... Где вообще искать? Есть ли какие нить примеры, как через веб-интерфейс передавать параметры запущенным программам на железке, ну или хотябы запустить программу с параметрами?
через html даж параметры передать не могу...
href="./root/app1 -c2 -a3" говорит нет такого файла, без параметров href="./root/app1" вродь запускается... как передать выход программы обратно в браузер, а не в терминал, тож непонятно...
Go to the top of the page
 
+Quote Post
Savrik
сообщение May 12 2010, 19:49
Сообщение #2


наблюдаю..
***

Группа: Свой
Сообщений: 291
Регистрация: 11-12-06
Из: Украина
Пользователь №: 23 369



хмм.. не проще для запуска-управления использовать телнет? и с защитой проще будет, и велосипед изобретать не надо..
Go to the top of the page
 
+Quote Post
DRUID3
сообщение May 12 2010, 21:33
Сообщение #3


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



biggrin.gif Здравствуйте... Жжоте...

По моему только ленивый(как я wink.gif ) программист еще не написал микросервер с поддержкой CGI. В интернете их хоть кушай одним местом... Я думал все знают laughing.gif ...

Почему вдруг Boa?


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
no_d@t@
сообщение May 13 2010, 07:56
Сообщение #4


Участник
*

Группа: Validating
Сообщений: 24
Регистрация: 4-02-08
Пользователь №: 34 736



Цитата(Славка @ May 12 2010, 13:54) *
Как сделать примитивный web-интерфейс на процессоре под управлением Linux?


Тема интересная и нужная. Управление и настройка через web-интерфейс - к этому все идет (или уже пришло smile.gif)
Сам пытался разобраться где-то полгода назад, не закончил - отвлекли. использовал не boa, а thttpd, да не суть..

Цитата(Славка @ May 12 2010, 13:54) *
Есть ли какие нить примеры, как через веб-интерфейс передавать параметры запущенным программам на железке


Использовал qDecoder, у них на сайте все подробно расписано, с примерами.
http://www.qdecoder.org/releases/current/examples/
В кратце: рисуется страница с полями для ввода/отображения и кнопки. На кнопки вешаются cgi скрипты, которые получают/передают данные в/из браузера.

Цитата(Славка @ May 12 2010, 13:54) *
как передать выход программы обратно в браузер, а не в терминал, тож непонятно...


Пример.
Есть html страница с кнопкой, при нажатии на кнопку запускается cgi скрипт, код которого ниже.
(т.е. выводится некий текст - выход программы обратно в браузер)

#define LOG_FILE_NAME "/var/log/messages"

FILE *pFDLogFile = NULL;
char cBuf[STR_MAX_LEN+1];

int main()
{
printf("Content-Type: text/html\n\n");
printf("<html>");
printf("<head>");
printf("<title>Log File</title>");
printf("</head>");

printf("<body bgcolor = \"white\">");

pFDLogFile = fopen(LOG_FILE_NAME, "r");
if(pFDLogFile == NULL)
{
printf("<h1><b>Error!</h1></b>");
printf("<br>");
printf("<b>Log file is not found!</b>");
}
else
{
int file_end = 0, error = 0;

while ((file_end != 1) && (error != 1))
{
if (fgets(cBuf, STR_MAX_LEN, pFDLogFile) == NULL)
file_end = 1;
else
{
printf(cBuf);
printf("<br>");
}
}

fclose(pFDLogFile);
}

printf("</body>");
printf("</html>");

return (0);
Go to the top of the page
 
+Quote Post
Славка
сообщение May 13 2010, 11:38
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Цитата(Savrik @ May 12 2010, 23:49)
хмм.. не проще для запуска-управления использовать телнет? и с защитой проще будет, и велосипед изобретать не надо..

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

Цитата(DRUID3 @ May 13 2010, 01:33)
По моему только ленивый(как я ) программист еще не написал микросервер с поддержкой CGI. В интернете их хоть кушай одним местом... Я думал все знают ...
Почему вдруг Boa?

Ну вот я первый кто только седня услышал о CGI smile.gif Боа - потому что он уже предустановлен на ките и работает...
Проблема в том что боа, кажись не умеет cgi на C писать, только shell-скрипты sad.gif

Цитата(no_d@t@ @ May 13 2010, 11:56)
Сам пытался разобраться где-то полгода назад, не закончил - отвлекли. использовал не boa, а thttpd, да не суть..

Значит мне нужен thtpd раз на Си можно скрипты делать... Я вродь тоже самое на shell ща делаю...
светики зажигаю через Оперу smile.gif
Думаю у Си возможностей поболее будет...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение May 13 2010, 11:48
Сообщение #6


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Славка @ May 13 2010, 15:38) *
Ну вот я первый кто только седня услышал о CGI smile.gif Боа - потому что он уже предустановлен на ките и работает...
Проблема в том что боа, кажись не умеет cgi на C писать, только shell-скрипты sad.gif

CGI - это спецификация, там можно хоть на чём писать, фактически запускается консольная программа, у которой входной и выходной поток завёрнут на http (это я так понимаю)
На чём написана программа - ваше личное дело.
http://ru.wikipedia.org/wiki/CGI


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
DRUID3
сообщение May 13 2010, 12:09
Сообщение #7


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(Славка @ May 13 2010, 14:38) *
Ну вообще-т не проще... Да и веб-интерфейс гораздо приятней, понятней пользователю и легче настраивается(воткнул, открыл браузер, набрал айпи). Не зря же большинство железок (роутеры, свичи, модемы...) в основном настраиваются через него.

+1024, совершенно верно!

Цитата(Славка @ May 13 2010, 14:38) *
Ну вот я первый кто только седня услышал о CGI smile.gif

biggrin.gif Шо такэ цэ ЦэГыИи...
Цитата(MrYuran @ May 13 2010, 14:48) *
... фактически запускается консольная программа, у которой входной и выходной поток завёрнут на http (это я так понимаю)

вобщем и целом - да, верно...

Цитата(Славка @ May 13 2010, 14:38) *
Боа - потому что он уже предустановлен на ките и работает...
Проблема в том что боа, кажись не умеет cgi на C писать, только shell-скрипты sad.gif

Не проверял, но это вряд-ли... Если поддерживает хоть один вид скриптов - то и C тоже.

Цитата(Славка @ May 13 2010, 14:38) *
Значит мне нужен thtpd раз на Си можно скрипты делать... Я вродь тоже самое на shell ща делаю...

Нет, Вам нужен микросервер строчек эдак из 500. С поддержкой CGI. Таких много. В самые простенькие легко вникнуть. Вот этот рекомендую отдельно - его писал русскоязычный программист и если что-то пойдет не так можно будет обратиться на родном матерном...

Цитата(Славка @ May 13 2010, 14:38) *
Думаю у Си возможностей поболее будет...

В C ничего принципиально иного не будет кроме скорости работы. И если у Вас ARM 200 MHz, то конечно лучше C чем bash, perl, ruby или python. Если высоки требования к безопасности - например общая подсеть с юными прыщавыми хакерами у которых дофига времени и энергии - то тоже лучше написать свой простейший интерпретатор который будет лежать в виде бинарнеГов, со своей запутанной системой команд .

+ еще лабуда... Вдруг пригодиЦЦо...


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
Idle
сообщение May 13 2010, 13:25
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



смотрите haserl
сервер - busybox httpd
Go to the top of the page
 
+Quote Post
sasamy
сообщение May 13 2010, 16:15
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Полноценная система это конечно:
http://www.webmin.com/

Для cgi на С можно воспользоваться cgic - сильно упрощает задачу, все задокументировано и понятно:
http://www.boutell.com/cgic/

Также в инете видел кучу примеров cgi на шеллах, для роутеров помоему даже отдельные проекты есть для настройки через вебморду.
Go to the top of the page
 
+Quote Post
Славка
сообщение May 14 2010, 09:34
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Ух как оперативно сработали, закидали инфой полезной!! Спасибо всем отписавшимся, думаю многим данный топик пригодится!
Go to the top of the page
 
+Quote Post
dch
сообщение May 15 2010, 04:12
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(Славка @ May 12 2010, 13:54) *
есть веб-сервер боа...

это Вам его надо качнуть с сайта производителя, у негоже скрипты должны быть. Скорее CGI может быть он и PHP поддерживает
Go to the top of the page
 
+Quote Post
MrYuran
сообщение May 18 2010, 12:38
Сообщение #12


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



http://www.ru-board.com/new/article.php?sid=50
http://www.ru-board.com/new/article.php?sid=49


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Quasar
сообщение Jun 8 2010, 10:46
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(MrYuran @ May 18 2010, 16:38) *


Для начинающих конечно сойдет, но поскольку сейчас 21 первый век, то лучше html странички делать статическими, а cgi-скрипты должны обмениваться с браузером xml или JSON данными в фоновом режиме (AJAX). Реализуя AJAX можно получить действительно неплохой результат и полноценный интерфейс пользователя для устройства, в браузере. Что самое главное, что AJAX решение в принципе более правильное и простое, так железка динамично формирует только коротки xml файлы (или JSON они еще короче), а не парсит все выдаваемые страницы, в поисках мест куда поставить динамические данные. Единственный минус, это то что надо знать JavaScript. sad.gif
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 8 2010, 11:02
Сообщение #14


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Quasar @ Jun 8 2010, 14:46) *
Единственный минус, это то что надо знать JavaScript. sad.gif

Который у каждого браузера свой, как и DOM
Всё-таки для простых интерфейсов (типа страницы настроек) наверно проще статическую табличку сгенерить с парой кнопочек внизу
(как впрочем все и делают)


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Quasar
сообщение Jun 8 2010, 11:31
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(MrYuran @ Jun 8 2010, 15:02) *
Который у каждого браузера свой, как и DOM
Всё-таки для простых интерфейсов (типа страницы настроек) наверно проще статическую табличку сгенерить с парой кнопочек внизу
(как впрочем все и делают)


Нет, JS движок у каждого браузера свой, но есть стандарт, и если код писать не юзая специфичных браузерных фич, то JS код исполняется одинаково на всех браузерах, на этом весь Web стоит, как по другому? (ну исключение разве что IE6, который все убивают, но ни как не убьют). Если на странице 1-2 кнопки то может быть (хотя лично для меня и это спорно smile.gif ), но когда настроек достаточно много, то...
smile.gif
Go to the top of the page
 
+Quote Post
romez777
сообщение Jun 10 2010, 05:55
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Цитата(Славка @ May 13 2010, 15:38) *
Ну вот я первый кто только седня услышал о CGI smile.gif Боа - потому что он уже предустановлен на ките и работает...


А какой kit если не секрет? У меня на данный момент sdk для bcm5358 от броадкома, в поставке httpd с поддержкой встроенного джава скрипта и cgi (не знаю, был ли они в httpd раньше, но копирайт стоит от броадкома).
Go to the top of the page
 
+Quote Post
Славка
сообщение Jun 14 2010, 04:16
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Цитата(romez777 @ Jun 10 2010, 09:55) *
А какой kit если не секрет? У меня на данный момент sdk для bcm5358 от броадкома, в поставке httpd с поддержкой встроенного джава скрипта и cgi (не знаю, был ли они в httpd раньше, но копирайт стоит от броадкома).

http://www.micetek.com/englishweb/product/...PC8323E-RDB.htm
Вот такой... CGI-shell скрипта пока вполне хватает... Как будет какой нибудь реальный проект буду уже думать какой веб-сервер установить...
Go to the top of the page
 
+Quote Post
s.i.suprun
сообщение Sep 13 2010, 07:01
Сообщение #18


Участник
*

Группа: Validating
Сообщений: 71
Регистрация: 24-06-08
Из: Харьков
Пользователь №: 38 521



Где-то с пол года назад пробовал писать примитивный Web интерфейс для конфигурирования кита на АРМ9 с Linux-ом на борту. Писал на java сервлет, который собсно выполнялся на плате, а в обработку событий от всяких ползунков, окошек и т.д. вставил нативе методы написанные на С, с которых и открывал файлы драйверов соответствующих устройств и с помощью ioctl - функций передавал параметры настраиваемые пользователем.
Go to the top of the page
 
+Quote Post
uriy
сообщение Sep 13 2010, 10:20
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Удалось запустить cgi на boa? Я щас тоже пытаюсь запустить на ucLinux этот вебсервер никак не получается заставить работать cgi. работают только написанные на shell. При запуске скриптов на perl или своих написанных на си в браузере вылазит такое
502 Bad Gateway
The CGI was not CGI/1.1 compliant
В нете удалось найти что такая ошибка вылазит в случае если файл скрипта редактировался в винде и были добавлены переносы строк отличные от линуксовых. Но я работаю в чистом линуксе и тем более это не будет относится к уже откомпиленному файлу написанному на си. Мое приложение написанное на си выдает корректное содержимое html страницы при запуске из консоли.

Еще забыл сообщение консоли:
request "GET /cgi-bin/cgi HTTP/1.1" ("./cgi"): Unable to execve/execl pathname: "./cgi"Exec format error
request "GET /cgi-bin/cgi HTTP/1.1" ("./cgi"): cgi_header: unable to find LFLF
Go to the top of the page
 
+Quote Post
uriy
сообщение Mar 4 2011, 10:53
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



С вышеуказанной проблемой разобрался.
Теперь возникла следующая. Как сделать авторизацию на сервере? Чтобы он не давал просматривать страницы пока не введешь логин и пароль.
Go to the top of the page
 
+Quote Post
denyslb
сообщение Mar 5 2011, 01:27
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 111
Регистрация: 5-05-10
Из: Lebanon, Beirut
Пользователь №: 57 093



Цитата(uriy @ Mar 4 2011, 13:53) *
С вышеуказанной проблемой разобрался.
Теперь возникла следующая. Как сделать авторизацию на сервере? Чтобы он не давал просматривать страницы пока не введешь логин и пароль.

Добавьте в ответе, в хеадер, если нет от клиента авторизационных данных или если авторизация не прошла по приведенным от него данным :

WWW-Authenticate: Basic realm="My Realm"
HTTP/1.0 401 Unauthorized

Он вам пришлет в заголовке, к примеру:
Authorization: Basic QWRtaW46Zm9vYmFy

После Basic - base64, там username:password

Для инфы: http://frontier.userland.com/stories/storyReader$2159
Go to the top of the page
 
+Quote Post
uriy
сообщение Mar 9 2011, 08:28
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



denyslb спасибо за помощь. Кое-что начало проясняться.
Прокоментируйте правильно ли я понял. Страничики на сервере нужно разбить на два каталога: публичный и закрытый.
Публичный не требует авторизации, html-ки оттуда могут все просматривать.
Закрытый - чтобы попасть туда нужно ввести логин и пароль.
Этот метод работает следующим образом:
При попытке попасть в закрытую область бразуер вываливает модальное окно с формой ввода логина и пароля. После ввода существующей комбинации логина и пароля юзер получает доступ к html-ам из закрытой области.
Я хотел сделать свою форму для ввода логина и пароля.
Go to the top of the page
 
+Quote Post
seregamax
сообщение May 24 2011, 13:12
Сообщение #23





Группа: Участник
Сообщений: 8
Регистрация: 1-09-06
Пользователь №: 20 003



Вопрос к no_d@t@

Подскажите как в qDecoder включить поддержку CGI?
Все установил по инструкции, qhttpd запустился, страничку показал, проблем тут нет.
Откомпилировал примеры, рабочие - проверял на Apache (вызывал откомпиленые cgi скрипты из Apache-сервера - отлично работают).
Но вот когда вызываю cgi скрипты из qhttpd-сервера, браузер предлагает сохранить но никак не выполняет (скачивает правильный скрипт, проверял).

Зашел в тупик, вроде qhttpd со своими примерами должен точно работать, а у меня пока не получается sad.gif

Подскажите где я что-то упустил? Спасибо
Go to the top of the page
 
+Quote Post
ukpyr
сообщение May 24 2011, 14:43
Сообщение #24


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



microhttp, плюс прикрутить скриптование на Lua
Go to the top of the page
 
+Quote Post
artix
сообщение Aug 10 2011, 07:34
Сообщение #25


Частый гость
**

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



Цитата(ukpyr @ May 24 2011, 17:43) *
microhttp, плюс прикрутить скриптование на Lua


Для платки на базе AT91SAM9260 писал небольшой сервлет на Java, далее добавлял JNI. И уже с помощью него управлял драйвером CD_ROM(ioctl - функции)
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 19:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01573 секунд с 7
ELECTRONIX ©2004-2016