Меню

ace stream настройка прокси

Посторонним В.

воскресенье, 28 июня 2015 г.

Ace Stream прокси своими руками, просмотр Torrent TV на XBMC

У меня на хате уже 4 XBMC точки (и 5-я на подходе), у всех общая мультимедиа база (общее mysql-подключение), и на всех я хотел бы смотреть ТВ с сайта torrent-tv.ru (есть аддон для XBMC), но пока что приходится настраивать (и обновлять при случае) руками на каждой точке отдельно. Это установка Ace Stream, втыкание плагина torrent-tv в XBMC, в принципе на этом всё, но все же лениво. Не всегда получается с первого раза, сейчас вот на одной точке вылезла проблема обновления плагина с резолюцией «Dependencies not met», а аналогичный плагин (официальный) вообще помечен как Broken. Ace Stream на тот момент в репозиториях не было, приходилось руками ставить. К тому же системы разные, где виндов$, где линух, а где то вообще андроид. На телефон, к примеру, AceStream сервер не поставишь, и порт по ssh не пробросишь. Потому захотелось поднять на домашнем сервере единую точку раздачи торрент-тв, а в общей папке мультимедиа разместить плейлист со ссылками на каналы.

Задачу я решил, более того — в последующих версиях написанной программы реализовал просмотр фильмов прямо с трекера без скачивания, да еще и запуск голосовой командой. Но обо всем по порядку

Известный ресурс torrent-tv.ru имеет множество телеканалов, которые можно смотреть с использованием плагина на XBMC или с использованием их сервиса TS-Proxy (не пробовал).
Нам от них понадобится только список каналов и соответствующие им PID. Купите подписку всего за 2р в день и у вас в распоряжении будет такой готовый плейлист, из которого легко можно будет надергать пары «PID-Название».

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

, по клику на которую у службы запрашивается воспроизведение контента с заданным PID. Ссылки acestream:// обрабатывает специально обученный плеер наподобие VLC — TS Player, устанавливающийся вместе с Ace Stream. Он коннектится к Ace Stream, передает ему команду на запуск PID, дожидается ответа со ссылкой на поток и воспроизводит его. Как и откуда Ace Stream берет видео по PID — тема отдельной статьи. Сейчас важно одно — мы даем PID на вход Ace Stream и получаем от него ссылку на видеопоток.

Поехали

Установка AceStream описана по ссылке (у меня Debian), тут пояснять нечего
http://wiki.acestream.org/wiki/index.php/Streaming

Запуск из консоли (можно не из-под рута)
acestreamengine —client-console —log-file /tmp/acestream.log &

Коннект для проверки работы AceStream

telnet localhost 62062
Trying 127.0.0.1.
Connected to localhost.
Escape character is ‘^]’.
^]

telnet> quit
Connection closed.

Я еще не говорил, что софтина будет консольной и написана на PHP? Вот и сказал. Т.е. работать с Ace Stream, нам придется, что называется, ручками.
Вперед! Изучать API и делать первые шаги.
http://wiki.acestream.org/wiki/index.php/Engine_API

Как оказалось, существует такая вещь, как AceProxy от ValdikSS.
Но к моменту, когда я решил написать свое, я уже имел весомый список претензий к этому софту.

Отличия от AceProxy

Порядок работы с Ace Stream

Как из него сформировать response_key можно прочитать тут http://wiki.acestream.org/wiki/index.php/Product_key

А вот PHP скрипт для формирования ответного ключа по ключу продукта + ключу из HELLOTS. В качестве аргумента скрипту передается значение key= из HELLOTS

>> HELLOBG version=2
тут запускаем скрипт, передавая ему b0f14cc3ed, получаем ключ для READY
>> READY key=kjYX790gTytRaXV04IvC-d01fbd4d1883d729df2a18badb6eb204da13a69a
> USERDATA [<"gender": 1>, <"age": 3>]

>> LOADASYNC 1 PID 4e7123f9c468116c3188a14e4af92f862971b58c
> START PID 4e7123f9c468116c3188a14e4af92f862971b58c 0

