0

Change layout to more go-style-ish, replace some modules

* Deejay files, split them to achieve go-style project layout
* Replace logrus with log/slog module to reduce dependencies
* Replace gopkg.in/ini.v1 with github.com/wlevene/ini to make sure all modules BSD licensed
* Update linter config && fix tons of linter warnings
* Update .gitignore
* Update README.md
This commit is contained in:
eleksir
2025-11-09 22:16:04 +03:00
parent c5f4682cb9
commit 79d9a2f604
211 changed files with 12879 additions and 7732 deletions

View File

@@ -2,13 +2,12 @@
## Что это?
Своего рода API, делающий запросы в img#.reactor.cc. Вторая инкарнация, на сей
раз на гошке.
Своего рода API, делающий запросы в img#.reactor.cc. Вторая инкарнация, на сей раз на гошке.
## Зачем это нужно?
Сайт reactor.cc не даёт возможности постить на внешние ресурсы ссылки без
указания правильного referer-а. :)
Сайт reactor.cc не даёт возможности постить на внешние ресурсы ссылки на видосики без указания правильного referer-а. :)
А поскольку referer - это заголовок, идеальным решением выглядит проксирование запроса.
Эта прокся призвана частично решить эту проблему через создание линков вида
@@ -20,25 +19,28 @@
## Как это работает?
При обращении к сгенерённому урлу, апи идёт на целевой сайт, делает запрос,
а ответ стримит клиенту.
При обращении к сгенерённому урлу, апи идёт на целевой сайт, делает запрос, а ответ стримит клиенту.
Из нюансов, запрос просиходит с указанием заголовка Range: 0-, что автоматически не даёт возможности делать
range-запросы, то есть, скачивать видосики в несколько потоков). Впрочем, видосики всё ровно маленькие и нет
необходимости качать их в много потоков.
Теоретически, можно поддержать range-запросы, однако, для этого надо поддержать запрос с методом HEAD, для узнавания
длины файла, но мне откровенно лень. Для этого надо проводить r&d на предмет нюансов таких запросов.
## Как это запустить?
Предполагается сборка гошкой версии 1.22.x и скорее всего возможна сборка
более новыми версиями.
Предполагается сборка гошкой версии 1.24.x и скорее всего возможна сборка более новыми версиями.
Команда make сгенерирует в текущем каталоге бинарник joyproxy, тут же рядом
есть joyproxy_sample.ini, который следует скопировать в joyproxy.ini и
исправить для своего случая.
Команда make сгенерирует в текущем каталоге бинарник joyproxy, тут же рядом есть joyproxy_sample.ini, который следует
скопировать в joyproxy.ini и исправить для своего случая.
После этого сервис можно запускать.
Joyproxy2 работает как foreground-приложение и возможен его запуск из-под
супервизора systemd, daemon-tools, runit, openrc, supervisord итп, которые
умеют работать с foreground-приложениями как с сервисами. Если init хочет
именно домонизированный сервис, то можно воспользоваться утилитой [daemonize](https://github.com/bmc/daemonize).
Joyproxy2 работает как foreground-приложение и возможен его запуск из-под супервизора systemd, daemon-tools, runit,
openrc, supervisord итп, которые умеют работать с foreground-приложениями как с сервисами. Если init хочет именно
демонизированный сервис, то можно воспользоваться утилитой [daemonize](https://github.com/bmc/daemonize).
## Кому сказать спасибо?
Авторам, редакторам и тем, кто поддерживает `reactor.cc`
Авторам, редакторам и тем, кто поддерживает `reactor.cc`. Пацаны стараются ради нас, спасибо им.