一、在原有的栏目里添加配置页面
1、/usr/lib/lua/luci/controller/admin里面的文件是对应UI页面的栏目。
需要加在在那个栏目,就打开对应的lua文件
例如我想在系统栏目里面添加一个页面那我打开system.lua文件,添加一行代码
entry({"admin", "system", "test"}, cbi("admin_system/test"), _("Test"), 60)
注:1、system表示在system栏,test是要新建的页面
2、cbi("admin_system/test")是等会要把配置文件放在这里,其实就是test改一下,
3、60表示排序,可以看到下面图中后面都是有顺序的,从小到大排序的,你想放在那个位置就根据前后的数字来写
注,一般修改了 controller里面的文件,再重启一下,或者把/tmp/目录下luci-indexcache luci-modulecache/luci-sessions/删除一下
保存一下,机器重启,可以看到UI页面已经添加了test页面
2、在/etc/config新建一个test文件
config test
option name '123'
option url '123.com'
3、在/usr/lib/lua/luci/model/cbi/admin_system下新建一个页面test.lua。
关于想学test.lua里面的内容,可以参考Openwrt:LuCI之CBI(二)_Jags的博客-CSDN博客,大家可以根据需要去改写
local ipc = require "luci.ip"
m = Map("test", translate("Test1"))
s = m:section(TypedSection, "test", translate("Example Info"))
s.addremove = true
s.anonymous = true
s.template = "cbi/tblsection"
name = s:option(Value, "name", translate("Name"))
name.datatype = "string"
name.rmempty = true
url = s:option(Value, "url", translate("Url"))
url.datatype = "hostname"
url.rmempty = true
return m
4、刷新一下,UI页面也出来了
二、添加新栏目,并在新栏目里添加配置页面
其实和在原有栏目添加页面是差不多的,先看图,前面我们知道每个栏目对应一个lua文件,在原有的栏目添加页面只需要找到对应的文件,添加一条语句就行了。
那么添加栏目的话,就是新建一个文件。
1、在/usr/lib/lua/luci/model/cbi/下新建busservice.lua文件
( 即添加一个新栏目 )
编辑busservice.lua文件里面的内容,可以参照其他的文件,例如
module("luci.controller.admin.busservice", package.seeall)
function index()
entry({"admin", "busservice"}, alias("admin", "busservice", "busservice"), _("Busservice"), 35).index = true
entry({"admin", "busservice", "access_restrictions"}, cbi("admin_busservice/access_restrictions"), _("Access Restrictions"), 10)
entry({"admin", "busservice", "urlfiltering"}, cbi("admin_busservice/urlfiltering"), _("Urlfiltering"), 20)
end
在这里我写了两个页面,access_restrictions 和 urlfiltering,大家可以根据自己需要改写。
栏目新建好了,重启一下板子,UI页面刷新就可以看到了
2、新建配置文件
这里我就以access_restrictions页面来写了,其实urlfiltering页面,我已经放在上面了,只是改了名字。
配置文件在/etc/config/下
vi /etc/config/access_restrictions
config access_restrictions
option name '123'
option ip '123.12.12.12'
option protocol 'tcp'
option starport '10'
option endport '888'
里面的option根据自己需要改写
3、新建cbi页面,在/usr/lib/lua/luci/model/cbi/下创建admin_busservice目录
(还是名字改自己的,根据自己的栏目名称,参考其他文件)
mkdir admin_busservice
cd admin_busservice
进入admin_busservice文件(这个就相当于是栏目),新建页面文件(此栏目里面的页面)
vi access_restrictions.lua
m = Map("access_restrictions", translate("Access_Restrictions"))
s = m:section(TypedSection, "access_restrictions",translate("Example Info"))
s.addremove = true
s.anonymous = true
s.template = "cbi/tblsection"
name = s:option(Value, "name", translate("Name"))
name.datatype = "string"
name.rmempty = true
ip = s:option(Value, "ip", translate("IP address"))
ip.datatype = "ipaddr"
ip.rmempty = true
ipc.neighbors({ }, function(n)
if n.mac and n.dest and not n.dest:is6linklocal() then
ip:value(n.dest:string(), "%s (%s)" %{ n.dest:string(), n.mac })
end
end)
-- 下拉框
p = s:option(ListValue, "protocol", translate("Protocol"))
p:value("tcp","TCP")
p:value("udp","UDP")
p:value("tcp+udp","TCP+UDP")
sp = s:option(Value, "starport", translate("Star port"))
sp.datatype = "and(min(1),max(65534))"
sp.rmempty = true
ep = s:option(Value, "endport", translate("End port"))
ep.datatype = "and(min(1),max(65535))"
ep.rmempty = true
return m
保存,刷新页面,内容已经出来了。
想要学习CBI的,就是access_restrictions.lua文件里面的内容,点下面链接。我觉得这个还不错。
Openwrt:LuCI之CBI(二)_Jags的博客-CSDN博客
好,以上就是在openwrt上新建栏目和页面的步骤了,有什么不懂的就百度了,问我,可能我的知识比你的还少,我也是一边学习一边记录,文中有什么错误,希望大神指出。