<%# InfinityFreedom-NG (Next Generation) is a clean HTML5 theme for LuCI. luci-theme-infinityfreedom-ng Copyright 2024 Eric Have a bug? Please create an issue here on GitHub! https://github.com/xiaoqingfengATGH/luci-theme-infinityfreedom/issues Licensed to the public under the Apache License 2.0 -%> <% local ver = require "luci.version" local sys = require "luci.sys" local util = require "luci.util" local http = require "luci.http" local disp = require "luci.dispatcher" local boardinfo = util.ubus("system", "board") local boardinfo={} boardinfo.hostname=sys.hostname() local request = disp.context.path local request2 = disp.context.request local category = request[1] local cattree = category and disp.node(category) local leaf = request2[#request2] local tree = disp.node() local node = disp.context.dispatched local categories = disp.node_childs(tree) local c = tree local i, r -- tag all nodes leading to this page for i, r in ipairs(request) do if c.nodes and c.nodes[r] then c = c.nodes[r] c._menu_selected = true end end -- send as HTML5 http.prepare_content("text/html") local function nodeurl(prefix, name, query) local u = url(prefix, name) if query then u = u .. http.build_querystring(query) end return pcdata(u) end local function render_subtabmenu_asJson(prefix, node, level) if not level then level = 1 end local childs = disp.node_childs(node) if #childs > 0 then if level > 2 then write('var level%sMenu=[' %{level}) end local selected_node local selected_name local i, v for i, v in ipairs(childs) do local nnode = node.nodes[v] if nnode._menu_selected then selected_node = nnode selected_name = v end if level > 2 then write('{') write('"name":"%s",' %{v}) write('"active":%s,' %{(nnode._menu_selected or (node.leaf and v == leaf)) and 'true' or 'false'}) write('"href":"%s",' %{nodeurl(prefix, v, nnode.query)}) write('"title":"%s"' %{striptags(translate(nnode.title))}) write('}') if next(childs,i) ~= nil then write(',') end end end if level > 2 then write('];') end if selected_node then render_subtabmenu_asJson(prefix .. "/" .. selected_name, selected_node, level + 1) end end end local function render_tabmenu_asJson(prefix, node, level) if not level then level = 1 end local childs = disp.node_childs(node) if #childs > 0 then if level > 2 then write('var level%sMenu=[' %{level}) end local selected_node local selected_name local i, v for i, v in ipairs(childs) do local nnode = node.nodes[v] if nnode._menu_selected then selected_node = nnode selected_name = v end if level > 2 then write('{') write('"name":"%s",' %{v}) write('"active":%s,' %{(nnode._menu_selected or (node.leaf and v == leaf)) and 'true' or 'false'}) write('"href":"%s",' %{nodeurl(prefix, v, nnode.query)}) write('"title":"%s"' %{striptags(translate(nnode.title))}) write('}') if next(childs,i) ~= nil then write(',') end end end if level > 2 then write('];') end if selected_node then render_subtabmenu_asJson(prefix .. "/" .. selected_name, selected_node, level + 1) end end end local function render_submenu_asJson(prefix, node) local childs = disp.node_childs(node) if #childs > 0 then write(',"subs": [') for i, r in ipairs(childs) do local nnode = node.nodes[r] local title = pcdata(striptags(translate(nnode.title))) write('{"data-title":"%s",' %{title}) write('"href":"%s",' %{nodeurl(prefix, r, nnode.query)}) write('"title":"%s"}' %{title}) if next(childs,i) ~= nil then write(',') end end write(']') end end local function render_topmenu_asJson() -- write('') end local function render_changes_asJson() -- calculate the number of unsaved changes if tree.nodes[category] and tree.nodes[category].ucidata then local ucichanges = 0 for i, j in pairs(require("luci.model.uci").cursor():changes()) do for k, l in pairs(j) do for m, n in pairs(l) do ucichanges = ucichanges + 1; end end end if ucichanges > 0 then -- write('') end end end local function exec_command(command) local handle = io.popen(command) local result = handle:read("*a") -- 读取所有输出 handle:close() return result end local function detectAdGuardHome() local host = exec_command("uci show network | grep network.lan.ipaddr|cut -d \"'\" -f 2") if #host > 0 then host = host:gsub("[\r\n]", "") end local adGuardUrl = "http://" .. host .. ":3000" local adGuardHomeRespCode = exec_command("wget --server-response --spider \"" .. adGuardUrl .. "\" 2>&1 | awk '/HTTP\\// {print $2; exit}'") if adGuardHomeRespCode~=nil and #adGuardHomeRespCode > 0 then write("const RouterHost=\"" .. host .. "\", AdGuardReady = true, AdGuardUrl = \"" .. adGuardUrl .. "\";") end end -%> <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI - LuCI"> - LuCI"> <% if node and node.css then %> <% end -%> <% if css then %> <% end -%>
<%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%>

<%:No password set!%>

<%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%>

<%- end -%>
加载中...