diff options
author | Daniel F. Dickinson <cshored@thecshore.com> | 2018-08-02 09:39:48 -0400 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-09-19 20:08:19 +0200 |
commit | 6ec0353201435e0d0d7d32820d8ba600b4ca7b5b (patch) | |
tree | 8f37ae726c257f81fe105cb85e7c6aebe09c0095 /modules/luci-mod-admin-full | |
parent | 1a0316bbbaad3f6befce34014d7e204cb1c76ec0 (diff) |
modules: Make luci-base sufficient to use luci apps
Per the discussion in https://github.com/openwrt/luci/issues/869, make
luci-base sufficient to login, logout, and review and apply or revert
uci changes. This allows most luci-app-xxx to work without having
luci-mod-admin-full installed.
It has been tested with some apps and not luci-mod-admin-full, as well
as with luci-mod-admin-full (to make sure the usual case doesn't break).
Instead of creating a new module namespace (e.g. 'Base') we reduce the
opportunities for breakage by having luci-base take over the 'shell' of
the 'Administration' (admin/....) namespace.
Since admin is assumed by all current building LuCI components (including
Freifunk), this doesn't introduce the 'Administration' tab into any
situation where it would not already be present (but includes it where it
was before).
We also add a "Component not installed" page to avoid fatal errors and
backtrace when e.g. luci-mod-admin-full is not installed.
Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
Diffstat (limited to 'modules/luci-mod-admin-full')
8 files changed, 0 insertions, 303 deletions
diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua deleted file mode 100644 index cc8c2e3ae..000000000 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua +++ /dev/null @@ -1,42 +0,0 @@ --- Copyright 2008 Steven Barth <steven@midlink.org> --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.index", package.seeall) - -function index() - local root = node() - if not root.target then - root.target = alias("admin") - root.index = true - end - - local page = node("admin") - page.target = firstchild() - page.title = _("Administration") - page.order = 10 - page.sysauth = "root" - page.sysauth_authenticator = "htmlauth" - page.ucidata = true - page.index = true - - -- Empty services menu to be populated by addons - entry({"admin", "services"}, firstchild(), _("Services"), 40).index = true - - entry({"admin", "logout"}, call("action_logout"), _("Logout"), 90) -end - -function action_logout() - local dsp = require "luci.dispatcher" - local utl = require "luci.util" - local sid = dsp.context.authsession - - if sid then - utl.ubus("session", "destroy", { ubus_rpc_session = sid }) - - luci.http.header("Set-Cookie", "sysauth=%s; expires=%s; path=%s/" %{ - sid, 'Thu, 01 Jan 1970 01:00:00 GMT', dsp.build_url() - }) - end - - luci.http.redirect(dsp.build_url()) -end diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua index c45605a98..c4e1c3aa1 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua @@ -8,12 +8,6 @@ function index() local uci = require("luci.model.uci").cursor() local page - page = node("admin", "network") - page.target = firstchild() - page.title = _("Network") - page.order = 50 - page.index = true - -- if page.inreq then local has_switch = false diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua index ff95f3d91..4f04cce54 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua @@ -5,7 +5,6 @@ module("luci.controller.admin.status", package.seeall) function index() - entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1) entry({"admin", "status", "iptables"}, template("admin_status/iptables"), _("Firewall"), 2).leaf = true diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua index 46d2e36c3..4e83769ee 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua @@ -7,7 +7,6 @@ module("luci.controller.admin.system", package.seeall) function index() local fs = require "nixio.fs" - entry({"admin", "system"}, alias("admin", "system", "system"), _("System"), 30).index = true entry({"admin", "system", "system"}, cbi("admin_system/system"), _("System"), 1) entry({"admin", "system", "clock_status"}, post_on({ set = true }, "action_clock_status")) diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua deleted file mode 100644 index 1d955dd98..000000000 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua +++ /dev/null @@ -1,109 +0,0 @@ --- Copyright 2008 Steven Barth <steven@midlink.org> --- Copyright 2010-2015 Jo-Philipp Wich <jow@openwrt.org> --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.uci", package.seeall) - -function index() - local redir = luci.http.formvalue("redir", true) - or table.concat(luci.dispatcher.context.request, "/") - - entry({"admin", "uci"}, nil, _("Configuration")) - entry({"admin", "uci", "changes"}, post_on({ trigger_apply = true }, "action_changes"), _("Changes"), 40).query = {redir=redir} - entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir} - - local node - local authen = function(checkpass, allowed_users) - return "root", luci.http.formvalue("sid") - end - - node = entry({"admin", "uci", "apply_rollback"}, post("action_apply_rollback"), nil) - node.cors = true - node.sysauth_authenticator = authen - - node = entry({"admin", "uci", "apply_unchecked"}, post("action_apply_unchecked"), nil) - node.cors = true - node.sysauth_authenticator = authen - - node = entry({"admin", "uci", "confirm"}, call("action_confirm"), nil) - node.cors = true - node.sysauth = false -end - - -function action_changes() - local uci = require "luci.model.uci" - local changes = uci:changes() - - luci.template.render("admin_uci/changes", { - changes = next(changes) and changes, - timeout = timeout, - trigger_apply = luci.http.formvalue("trigger_apply") and true or false - }) -end - -function action_revert() - local uci = require "luci.model.uci" - local changes = uci:changes() - - -- Collect files to be reverted - local r, tbl - for r, tbl in pairs(changes) do - uci:revert(r) - end - - luci.template.render("admin_uci/revert", { - changes = next(changes) and changes, - trigger_revert = true - }) -end - - -local function ubus_state_to_http(errstr) - local map = { - ["Invalid command"] = 400, - ["Invalid argument"] = 400, - ["Method not found"] = 404, - ["Entry not found"] = 404, - ["No data"] = 204, - ["Permission denied"] = 403, - ["Timeout"] = 504, - ["Not supported"] = 500, - ["Unknown error"] = 500, - ["Connection failed"] = 503 - } - - local code = map[errstr] or 200 - local msg = errstr or "OK" - - luci.http.status(code, msg) - - if code ~= 204 then - luci.http.prepare_content("text/plain") - luci.http.write(msg) - end -end - -function action_apply_rollback() - local uci = require "luci.model.uci" - local token, errstr = uci:apply(true) - if token then - luci.http.prepare_content("application/json") - luci.http.write_json({ token = token }) - else - ubus_state_to_http(errstr) - end -end - -function action_apply_unchecked() - local uci = require "luci.model.uci" - local _, errstr = uci:apply(false) - ubus_state_to_http(errstr) -end - -function action_confirm() - local uci = require "luci.model.uci" - local token = luci.http.formvalue("token") - local _, errstr = uci:confirm(token) - ubus_state_to_http(errstr) -end diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm deleted file mode 100644 index 8a162c88b..000000000 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm +++ /dev/null @@ -1,66 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich <jo@mein.io> - Licensed to the public under the Apache License 2.0. --%> - -<% export("uci_changelog", function(changes) -%> -<div class="cbi-section"> - <strong><%:Legend:%></strong> - <div class="uci-change-legend"> - <div class="uci-change-legend-label"><ins> </ins> <%:Section added%></div> - <div class="uci-change-legend-label"><del> </del> <%:Section removed%></div> - <div class="uci-change-legend-label"><var><ins> </ins></var> <%:Option changed%></div> - <div class="uci-change-legend-label"><var><del> </del></var> <%:Option removed%></div> - <br style="clear:both" /> - </div> - <br /> - - <div class="uci-change-list"><% - local util = luci.util - local tpl = { - ["add-3"] = "<ins>uci add %0 <strong>%3</strong> # =%2</ins>", - ["set-3"] = "<ins>uci set %0.<strong>%2</strong></ins>=%3", - ["set-4"] = "<var><ins>uci set %0.%2.%3=<strong>%4</strong></ins></var>", - ["remove-2"] = "<del>uci del %0.<strong>%2</strong></del>", - ["remove-3"] = "<var><del>uci del %0.%2.<strong>%3</strong></del></var>", - ["order-3"] = "<var>uci reorder %0.%2=<strong>%3</strong></var>", - ["list-add-4"] = "<var><ins>uci add_list %0.%2.%3=<strong>%4</strong></ins></var>", - ["list-del-4"] = "<var><del>uci del_list %0.%2.%3=<strong>%4</strong></del></var>", - ["rename-3"] = "<var>uci rename %0.%2=<strong>%3</strong></var>", - ["rename-4"] = "<var>uci rename %0.%2.%3=<strong>%4</strong></var>" - } - - local conf, deltas - for conf, deltas in util.kspairs(changes) do - write("<h3># /etc/config/%s</h3>" % conf) - - local _, delta, added - for _, delta in pairs(deltas) do - local t = tpl["%s-%d" %{ delta[1], #delta }] - - write(t:gsub("%%(%d)", function(n) - if n == "0" then - return conf - elseif n == "2" then - if added and delta[2] == added[1] then - return "@%s[-1]" % added[2] - else - return delta[2] - end - elseif n == "4" then - return util.shellquote(delta[4]) - else - return delta[tonumber(n)] - end - end)) - - if delta[1] == "add" then - added = { delta[2], delta[3] } - end - end - - write("<br />") - end - %></div> -</div> -<%- end) %> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm deleted file mode 100644 index 43bd7c23f..000000000 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm +++ /dev/null @@ -1,45 +0,0 @@ -<%# - Copyright 2008 Steven Barth <steven@midlink.org> - Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io> - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<%- - local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir")) - export("redirect", redir_url or url("admin/uci/changes")) - - include("admin_uci/changelog") --%> - -<h2 name="content"><%:Configuration%> / <%:Changes%></h2> - -<% if changes then %> - <%- uci_changelog(changes) -%> -<% else %> - <p><strong><%:There are no pending changes!%></strong></p> -<% end %> - -<div class="alert-message" id="cbi_apply_status" style="display:none"></div> - -<div class="cbi-page-actions"> - <% if redir_url then %> - <form method="get" action="<%=luci.util.pcdata(redir_url)%>"> - <input class="cbi-button cbi-button-link" type="submit" value="<%:Back%>" /> - </form> - <% end %> - - <form method="post" action="<%=url("admin/uci/changes")%>"> - <input type="hidden" name="token" value="<%=token%>" /> - <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" /> - <input class="cbi-button cbi-button-save" type="submit" name="trigger_apply" value="<%:Save & Apply%>" /> - </form> - <form method="post" action="<%=url("admin/uci/revert")%>"> - <input type="hidden" name="token" value="<%=token%>" /> - <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" /> - <input class="cbi-button cbi-button-reset" type="submit" value="<%:Revert%>" /> - </form> -</div> - -<%+footer%> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm deleted file mode 100644 index d8fd3de01..000000000 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm +++ /dev/null @@ -1,33 +0,0 @@ -<%# - Copyright 2008 Steven Barth <steven@midlink.org> - Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io> - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<%- - local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir")) - export("redirect", redir_url or url("admin/uci/changes")) - - include("admin_uci/changelog") --%> - -<h2 name="content"><%:Configuration%> / <%:Revert%></h2> - -<% if changes then %> - <p><strong><%:The following changes have been reverted%>:</strong></p> - <%- uci_changelog(changes) -%> -<% else %> - <p><strong><%:There are no pending changes to revert!%></strong></p> -<% end %> - -<% if redir_url then %> - <div class="cbi-page-actions"> - <form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>"> - <input class="cbi-button cbi-button-link" style="margin:0" type="submit" value="<%:Back%>" /> - </form> - </div> -<% end %> - -<%+footer%> |