Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 38d424607e | |||
| c713fc1ade | |||
| a6a8e4d6bb | |||
| 88dfa7f0c7 | |||
| 5f367b6cfa | |||
| 4bfba762b4 | |||
| 6e33ad712e | |||
| 7ed0a1863d | |||
| 49a8626708 | |||
| 223d62f2a3 | |||
| c2577ad3dc | |||
| ea3ff90349 | |||
| 49cc36ef31 | |||
| fe70315a63 | |||
| 3aec58719b | |||
| b86f583f42 | |||
| ae1eca427f | |||
| 64b07ad34d | |||
| 6fbc87a465 | |||
| c88c43fd8e | |||
| 807e124570 | |||
| 0493632932 | |||
| ce4f7f54da | |||
| 9df7ed5be8 | |||
| 82035ea239 | |||
| b47f7c8e75 | |||
| dc196fb621 |
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Wasted Audio
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
+16
-4
@@ -16,21 +16,33 @@ if string.find(ngx.var.host, "panamaracing.club") then
|
|||||||
name = "Panama Racing Club Archive",
|
name = "Panama Racing Club Archive",
|
||||||
url = "panamaracing.club",
|
url = "panamaracing.club",
|
||||||
css = "panamaracing.css",
|
css = "panamaracing.css",
|
||||||
header = "panamaracing.club_header.png"
|
header = "panamaracing.club_header.png",
|
||||||
|
feed = "panamaracing.club"
|
||||||
}
|
}
|
||||||
elseif string.find(ngx.var.host, "videohotmix.net") then
|
elseif string.find(ngx.var.host, "videohotmix.net") then
|
||||||
page_titles = {
|
page_titles = {
|
||||||
name = "Hotmix Video Archive",
|
name = "Hotmix Video Archive",
|
||||||
url = "videohotmix.net",
|
url = "videohotmix.net",
|
||||||
css = "videohotmix.css",
|
css = "videohotmix.css",
|
||||||
header = "videohotmix.net-logo.png"
|
header = "videohotmix.net-logo.png",
|
||||||
|
feed = "videohotmix"
|
||||||
}
|
}
|
||||||
elseif string.find(ngx.var.host, "hotmixxx.com") then
|
elseif string.find(ngx.var.host, "hotmixxx.com") then
|
||||||
page_titles = {
|
page_titles = {
|
||||||
name = "Hotmix Video Archive",
|
name = "Hotmix Video Archive",
|
||||||
url = "videohotmix.net",
|
url = "videohotmix.net",
|
||||||
css = "videohotmix.css",
|
css = "videohotmix.css",
|
||||||
header = "videohotmix.net-logo.png"
|
header = "videohotmix.net-logo.png",
|
||||||
|
feed = "hotmixxx"
|
||||||
|
}
|
||||||
|
|
||||||
|
elseif string.find(ngx.var.host, "hotmixes.net") then
|
||||||
|
page_titles = {
|
||||||
|
name = "Hotmix Video Archive",
|
||||||
|
url = "videohotmix.net",
|
||||||
|
css = "videohotmix.css",
|
||||||
|
header = "videohotmix.net-logo.png",
|
||||||
|
feed = "hotmixes"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
page_titles = {
|
page_titles = {
|
||||||
@@ -49,7 +61,7 @@ app:get("/latest.json", function(self)
|
|||||||
return handlers.Latesthandler(self)
|
return handlers.Latesthandler(self)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
app:get("/latest.xml", function(self)
|
app:get("/latest.rss", function(self)
|
||||||
self.titles = page_titles
|
self.titles = page_titles
|
||||||
return handlers.RSShandler(self)
|
return handlers.RSShandler(self)
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -7,12 +7,15 @@ local hotmixes = autoload("hotmixes")
|
|||||||
local function RSShandler(self)
|
local function RSShandler(self)
|
||||||
|
|
||||||
local path = config.get().mount .. self.titles.url
|
local path = config.get().mount .. self.titles.url
|
||||||
local latest_path, latest_name = hotmixes.utils.these_latest( path )
|
local latest_path, latest_name, latest_size, latest_date = hotmixes.utils.rss_latest( path )
|
||||||
|
|
||||||
local host = self.req.parsed_url.scheme .. '://' .. self.req.parsed_url.host
|
local host = self.req.parsed_url.scheme .. '://' .. self.req.parsed_url.host
|
||||||
self.datapath = host .. '/data/' .. self.titles.url .. '/'
|
self.datapath = host .. '/data/' .. self.titles.url .. '/'
|
||||||
self.latestpath = latest_path
|
self.latestpath = latest_path
|
||||||
self.latestname = latest_name
|
self.latestname = latest_name
|
||||||
|
self.latestsize = latest_size
|
||||||
|
self.latestdate = latest_date
|
||||||
|
self.datenow = hotmixes.utils.rss_date_now()
|
||||||
|
|
||||||
return { content_type = "application/rss+xml", layout = require "views.rss" }
|
return { content_type = "application/rss+xml", layout = require "views.rss" }
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ local function Latesthandler(self)
|
|||||||
local file_data = {}
|
local file_data = {}
|
||||||
|
|
||||||
file_data["name"] = latest_name[i]
|
file_data["name"] = latest_name[i]
|
||||||
file_data["url"] = data_path .. escape(file)
|
file_data["url"] = data_path .. file
|
||||||
|
|
||||||
table.insert(latest_json["files"], file_data)
|
table.insert(latest_json["files"], file_data)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
local to_json = require("lapis.util").to_json
|
|
||||||
local autoload = require("lapis.util").autoload
|
local autoload = require("lapis.util").autoload
|
||||||
local config = require("lapis.config")
|
local config = require("lapis.config")
|
||||||
local hotmixes = autoload("hotmixes")
|
local hotmixes = autoload("hotmixes")
|
||||||
@@ -17,6 +16,7 @@ local function Roothandler(self)
|
|||||||
self.images = stuff.images
|
self.images = stuff.images
|
||||||
self.latestpath = latest_path
|
self.latestpath = latest_path
|
||||||
self.latestname = latest_name
|
self.latestname = latest_name
|
||||||
|
self.functions = { hotesc = hotmixes.utils.hotesc }
|
||||||
|
|
||||||
if self.titles['url'] == "panamaracing.club" then
|
if self.titles['url'] == "panamaracing.club" then
|
||||||
return { render = "root", layout = require "views.prc_layout" }
|
return { render = "root", layout = require "views.prc_layout" }
|
||||||
|
|||||||
+79
-1
@@ -1,5 +1,6 @@
|
|||||||
local lfs = require 'lfs_ffi'
|
local lfs = require 'lfs_ffi'
|
||||||
local config = require("lapis.config").get()
|
local config = require("lapis.config").get()
|
||||||
|
local escape = require("lapis.util").escape
|
||||||
|
|
||||||
|
|
||||||
-- setup
|
-- setup
|
||||||
@@ -25,10 +26,15 @@ local data_path = data_dir .. request_path
|
|||||||
|
|
||||||
local type_image = { jpg=true, jpeg=true, png=true, gif=true }
|
local type_image = { jpg=true, jpeg=true, png=true, gif=true }
|
||||||
local type_media = { mp3=true, flac=true, wav=true, mp4=true }
|
local type_media = { mp3=true, flac=true, wav=true, mp4=true }
|
||||||
|
local type_audio = { mp3=true, flac=true, wav=true }
|
||||||
local type_allowed = { jpg=true, jpeg=true, png=true, gif=true, mp3=true, flac=true, wav=true, mp4=true }
|
local type_allowed = { jpg=true, jpeg=true, png=true, gif=true, mp3=true, flac=true, wav=true, mp4=true }
|
||||||
|
|
||||||
local utils = {}
|
local utils = {}
|
||||||
|
|
||||||
|
local function hotesc ( str )
|
||||||
|
return escape(str):gsub("%%2f", "/"):gsub("%%2d", "-"):gsub("%%2e", ".")
|
||||||
|
end
|
||||||
|
|
||||||
utils['request_path'] = request_path
|
utils['request_path'] = request_path
|
||||||
utils['data_path'] = data_path
|
utils['data_path'] = data_path
|
||||||
|
|
||||||
@@ -55,6 +61,19 @@ utils['latest_files'] = function( directory )
|
|||||||
return t
|
return t
|
||||||
end
|
end
|
||||||
|
|
||||||
|
utils['latest_audio'] = function( directory )
|
||||||
|
local i, t, popen = 0, {}, io.popen
|
||||||
|
local pfile = popen('find -L "'..directory..'" -type f ! -name \'*.filepart\' ! -name \'*.mp4\' ! -name \'*.png\' ! -name \'*.jpg\' ! -name \'*.jpeg\' ! -name \'*.gif\' -printf \'%C@ %p\n\'| sort -nr | head -7 | cut -f2- -d" "| sed s:"'..directory..'/"::')
|
||||||
|
for filename in pfile:lines() do
|
||||||
|
if utils.match_ext ( filename, type_audio ) then
|
||||||
|
i = i + 1
|
||||||
|
t[i] = filename
|
||||||
|
end
|
||||||
|
end
|
||||||
|
pfile:close()
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
utils['these_files'] = function( path )
|
utils['these_files'] = function( path )
|
||||||
local files, dirs, images = {}, {}, {}
|
local files, dirs, images = {}, {}, {}
|
||||||
for file in lfs.dir( path ) do
|
for file in lfs.dir( path ) do
|
||||||
@@ -83,12 +102,17 @@ utils['these_files'] = function( path )
|
|||||||
return stuff
|
return stuff
|
||||||
end
|
end
|
||||||
|
|
||||||
|
utils['hotesc'] = function( str )
|
||||||
|
return hotesc(str)
|
||||||
|
end
|
||||||
|
|
||||||
utils['these_latest'] = function( path )
|
utils['these_latest'] = function( path )
|
||||||
-- list last 10 modified files in our directory
|
-- list last 10 modified files in our directory
|
||||||
local latest_path, latest_name = {}, {}
|
local latest_path, latest_name = {}, {}
|
||||||
|
|
||||||
for i, file_path in ipairs( utils.latest_files( path ) ) do
|
for i, file_path in ipairs( utils.latest_files( path ) ) do
|
||||||
table.insert( latest_path, file_path)
|
local escpath = hotesc(file_path)
|
||||||
|
table.insert( latest_path, escpath )
|
||||||
|
|
||||||
local temp = ""
|
local temp = ""
|
||||||
local result = ""
|
local result = ""
|
||||||
@@ -110,6 +134,51 @@ utils['these_latest'] = function( path )
|
|||||||
return latest_path, latest_name
|
return latest_path, latest_name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
utils['rss_latest'] = function( path )
|
||||||
|
local latest_path, latest_name, latest_size, latest_date = {}, {}, {}, {}
|
||||||
|
|
||||||
|
for i, file_path in ipairs( utils.latest_audio( path ) ) do
|
||||||
|
local popen = io.popen
|
||||||
|
|
||||||
|
-- get the size of the file
|
||||||
|
local psize = popen('wc -c <'..path..'/'..file_path)
|
||||||
|
for size in psize:lines() do
|
||||||
|
ngx.log(ngx.INFO, size)
|
||||||
|
table.insert( latest_size, size)
|
||||||
|
end
|
||||||
|
psize:close()
|
||||||
|
|
||||||
|
-- get the date of the file
|
||||||
|
local pdate = popen('date -d @$(stat -c "%Y" '..path..'/'..file_path..') "+%a, %-d %b %Y %H:%M:%S %Z"')
|
||||||
|
for date in pdate:lines() do
|
||||||
|
table.insert( latest_date, date )
|
||||||
|
end
|
||||||
|
pdate:close()
|
||||||
|
|
||||||
|
local escpath = hotesc(file_path)
|
||||||
|
table.insert( latest_path, escpath )
|
||||||
|
|
||||||
|
local temp = ""
|
||||||
|
local result = ""
|
||||||
|
for i = file_path:len(), 1, -1 do
|
||||||
|
if file_path:sub(i,i) ~= "/" then
|
||||||
|
temp = temp..file_path:sub(i,i)
|
||||||
|
else
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for j = temp:len(), 1, -1 do
|
||||||
|
result = result..temp:sub(j,j)
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert( latest_name, result )
|
||||||
|
end
|
||||||
|
|
||||||
|
return latest_path, latest_name, latest_size, latest_date
|
||||||
|
end
|
||||||
|
|
||||||
utils['total_files_dir'] = function( path )
|
utils['total_files_dir'] = function( path )
|
||||||
local i, t, popen = 0, {}, io.popen
|
local i, t, popen = 0, {}, io.popen
|
||||||
local pfile = popen('find "'..path..'" -type f | wc -l')
|
local pfile = popen('find "'..path..'" -type f | wc -l')
|
||||||
@@ -121,4 +190,13 @@ utils['total_files_dir'] = function( path )
|
|||||||
return t
|
return t
|
||||||
end
|
end
|
||||||
|
|
||||||
|
utils['rss_date_now'] = function()
|
||||||
|
local popen = io.popen
|
||||||
|
local pdate = popen('date "+%a, %-d %b %Y %H:%M:%S %Z"')
|
||||||
|
for date in pdate:lines() do
|
||||||
|
return date
|
||||||
|
end
|
||||||
|
pdate:close()
|
||||||
|
end
|
||||||
|
|
||||||
return utils
|
return utils
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
+308
-332
@@ -7,254 +7,235 @@
|
|||||||
--ifm-white: #ffffff;
|
--ifm-white: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: clamp(1rem, 0.95rem + 0.2vw, 1.125rem);
|
||||||
|
}
|
||||||
|
|
||||||
.h1
|
body {
|
||||||
{
|
margin-top: 1em;
|
||||||
font-family: Helvetica;
|
margin-bottom: 1em;
|
||||||
font-size: 16px;
|
background-color: var(--ifm-black);
|
||||||
color: var(--ifm-white);
|
color: var(--ifm-white);
|
||||||
padding-top: 5px;
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
padding-bottom: 5px;
|
}
|
||||||
margin-bottom: 15px;
|
|
||||||
margin-top: 10px;
|
.header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
color: var(--ifm-white);
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: min(80%, 900rem);
|
||||||
|
/* 1600px */
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-grid {
|
||||||
|
display: grid;
|
||||||
|
width: 100%;
|
||||||
|
grid-template-columns: auto 1fr;
|
||||||
|
gap: 0;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-link {
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brand-logos {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brand-logos img {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
max-width: none;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prc-stripes,
|
||||||
|
.header-title {
|
||||||
|
grid-column: 1 / span 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.prc-stripes {
|
||||||
|
width: 100%;
|
||||||
|
--square: 0.55rem;
|
||||||
|
/* 10px */
|
||||||
|
height: calc(var(--square) * 3);
|
||||||
|
background:
|
||||||
|
conic-gradient(from 90deg at 50% 50%, #000 0 25%, #fff 0 50%, #000 0 75%, #fff 0) 0 0 / calc(var(--square) * 2) calc(var(--square) * 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-title {
|
||||||
|
margin: 0.625rem 0 0.9375rem;
|
||||||
|
/* 10px 0 15px */
|
||||||
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
|
font-size: clamp(1.2rem, 1.2rem + 0.5vw, 2rem);
|
||||||
|
line-height: 1em;
|
||||||
|
color: inherit;
|
||||||
|
padding-left: 4rem;
|
||||||
|
padding-top: 1rem;
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h1 {
|
||||||
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
|
font-size: clamp(1.3rem, 1.3rem + 0.5vw, 2rem);
|
||||||
|
color: var(--ifm-white);
|
||||||
|
padding-top: 0.3125rem;
|
||||||
|
/* 5px */
|
||||||
|
padding-bottom: 0.3125rem;
|
||||||
|
/* 5px */
|
||||||
|
margin-bottom: 0.9375rem;
|
||||||
|
/* 15px */
|
||||||
|
margin-top: 0.625rem;
|
||||||
|
/* 10px */
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p
|
.href {
|
||||||
{
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
font-family: Helvetica;
|
|
||||||
font-size: 6px;
|
|
||||||
color: var(--ifm-grey);
|
|
||||||
margin-bottom: 45px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.href
|
|
||||||
{
|
|
||||||
font-family: Helvetica;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mixlink
|
.mixlink {
|
||||||
{
|
line-height: 1rem;
|
||||||
line-height: 16px;
|
/* 16px */
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 10px;
|
font-size: clamp(0.6rem, 0.6rem + 0.2vw, 1rem);
|
||||||
margin-bottom: 0;
|
/* 10px */
|
||||||
margin-top: 0;
|
margin: 0;
|
||||||
font-family: Helvetica;
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.amixlink
|
.amixlink {
|
||||||
{
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
font-family: Helvetica;
|
|
||||||
color: var(--ifm-grey);
|
color: var(--ifm-grey);
|
||||||
line-height: 1.6em;
|
line-height: 1.6em;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 10px;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
background: var(--ifm-deep-black);
|
background: var(--ifm-deep-black);
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
margin-top: 2px;
|
margin: 0.125rem 0;
|
||||||
margin-bottom: 2px;
|
/* 2px 0 */
|
||||||
padding: 2px 10px;
|
padding: 0.125rem 0.625rem;
|
||||||
border-radius: 20px;
|
/* 2px 10px */
|
||||||
|
border-radius: 1.25rem;
|
||||||
|
/* 20px */
|
||||||
|
font-size: clamp(0.6rem, 0.6rem + 0.2vw, 1rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
.amixlink:hover
|
|
||||||
{
|
.amixlink:hover {
|
||||||
color: #000;
|
color: #000;
|
||||||
background: var(--ifm-red);
|
background: var(--ifm-red);
|
||||||
}
|
}
|
||||||
|
|
||||||
.body
|
.mixsections {
|
||||||
{
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
width: 100%;
|
|
||||||
background-color: var(--ifm-black);
|
|
||||||
}
|
|
||||||
|
|
||||||
.mixsections
|
|
||||||
{
|
|
||||||
font-family: Helvetica;
|
|
||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
font-size: 12px;
|
|
||||||
color: var(--ifm-grey);
|
color: var(--ifm-grey);
|
||||||
padding: 5px;
|
padding: 0.3125rem;
|
||||||
|
/* 5px */
|
||||||
margin-top: 2%;
|
margin-top: 2%;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 0.3125rem;
|
||||||
margin-right: 15px;
|
/* 5px */
|
||||||
border: solid 3px var(--ifm-grey);
|
margin-right: 0.9375rem;
|
||||||
|
/* 15px */
|
||||||
|
border: solid 0.1875rem var(--ifm-grey);
|
||||||
|
/* 3px */
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prclogo
|
.prclogo {
|
||||||
{
|
height: 7.5rem;
|
||||||
height: 120px;
|
/* 120px */
|
||||||
padding-bottom: 10px;
|
padding: 0.625rem 0 0.625rem 0.625rem;
|
||||||
padding-left: 10px;
|
/* 10px 0 10px 10px */
|
||||||
padding-top: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.divider
|
.divider {
|
||||||
{
|
height: 1.4375rem;
|
||||||
height: 23px;
|
/* 23px */
|
||||||
padding-bottom: 10px;
|
padding: 0.625rem 0 0.625rem 0.625rem;
|
||||||
padding-left: 10px;
|
/* 10px 0 10px 10px */
|
||||||
padding-top: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.h2
|
.footer {
|
||||||
{
|
|
||||||
font-family: Helvetica;
|
|
||||||
font-size: 24px;
|
|
||||||
color: var(--ifm-grey);
|
|
||||||
font-weight: 200;
|
|
||||||
border-bottom: 2px solid var(--ifm-grey);
|
|
||||||
margin-bottom: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header
|
|
||||||
{
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-height: 120px;
|
height: 15.625rem;
|
||||||
}
|
/* 250px */
|
||||||
|
border-top: 0.125rem solid var(--ifm-red);
|
||||||
.footer
|
/* 2px */
|
||||||
{
|
|
||||||
width: 100%;
|
|
||||||
height: 250px;
|
|
||||||
border-top: 2px solid var(--ifm-red);
|
|
||||||
float: left;
|
float: left;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.djsectionmenu
|
.djsection {
|
||||||
{
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
font-family: Helvetica;
|
|
||||||
font-size: 18px;
|
|
||||||
color: var(--ifm-red);
|
|
||||||
line-height: 1em;
|
|
||||||
z-index: 100;
|
|
||||||
display: block;
|
|
||||||
width: 10%;
|
|
||||||
height: 130px;
|
|
||||||
float: left;
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
min-width: 130px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.djsectionmenu:hover
|
|
||||||
{
|
|
||||||
background-color: #e3301a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.djsection
|
|
||||||
{
|
|
||||||
font-family: Helvetica;
|
|
||||||
font-size: 18px;
|
|
||||||
text-decoration: inherit;
|
text-decoration: inherit;
|
||||||
color: var(--ifm-red);
|
color: var(--ifm-red);
|
||||||
|
font-size: clamp(1.3rem, 1rem + 1.5vw, 2rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
.djsection:hover
|
.djsection:hover {
|
||||||
{
|
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.h2
|
.homeheader {
|
||||||
{
|
|
||||||
font-family: Helvetica;
|
|
||||||
color: var(--ifm-red);
|
|
||||||
font-size: 16px;
|
|
||||||
padding-top: 5px;
|
|
||||||
border-bottom: 2px solid var(--ifm-red);
|
|
||||||
}
|
|
||||||
|
|
||||||
.homeheader
|
|
||||||
{
|
|
||||||
background-image: url('/img/header.png');
|
background-image: url('/img/header.png');
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 1.25rem;
|
||||||
|
/* 20px */
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottomimg
|
.bottomimg {}
|
||||||
{
|
|
||||||
|
.imglink {
|
||||||
|
width: 12.5rem;
|
||||||
|
/* 200px */
|
||||||
}
|
}
|
||||||
|
|
||||||
.imglink
|
.column {
|
||||||
{
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footerlegal
|
|
||||||
{
|
|
||||||
right: 0;
|
|
||||||
float: right;
|
|
||||||
margin-top: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Three image containers (use 25% for four, and 50% for two, etc) */
|
|
||||||
|
|
||||||
.column
|
|
||||||
{
|
|
||||||
float: left;
|
float: left;
|
||||||
margin-left: 0px;
|
margin-left: 0;
|
||||||
padding-left: 2.5%;
|
padding-left: 2.5%;
|
||||||
padding-right: 2.5%;
|
padding-right: 2.5%;
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear floats after image containers */
|
.row::after {
|
||||||
|
|
||||||
.row::after
|
|
||||||
{
|
|
||||||
content: "";
|
content: "";
|
||||||
clear: both;
|
clear: both;
|
||||||
display: table;
|
display: table;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 768px)
|
.content {
|
||||||
{
|
padding-left: 4rem;
|
||||||
.column
|
width: min(90%, 100rem);
|
||||||
{
|
|
||||||
padding-left: 5%;
|
|
||||||
padding-right: 5%;
|
|
||||||
width: 40%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer
|
.latest {
|
||||||
{
|
max-width: 90%;
|
||||||
margin-top: 15%;
|
padding-bottom: 1rem;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 500px)
|
.linkimg:hover {
|
||||||
{
|
filter: invert(70%);
|
||||||
.column
|
|
||||||
{
|
|
||||||
padding-left: 0%;
|
|
||||||
padding-right: 5%;
|
|
||||||
width: 45%;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.profileimg
|
.image_collage {
|
||||||
{
|
|
||||||
overflow: hidden;
|
|
||||||
height: auto;
|
|
||||||
width: 30%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profilesection
|
|
||||||
{
|
|
||||||
width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-bottom: 2.5%;
|
|
||||||
background-color: var(--ifm-red);
|
|
||||||
}
|
|
||||||
|
|
||||||
.image_collage
|
|
||||||
{
|
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
-webkit-column-count: 5;
|
-webkit-column-count: 5;
|
||||||
-webkit-column-gap: 0px;
|
-webkit-column-gap: 0px;
|
||||||
@@ -264,205 +245,200 @@
|
|||||||
column-gap: 0px;
|
column-gap: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image_collage img
|
.image_collage img {
|
||||||
{
|
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1200px)
|
img {
|
||||||
{
|
max-width: 100%;
|
||||||
.image_collage
|
|
||||||
{
|
|
||||||
-moz-column-count: 4;
|
|
||||||
-webkit-column-count: 4;
|
|
||||||
column-count: 4;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1000px)
|
/* RESPONSIVE CSS FOR DIFFERENT DEVICES */
|
||||||
{
|
|
||||||
.image_collage
|
/* ===========================
|
||||||
{
|
MOBILE (till 600px)
|
||||||
-moz-column-count: 3;
|
=========================== */
|
||||||
-webkit-column-count: 3;
|
@media (max-width: 600px) {
|
||||||
column-count: 3;
|
|
||||||
}
|
.container {
|
||||||
|
width: 90%;
|
||||||
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 800px)
|
.header {
|
||||||
{
|
flex-direction: column;
|
||||||
.image_collage
|
align-items: flex-start;
|
||||||
{
|
|
||||||
-moz-column-count: 2;
|
|
||||||
-webkit-column-count: 2;
|
|
||||||
column-count: 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 400px)
|
.header-grid {
|
||||||
{
|
grid-template-columns: 1fr;
|
||||||
.image_collage
|
gap: 0.75rem;
|
||||||
{
|
|
||||||
-moz-column-count: 1;
|
|
||||||
-webkit-column-count: 1;
|
|
||||||
column-count: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.content
|
.brand-logos {
|
||||||
{
|
justify-content: flex-start;
|
||||||
width: 80%;
|
flex-wrap: wrap;
|
||||||
padding-left: 10%;
|
gap: 0.25rem;
|
||||||
padding-right: 10%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.latest
|
.brand-logos img {
|
||||||
{
|
max-width: 40%;
|
||||||
position: relative;
|
height: auto;
|
||||||
clear: both;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.latestdiv
|
.prc-stripes,
|
||||||
{
|
.header-title {
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-title {
|
||||||
|
padding: 0.75rem 1rem;
|
||||||
|
margin: 0.5rem 0 0.75rem;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h1 {
|
||||||
|
font-size: clamp(1.4rem, 4vw, 1.8rem);
|
||||||
|
margin-top: 0.25rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.djsection {
|
||||||
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
position: relative;
|
|
||||||
clear: both;
|
|
||||||
float: left;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.sponsors
|
.column {
|
||||||
{
|
width: 100%;
|
||||||
margin-top: 20px;
|
float: none;
|
||||||
clear: both;
|
padding-left: 0;
|
||||||
float: left;
|
padding-right: 0;
|
||||||
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.linkimg:hover
|
.content {
|
||||||
{
|
padding: 0.75rem 1rem;
|
||||||
filter: invert(70%);
|
margin: 0.5rem 0 0.75rem;
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width:499px)
|
.footer {
|
||||||
{
|
height: auto;
|
||||||
.djsectionmenu500
|
padding: 1.5rem 0;
|
||||||
{
|
}
|
||||||
height: 70px;
|
|
||||||
overflow: hidden;
|
.imglink {
|
||||||
min-width: 60px;
|
width: 9rem;
|
||||||
width: 50%;
|
/* 144px circa */
|
||||||
|
}
|
||||||
|
|
||||||
|
.prclogo {
|
||||||
|
height: 5rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottomimg img,
|
||||||
|
.linkimg img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 600px) {
|
/* ===========================
|
||||||
|
TABLET (601px – 900px)
|
||||||
|
=========================== */
|
||||||
|
@media (min-width: 601px) and (max-width: 900px) {
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-grid {
|
||||||
|
grid-template-columns: auto 1fr;
|
||||||
|
gap: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-title {
|
||||||
|
padding-left: 2rem;
|
||||||
|
padding-right: 2rem;
|
||||||
|
padding-top: 0.75rem;
|
||||||
|
padding-bottom: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
.h1 {
|
.h1 {
|
||||||
font-size: 18px;
|
font-size: clamp(1.6rem, 3vw, 2.2rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
.p
|
.column {
|
||||||
{
|
width: 45%;
|
||||||
font-size: 8px;
|
float: left;
|
||||||
|
padding-left: 2%;
|
||||||
|
padding-right: 2%;
|
||||||
|
margin-bottom: 1.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mixlink
|
.content {
|
||||||
{
|
padding-left: 2rem;
|
||||||
font-size: 12px;
|
padding-right: 2rem;
|
||||||
|
padding-top: 0.75rem;
|
||||||
|
padding-bottom: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.amixlink
|
.footer {
|
||||||
{
|
height: auto;
|
||||||
font-size: 12px;
|
padding: 2rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mixsections
|
.footerlegal {
|
||||||
{
|
float: right;
|
||||||
font-size: 14px;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.h2
|
.imglink {
|
||||||
{
|
width: 11rem;
|
||||||
font-size: 18px;
|
/* 176px circa */
|
||||||
}
|
}
|
||||||
|
|
||||||
.header
|
|
||||||
{
|
|
||||||
max-height: 180px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.prclogo
|
/* ===========================
|
||||||
{
|
SMALL DESKTOP (901px – 1200px)
|
||||||
height: 180px;
|
=========================== */
|
||||||
|
@media (min-width: 901px) and (max-width: 1200px) {
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 85%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.divider
|
.header-title {
|
||||||
{
|
padding-left: 3rem;
|
||||||
height: 35px;
|
padding-right: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.djsectionmenu
|
.column {
|
||||||
{
|
width: 22%;
|
||||||
font-size: 25px;
|
padding-left: 1.5%;
|
||||||
|
padding-right: 1.5%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.djsection
|
.content {
|
||||||
{
|
padding-left: 3rem;
|
||||||
font-size: 28px;
|
padding-right: 5rem;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (min-width: 768px) {
|
|
||||||
.h1{
|
|
||||||
font-size: 26px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.p
|
|
||||||
{
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mixlink
|
|
||||||
{
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.amixlink
|
|
||||||
{
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mixsections
|
|
||||||
{
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.h2
|
|
||||||
{
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header
|
|
||||||
{
|
|
||||||
max-height: 220px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prclogo
|
|
||||||
{
|
|
||||||
height: 220px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider
|
|
||||||
{
|
|
||||||
height: 43px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.djsectionmenu
|
|
||||||
{
|
|
||||||
font-size: 33px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.djsection
|
|
||||||
{
|
|
||||||
font-size: 33px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<br>
|
<br>
|
||||||
<h1 class="h1">Latest uploads:</h1>
|
<h1 class="h1">Latest uploads:</h1>
|
||||||
<% for i, file in ipairs(latestpath) do %>
|
<% for i, file in ipairs(latestpath) do %>
|
||||||
<a class="amixlink" href="<%= '/data/' .. titles.url .. '/' .. file:gsub("#", "%%23") %>">
|
<a class="amixlink" href="<%= '/data/' .. titles.url .. '/' .. file %>">
|
||||||
<span class="mixlink"><%= latestname[i] %></span>
|
<span class="mixlink"><%= latestname[i] %></span>
|
||||||
</a>
|
</a>
|
||||||
</br>
|
</br>
|
||||||
|
|||||||
@@ -12,20 +12,34 @@
|
|||||||
<link rel="stylesheet" href="/static/<%= titles.css %>">
|
<link rel="stylesheet" href="/static/<%= titles.css %>">
|
||||||
</head>
|
</head>
|
||||||
<body class="body">
|
<body class="body">
|
||||||
|
<div class="container">
|
||||||
<header class="header">
|
<header class="header">
|
||||||
<a href="/"><img src="/static/<%= titles['header'] %>" alt="prc logo" class="prclogo"/></a>
|
<div class="header-grid">
|
||||||
</header>
|
<a href="/" class="header-link">
|
||||||
<div class="content">
|
<div class="brand-logos">
|
||||||
<h1 class="h1">Tons Of Mix - Downloads & Streams (right click + Save link as... for downloads)<br>
|
<img src="/static/PRC-Car.png" alt="Panama Racing Club car">
|
||||||
|
<img src="/static/PRC-Text.png" alt="Panama Racing Club">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div class="prc-stripes" aria-hidden="true"></div>
|
||||||
|
|
||||||
|
<h1 class="header-title">
|
||||||
|
Tons Of Mix - Downloads & Streams (right click + Save link as... for downloads)<br>
|
||||||
<%= titles.name %><br>
|
<%= titles.name %><br>
|
||||||
Sharing <%= total[0] %> files
|
Sharing <%= total[0] %> files
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
|
<div class="prc-stripes" aria-hidden="true"></div>
|
||||||
</div>
|
</div>
|
||||||
<img class="divider" src="/static/panamaracing.club_divider.png">
|
</header>
|
||||||
|
|
||||||
|
<br>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<% content_for("inner") %>
|
<% content_for("inner") %>
|
||||||
</div>
|
</div>
|
||||||
<img class="divider" src="/static/panamaracing.club_divider.png">
|
<br>
|
||||||
|
<div class="prc-stripes" aria-hidden="true"></div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<section class="latest">
|
<section class="latest">
|
||||||
<div class="latest_files">
|
<div class="latest_files">
|
||||||
@@ -39,6 +53,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<img class="divider" src="/static/panamaracing.club_divider.png">
|
<br>
|
||||||
|
<div class="prc-stripes" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -10,13 +10,13 @@
|
|||||||
|
|
||||||
<% for i, dir in ipairs(dirs) do %>
|
<% for i, dir in ipairs(dirs) do %>
|
||||||
<br>
|
<br>
|
||||||
<a href="<%= uri .. dir %>" class="djsection"><span><%= dir %></span></a>
|
<a href="<%- functions.hotesc(uri .. dir) %>" class="djsection"><span><%= dir %></span></a>
|
||||||
<br>
|
<br>
|
||||||
<% end %>
|
<% end %>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<% for i, file in ipairs(files) do %>
|
<% for i, file in ipairs(files) do %>
|
||||||
<a class="amixlink" href="<%= path .. file:gsub("#", "%%23") %>">
|
<a class="amixlink" href="<%- functions.hotesc(path .. file) %>">
|
||||||
<span class="mixlink"><%= file %></span>
|
<span class="mixlink"><%= file %></span>
|
||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
|
|||||||
+27
-6
@@ -1,17 +1,38 @@
|
|||||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
<rss version="2.0"
|
||||||
|
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
|
||||||
|
xmlns:podcast="https://podcastindex.org/namespace/1.0"
|
||||||
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||||
|
xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||||
|
|
||||||
<channel>
|
<channel>
|
||||||
<atom:link href="https://<%= titles['url'] %>/latest.xml" rel="self" type="application/rss+xml" />
|
<atom:link href="https://<%= titles['url'] %>/latest.rss"
|
||||||
|
rel="self" type="application/rss+xml" />
|
||||||
<title><%= titles['name'] %></title>
|
<title><%= titles['name'] %></title>
|
||||||
<link>https://<%= titles['url'] %></link>
|
<link>https://<%= titles['url'] %></link>
|
||||||
<description>Latest uploads</description>
|
<language>en-us</language>
|
||||||
|
<itunes:author>Intergalactic FM</itunes:author>
|
||||||
|
<itunes:owner>
|
||||||
|
<itunes:name>Intergalactic FM</itunes:name>
|
||||||
|
</itunes:owner>
|
||||||
|
<description>Latest audio uploads on <%= titles['name'] %></description>
|
||||||
|
<itunes:summary>Latest audio uploads on <%= titles['name'] %></itunes:summary>
|
||||||
|
<itunes:explicit>false</itunes:explicit>
|
||||||
|
<itunes:category text="Music">
|
||||||
|
<itunes:category text="Electronic"/>
|
||||||
|
</itunes:category>
|
||||||
|
<itunes:image href="https://intergalactic.fm/themes/custom/ifm/logo.svg"/>
|
||||||
|
<lastBuildDate><%= datenow %></lastBuildDate>
|
||||||
|
<podcast:guid>intergalactic-fm-<%= titles['feed'] %>-feed</podcast:guid>
|
||||||
|
|
||||||
<% for i, file in ipairs(latestpath) do %>
|
<% for i, file in ipairs(latestpath) do %>
|
||||||
<item>
|
<item>
|
||||||
<title><%= latestname[i] %></title>
|
<title><%= latestname[i] %></title>
|
||||||
<link><%= datapath .. file:gsub("#", "%%23") %></link>
|
<enclosure url="<%= datapath .. file %>" length="<%= latestsize[i] %>" type="audio/mpeg"/>
|
||||||
|
<guid><%= datapath .. file %></guid>
|
||||||
|
<pubDate><%= latestdate[i] %></pubDate>
|
||||||
<description><![CDATA[<%= latestname[i] %>]]></description>
|
<description><![CDATA[<%= latestname[i] %>]]></description>
|
||||||
<guid><%= datapath .. file:gsub("#", "%%23") %></guid>
|
<itunes:explicit>false</itunes:explicit>
|
||||||
</item>
|
</item>
|
||||||
<% end %>
|
<% end %>
|
||||||
</channel>
|
</channel>
|
||||||
|
|||||||
+2
-2
@@ -8,12 +8,12 @@ services:
|
|||||||
- /data:/mnt/data:ro
|
- /data:/mnt/data:ro
|
||||||
labels:
|
labels:
|
||||||
- traefik.enable=true
|
- traefik.enable=true
|
||||||
- traefik.http.routers.hotmixes.rule=Host(`videohotmix.net`) || Host(`www.videohotmix.net`) || Host(`panamaracing.club`) || Host(`hotmixxx.com`)
|
- traefik.http.routers.hotmixes.rule=Host(`videohotmix.net`) || Host(`www.videohotmix.net`) || Host(`panamaracing.club`) || Host(`hotmixxx.com`) || Host(`hotmixes.net`) || Host(`www.hotmixes.net`)
|
||||||
- traefik.http.routers.hotmixes.entrypoints=web
|
- traefik.http.routers.hotmixes.entrypoints=web
|
||||||
- traefik.http.routers.hotmixes.middlewares=redirect-https-hotmixes
|
- traefik.http.routers.hotmixes.middlewares=redirect-https-hotmixes
|
||||||
- traefik.http.middlewares.redirect-https-hotmixes.redirectscheme.scheme=https
|
- traefik.http.middlewares.redirect-https-hotmixes.redirectscheme.scheme=https
|
||||||
|
|
||||||
- traefik.http.routers.hotmixes_ssl.rule=Host(`videohotmix.net`) || Host(`www.videohotmix.net`) || Host(`panamaracing.club`) || Host(`hotmixxx.com`)
|
- traefik.http.routers.hotmixes_ssl.rule=Host(`videohotmix.net`) || Host(`www.videohotmix.net`) || Host(`panamaracing.club`) || Host(`hotmixxx.com`) || Host(`hotmixes.net`) || Host(`www.hotmixes.net`)
|
||||||
- traefik.http.routers.hotmixes_ssl.entrypoints=websecure
|
- traefik.http.routers.hotmixes_ssl.entrypoints=websecure
|
||||||
- traefik.http.routers.hotmixes_ssl.tls.certresolver=myresolver
|
- traefik.http.routers.hotmixes_ssl.tls.certresolver=myresolver
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user