Skip to content

whatuneeed/IPTV-Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

210 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPTV Manager для OpenWrt v3.21

Скрипт для настройки IPTV на роутере OpenWrt с веб-админ панелью, встроенным HLS-плеером, EPG телепрограммой и расписанием обновлений.

v3.21 — Модульная архитектура, валидация CGI, логирование, CI/CD

Возможности

📺 Плеер

  • HLS-плеер с боковым списком каналов, поиском и EPG
  • PiP (картинка в картинке), полноэкранный режим
  • Загрузка любых M3U/M3U8 плейлистов
  • Горячие клавиши: стрелки, пробел, F

📡 Плейлист

  • Загрузка по ссылке, из файла или от провайдера
  • Валидация URL перед загрузкой
  • Объединение нескольких плейлистов
  • Авто-обнаружение EPG из заголовка плейлиста

🔒 Безопасность

  • Пароль на админку (HTTP Basic Auth) + API токен
  • Белый список IP, rate limiting (60 запросов/мин)

📊 LuCI

  • 3 вкладки в интерфейсе OpenWrt: IPTV, Плеер, Сервер
  • Запуск/остановка сервера прямо из LuCI
  • Работает даже при остановленном сервере (srv.cgi на порту 80)

⚙️ Автоматизация

  • Расписание автообновления плейлиста и EPG
  • Авто-обновление скрипта из GitHub при запуске
  • Автозапуск при старте роутера
  • Экспресс-настройка за 30 секунд
  • 🛡️ Watchdog (Сторож): Автоматически обнаруживает падение сервера и перезапускает его через 20 секунд.

💾 Хранение

  • Гибридный EPG — только в RAM (gz, ~15MB), без нагрузки на флеш
  • Избранное, бэкап и восстановление настроек

Требования

  • OpenWrt: 21.x или новее
  • Свободный порт: 8082 (uhttpd)
  • Интернет: для загрузки плейлиста и EPG
  • Никаких дополнительных пакетов — всё работает из коробки

Архитектура проекта

Модульная структура (v3.21+)

luci-app-iptv-manager/root/usr/share/iptv-manager/
├── IPTV-Manager.sh          # Entry point (загружает модули)
├── lib/
│   ├── core.sh              # Конфигурация, утилиты, валидация
│   ├── logger.sh            # Логирование (log_info, log_error, log_warn)
│   ├── playlist.sh          # Загрузка, валидация, объединение плейлистов
│   ├── epg.sh               # Загрузка и обработка EPG
│   ├── server.sh            # HTTP-сервер, CGI, watchdog
│   ├── scheduler.sh         # Автоматическое обновление
│   ├── security.sh          # Rate limiting, IP whitelist, auth
│   ├── cgi.sh               # Генерация admin.cgi с полной HTML-админкой
│   ├── telegram.sh          # Telegram-уведомления
│   └── catchup.sh           # Timeshift/архив передач (catchup)
├── defaults.conf            # Настраиваемые параметры (порт, пути, таймауты)
└── tests/
    └── test_core.sh         # Unit-тесты (shunit2)

API Endpoints

Endpoint Auth Описание
?action=health ❌ Нет Health-check: server, playlist, epg, uptime
?action=check_channel ✅ Да Проверка доступности канала
?action=refresh_playlist ✅ Да Обновить плейлист
?action=refresh_epg ✅ Да Обновить EPG
?action=system_info ✅ Да RAM, disk, uptime
?action=server_status ✅ Да Статус сервера
?action=server_start ✅ Да Запустить сервер
?action=server_stop ✅ Да Остановить сервер

Как добавить свой модуль

  1. Создайте файл в lib/ваш_модуль.sh
  2. Добавьте его загрузку в IPTV-Manager.sh:
    . "$IPTV_MANAGER_DIR/lib/ваш_модуль.sh"
  3. Используйте функции из модуля в любом месте скрипта

Безопасность

  • Валидация URL_validate_url() проверяет протокол перед любым запросом
  • Санитизация_sanitize_cgi_str() очищает входные данные CGI
  • Rate limiting — 60 запросов/мин с блокировкой на 5 минут
  • Логирование — все критичные операции пишутся через logger

Установка

Быстрая установка (одна команда)

wget -q -O - https://raw.githubusercontent.com/whatuneeed/IPTV-Manager/main/install.sh | sh

Скрипт автоматически:

  • Скачает все файлы с GitHub
  • Расставит по правильным путям
  • Включит автозапуск и настроит LuCI
  • Запустит сервер
  • Удалит все временные файлы после установки

После установки: Services → IPTV Manager в LuCI, или iptv в SSH.

Через LuCI (для разработчиков)

# Собрать пакет из исходников
git clone https://github.com/whatuneeed/IPTV-Manager.git
cd IPTV-Manager/luci-app-iptv-manager
make package/symlinks
make package/luci-app-iptv-manager/compile

