build: push tvapp v2 docker files

This commit is contained in:
2025-02-20 13:10:51 -07:00
parent bee45668cc
commit 9e79e42d09
536 changed files with 142093 additions and 5531 deletions

View File

@@ -1,12 +1,13 @@
# #
# @project thetvapp-docker
# @about Nginx site-configs default configuration file
# @file /root/defaults/nginx/nginx.conf.sample
# @repo https://github.com/Aetherinox/thetvapp-docker
# @generated 2024-11-30
# @project tvapp2
# @usage docker image which allows you to download a m3u playlist and EPG guide data for the
# IPTV service TheTvApp.
# @file nginx.conf.sample
# @repo https://github.com/Aetherinox/docker-base-alpine
# https://git.binaryninja.net/pub_projects/tvapp2
# #
user abc;
user dockerx;
# Set number of worker processes automatically based on number of CPU cores.
include /config/nginx/worker_processes.conf;
@@ -39,7 +40,7 @@ http
# Name servers used to resolve names of upstream servers into addresses.
# It's also needed when using tcpsocket and udpsocket in Lua modules.
#resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;
# resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;
include /config/nginx/resolver.conf;
# Don't tell nginx version to the clients. Default is 'on'.
@@ -63,7 +64,7 @@ http
# included in server blocks where listen 443 is defined
# Enable gzipping of responses.
#gzip on;
# gzip on;
# Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.
gzip_vary on;

View File

@@ -1,9 +1,10 @@
# #
# @project thetvapp-docker
# @about Nginx site-configs default configuration file
# @file /root/defaults/nginx/site-confs/default.conf
# @repo https://github.com/Aetherinox/thetvapp-docker
# @generated 2024-11-30
# @project tvapp2
# @usage docker image which allows you to download a m3u playlist and EPG guide data for the
# IPTV service TheTvApp.
# @file nginx.conf.sample
# @repo https://github.com/Aetherinox/docker-base-alpine
# https://git.binaryninja.net/pub_projects/tvapp2
# #
server
@@ -29,39 +30,35 @@ server
location /
{
# enable for basic auth
# auth_basic "Restricted";
# auth_basic_user_file /config/nginx/.htpasswd;
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# index > fancy
fancyindex on;
fancyindex_header "/theme/header.html";
fancyindex_footer "/theme/footer.html";
fancyindex_ignore "theme";
fancyindex_time_format "%m-%d-%Y %l:%M:%S %P";
fancyindex_directories_first on;
fancyindex_localtime on;
fancyindex_name_length 255;
fancyindex_show_path off;
fancyindex_show_dotfiles off;
fancyindex_hide_symlinks on;
fancyindex_hide_parent_dir on;
fancyindex_default_sort name;
fancyindex on;
fancyindex_header "/theme/header.html";
fancyindex_footer "/theme/footer.html";
fancyindex_ignore "theme";
fancyindex_time_format "%m-%d-%Y %T";
fancyindex_name_length 255;
fancyindex_show_dotfiles off;
fancyindex_hide_symlinks on;
fancyindex_default_sort name;
# index > auto
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
gzip on;
gzip_vary on;
gzip_types text/css text/javascript text/xml application/atom+xml application/rss+xml text/markdown text/mathml text/plain text/vnd.sun.j2me.app-descriptor text/vnd.wap.wml text/x-component application/json application/xhtml+xml application/xspf+xml font/woff font/woff2 image/avif image/bmp image/png image/svg+xml image/tiff image/vnd.wap.wbmp image/webp image/x-icon image/x-jng audio/midi audio/mpeg audio/ogg audio/x-m4a audio/x-realaudio;
gzip_proxied any;
gzip_comp_level 1;
gzip_http_version 1.0;
gunzip on;
gzip_static on;
gzip on;
gzip_vary on;
gzip_types text/css text/javascript text/xml application/atom+xml application/rss+xml text/markdown text/mathml text/plain text/vnd.sun.j2me.app-descriptor text/vnd.wap.wml text/x-component application/json application/xhtml+xml application/xspf+xml font/woff font/woff2 image/avif image/bmp image/png image/svg+xml image/tiff image/vnd.wap.wbmp image/webp image/x-icon image/x-jng audio/midi audio/mpeg audio/ogg audio/x-m4a audio/x-realaudio;
gzip_proxied any;
gzip_comp_level 1;
gzip_http_version 1.0;
gunzip on;
gzip_static on;
try_files $uri $uri/ /index.html /index.htm /index.php$is_args$args;
try_files $uri $uri/ /index.html /index.htm /index.php$is_args$args;
}
location ~ ^(.+\.php)(.*)$