$ telnet localhost 62062
>> HELLOBG version=2
> READY key=n51LvQoTlJzNGaFxseRK-d03b26bc27888e0da491bb9062b066319835cfaf
почему то
>> LOADASYNC 1 PID 4e7123f9c468116c3188a14e4af92f862971b58c
> START PID 4e7123f9c468116c3188a14e4af92f862971b58c 0
> STOP
var rec = new webkitSpeechRecognition;
rec.continuous = false;
rec.interimResults = false; // возвращать промежуточные результаты
rec.onresult = function(event) <
if (!event.results || event.results.length == 0 || !event.results[0][0]) < return; >
var cmd = event.results[0][0].transcript;
var url = ‘/multimedia/searchTracker/’ + encodeURIComponent(cmd);
$.ajax(url);
>
rec.start();

Бэкендом в данном случае у меня выступает не AcePHProxy, а демон домашней автоматизации (ДДА), о котором у меня как-то было видео. В интерфейсе видны 4 иконки типа монитора. Это XBMC узлы.
Так вот. На бэке работает библиотека поиска по рутрекеру, распознается и ищется, надо сказать, очень неплохо. Я открываю веб-страницу, нажимаю на нужный XBMC, где я хотел бы запустить кино, говорю название фильма, на бэк уходит ajax-запрос, там происходит поиск по рутрекеру, когда раздача найдена я получаю в ajax-ответе всю инфу по раздаче (название, урл на форуме, урл торрент-файла, id и т.д.) и запускаю ее через WebSocket-коннект до XBMC.

Я ржал, когда первый раз придумал эту схему:
«с вебстраницы я говорю название фильма, JS запрашивает у гугла распознавание, затем результат передается ДДА, тот коннектится на рутрекер, ищет фильм по распознанному тексту, берет id (но не торрент-файл, еще рано), формирует спец.ссылку, открывает коннект до XBMC, говорит ему открыть эту ссылку, ссылка ведет на AcePHProxy, тот видит, что в спецссылке закодирована ссылка на получение base64-контента торрент-файла, коннектится к ДДА, тот снова коннектится к рутрекеру, качает торрент-файл, base64-кодирует, выдает AcePHProxy, и тот, наконец-то, со спокойной душой уже может стартовать видеопоток!».

