自定义openwrt的配置界面:luci进阶之路

5. 20 晴 今天的太阳挺大的,晒得我进园区直接37. 3警告,于是我百度搜索微信朋友圈怎么关闭,才把温度稳定下来。算了算了,上班说事

由于公司部门调动,逐渐接触到新的知识,新的模块;还听说这玩意比较冷门,没办法,该搞还是得搞,又不是搞不了,下面就最近一个多月的研究写点东西,废话不多说,实操起来。

一、LUCI的MVC

要实现一个简单的自定义web界面,完成基本的配置需求,其实只需要用到控制层+model层的业务代码,view层的htm暂时可放一边。

  1. 知识背景,预备工作
    先看看新安装的openwrt软路由界面,
    下图所示版本的软路由下载地址是:http://firmware.koolshare.cn/LEDE_X64_fw867/
    具体的安装配置可以参考:
    https://blog.youkuaiyun.com/qq_41953807/article/details/106118556
    搭建好后,访问web界面得到如下图
    在这里插入图片描述
    这款固件的web主题有三种,上述是默认的,菜单栏在左侧,修改主题可按上图1->2->3->4进行设置,保存并应用。
  2. 需求说明
    现在需要在原有的菜单上新增一块栏目,并设置菜单项,每个菜单项具有自己的配置,并实现web与固件的读写操作。下面开始代码部分
  3. 进入openwrt的命令行
    openwrt其实就是小型的Linux,具备Linux常用的操作命令,luci安装的目录在 /usr/lib/lua/luci
    在这里插入图片描述
  4. controller控制层
    cd 进入controller/admin目录,在此处新建一个terminal.lua文件(vi命令和touch命令均可)
    文件内容如下:
--terminal.lua
module("luci.controller.admin.terminal",package.seeall)

function index()
	local page=node('admin','terminal')
	page.target=firstchild()
	page.title=_('终端采集系统')
	page.order=70
	page.index=true

	entry({
   "admin","terminal"},alias("admin","terminal","site-manager"),_("终端采集系统"),50).index=true
	entry({
   "admin","terminal","site-manager"},cbi("admin_terminal/site-manager"),_("站点管理"),1)
	entry({
   "admin","terminal","args-modify"},cbi("admin_terminal/args-modify"),_("参数修改"),2)

	entry({
   "admin","terminal","set"},cbi("admin_terminal/addtest"),_("Set"),3)
	entry({
   "admin","terminal","addtest"},call("action_info"),_("Info"),4)
	entry({
   "admin","terminal","testnixio"},template("test_nixio"),_("test nixio"),5)	
end

function action_info()
	if not nixio.fs.access("/tmp/addtest") then
		return
	end

	local info = nixio.fs.readfile("/tmp/addtest")
	luci.template.render("addtest_info",{
   info=info})
end

简略说明:page节点是挂在菜单栏上,新建一个自定义菜单用的。
entry是菜单项,其他的资料比较齐全,可自行查阅。

  1. model模型层的cbi
    正如控制层entry指出的目录,进入model/cbi目录下,有样学样,新建admin_terminal目录,进入并新建args-modify.lua 和 site-manager.lua等文件
    在这里插入图片描述
    site-manager.lua 内容如下
--site-manager.lua 
require("luci.sys")

m=Map("site-manager",translate("站点管理"),translate("终端采集系统的站点管理部分配置"))
m:chain("luci")

s=m:section(TypedSection,"site","配置SectionType为site,在/etc/config/site-manager中的test")
s.addremove=false
s.anonymous=true

s:option(Value,"site_id",translate("站点编号:"))
s:option(Value,"site_name",translate("站点名称:"))
s:option(Value,"site_addr",translate("地址:"))
s:option(Value,"site_longitude",translate("经度:"))
s:option(Value,"site_latitude",translate("纬度:"))
s:option(Value,"create_time",translate("创建日期:"))
s:option(Value,"device_addr",translate("设备地址:"))
s:option(Value,"subnet_mask",translate("子网掩码:"))
s:option(Value,"gateway",translate("网关:"))
s:option(Value,"server_addr",translate("服务器地址:"))
s:option(Value,"server_bak_addr",translate("备用服务器地址:"))
s:option(TextValue,"note",translate("备注:"))


return m

args-modify.lua 内容如下

--args-modify.l
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值