Обновить

Вебсервер на bash+inetd

Чулан
Понадобилось мне отвечать на http запросы извне и неким образом их обрабатывать (подключались к терминалам экспресс-оплаты). Первое решение было на Nginx+FastCGI(PHP), что было несколько неоправданно тяжеловесно. И тут меня посетили старые воспоминания и благодаря ru_root в ЖЖ и Гуглю было сделано следующее:

[root@mysql-02 /etc]# cat services | grep freecashpayment
freecashpayment 433/tcp
freecashpayment 433/udp

Этим мы объяснили серверу, что на порту 433 у нас теперь живет сервис по фамилии freecashpayment

[root@mysql-02 /etc]# cat inetd.conf | grep freecashpayment
freecashpayment stream tcp nowait root /usr/home/firefly/freecashpayment.sh freecashpayment.sh

Так мы заставляем слушать порт 433 и отвечать на нем скриптом freecashpayment.sh

[root@mysql-02 /usr/home/firefly]# cat freecashpayment.sh
#!/usr/local/bin/bash
read request
while /usr/bin/true; do
read header
[ "$header" == $'\r' ] && break;
done
url="${request#GET }"
url="${url% HTTP/*}"
echo $url


В результате в скрипте в переменной $url у нас имееются все параметры, которые нам прислали в GET-запросе. echo же нам выведет все что надо в ответ.

Мы счааааасливы :)
Теги:inetdbashfreebsd
Хабы: Чулан
Рейтинг +19
Количество просмотров 364 Добавить в закладки 18
Комментарии
Комментарии 13

Похожие публикации

Лучшие публикации за сутки