Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aleesa-bot/aleesa-misc-go
Aleesa-bot command router
https://github.com/aleesa-bot/aleesa-misc-go
Last synced: 16 days ago
JSON representation
Aleesa-bot command router
- Host: GitHub
- URL: https://github.com/aleesa-bot/aleesa-misc-go
- Owner: aleesa-bot
- License: mit
- Created: 2022-03-20T14:14:17.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-09-17T20:46:56.000Z (5 months ago)
- Last Synced: 2024-11-16T12:17:05.914Z (3 months ago)
- Language: Go
- Homepage:
- Size: 1.7 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# aleesa-misc-go
Основной роутер команд для aleesa-bot. Все протокольные плагины шлют команды сюда, а отсюда команды разлетаются в
модули-исполнители и ответ от исполнителей идёт обратно заказчику.Работает по протоколу Redis pubsub.
## Механика работы
Роутер подписан на канал misc (тот, который указан в поле channel конфига).
Модули, реализующие "клиентские протоколы" - telegram, irc, jabber и проч, подписаны на канал своего протокола.
Входящие сообщения они получают только через этот канал.Модули, реализующие иную функциональность также подписаны каждый на свой канал. Роутер распознаёт команду и направляет
её в канал соответствующего бэкэнд-сервиса, который уже дальше работает в соответствии со своей бизнес-логикой.## Как это собрать?
Понадобится компилятор go версии 1.22 или более новый.
Сам процесс сборки простой, достаточно запустить:
```bash
make
```и через некоторое время мы получаем бинарник **aleesa-misc-go**. Это и есть наше приложение.
## Как это запустить?
Приложение тестировалось на Alpine linux x86_64 3.16, но должно работать на любом (более свежем) linux-е.
После создания **data/config.json** из **data/config_sample.json**, можно запускать приложение.
Предполагается, что конфиг написан в формате [human json](https://hjson.github.io), который допускает коментарии и
некоторые другие вольности в форматировании 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-misc-go**. После чего скопировать бинарник в каталог **/var/lib/aleesa-misc-go**, положить конфиг в
одну из дефолтных локаций (тестировалась **/var/lib/aleesa-misc-go/data/config.json**) и после этого сервис запускается
командой:```bash
service aleesa-misc-go start
```В автозагрузку его можно прописать через команду:
```bash
rc-update add aleesa-misc-go default
```## Nota Bene #1
Go не поддерживает системный вызов fork() из-за чего демонизация программ на гошке средствами самой гошки - это в
некотором роде проблема. Решается она с помощью утилиты [daemonize](https://github.com/bmc/daemonize).Соответствено, если для запуска этой программы предполагается использовать возможности демонизации, то можно
воспользоваться этой программой.В alpine linux есть средства openrc для супервайзинга foreground-сервисов.
Технически, можно было бы решить эту проблему fork()-а с помощью "github.com/sevlyar/go-daemon", но на текущий момент
она не стоит остро, поэтому решения не требуется.