修改openwrt的Luci界面显示Helloworld

这几天对openwrt的Luci界面很感兴趣,然而网上资料太少,而且许多资料又讲得太深,没有一个“helloworld”式的感性认识,故作此篇来帮助想要从头开始学Luci却无从下手的同学们。

0、目标

首先明确一下我们的目标:通过修改openwrt的内置web服务Luci(Lua Configuration Interface)里的文件来向web界面中增加我们想要的内容。
具体分成两个步骤:

  1. 修改controller层文件
  2. 增加view层的文件(即html页面)

顺带一提,由于Luci默认使用缓存技术,因此我们所作的修改不能马上看见效果。
在进行实验之前,我们先关掉缓存:

  • 找到/etc/config/luci文件中的下列行
    缓存
  • 把1改为0即可
    修改后
    (最好重启一下系统或uhttpd)

1、修改controller层文件

打开/usr/lib/lua/luci/controller/admin/status.lua文件,找到index()函数,发现它长这样:
index.lua看起来很复杂,但我们先不要管那么多,先知道每一个entry(),都对应着一个文件就好。entry本来是这样子定义的:entry(path, target, title=nil, order=nil),表示服务器上的一个路径(path),并执行对应的target,title为标题名,order为显示顺序。
但我们现在先不管,直接往index()函数中添加一句:

entry({"admin", "status", "hello"}, template("hello"), _("Hello")).leaf = true
  • 1

这时status.lua变成了这样:
修改注意到在32行处多了一行,其中{“admin”, “status”, “hello”}表示访问的路径,template(“hello”)表示这个目标为显示一个界面(luci会到/usr/lib/lua/luci/view中寻找对应文件,在这里就是hello.htm,我们下一步进行编写),_(“Hello”)表示显示在web界面中的名字。

2、增加view层的文件

其实在这时候访问openwrt的web界面已经能看到我们的修改了:
status
发现原本的菜单栏中多出了一个我们自己打的Hello!!!有点小兴奋了是吧,但这时还不能点进去,因为我们没有编写对应的hello.htm界面,会出错。下面我们就来写这个界面:

  1. 进入视图层目录
cd /usr/lib/lua/luci/view
  • 1
  1. 创建文件hello.htm
touch hello.htm
  • 1
  1. 在hello.htm中写入下列html代码:
<%+header%>
<p><%:hello world%></p>
<%+footer%>
  • 1
  • 2
  • 3

其中<%+header%>表示添加头部(就是我们在每个界面上面都能看到的那个黑框框),<%+footer%>表示添加尾部(下面的openwrt相关信息之类的~),我们可以先不管,最重要的是中间那一行

<p><%:hello world%></p>
  • 1

这就是我们写的hello world代码,经过lua的处理能显示到浏览器上。

3、查看结果

好了,现在前戏都已经结束,打开浏览器来看看我们的成果:

  1. 访问192.168.1.1(你的openwrt服务器地址,可能是你的网关地址。这里就不赘述了,如果连这个都不明白什么意思的话,先去看看openwrt基础,再来看我这篇文章)
  2. 输入账号密码后,点击上面菜单中Status的Hello选项
    status
  3. 成功了!!!
    hello world!我们成功地把自己想要的helloworld添加到了openwrt的界面当中!

4、结语

当然,对于高级openwrt工程师来说,这篇文章未必也太简单了。但是本篇文章本来的目的,就是给无从下手的朋友们一个切入点,权当抛砖引玉之用。克服艰难的第一次,然后在这基础上慢慢进步,尽力避免把知识的学习建立在虚无缥缈的想象之中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值