luci筆記1, admin-mini模組分析
阿新 • • 發佈:2019-02-02
參考了網上的luci學習指南,還有自己的學習,胡扯來胡扯去。
function index() local root = node() if not root.lock then root.target = alias("mini") root.index = true end entry({"about"}, template("about")) local page = entry({"mini"}, alias("mini", "index"), _("Essentials"), 10) page.sysauth = "root" page.sysauth_authenticator = "htmlauth" page.index = true entry({"mini", "index"}, alias("mini", "index", "index"), _("Overview"), 10).index = true entry({"mini", "index", "index"}, form("mini/index"), _("General"), 1).ignoreindex = true entry({"mini", "index", "luci"}, cbi("mini/luci", {autoapply=true}), _("Settings"), 10) entry({"mini", "index", "logout"}, call("action_logout"), _("Logout")) end
root=node()定義了最外面的節點,也就是最上層的選單顯示。entry定義了一系列的選單,及對應的業務處理路徑。
page.sysauth = "root"
page.sysauth_authenticator = "htmlauth"
這兩行是把Essentials定義為需要認證使用者的登陸,可以註釋掉這兩行,就無需登入操作了。
page.sysauth_authenticator="htmlauth"處理的函式位於luci目錄下的dispatcher.lua
function authenticator.htmlauth(validator, accs, default) local user = luci.http.formvalue("username") local pass = luci.http.formvalue("password") if user and validator(user, pass) then return user end require("luci.i18n") require("luci.template") context.path = {} luci.template.render("sysauth", {duser=default, fuser=user}) return false end
呼叫的模板檔案,位於luci/view/sysauth.html
entry()函式,
第一個引數是定義選單的顯示(Virtual path)。
第二個引數定義相應的處理方式(target)。
alias是指向別的entry的別名,from呼叫的某一個view,cbi呼叫某一個model,call直接呼叫函式。
第三個引數是選單的文字,直接新增string不會國際化,_("string"),就國際化了,
第四個引數是是同級選單下,此選單項的位置,從大到小。
後面跟著的index=true忘了啥意思,哎,蛋疼。。。。。。。。。。。。。