mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-12 18:41:51 +00:00
126 lines
4.8 KiB
HTML
126 lines
4.8 KiB
HTML
<%
|
|
-- all lua code provided by https://github.com/jow-/
|
|
-- thank you very much!
|
|
|
|
function apply_acls(filename, session)
|
|
local json = require "luci.jsonc"
|
|
local util = require "luci.util"
|
|
local fs = require "nixio.fs"
|
|
|
|
local grants = { }
|
|
|
|
local acl = json.parse(fs.readfile(filename))
|
|
if type(acl) ~= "table" then
|
|
return
|
|
end
|
|
|
|
local group, perms
|
|
for group, perms in pairs(acl) do
|
|
local perm, scopes
|
|
for perm, scopes in pairs(perms) do
|
|
if type(scopes) == "table" then
|
|
local scope, objects
|
|
for scope, objects in pairs(scopes) do
|
|
if type(objects) == "table" then
|
|
if not grants[scope] then
|
|
grants[scope] = { }
|
|
end
|
|
|
|
if next(objects) == 1 then
|
|
local _, object
|
|
for _, object in ipairs(objects) do
|
|
if not grants[scope][object] then
|
|
grants[scope][object] = { }
|
|
end
|
|
table.insert(grants[scope][object], perm)
|
|
end
|
|
else
|
|
local object, funcs
|
|
for object, funcs in pairs(objects) do
|
|
if type(funcs) == "table" then
|
|
local _, func
|
|
for _, func in ipairs(funcs) do
|
|
if not grants[scope][object] then
|
|
grants[scope][object] = { }
|
|
end
|
|
table.insert(grants[scope][object], func)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local _, scope, object, func
|
|
for scope, _ in pairs(grants) do
|
|
local objects = { }
|
|
for object, _ in pairs(_) do
|
|
for _, func in ipairs(_) do
|
|
table.insert(objects, { object, func })
|
|
end
|
|
end
|
|
|
|
util.ubus("session", "grant", {
|
|
ubus_rpc_session = session,
|
|
scope = scope, objects = objects
|
|
})
|
|
end
|
|
end
|
|
|
|
apply_acls("/usr/share/rpcd/acl.d/sysupgrade.json", luci.dispatcher.context.authsession)
|
|
%>
|
|
<%+header%>
|
|
<h2 name="content"><%:Sysupgrade%></h2>
|
|
<div class="cbi-map-descr">
|
|
<%:Easily search and install new releases and package upgrades.%>
|
|
</div>
|
|
<div style="display: none" id="status_box" class="alert-message info"></div>
|
|
<div style="display: none" id="packages" class="alert-message success"></div>
|
|
<p>
|
|
<textarea style="display: none; width: 100%;" id="edit_packages" rows="15"></textarea>
|
|
</p>
|
|
<fieldset class="cbi-section">
|
|
<form method="post" action="">
|
|
<div class="cbi-selection-node">
|
|
<div class="cbi-value" id="keep_container" style="display: none">
|
|
<div class="cbi-section-descr">
|
|
<%:Check "Keep settings" to retain the current configuration.%>
|
|
</div>
|
|
<label class="cbi-value-title" for="keep"><%:Keep settings:%></label>
|
|
<div class="cbi-value-field">
|
|
<input name="keep" id="keep" checked="checked" type="checkbox">
|
|
</div>
|
|
</div>
|
|
<div class="cbi-value" id="edit_button" style="display: none">
|
|
<div class="cbi-value-field">
|
|
<input class="cbi-button" value="<%:Edit installed packages%>" onclick="edit_packages()" type="button">
|
|
</div>
|
|
</div>
|
|
<div class="cbi-value cbi-value" id="server_div" style="display:none">
|
|
<!--
|
|
<label class="cbi-value-title" for="server"><%:Server:%></label>
|
|
<div class="cbi-value-field">
|
|
<input onclick="edit_server()" class="cbi-button cbi-button-edit" value="" type="button" id="server" name="server">
|
|
</div>
|
|
-->
|
|
</div>
|
|
<input type="hidden" value="" id="server" name="server">
|
|
<div class="cbi-value cbi-value-last">
|
|
<div class="cbi-value-field">
|
|
<input class="cbi-button cbi-button-apply" value="<%:Search for upgrades%>" style="display: none" onclick="upgrade_check()" type="button" id="upgrade_button">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</fieldset>
|
|
<script type="text/javascript">
|
|
data = {};
|
|
data["ubus_rpc_session"] = "<%=luci.dispatcher.context.authsession%>"
|
|
origin = document.location.href.replace(location.pathname, "")
|
|
ubus_url = origin + "/ubus/"
|
|
</script>
|
|
<script type="text/javascript" src="<%=resource%>/sysupgrade.js"></script>
|
|
<%+footer%>
|