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

0、目标

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

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

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

  • 找到/etc/config/luci文件中的下列行
    修改openwrt的Luci界面显示Helloworld
  • 把1改为0即可
    修改openwrt的Luci界面显示Helloworld
    (最好重启一下系统或uhttpd)

1、修改controller层文件

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

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

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

2、增加view层的文件

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

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

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

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

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

3、查看结果

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

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

4、结语

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

相关文章:

  • 2022-12-23
  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
  • 2022-01-16
  • 2022-12-23
  • 2021-12-20
  • 2021-08-24
猜你喜欢
  • 2021-10-06
  • 2021-11-20
  • 2021-11-17
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
相关资源
相似解决方案