Тут меня ждала засада.
Дефолтный таймаут на открытие потока в XBMC — 30 сек. А торренты стартуют не так быстро, как ТВ-трансляции. Секунд 45 против 4-5 для ТВ.
Я пробовал выдавать HTTP заголовки типа Connection: keep-alive и вполне RFC-шный Keep-Alive: timeout=60,max=100, пробовал имитировать медленный коннект (выдавать заголовки по одному за раз, с паузой в секунду, да еще и фейковыми разбавлять), пробовал выдавать пустые байты (NUL, переносы строк, пробелы), пробовал обмануть, выдавая Transfer-Encoding: chunked с начальным содержимым типа 0\r\n\r\n0\r\n\r\n. нихренашеньки не помогало.
Очень не хотелось мне конфигурировать таймаут на клиентах. Но пришлось.
Что любопытно, помогла отнюдь не опция advancedsettings/network/curlclienttimeout (см. http://kodi.wiki/view/Advancedsettings.xml#network), а advancedsettings/network/curllowspeedtime.
Выставив ее в 60, я добился, что XBMC дожидается буферизации торрента на стороне Ace и начала потока.
Уже потом я подумал, «так если управление XBMC идет через JSONRPC, и AcePHProxy умеет с XBMC по этому RPC общаться, пусть ДДА дает команду на запуск самому AcePHProxy, а тот, когда поток будет готов, пусть цепляет XBMC на готовое, и все дела!».
Записал это в TODO-лист.

Итоги

Вообще штука вышла очень удобная. Вот только перематывать нельзя, обидно, может удастся побороть еще. Но хоть на паузу ставить можно. Теперь ни к чему включать комп, лезть на трекер, качать торрент, ждать пока он скачается (если нет патча последовательной закачки, а с ним кстати тоже перематывать нельзя), просто берешь смартфон, нажимаешь на иконку нужного XBMC и говоришь название фильма. Ждешь 45сек, смотришь.
Можно подключить несколько трекеров.

upd: вышла версия AcePHProxy 0.6.4
как работать с chunked потоком
как парился с realtime-отслеживанием проблем с коннектами
EVENT cansave можно использовать для пополнения коллекции фильмов параллельно с просмотром

xbmc для того, чтоб открыть само содержимое плейлиста m3u нужно чтоб было более 1 элемента плейлиста

источник

HTTP прокси для Ace Stream

Dogerty

acestream_3.1.35_ubuntu_x86_64.zip

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

Краткая инструкция по настройке прокси на дистрибутиве:
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic

Установили систему с нуля, естественно настроили сеть, доступ ssh.
Я у себя сделал не правильно с точки зрения линуксоводов и все настроил для работы из-под пользователя root

1. Необходимо наличие Python:
Из коробки стоит версия 2,7 я доставил 3,6 и использую её.
Инструкцию по установке питона здесь я делать не буду так как не помню уже.

2. Установить для питона pip(тут наверно могу соврать не помню поправте плиз):
Для Python 2,7 pip install pip
Для Python 3.6 pip3 install pip
Далее таким же образом как и pip ставим нужные для прокси gevent (с ним должен вроде ставится greenlet) и psutil:
pip install gevent
pip install psutil
не помню но на всяк случай:
pip install greenlet

По окончании вы должны получить:
pip list или pip3 list:

Package Version
——————- ——————-
asn1crypto 0.24.0
attrs 17.4.0
Automat 0.6.0
blinker 1.4
certifi 2018.1.18
chardet 3.0.4
click 6.7
colorama 0.3.7
command-not-found 0.3
configobj 5.0.6
constantly 15.1.0
cryptography 2.1.4
distro-info 0.18ubuntu0.18.04.1
gevent 1.4.0
greenlet 0.4.15
httplib2 0.9.2
hyperlink 17.3.1
idna 2.6
incremental 16.10.1
indicator-cpufreq 0.2.2
Jinja2 2.10
jsonpatch 1.16
jsonpointer 1.10
jsonschema 2.6.0
keyring 10.6.0
keyrings.alt 3.0
language-selector 0.1
MarkupSafe 1.0
netifaces 0.10.4
oauthlib 2.0.6
PAM 0.4.2
pip 19.0.3
psutil 5.4.8
pyasn1 0.4.2
pyasn1-modules 0.2.1
pycrypto 2.6.1
pygobject 3.26.1
PyJWT 1.5.3
pyOpenSSL 17.5.0
pyserial 3.4
python-apt 1.6.3+ubuntu1
python-debian 0.1.32
pyxdg 0.25
PyYAML 3.12
requests 2.18.4
requests-unixsocket 0.1.5
SecretStorage 2.3.1
service-identity 16.0.0
setuptools 39.0.1
six 1.11.0
ssh-import-id 5.7
systemd-python 234
Twisted 17.9.0
ufw 0.35
unattended-upgrades 0.1
urllib3 1.22
wheel 0.30.0
zope.interface 4.3.2

3. Копируем в папку (у меня /home) прокси и движок.
Получили к примеру две папки: HTTPAceProxy и acestream_3.1.35
Смотри на права к файлам в этих папках я сделал 755 для всей внутрянки, может и не обязательно…но были проблемы точно помню.

4. Конфигаем прокси:
/home/HTTPAceProxy/aceconfig.py
а) acespawn = True (запуск движка с помощью прокси, иначе False)
б) acecmd = «/home/acestream_3.1.35/start-engine —client-console —auto-slots 0 —cache-limit 10 —live-buffer 30 —vod-buffer 30 —login ваш логин —password ваш пароль —log-debug 3 —log-file /var/log/acestream.log —cache-dir /home/acestream_3.1.35/.ACEStream —bind-all —max-connections 1000 —max-upload-slots 1000 —max-peers 1000 —max-peers-limit 1000 —core-sandbox-max-peers 50 —download-limit 0 —upload-limit 0»
строка запуска нужна в файле aceconfig.py если в предыдущем пункте True, нужна в скрипте запуска если False, т.е. полюбому она нужна тут или там.
Строка запуска моя для раздачи до 1Г поэтому читайте вики и конфигайте строку запуска как вам угодно…
в) ace = < 'aceHostIP': 'ип вашего сервера', 'aceAPIport': '62062', 'aceHTTPport': '6878' >
г) maxconns = 10 (количество подключаемых к прокси клиентов)
д) use_chunked = False (важно что поменять т.к. у меня с True не пахало)
е) loglevel = logging.DEBUG (для начала я ставлю подробный лог чтобы было видно все)

5. Конфигаем пути к листам в файлах:
/home/HTTPAceProxy/plugins/config/torrenttv.py
а) url = ‘http://91.92.66.82/trash/ttv-list/as.all.player.m3u’
б) updateevery = 60 (интервал обновления листа)
/home/HTTPAceProxy/plugins/config/torrenttelik.py
в) url = ‘http:// 91.92.66.82/trash/ttv-list/ace.json’
г) updateevery = 120 (интервал обновления листа)

