mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Add system upgrade via interface
This commit is contained in:
parent
14db6f80fb
commit
34cf70ae30
9 changed files with 619 additions and 1 deletions
123
luci-app-sysupgrade/luasrc/view/sysupgrade.htm
Normal file
123
luci-app-sysupgrade/luasrc/view/sysupgrade.htm
Normal file
|
@ -0,0 +1,123 @@
|
|||
<%
|
||||
-- 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. Sysupgrade firmware are created on demand based on locally installed packages.
|
||||
</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 (requires a compatible firmware).
|
||||
</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>
|
||||
<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%>
|
Loading…
Add table
Add a link
Reference in a new issue