View File

@@ -1,45 +1,67 @@
# #
# @project thetvapp-docker
# @about Nginx site-configs default configuration file
# @file /root/defaults/nginx/ssl.conf.sample
# @repo https://github.com/Aetherinox/thetvapp-docker
# @generated 2024-11-30
# @project tvapp2
# @usage docker image which allows you to download a m3u playlist and EPG guide data for the
# IPTV service TheTvApp.
# @file nginx.conf.sample
# @repo https://github.com/Aetherinox/docker-base-alpine
# https://git.binaryninja.net/pub_projects/tvapp2
# #
### Mozilla Recommendations
# generated 2023-06-25, Mozilla Guideline v5.7, nginx 1.24.0, OpenSSL 3.1.1, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.24.0&config=intermediate&openssl=3.1.1&guideline=5.7
# #
# generated 2023-06-25, Mozilla Guideline v5.7, nginx 1.24.0, OpenSSL 3.1.1, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.24.0&config=intermediate&openssl=3.1.1&guideline=5.7
# #
ssl_certificate /config/keys/cert.crt;
ssl_certificate_key /config/keys/cert.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_certificate /config/keys/cert.crt;
ssl_certificate_key /config/keys/cert.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
ssl_dhparam /config/nginx/dhparams.pem;
# #
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
# #
# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_dhparam /config/nginx/dhparams.pem;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
#add_header Strict-Transport-Security "max-age=63072000" always;
# #
# intermediate configuration
# #
# OCSP stapling
#ssl_stapling on;
#ssl_stapling_verify on;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
#ssl_trusted_certificate /config/keys/cert.crt;
# #
# OCSP stapling
# #
# Optional additional headers
#add_header Cache-Control "no-transform" always;
#add_header Content-Security-Policy "upgrade-insecure-requests; frame-ancestors 'self'" always;
#add_header Permissions-Policy "interest-cohort=()" always;
#add_header Referrer-Policy "same-origin" always;
#add_header X-Content-Type-Options "nosniff" always;
#add_header X-Frame-Options "SAMEORIGIN" always;
#add_header X-UA-Compatible "IE=Edge" always;
#add_header X-XSS-Protection "1; mode=block" always;
# ssl_stapling on;
# ssl_stapling_verify on;
# #
# verify chain of trust of OCSP response using Root CA and Intermediate certs
# #
# ssl_trusted_certificate /config/keys/cert.crt;
# #
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
# #
add_header X-Content-Type-Options nosniff;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always;
# #
# Optional additional headers
# #
# add_header Cache-Control "no-transform" always;
# add_header Content-Security-Policy "upgrade-insecure-requests; frame-ancestors 'self'" always;
# add_header Permissions-Policy "interest-cohort=()" always;
# add_header Referrer-Policy "same-origin" always;
# add_header X-Content-Type-Options "nosniff" always;
# add_header X-Frame-Options "SAMEORIGIN" always;
# add_header X-UA-Compatible "IE=Edge" always;
# add_header X-XSS-Protection "1; mode=block" always;

View File

@@ -1,34 +0,0 @@
<html>
<head>
<title>Welcome to our server</title>
<style>
body{
font-family: Helvetica, Arial, sans-serif;
}
.message{
width:330px;
padding:20px 40px;
margin:0 auto;
background-color:#f9f9f9;
border:1px solid #ddd;
}
center{
margin:40px 0;
}
h1{
font-size: 18px;
line-height: 26px;
}
p{
font-size: 12px;
}
</style>
</head>
<body>
<div class="message">
<h1>Welcome to our server</h1>
<p>The website is currently being setup under this address.</p>
<p>For help and support, please contact: <a href="me@example.com">me@example.com</a></p>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -1,21 +0,0 @@
</div>
</div>
</div>
<footer class="footer navbar">
<div class="container">
<div class="col text-center text-muted text-small text-nowrap">
<small>Developed by Aetherinox - <a href="https://github.com/Aetherinox/thetvapp-docker">TheTVApp Grabber</a></small><br />
<small>Lists generated by <a href="https://github.com/dtankdempse/thetvapp-m3u">dtankdempse</a></small>
</div>
</div>
</footer>
<script type="text/javascript">
CreateBreadcrumbs();
GenerateFileIcons();
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.10.0/js/lightbox-plus-jquery.min.js"></script>
</body>
</html>

