openwrt - 新增栏目 - 新增页面

一、在原有的栏目里添加配置页面

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上新建栏目和页面的步骤了,有什么不懂的就百度了,问我,可能我的知识比你的还少,我也是一边学习一边记录,文中有什么错误,希望大神指出。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值