* 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
47 lines
3.2 KiB
Markdown
47 lines
3.2 KiB
Markdown
# 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](https://github.com/bmc/daemonize).
|
|
|
|
## Кому сказать спасибо?
|
|
|
|
Авторам, редакторам и тем, кто поддерживает `reactor.cc`. Пацаны стараются ради нас, спасибо им.
|