Tekstas buvo atnaujintas: 2020-09-04.
Atnaujinau savo kreivą kūrinį apie kurį rašiau seniau. Kreivas nes sudėtas iš Google realiai tai gali būti klaidų kode, bet kadangi veikia tai…
Nuo praeitos versijos padariau gan daug pakeitimų ypač vizualiai.
Supaprastinau patį įrašymo procesą, reikės supildyti tik vieną .env failą.
Bet apie viską nuo pradžių.
Dizainas
Dizainą keičiau nes nepatiko man tas lentelės principas ir telefone atrodė kiek prasčiau, kai atsinaujina duomenys.
Kitaip sakant nelabai mobile friendly.
Prisijungimo langas dabar atrodo taip:
Prieš tai buvo mandras gan bet man nepatiko, labiau norėjau minimalaus varianto, tad radau template ir prisitaikiau.
Taip atrodo pagrindinis langas, kaip minėjau atsisakiau lentelės principo ir kažkiek moderniau atrodo.
Atsisakiau Bootstrap stiliaus ir pakeičiau į Uikit, kuris man atrodo labiau minimalistinis ir toks naujoviškesnis, Bootstrap kažkaip senoviškiau atrodo man
Taip atrodo vartotojų valdymas. Manau viskas ir taip aišku kas ką daro.
Viena klaida yra jog spaudžiant First Delete Password po perkrovimo nepasikeičia statusas jog nėra priskirta kodo bet tas kodas yra ištrintas.
Kitoje versijoje gal pavyks sutvarkyti.
IPTV list tai iš tvheadend sugeneruotas ir pritaikytas daugumai grotuvų.
VOD list yra iš Jellyfin, sąrašas pritaikytas irgi įvairiems grotuvams, jeigu nėra Jellyfin kliento įrenginyje tai galima pridėti, kaip VOD į Tivimate.
Paspaudus Create User atsidaro langas kuriame supildome duomenis.
Dar netikrinau bet man atrodo jog reikės turėti tokias pačias grupes kanalų, kaip ir pas mane.
Apie LT aiškinti nereikia manau Įvairūs eina naujiems vartotojams o Premium tai tik adminui matomi. Turiu įtarimą jog reikės tik LT ir įvairūs.
Gal kitoje versijoje tai sutvarkysiu su .env failu.
Automatinis vartotojų atjungimas
Principas nėra pats geriausias, bet tai veikia.
Reikia atidaryti tiesiog puslapį kuris pasiekiamas: /auto/index.php
Atidarius ten suveikia post ir atjungia vartotojus kuriems pasibaigė laikas.
Kad taip būtų automatiškai, reikia pridėti į Cron.
Pradžioje reikia slimerjs.
Instrukcijos surašytos jų puslapyje, realiai tai dėl to jog veiktų js naršyklėje be GUI.
Tada reikės Firefox, jeigu gerai pamenu reikės senesnės versijos tai tiesiog portable versiją reikia parsisiųsti.
Tada reikia sukurti sh failą arba tiesiog į Cron rašyti, kaip jau patogiau, asmeniškai mėgstu tokius dalykus rašytis į .sh
!/bin/bash su - vartotojas_kuris_nera_root -c "/usr/bin/slimerjs /home/vartotojas/firefox/open.js --headless" 2>&1
Manau sintaksė labai paprasta, nurodome vartotoją su kuriuo reikia paleisti.
Slimerjs failą nurodome.
Ir nurodome open.js failą kuriame reikia tokio turinio:
var page = require("webpage").create(); page.open("https://nurodome_adresa/auto/index.php") .then(function(status){ if (status == "success") { console.log("The title of the page is: "+ page.title); } else { console.log("Sorry, the page is not loaded"); } page.close(); phantom.exit(); })
Pasikeičiame paryškintą vietą.
Nepamirštame:
chmod +x firefox.sh
Nurodome crontabe:
/usr/bin/sh /home/vartotojas/firefox/firefox.sh
Pas mane kas valandą pasileidžia.
Dėl sistemos apkrovos
Reikės Glances programos.
Manau paprasčiausias variantas paimti informaciją apie CPU ir RAM.
Įrašymas paprastas, komandos pateiktos jų GitHub.
Paleidimo komanda:
/usr/bin/glances -w --disable-webui --disable-process --disable-plugin sensors,docker,gpu,wifi,hddtemp,raid,amps,ports,folders,cloud,connections,irq,fs,processlist,processcount,diskio,quicklook,ip,network,alert,smart
Atjungia visus dalykus kurių nereikia nes pastebėjau jog didoka apkrova jeigu viskas paleista.
Dėl skirtingų versijų sistemose gali neveikti toks atjungimas tai tada užtenka:
/usr/bin/glances -w
Aišku reiktų į startup įdėti.
sudo systemctl enable glances
Pajungimas
Pas mane Nginx ir PHP 7.4 bei MySQL
Įrašius PHP reikia nepamiršti įrašyti taip pat:
PHP Mysqli modulį ir PHP Curl, kaip įrašyti reikės susirasti su Google pagalba.
Duomenų bazės pajungimas.
Reikia susikurti duomenų bazę.
Ir toje duomenų bazėje įvesti:
CREATE TABLE users ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP );
Nginx konfigūracija:
location /iptv { rewrite ^/iptv/(.*)/(.*)$ /tvh.php?user=$1&pass=$2; } location /vod { rewrite ^/vod/(.*)/(.*)$ /dvr.php?user=$1&pass=$2; } location /auto/index.php { allow 10.66.66.0/24; allow 192.168.1.0/24; allow 88.88.88.88/32; deny all; }
Pakeičiam paryškintą vietą į savo išorinį IP adresą. Apsaugom su Nginx, kad negalėtų prie /auto/ prieiti. Taip pat suformuoti adresą: ip/iptv/vartotojas/kodas ir gauname playlistą.
Jeigu naudoji Apache tai reikės pagrindiniame aplankale .htaccess su tokiu turiniu:
RewriteEngine On RewriteRule ^/iptv/(.*)/(.*)$ /tvh.php?user=$1&pass=$2 [L] RewriteRule ^/vod/(.*)/(.*)$ /dvr.php?user=$1&pass=$2 [L]
Auto aplankale irgi reikės .htaccess su tokiu turiniu:
Order Allow,Deny Allow from 10.66.66.0/24 Allow from 192.168.1.0/24 Allow from 88.88.88.88/32 Deny from all
Taip pat reikia pakeisti paryškintą IP adresą į savo išorinį (nesu tikras dėl apache, duokite žinoti jeigu tikrai suveikė).
Tarp failų galima rasti .env kuriame reikės viską supildyti.
URL=vartotojas:[email protected]:9981 GLANCESCPU=https://glances_adresas/api/3/cpu?refresh_time=5 GLANCESMEM=https://glances_adresa/api/3/mem?refresh_time=5 PUBLICIP=isorinis_ip_adresas LOCALIP=vidinis_ip_adreas IPTVADRESS=https://playlisto_paemimas/iptv VODADRESS=https://vod_paemimas/vod ONLYMAINADRESS=tvh_adresas:5 JELLYAPI=api_key=api_raktas JELLYUSER=user JELLYURL=https://adreas_jelly EPG=https://epg_adresas DBIP=localhost DBUSERNAME=dbvartotojas DBPASSWORD=dbkodas DBNAME=dbpavadinimas REGISTER=submit
URL – prisijungimo duomenys admino ir IP adresas su Tvheadend prievadu.
Glances – pilnas adresas, reikia tik pasikeisti pradžią, jeigu be domeno tai reikės prievadą pridėti :61208. Jeigu naudojama Glances V2 tai adresas bus:
/api/2/cpu?refresh_time=5 /api/2/cpu?refresh_time=5
Taip pat pajunginėjant klientui radau jog Glances reikalingas Python Bottle paketas.
pip3 install bottle
Jeigu pip neveikia tada reikia ir tą įsidiegti į sistemą.
PUBLICIP – viešas IP adresas, realiai, kaip URL tik čia reikia IP adreso ir be prievado.
LOCALIP – vidinis adresas, gali būti jog reikės tiesiog 192.168.1.1
IPTVADRESS VODADRESS – playlisto paėmimo adresas, čia reikės su Nginx pasitvarkyti dar.
JELLYAPI=api_key=api_raktas pasikeisti tik paryškintą dalį, api randamas admin nustatymuose api skilties nustatymuose, jeigu neturime Jellyfin dedame #
JELLYUSER – admin nustatymuose atsidarome savo vartotoją ir matome id:
Jeigu neturime Jellyfin dedame #
JELLYURL – tiesiog Jellyfin adresas. Jeigu neturime Jellyfin dedame #
EPG – EPG adresas.
DBIP=localhost (DB adresas, dažniausiai tas ir bus)
DBUSERNAME=DB vartotojas
DBPASSWORD=DB kodas
DBNAME=DB pavadinimas
Vartotojo registracija vyksta /register.php adresu.
Ten atsidaro forma ir suvedam vartotoją ir kodą. Pakūrus vartotoją permes į prisijungimo langą.
Norint atjungti registraciją reikia .env faile susirasti REGISTER=submit ir pakeisti į REGISTER=submit1
Realiai kas surastų adresą galėtų prisiregistruoti, tad geriau atjungti.
TVheadend Admin Panel failai, tolimesni planai ir parama
Pridedu Firefox, turėtų veikti senoji versija, bei pagrindiniai failai.
Ateities planai, kai bus laiko ir noro:
- Sutvarkyti registraciją.
- Šiuo metu planuose yra sutvarkyti mobilų meniu dabar jis nesusitraukia ir palieka, kaip ant didelio ekrano, kadangi meniu tik su dvejais punktais tai pasilikau kitam kartui.
- Perdaryti vartotojų tvarkymą nes šiuo metu tas lentos principas nelabai patinka, na realiai pagalvoti, kaip gražiau padaryti.
- Pridėti naktinį režimą (dark mode).
- Gal dar pridėti kažką į tools dalį, ką dažniausiai tenka naudoti.
- Taip pat yra bėdų su Firefox ir informacijos atnaujinimu, reiktų pasigilinti kame problema.
- Pakurti Docker Image lengvam įrašymui.
Jeigu nori paremti mane tai gali perversti į PayPal: [email protected] arba tiesiai susisiek su manimi paštu.
Taip pat jeigu sudėtinga pasijungti irgi galiu padėti už paramos mokestį
Prie progos permesiu į GitHub.
P.S. radau: TVheadend status manager.
Kadangi senokai kurtas tai dėjau į Docker Base Image Ubuntu 16.04.
Dockerfile:
FROM ubuntu:16.04 LABEL maintainer="evpro" LABEL maintainer_email="[email protected]" LABEL version="1.0" RUN apt-get update -y && apt-get install -y\ curl git-core php7.0 php7.0-cli php7.0-sqlite php7.0-xml\ unzip RUN mkdir -p /opt/tvheadend-status-manager RUN git clone https://github.com/Jalle19/tvheadend-status-manager.git /opt/tvheadend-status-manager WORKDIR /opt/tvheadend-status-manager RUN curl -sS https://getcomposer.org/installer | php RUN php composer.phar install RUN php vendor/bin/propel sql:insert RUN php vendor/bin/propel migration:migrate RUN cp app/config.yml.example app/config.yml RUN cp app/settings.js.example src/client/app/js/settings.js VOLUME /opt/tvheadend-status-manager/app VOLUME /opt/tvheadend-status-manager/sql VOLUME /opt/tvheadend-status-manager/src ENTRYPOINT ["php", "/opt/tvheadend-status-manager/app/tvheadend-status-manager", "/opt/tvheadend-status-manager/app/config.yml", "-vv"]
Kuris kaupia statistiką ir atrodo taip:
Dizainas nelabai man patinka, bet jog pakeisti jį daug knistis reikia, tad bus gerai.
Comments are closed.