View File

@@ -1,38 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>TheTvApp for Docker</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.10.0/css/lightbox.min.css">
<link rel="stylesheet" href="/theme/css/ui.min.css">
<link rel="stylesheet" href="/theme/theme.css">
<script type="text/javascript" src="/theme/js/interface.min.js"></script>
<script type="text/javascript" src="/theme/js/breadcrumbs.js"></script>
<script type="text/javascript" src="/theme/js/fileicons.js"></script>
</head>
<body>
<div class="header">
<nav class="navbar sticky-top container">
<div class="navbar-brand">
<i class="fa-sharp-duotone fa-regular fa-tv" style="--fa-primary-color: rgb(255, 255, 255); --fa-secondary-color: rgb(255, 255, 255);" aria-hidden="true"></i>
<a href="https://github.com/Aetherinox/thetvapp-docker">TheTvApp for Docker</a>
</div>
</nav>
</div>
<div class="container">
<nav aria-label="breadcrumb">
<ol class="breadcrumb" id="breadcrumbs"/>
</nav>
<div class="row">
<div class="col">
<div class="about">This page displays your most recent copies of TheTvApp's <code>.m3u8</code> playlist and <code>.xml</code> EPG guide data. Right-click each file, select <span class="text-accent">Copy Link</span> and paste the URLs within your IPTV apps such as Jellyfin. The <code>.m3u8</code> and <code>.m3u8.gz</code> are identical guide lists, but the <code>.xml.gz</code> is compressed and will import into your IPTV application much faster.</div>

View File

@@ -1,10 +0,0 @@
/*
@app thetvapp grabber
@author Aetherinox
@url https://github.com/Aetherinox/thetvapp-docker
https://hub.docker.com/repository/docker/aetherinox/thetvapp
Generate breadcrumbs for header
*/
function CreateBreadcrumbs(){for(var e,a,n,r=window.location.pathname.replace(/\/$/,"").split("/"),t="",c="",o=0;o<r.length;o++)c+=r[o]+"/",t+=(e=0==o?"Home":decodeURIComponent(r[o]),a=c,'<li class="breadcrumb-item'+((n=o==r.length-1)?' active aria-current="page':"")+'">'+(n?"":'<a href="'+a+'">')+e+(n?"":"</a>"));document.getElementById("breadcrumbs").innerHTML=t}

View File

