summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-mod-admin-full/luasrc/controller
diff options
context:
space:
mode:
authorDaniel F. Dickinson <cshored@thecshore.com>2018-08-02 09:39:48 -0400
committerJo-Philipp Wich <jo@mein.io>2018-09-19 20:08:19 +0200
commit6ec0353201435e0d0d7d32820d8ba600b4ca7b5b (patch)
tree8f37ae726c257f81fe105cb85e7c6aebe09c0095 /modules/luci-mod-admin-full/luasrc/controller
parent1a0316bbbaad3f6befce34014d7e204cb1c76ec0 (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/luasrc/controller')
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/index.lua42
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/network.lua6
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/status.lua1
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/system.lua1
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua109
5 files changed, 0 insertions, 159 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 cc8c2e3ae6..0000000000
--- 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 c45605a983..c4e1c3aa16 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 ff95f3d915..4f04cce545 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 46d2e36c32..4e83769ee0 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 1d955dd982..0000000000
--- 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