6. Плюшка в виде просмотра фильмов по торрент технологии, т.е. накачали торрент файлики с торрент трекеров с любыми фильмами и закинули их в папку ‘/home/films’, от конфигали:
/home/HTTPAceProxy/plugins/config/torrentfilms.py
directory = ‘/home/films’
updateevery = 180

7. Стартуем только проксю (если настроили в ней старт движка):
python /home/HTTPAceProxy/acehttp.py
или у меня:
python3 /home/HTTPAceProxy/acehttp.py
если не настроили в проксе старт движка:
то стартуем движок:
/home/acestream_3.1.35/start-engine —client-console —auto-slots 0 —cache-limit 10 —live-buffer 30 —vod-buffer 30 —login ваш логин —password ваш пароль —log-debug 3 —log-file /var/log/acestream.log —cache-dir /home/acestream_3.1.35/.ACEStream —bind-all —max-connections 1000 —max-upload-slots 1000 —max-peers 1000 —max-peers-limit 1000 —core-sandbox-max-peers 50 —download-limit 0 —upload-limit 0
Затем стартуем проксю, как описано выше.

8. И самое главное как подключаться чтобы смотреть:
Мы с вами настроили два плагина для ТВ:

  1. http://ваш ип из файла настройки п.4:8000/torrenttv/playlist.m3u
  2. http://ваш ип из файла настройки п.4:8000/torrent-telik/playlist.m3u
  3. Для фильмов (скинуть в папку /home/films торрент файлики с фильмами):
  4. http://ваш ип из файла настройки п.4:8000/films

анная статься посвящена просмотру ТВ p2p трансляций через local-TS прокси, установленный на виртуальном сервере VPS с ОС Ubuntu 14-16.

Данная статься для всех кто:

  • не хочет держать постоянно работающий дома комп;
  • не хочет насиловать флеш память своих тв боксов;
  • в силу неизвестных причин не может смотреть Торрент ТВ через local-TS прокси, установленного на компе или тв боксе.

Я не несу никакой ответственности за Ваши действия, если у Вас что-то не получилось, у меня всё работает, проверено на 3-х vps хостерах.

1. Для начала выбираем vps хостера, заходим https://poiskvps.ru – основной критерий выбора – скорость канала от 100 Мбит/с БЕЗ ОГРАНИЧЕНИЙ трафика. Объём ОЗУ – от 512 Мбайт. Особого значения с выбором диска SSD или HDD+SSD не заметил, ну может каналы переключает чуть быстрее…
2. Заказываем виртуальный сервер vps на Ubuntu 14.04.
3. После активации сервера, получаем на мыло письмо об успешной активации и IP адресе сервера, имя и пароль админа. Заходим по SSH на IP адрес, указанный в письме. Вводим логин и пароль из письма.
4. Меняем пароль root командой passwd. Указываем свой пароль.
5. Добавляем пользователя “user” – #adduser user. Указываем пароль. На всё остальное соглашаемся.
Затем ещё команды:

12. В файл /etc/rc.local вносим строку запуска прокси и движка при старте системы:
/home/user/ace-proxy

13. #reboot
14. Открываем в vlc адрес http://vps.server.ip:port/channels/?type=m3u
1
Наслаждаемся просмотром!

Далее, необходимо установить шейпер (ограничитель) трафика на отдачу, так как upload канал сервера один и для просмотра каналов и для раздачи.
15.В папке юзера /home/user/ создаем исполнимый файл ace-shape со следующим текстом:

Где, eth0 – имя сетевого интерфейса сервера vps.
ace proxy port – порт, указанный в настройках aceproxy.
htb rate 10Mbit ceil 20Mbit prio 3 – в этой строке указываем гарантированную скорость отдачи p2p и максимальную, при свободном канале.

16. В файл /etc/rc.local вносим строку запуска шейпера при старте системы:
/home/user/ace-shape
17. #reboot

После всех проведённых манипуляций, получаем local-TS прокси сервер для просмотра трансляций p2p при помощи сервера, расположенного в инете, с возможностью ограничения отдачи.

источник

Читайте также:  установка программы навигатор prestigio

Добавить комментарий

Adblock
detector