# Установить на роутер
scp bin/packages/*/luci-app-iptv-manager_*.ipk root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "opkg install /tmp/luci-app-iptv-manager_*.ipk"

Или скачать .ipk из GitHub Releases и установить:

opkg install luci-app-iptv-manager_3.21-*.ipk

После установки: Services → IPTV Manager в LuCI.

Пакет автоматически включит автозапуск, настроит CGI и перезапустит rpcd.

CI/CD

Проект использует GitHub Actions для автоматических проверок:

Проверка Описание
Shellcheck Анализ всех .sh файлов на POSIX-совместимость
Unit Tests Тесты core-функций через shunit2
Structure Check Проверка наличия всех модулей

Веб-админ панель

Страница URL
Админ-панель http://192.168.1.1:8082/cgi-bin/admin.cgi
Плейлист http://192.168.1.1:8082/playlist.m3u
EPG http://192.168.1.1:8082/epg.xml
HLS-плеер http://192.168.1.1:8082/player.html

Вкладки админки

Каналы — список с фильтрацией по группам, поиском, проверкой доступности и избранным

Плейлист — загрузка по ссылке, просмотр исходного M3U

Телепрограмма — настройка EPG, просмотр передач (XML/XML.gz)

Настройки — расписание, бэкап, безопасность (пароль, API токен, whitelist), проверка обновлений

HLS-плеер

  • Список каналов — логотипы, группы, поиск
  • «Сейчас играет» — текущая передача из EPG
  • Горячие клавиши: ↑/↓ переключение, Пробел пауза, F полный экран
  • PiP — кнопка ⧉ для просмотра в плавающем окне
  • Адаптивный — боковая панель скрывается на телефонах

Подключение телевизора

В IPTV плеере (TiviMate, IPTV Smarters, VLC, SS IPTV):

  • Плейлист: http://192.168.1.1:8082/playlist.m3u
  • EPG: http://192.168.1.1:8082/epg.xml

LuCI-плагин

Устанавливается автоматически при первоначальной настройке. Раздел Services → IPTV Manager в веб-интерфейсе OpenWrt.

Вкладка Описание
IPTV iframe с полной админкой
Плеер iframe с HLS-плеером
Сервер Запуск/остановка/мониторинг сервера

Установка вручную:

scp -r luci-app-iptv-manager/htdocs/luci-static/resources/view/iptv-manager/* /www/luci-static/resources/view/iptv-manager/
scp -r luci-app-iptv-manager/root/usr/share/luci/menu.d/ /usr/share/luci/menu.d/
scp -r luci-app-iptv-manager/root/usr/share/rpcd/acl.d/ /usr/share/rpcd/acl.d/
scp -r luci-app-iptv-manager/root/etc/uci-defaults/ /etc/uci-defaults/
/etc/init.d/rpcd restart

SSH меню

═══ IPTV Manager v3.20 ═══
🌐 192.168.1.1:8082   📺 152 канала
📡 EPG: ✅   💾 2.3MB   🗄 8%
🖥️ Сервер: ✅ Запущен   ⏱ 0ч 2м

── Главное меню ─────────────
 1) 📡 Плейлист
 2) 📺 Телепрограмма
 3) 🔧 Сервер
 4) ⏰ Расписание
 5) 🔒 Безопасность
 6) 💾 Бэкап
 7) 🔄 Обновление

 0) Выход

При первом запуске — экспресс-настройка за 30 секунд (плейлист по умолчанию + сервер + LuCI).

Популярные EPG источники

  • https://iptvx.one/EPG.XML — Россия/СНГ (рекомендуется)
  • https://iptvx.one/EPG_NOARCH — Россия/СНГ без архива
  • http://epg.it999.ru/epg.xml.gz — Россия (сжатый)
  • http://epg.pockettv.net/epg.xml.gz — Россия/СНГ

Устранение неполадок

Проблема Решение
Сервер отвалился после обновления страницы LuCI Подождите 20-25 секунд. Watchdog автоматически восстановит его.
Сервер не запускается Проверьте, что порт 8082 свободен: kill $(pgrep -f "uhttpd.*8082")
Вкладка «Сервер» в LuCI не работает Обновите CGI: cp /www/luci-static/resources/view/iptv-manager/srv.cgi /www/cgi-bin/srv.cgi && chmod +x /www/cgi-bin/srv.cgi
Плейлист не загружается Проверьте URL: wget -q --spider --timeout=10 "URL"
LuCI не показывает IPTV Manager /etc/init.d/rpcd restart
EPG не обновляется Проверьте ссылку и наличие gzip поддержки

FAQ

Как сбросить настройки? Через админку → Настройки → 🗑️ Сброс к заводским. Или удалите /etc/iptv/* и перезапустите сервер.

Как обновить пакет?

opkg update && opkg upgrade luci-app-iptv-manager

Или скачайте новый .ipk и установите: opkg install luci-app-iptv-manager_*.ipk

Как удалить LuCI плагин?

opkg remove luci-app-iptv-manager

Как полностью удалить IPTV Manager? В SSH: выберите 0) Удалить IPTV Manager в главном меню. Удалит все конфиги, плейлист, LuCI плагин и init-скрипт.

История обновлений

V3 — Плеер, безопасность и LuCI (текущая v3.20)

  • HLS-плеер с боковым списком, поиском, PiP и избранным
  • LuCI-плагин: 3 вкладки (IPTV, Плеер, Сервер), управление сервером
  • 3 темы: светлая, тёмная, OpenWrt Bootstrap Dark
  • Экспресс-настройка за 30 секунд
  • Белый список IP, rate limiting, пароль, API токен
  • Гибридный EPG — хранение только в RAM (gz, ~15MB)
  • Системная статистика: RAM, Диск, Uptime
  • Авто-обновление скрипта при каждом запуске
  • Валидация и объединение плейлистов
  • Полностью переработанное консольное меню

V2 — Админка и автоматизация

  • Веб-админ панель через CGI (admin.cgi)
  • Загрузка плейлиста из файла и настройка провайдеров
  • Поддержка XMLTV EPG — автообнаружение и загрузка
  • Планировщик crontab — автообновление плейлиста и EPG
  • Пошаговый визард первоначальной настройки
  • Автозапуск через init.d скрипт
  • Подменю SSH для навигации
  • Пагинация каналов, логотипы, «Сейчас играет»

V1 — Основы

  • Базовый скрипт загрузки плейлистов
  • Генерация M3U и HTTP-сервер
  • Поддержка HTTPS
  • Автоопределение IP роутера

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors