OpenWRT 之LuCI 入门开发
来源:互联网 发布:葫芦线切割3b编程实例 编辑:程序博客网 时间:2024/06/06 02:39
LuCI 基础篇
Controller 位于: /usr/lib/lua/luci/controller/
下——定义模块的入口
Model 位于: /usr/lib/lua/luci/model/cbi/
下——配置模块实际的代码
第一步:定义模块入口:
eg:
module("luci.controller.控制器名/路径", package.seeall)function index() entry(路径, 调用目标, _("显示名称"), 显示顺序) end
控制器名/路径: 不带路径的控制器名默认存在于/usr/lib/lua/luci/controller/
下,否则以controller/
为根目录
entry表示添加一个新的模块入口,官方给出了entry的定义,其中后两项都是可以为空的:
entry(path, target, title=nil, order=nil)
path:如果这样写{“click”, “here”, “now”},那么就可以在浏览器里访问“http://192.168.x.1/cgi-bin/luci/click/here/now”来访问这个脚本。我们也可以根据需要按如下方式编写{“admin”, “一级菜单名”, “菜单项名”},系统会自动在对应的菜单中生成菜单项。比如想在“网络”菜单下创建一个菜单项,那么一级菜单名可以写为“network”。
target:
调用目标分为三种,分别是执行指定方法Action
、访问指定页面Views
以及调用CBI Module
第一种可以直接调用指定的函数,比如点击菜单项就直接重启路由器等等,比如写为call(“function_name”),然后在lua文件下编写名为function_name的函数就可以调用了。
第二种可以访问指定的页面,比如写为template(“myapp/mymodule”)就可以调用/usr/lib/lua/luci/view/myapp/mymodule.htm文件了
而如果要编写配置页面,那么使用第三种方法无非是最方便的,比如写为cbi(“myapp/mymodule”)就可以调用/usr/lib/lua/luci/model/cbi/myapp/mymodule.lua文件了。
title和order
module("luci.controller.LuoYeLuCI", package.seeall)function index() entry({"admin", "network", "LuoYeconfig"}, cbi("LuoYeCBI"), _("LuoYeTest"), 100)end
第二步:配置CBI Module
1.首先要需要映射与存储文件的关系
m = Map("配置文件文件名", "配置页面标题", "配置页面说明")
第一个参数即为配置文件存储的文件名,不包含路径.
第二与第三个参数则是用在来页面上显示的
2.接下来需要创建与配置文件中对应的Section
Section分为两种,NamedSection和TypedSection,前者根据配置文件中的Section名,而后者根据配置文件中的Section类型 http://luci.subsignal.org/trac/wiki/Documentation/CBI
3.创建配置文件
文件需要存储在/etc/config(如果配置文件不存在的话,访问配置页面将会报错)
内容格式如下:
config login option username '' option password '' option ifname 'eth0' option domain ''
LuCI 页面修改
简单的文件配置,路由上路径主要是
/usr/lib/lua/luci/
下子目录:/controller/
、/model/cbi/
、/view/
,或者根目录下的/www/
中.可以在路上修改查看效果.
如果想要编译自定义LuCI页面的固件,请尝试修改如下OpenWRT源码结构路径内的LuCI文件.
xxx/package/feeds/luci/luci/luci/libs/web/root/etc/config/luci --- AA 版本pakages/feeds/luci/中xxx\feeds\luci\luci\luci\libs\web\root\etc\config\luci --- AA 版本的feeds/luci文件夹中xxx/feeds/luci/modules/base/root/etc/config/luci --- BB 版本中feeds中,bb版本open修改了luci配置文件路径,并且pakages/feeds路径中也没有luci配置文件了.不知道这个路径是不是正确的.再者就是修改 xxx/dl/ 下的源码压缩包,或者 xxx/build_dir/$target/下源码
注意
:如果在xxx/feeds 修改可能需要执行 ./scripts/feeds install luci 更新
主题Logo替换
源码路径:xxx/feeds/luci/luci/luci/themes/bootstrap/htdocs/luci-static/bootstrap/logo.jpg
路由路径:/www/luci-static/bootstrap/logo.jpg
Tips:
由于版本的更新,文件路径可能变更,此处列出的为BB版本的例子.如果找不到可以用命令手动在/feeds/中查找:find ./ -name logo.jpg.此处为bootstrap主题Logo,其他主题的Logo修改类似.
页面脚标信息
源码路径:xxx/feeds/luci/luci/luci/themes/bootstrap/luasrc/view/themes/bootstrap/footer.htm
路由路径:/usr/lib/lua/luci/view/themes/bootstrap/footer.htm
修改位置:
Powered by <%= luci.__appname__ .. " (" .. luci.__version__ .. ")" %> <%=luci.version.distversion%>
status状态栏信息
源码路径:xxx/feeds/luci/modules/admin-full/luasrc/view/admin_status/index.htm
路由路径:/usr/lib/lua/luci/view/admin_status/index.html
修改位置:找到类似的代码段修改.
<%:System%><%:Hostname%><%=luci.sys.hostname() or "?"%><%:Model%><%=pcdata(model or "?")%><%:Firmware Version%><%=pcdata(luci.version.distname)%> <%=pcdata(luci.version.distversion)%> /<%=pcdata(luci.version.luciname)%> (<%=pcdata(luci.version.luciversion)%>)<%:Kernel Version%><%=luci.sys.exec("uname -r")%><%:Local Time%>-<%:Uptime%>-<%:Load Average%>-
传送门:
- 官方文档–HowTo: Write Modules
- OpenWRT 之LuCI 入门开发
- Openwrt Luci界面开发
- openwrt之luci安装
- OPENWRT 入门( opkg, uci, luci )
- openwrt开发与luci介绍
- Openwrt开发与Luci介绍
- Openwrt开发与Luci介绍
- 【OpenWRT之旅】LuCI探究
- openwrt安装之二 luci
- 【OpenWRT之旅】LuCI探究
- linux-openwrt之luci初步了解-关于openwrt中的luci
- openwrt luci
- 开发OpenWrt路由器上LuCI的模块
- openwrt ---Luci - 网页用户配置界面开发
- 开发OpenWrt路由器上LuCI的模块
- 开发OpenWrt路由器上LuCI的模块+++
- OpenWrt路由器上的LuCI模块开发
- OpenWRT(十一)LuCi开发(一)
- CSU1619: Con + tin / (ued + Frac / tions)
- HDU 4461 The Power of Xiangqi
- 【经典算法】——KMP,深入讲解next数组的求解
- 第七章作业
- [error C2228: “.begin”的左边必须有类/结构/联合]之我见
- OpenWRT 之LuCI 入门开发
- SpringMVC返回JSON时406错误
- scrollview 和 touch handling
- mongodb.conf配置文件详解
- JS禁用鼠标滚轮事件
- WebBrowser控件 自定义 UserAgent Cookies
- 解决win8.1出现“为配置TCP/IP,必须安装并启用网络适配器卡”问题
- TTP 错误500.19 -Internal Server Error 错误代码 0x80070021
- MongoDB的日常维护管理(不错)