From caf6ae136655816e6408088b65e14a50a8367880 Mon Sep 17 00:00:00 2001 From: AnthonyAxenov Date: Thu, 1 Sep 2022 20:48:59 +0800 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 96 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 67 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 3ba4085..131339f 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ I'm too lazy to translate and support the whole project in ru and en, sorry, guy --- -## Содержание +## Документация - [Как использовать этот список?](#howtouse) - [Формат playlists.ini](#iniformat) @@ -49,7 +49,6 @@ I'm too lazy to translate and support the whole project in ru and en, sorry, guy --- - ## Как использовать этот список? Чтобы подключить плейлист, нужно в настройках медиаплеера указать ссылку в следующем формате: @@ -65,14 +64,10 @@ iptv.axenov.dev/? (устаревший формат) Либо провернуть всё то же самое через браузер. - ## Формат `playlists.ini` ```ini -# В квадратных скобках - ID плейлиста в рамках этого -# конфига (обязателен). Для удобства ввода с пульта, -# для ID рекомендуется число или короткая строка без -# пробелов и др. спецсимволов. +# ID плейлиста в рамках этого конфига (обязательно) [1] # Название плейлиста (необязательно) @@ -94,15 +89,15 @@ src = 'https://example.com/super-duper-playlist' redirect = 1 ``` -В описании плейлиста обязательны: - -* любой желаемый ID в квадратных скобках; -* либо `pls`, либо `redirect` (если указаны оба, то `redirect` приоритетен). +В описании любого плейлиста обязательны: +* ID в квадратных скобках + > Для удобства ввода с пульта, рекомендуется задавать числом или короткой строкой без пробелов и др. спецсимволов. +* параметр `pls` или `redirect` + > Если указаны оба, то `redirect` приоритетен. Плейлистов с редиректами может быть сколько угодно, но они не должны быть цикличными. - ## API Можно получать состояние плейлистов из этого сборника при помощи метода: @@ -139,16 +134,16 @@ GET https://iptv.axenov.dev//json где: -* `id` -- название плейлиста -* `name` -- краткое описание из источника или от себя +* `id` -- идентификатор плейлиста +* `name` -- название плейлиста * `url` -- короткая ссылка, которую можно использовать для добавления плейлиста в плеер -* `desc` -- подробное описание плейлиста +* `desc` -- краткое описание * `pls` -- прямая ссылка на m3u/m3u8 плейлист * `src` -- ссылка на источник, откуда взят плейлист -* `status` -- признак доступности плейлиста (`online`, `timeout`, `offline`, `unknown`) +* `status` -- статус плейлиста (`"online"|"timeout"|"offline"|"error"`) * `encoding` -- данные о кодировке файла плейлиста - * `name` -- название кодировки (на данный момент определяются только `UTF-8` или `Windows-1251`) - * `alert` -- признак отличия кодировки от `UTF-8`, названия каналов сконвертированы в `UTF-8` + * `name` -- название кодировки (`"UTF-8"|"Windows-1251"`) + * `alert` -- признак отличия кодировки от `UTF-8`, названия каналов сконвертированы в `UTF-8`, могут быть ошибки в отображении * `channels` -- массив названий каналов * `count` -- количество каналов >= 0 @@ -174,27 +169,72 @@ GET https://iptv.axenov.dev//json где: -* `id` -- название плейлиста -* `name` -- краткое описание из источника или от себя +* `id` -- идентификатор плейлиста +* `name` -- название плейлиста * `url` -- короткая ссылка, которую можно использовать для добавления плейлиста в плеер -* `desc` -- подробное описание плейлиста +* `desc` -- краткое описание * `pls` -- прямая ссылка на m3u/m3u8 плейлист * `src` -- ссылка на источник, откуда взят плейлист -* `status` -- признак доступности плейлиста (`online`, `timeout`, `offline`, `error`) -* `error` -- данные о кодировке файла плейлиста +* `status` -- статус плейлиста (`"online"|"timeout"|"offline"|"error"`) +* `error` -- данные об ошибке при проверке плейлиста * `code` -- [код ошибки curl](https://curl.se/libcurl/c/libcurl-errors.html) * `message` -- текст ошибки curl - ## Развёртывание проекта -1. Выполнить `cp .env.example .env`, установить необходимые параметры +1. Выполнить `cp src/.env.example src/.env`, установить необходимые параметры 2. Выполнить `docker compose up -d --build` -3. Открыть `https://:8080` +3. Открыть `http://:8080` + +Если на сервере, на котором запускаются контейнеры, стоит apache2, то его можно использовать как реверс прокси: + +Для этого следует: + +``` +$ sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests +$ sudo nano /etc/apache2/sites-available/iptv.conf +``` +```apacheconf +# example.com заменить на свой адрес + + + ServerName example.com + # обязательно без SSL: + ProxyPreserveHost On + ProxyPass / http://localhost:8080/ + ProxyPassReverse / http://localhost:8080/ + # обязательно для SSL: + # RewriteEngine on + # RewriteCond %{SERVER_NAME} =example.com + # RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] + + +# обязательно для SSL: +# +# +# ServerName example.com +# ProxyPreserveHost On +# ProxyPass / http://localhost:8080/ +# ProxyPassReverse / http://localhost:8080/ +# сертификаты можно получить через certbot +# SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem +# SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem +# Include /etc/letsencrypt/options-ssl-apache.conf +# +# + +# Ctrl+O +# Enter +# Ctrl+X +``` +```shell +$ sudo a2ensite iptv +$ # для подгрузки включенных модулей выполнить именно restart, а не reload +$ sudo systemctl restart apache2 +``` - ## Дополнительные инструменты (`./tools`) ### `download-all.sh` @@ -349,7 +389,6 @@ http://live02-cdn.tv.ti.ru:80/dtv/id376_NBN_SG--Fox_HD/04/plst.m3u8 5. Вручную: добавить плейлист в IPTV-плеер и перепроверить результат. - ## Использованный стек * [docker compose](https://docs.docker.com/compose/) @@ -360,7 +399,6 @@ http://live02-cdn.tv.ti.ru:80/dtv/id376_NBN_SG--Fox_HD/04/plst.m3u8 * bash - ## Лицензия [The MIT License](LICENSE)