0
eleksir 79d9a2f604 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
2025-11-09 22:32:50 +03:00
2022-09-26 00:40:06 +03:00
2022-09-25 23:54:20 +03:00

Joyproxy2

Что это?

Своего рода API, делающий запросы в img#.reactor.cc. Вторая инкарнация, на сей раз на гошке.

Зачем это нужно?

Сайт reactor.cc не даёт возможности постить на внешние ресурсы ссылки на видосики без указания правильного referer-а. :) А поскольку referer - это заголовок, идеальным решением выглядит проксирование запроса.

Эта прокся призвана частично решить эту проблему через создание линков вида

https://сайт/joyproxy/img1.reactor.cc/pics/post/mp4/видосик.mp4

Сгенерировать ссылку можно запостив урл с видосиком в форму на страничке

https://сайт/joyurl

Как это работает?

При обращении к сгенерённому урлу, апи идёт на целевой сайт, делает запрос, а ответ стримит клиенту.

Из нюансов, запрос просиходит с указанием заголовка Range: 0-, что автоматически не даёт возможности делать range-запросы, то есть, скачивать видосики в несколько потоков). Впрочем, видосики всё ровно маленькие и нет необходимости качать их в много потоков.

Теоретически, можно поддержать range-запросы, однако, для этого надо поддержать запрос с методом HEAD, для узнавания длины файла, но мне откровенно лень. Для этого надо проводить r&d на предмет нюансов таких запросов.

Как это запустить?

Предполагается сборка гошкой версии 1.24.x и скорее всего возможна сборка более новыми версиями.

Команда make сгенерирует в текущем каталоге бинарник joyproxy, тут же рядом есть joyproxy_sample.ini, который следует скопировать в joyproxy.ini и исправить для своего случая.

После этого сервис можно запускать.

Joyproxy2 работает как foreground-приложение и возможен его запуск из-под супервизора systemd, daemon-tools, runit, openrc, supervisord итп, которые умеют работать с foreground-приложениями как с сервисами. Если init хочет именно демонизированный сервис, то можно воспользоваться утилитой daemonize.

Кому сказать спасибо?

Авторам, редакторам и тем, кто поддерживает reactor.cc. Пацаны стараются ради нас, спасибо им.

Description
No description provided
Readme 2.5 MiB
Languages
Go 96.8%
Makefile 1.7%
Shell 1.5%