milestone 7d. Dynamic content: server-generated URL src-embeds

This commit is contained in:
Leon van Kammen 2026-08-25 13:04:06 +02:00
parent 3981800e42
commit 9b22ed13b4
3 changed files with 33 additions and 2 deletions

View file

@ -7,7 +7,7 @@ return {
middleware = function(req,res,next) middleware = function(req,res,next)
local rootpath = "/" .. app.opts.plugin_diskscan_dirname local rootpath = "/" .. app.opts.plugin_diskscan_dirname
local urlpath = req.url local urlpath = req.url
local isroot = urlpath == "/" or urlpath:match("^"..rootpath.."[/]?$") local isroot = urlpath == "/" or urlpath:match("^"..rootpath.."[/]?$") or urlpath == '/index.html'
res.items = {} res.items = {}
res.template = res.template or 'page/dir.html' res.template = res.template or 'page/dir.html'
local isdir = urlpath:sub(-1) == "/" local isdir = urlpath:sub(-1) == "/"
@ -62,6 +62,7 @@ return {
items = {}, items = {},
isroot = isroot, isroot = isroot,
referrer = referrer, referrer = referrer,
req = req,
parent=res.parent, parent=res.parent,
template=res.template template=res.template
},{ opts = app.opts }) },{ opts = app.opts })

View file

@ -8,7 +8,7 @@
<link rel="stylesheet" href="css/xrforge.css"></link> <link rel="stylesheet" href="css/xrforge.css"></link>
${opts.plugin_global_header_html} ${opts.plugin_global_header_html}
<noscript> <noscript>
{if urlpath == '/' or urlpath == '/index.html' then {if isroot then
print('<meta http-equiv="refresh" content="0;url=${opts.plugin_diskscan_dirname}">') print('<meta http-equiv="refresh" content="0;url=${opts.plugin_diskscan_dirname}">')
end} end}
</noscript> </noscript>

View file

@ -117,6 +117,36 @@ end}
addPortal('parent',5, v, v.url, 0, 0, ' shader_id="defaultportal"', '0 -90 0', '0.2 0.2 0.2') addPortal('parent',5, v, v.url, 0, 0, ' shader_id="defaultportal"', '0 -90 0', '0.2 0.2 0.2')
end} end}
{if isroot then
local plugins = {}
foreach(app.plugin, function(name,p)
if not tostring(name):match("[0-9]") then table.insert(plugins,name) end
end)
local embedsrc = EscapeFragment(
"config\n======\n" ..
util.dump({
plugins = plugins,
host = app.host,
protocol = app.scheme,
convert_assimp_filetypes_in = app.opts.plugin_convert_assimp_filetypes_in,
convert_assimp_filetypes_out = app.opts.plugin_convert_assimp_filetypes_out,
janusxr_portalroom = app.opts.plugin_janusxr_wrap_video,
janusxr_wrap_3dfile = app.opts.plugin_janusxr_wrap_3dfile,
janusxr_wrap_video = app.opts.plugin_janusxr_wrap_video,
janusxr_wrap_aframe = app.opts.plugin_janusxr_wrap_aframe,
janusxr_janusweb_corsproxies = util.split("https://p.janusxr.org https://cors.xrforge.org"," ")
})
)
print([[
<text text="Server statistics" position="-3 2.5 0" scale="3 3 3" rotation="0 90 0"/>
<paragraph id="encoded" url="/statusz" rotation="0 90 0" use_proxy="false" cull_face='none' position="-3 1 0.7" width="400" height="900" scale="0.6 1.2 1" lighting="false" css=".paragraphcontainer{height:100%; white-space: pre ; display: block; unicode-bidi: embed; border-radius:10px; background:#000; color:#AFF; font-family:monospace; padding:20px;}"/>
<paragraph id="encoded" rotation="0 90 0" url="data:text/plain,]] .. embedsrc .. [[" use_proxy="false" cull_face='none' position="-3 1 -0.7" width="400" height="900" scale="0.6 1.2 1" lighting="false" css=".paragraphcontainer{height:100%; white-space: pre ; display: block; unicode-bidi: embed; border-radius:10px; background:#000; color:#FAF; font-family:monospace; padding:20px;"/>
]])
end}
<object id="cube" rotation="0 45 0" pos="${pos}" scale="2 0.1 2"/> <!-- something to stand on --> <object id="cube" rotation="0 45 0" pos="${pos}" scale="2 0.1 2"/> <!-- something to stand on -->
{if not defined(item) then {if not defined(item) then
print('${janusxr_jml_deco}') print('${janusxr_jml_deco}')