- Replace prazdnikisegodnyaru with celebratoday as first is banned in Russia - Update .golangci.yml rule set - Megatons of fixes for linter - Update README.md
3.8 KiB
aleesa-webapp-go
Клиент для различных веб-приложений и API. Работает по протоколу Redis pubsub.
Механика работы
Клиент подписан на на redis-канал webapp-go. В этот канал пишет другой демоночек - aleesa-misc-go.
Формат протокола общения по redis pub-sub описан в репозитории aleesa-doc.
Список строк UserAgent
Для некоторых сервисов имеет смысл притворяться браузером, как минимум по user-agent-у, поэтому прикручен список из 31 различных UA, по количеству дней в месяце. В общем случае делается произвольная выборка из этого списка, но для некоторых сервисов сделана привязка ко дню недели.
Как это собрать?
Понадобится компилятор go версии 1.25.3 или более новый.
Сам процесс сборки простой, достаточно запустить make или gmake, в зависимости от платформы:
make
и через некоторое время мы получаем бинарник aleesa-webapp-go. Это и есть наше приложение.
Как это запустить?
Приложение тестировалось на alpine linux x86_64 3.16, но должно работать на любом (более свежем) linux-е.
После создания data/config.json из data/config_sample.json, можно запускать приложение.
Предполагается, что конфиг написан в формате human json, который допускает коментарии и некоторые другие вольности в форматировании json-а. Конфиг ищется последовательно по следующим путям по принципу "кто первый того и тапки":
~/.aleesa-misc-go.json
~/aleesa-misc-go.json
/etc/aleesa-misc-go.json
data/config.json
В каталоге contrib находится скрипт для alpine linux, системы инициализации openrc. Этот скрипт достаточно положить в /etc/init.d/aleesa-webapp-go. После чего скопировать бинарник в каталог /var/lib/aleesa-webapp-go, положить конфиг в одну из дефолтных локаций (тестировалась /var/lib/aleesa-webapp-go/data/config.json) и после этого сервис запускается командой:
service aleesa-webapp-go start
В автозагрузку его можно прописать через команду:
rc-update add aleesa-misc-go default
Nota Bene
Go не поддерживает системный вызов fork() из-за чего демонизация программ на гошке средствами самой гошки - это в некотором роде проблема. Решается она с помощью утилиты daemonize.
Соответствено, если для запуска этой программы предполагается использовать возможности демонизации, то можно воспользоваться этой программой.
В alpine linux есть средства openrc для супервайзинга foreground-сервисов.