Обновить
9
0
John Sitnikov@ecubear

C++/C#/MCU Developer

Отправить сообщение

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

Время на прочтение1 мин
Охват и читатели1.4K
Понадобилось мне отвечать на 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 же нам выведет все что надо в ответ.

Мы счааааасливы :)

Информация

В рейтинге
Не участвует
Откуда
Волгоград, Волгоградская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Инженер электронных устройств
Ведущий
C#
.NET Core
.NET
Linux
PHP
C++
Разработка программного обеспечения
Visual Studio
MySQL
Английский язык