<%# Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI and Argon Template luci-theme-argon Copyright 2020 Jerryk Have a bug? Please create an issue here on GitHub! https://github.com/jerrykuku/luci-theme-argon/issues luci-theme-bootstrap: Copyright 2008 Steven Barth Copyright 2008-2016 Jo-Philipp Wich Copyright 2012 David Menting MUI: https://github.com/muicss/mui Argon Theme https://demos.creative-tim.com/argon-dashboard/index.html Licensed to the public under the Apache License 2.0 -%> <%+themes/argon/out_header_login%> <% local util = require "luci.util" local fs = require "nixio.fs" local nutil = require "nixio.util" local json = require "luci.jsonc" local sys = require "luci.sys" local uci = require 'luci.model.uci'.cursor() -- Fetch Local Background Media local function glob(...) local iter, code, msg = fs.glob(...) if iter then return nutil.consume(iter) else return nil, code, msg end end local imageTypes = " jpg png gif webp " local videoTypes = " mp4 webm " local allTypes = imageTypes .. videoTypes local function fetchMedia(path, themeDir) local backgroundTable = {} local backgroundCount = 0 for i, f in ipairs(glob(path)) do attr = fs.stat(f) if attr then local ext = fs.basename(f):match(".+%.(%w+)$") if ext ~= nil then ext = ext:lower() end if ext ~= nil and string.match(allTypes, " "..ext.." ") ~= nil then local bg = {} bg.type = ext bg.url = themeDir .. fs.basename(f) table.insert(backgroundTable, bg) backgroundCount = backgroundCount + 1 end end end return backgroundTable, backgroundCount end local function selectBackground(themeDir) local bgUrl = media .. "/img/bg1.jpg" local backgroundType = "Image" local mimeType = "" if fs.access("/etc/config/argon") then local online_wallpaper = uci:get_first('argon', 'global', 'online_wallpaper') or (uci:get_first('argon', 'global', 'bing_background') == '1' and 'bing') if (online_wallpaper and online_wallpaper ~= "none") then local picurl = sys.exec("/usr/libexec/argon/online_wallpaper") if (picurl and picurl ~= '') then return picurl, "Image", "" end end end local backgroundTable, backgroundCount = fetchMedia("/www" .. themeDir .. "*", themeDir) if ( backgroundCount > 0 ) then local currentBg = backgroundTable[math.random(1, backgroundCount)] bgUrl = currentBg.url if (string.match(videoTypes, " "..currentBg.type.." ") ~= nil) then backgroundType = "Video" mimeType = "video/" .. currentBg.type end end return bgUrl, backgroundType, mimeType end local boardinfo = util.ubus("system", "board") local themeDir = media .. "/background/" local bgUrl, backgroundType, mimeType = selectBackground(themeDir) %>