@@ -1,203 +0,0 @@
/*
@app thetvapp grabber
@author Aetherinox
@url https://github.com/Aetherinox/thetvapp-docker
https://hub.docker.com/repository/docker/aetherinox/thetvapp
Generate icons for each file shown in list
*/
function GenerateFileIcons()
{
function e(e)
{
return '<i class="fa fa-fw ' + e + '" aria-hidden="true"></i>'
}
var a = document.getElementById("list");
a.removeAttribute("cellpadding"), a.removeAttribute("cellspacing"), a.classList.add("table", "table-sm", "table-hover", "text-nowrap"), a.tHead.children[0].classList.add("d-none", "d-md-table-row"), "/" != window.location.pathname && a.deleteRow(1);
for (var s, c = 0; s = a.rows[c]; c++) filetype = function(e)
{
if (e.endsWith("/"))
return "fa-duotone fa-solid fa-folder";
switch (e.split(".").pop().toLowerCase())
{
case "txt":
return "fa-solid fa-file-lines";
case "pdf":
return "fa-solid fa-file-pdf";
case "bmp":
return "fa-solid fa-file-image";
case "gif":
return "fa-solid fa-file-gif";
case "jpeg":
return "fa-solid fa-file-jpg";
case "jpg":
return "fa-solid fa-file-jpg";
case "png":
return "fa-solid fa-file-png";
case "tif":
return "fa-solid fa-file-image";
case "tiff":
return "fa-solid fa-file-image";
case "aac":
return "fa-solid fa-file-music";
case "aiff":
return "fa-solid fa-file-audio";
case "m4a":
return "fa-solid fa-file-audio";
case "mp3":
return "fa-solid fa-file-mp3";
case "ogg":
return "fa-solid fa-file-music";
case "opus":
return "fa-solid fa-file-music";
case "m3u":
return "fa-solid fa-file-lines";
case "m3u8":
return "fa-solid fa-file-lines";
case "wav":
return "fa-solid fa-file-audio";
case "amv":
return "fa-solid fa-file-video";
case "avi":
return "fa-solid fa-file-video";
case "flv":
return "fa-solid fa-file-video";
case "m4v":
return "fa-solid fa-file-video";
case "mkv":
return "fa-solid fa-file-video";
case "mov":
return "fa-solid fa-file-mov";
case "mp4":
return "fa-solid fa-file-mp4";
case "m4p":
return "fa-solid fa-file-audio";
case "mpeg":
return "fa-solid fa-file-mp4"
case "mpg":
return "fa-solid fa-file-video";
case "ogv":
return "fa-solid fa-file-video";
case "vob":
return "fa-duotone fa-solid fa-photo-film";
case "webm":
return "fa-solid fa-file-video";
case "wmv":
return "fa-solid fa-file-video";
case "7z":
return "fa-solid fa-file-zipper";
case "a":
return "fa-solid fa-file-binary";
case "apk":
return "fa-solid fa-box-archive";
case "ar":
return "fa-solid fa-file-binary";
case "bin":
return "fa-solid fa-file-binary";
case "bz2":
return "fa-solid fa-file-zipper";
case "cab":
return "fa-solid fa-cabinet-filing";
case "dmg":
return "fa-solid fa-tablet-button";
case "gz":
return "fa-solid fa-file-zipper"
case "xml":
return "fa-solid fa-file-xml"
case "iso":
return "fa-duotone fa-regular fa-compact-disc";
case "jar":
return "fa-solid fa-jar";
case "lz":
return "fa-solid fa-file-zipper"
case "lzma":
return "fa-solid fa-file-zipper"
case "lzo":
return "fa-solid fa-file-zipper"
case "pak":
return "fa-solid fa-file-zipper"
case "partimg":
return "fa-solid fa-file-zipper"
case "rar":
return "fa-solid fa-file-zipper"
case "s7z":
return "fa-solid fa-file-zipper"
case "tar":
return "fa-solid fa-file-zipper"
case "tbz2":
return "fa-solid fa-file-zipper"
case "tgz":
return "fa-solid fa-file-zipper"
case "tlz":
return "fa-solid fa-file-zipper"
case "txz":
return "fa-solid fa-file-zipper"
case "xz":
return "fa-solid fa-file-zipper"
case "zip":
return "fa-solid fa-file-zip";
case "doc":
return "fa-solid fa-file-doc";
case "docx":
return "fa-solid fa-file-doc";
case "odt":
return "fa-solid fa-file-lines";
case "rtf":
return "fa-solid fa-file-word";
case "csv":
return "fa-solid fa-file-csv";
case "ods":
return "fa-solid fa-file-spreadsheet";
case "xls":
return "fa-solid fa-file-xls";
case "xlsx":
return "fa-solid fa-file-xls";
case "odp":
return "fa-solid fa-file-powerpoint";
case "ppt":
return "fa-solid fa-file-ppt";
case "pptx":
return "fa-solid fa-file-powerpoint";
case "c":
return "fa-solid fa-file-binary";
case "class":
return "fa-solid fa-file-binary";
case "cpp":
return "fa-solid fa-file-binary";
case "cs":
return "fa-solid fa-file-binary";
case "h":
return "fa-solid fa-file-binary";
case "hpp":
return "fa-solid fa-file-binary";
case "hxx":
return "fa-solid fa-file-binary";
case "java":
return "fa-solid fa-file-binary";
case "py":
return "fa-solid fa-file-code";
case "sh":
return "fa-solid fa-file-code";
case "swift":
return "fa-solid fa-file-code";
case "vb":
return "fa-solid fa-file-code";
case "svg":
return "fa-solid fa-file-svg";
case "pem":
return "fa-solid fa-file-lock";
case "key":
return "fa-solid fa-file-lock";
case "eps":
return "fa-solid fa-file-eps";
case "cad":
return "fa-solid fa-file-cad";
default:
return "fa-solid fa-file"
}
}(s.cells[0].children[0].innerHTML), s.insertCell(0).innerHTML = 0 < c ? e(filetype) : "", s.cells[0].classList.add("col-auto"), s.cells[1].classList.add("col", "filename"), s.cells[2].classList.add("col-auto", "d-none", "d-md-table-cell"), s.cells[3].classList.add("col-auto", "d-none", "d-md-table-cell"), "image" == filetype && s.cells[1].children[0].setAttribute("data-lightbox", "roadtrip")
}

File diff suppressed because one or more lines are too long

View File

@@ -1,195 +0,0 @@
/*
@app thetvapp grabber
@author Aetherinox
@url https://github.com/Aetherinox/thetvapp-docker
https://hub.docker.com/repository/docker/aetherinox/thetvapp
Primary theme CSS
*/
body
{
background-color: #f8f9fa;
padding-bottom: 20px;
}
@media (prefers-color-scheme: dark)
{
body
{
background-color: #262626;
color: #fff;
}
}
.container nav
{
margin-left: -8px;
}
.container .about
{
padding-left: 8px;
padding-bottom: 40px;
font-size: 9.3pt;
}
.breadcrumb
{
background-color: transparent;
padding: 0rem 1rem;
}
.breadcrumb .breadcrumb-item a
{
color: #4caf50;
}
html
{
position: relative;
min-height: 100%;
}
.footer
{
position: absolute;
bottom: 0;
width: 100%;
margin-bottom: 0;
padding-bottom: 20px;
padding-top: 20px;
background-color: #151515;
}
.footer a,
.footer a:focus,
.footer a:hover
{
color: #FFFFFF;
}
.footer a
{
color: #f7296c;
}
.navbar
{
padding: 15px 1rem;
}
.header
{
background-color: #a82147;
color: #fff;
height: 55px;
}
.header .navbar-brand
{
padding: 0 8px;
font-size: 16px;
line-height: 24px;
height: 24px;
}
.header a
{
color: #FFF;
text-decoration: none;
padding-left: 7px;
}
#breadcrumbs::before
{
margin-top: 4px;
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512' fill='white' width='19px' height='19px'%3E%3Cdefs%3E%3Cstyle%3E.fa-secondary%7Bopacity:.4%7D%3C/style%3E%3C/defs%3E%3Cpath class='fa-primary' d='M160 384H512c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H394.5c-17 0-33.3-6.7-45.3-18.7L322.7 50.7c-12-12-28.3-18.7-45.3-18.7H160c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64z'%3E%3C/path%3E%3Cpath class='fa-secondary' d='M24 96c13.3 0 24 10.7 24 24V344c0 48.6 39.4 88 88 88H456c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 480 0 419.1 0 344V120c0-13.3 10.7-24 24-24z'%3E%3C/path%3E%3C/svg%3E");
}
.breadcrumb-item.active
{
color: #6c757d;
padding-left: 10px;
}
.breadcrumb
{
padding-top: 30px;
}
#list a,
#list a:focus
{
color: #FFF !important;
}
#list a:hover
{
color: #ff275d !important;
}
#list colgroup
{
display: none;
}
#list .filename
{
word-break: break-all;
white-space: normal;
}
.table thead th a
{
color: #9b9b9b !important;
font-weight: normal;
}
.table td, .table th
{
padding: .75rem;
vertical-align: top;
border-top: 0px solid #dee2e6;
}
.table thead tr
{
border-bottom: 2px solid #575757;
background-color: #181818;
}
.table thead th
{
vertical-align: bottom;
border-bottom: 0px solid #575757;
}
.table-hover tbody tr:hover
{
background-color: rgba(155, 155, 155, 0.075);
}
.text-accent
{
font-weight: bold;
color: #d0c273;
}
code
{
font-size: 96%;
color: #ff4985;
word-break: break-word;
padding-right: 5px;
padding-left: 4px;
}
@media (prefers-color-scheme: dark)
{
#list a,
#list a:focus,
#list a:hover {
color: #fff;
}
}