这个帖子主要是对自己的激励,也希望各位大神看到了多多指正。
新人朋友们可以一起学习拉!还是本科学生,之前说要玩一直没玩,暑假就把它再玩起来
比较喜欢DIY,所以一点一点的去了解,买了一本教材《智能路由器开发指南》还在学习之中 2017/6/29 重新拾回Openwrt 一下开始正确编辑教程,做相关记录,高效解决问题 Mission: l 创建一个Luci界面 l 使用iptable对包进行截取 l 将两者结合 Mission 1 ——创建一个Luci界面 Tools: WinSCP Reference: openwrt中luci学习笔记 MVC框架 百度百科 Procedure: (1) 认识MVC框架: MVC:Model,View,Controller Controller实现Model与View的同步,一旦Model改变,View立即改变。 l Model(模型):应用程序的核心(比如数据库记录列表);是应用程序中用于处理应用程序数据逻辑的部分。 l View(视图):显示数据(数据库记录);应用程序中处理数据显示的部分,通常视图(View)是依据模型(Model)数据创建的。 l Controller(控制器):处理输入(写入数据库记录);应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。 (2) 在/usr/lib/lua/luci/controller/admin目录下创建Sao.lua文件, 内容如下: module("luci.controller.admin.Sao", package.seeall) function index() entry({"admin","Sao"}, alias("admin", "Sao", "Sao"),_("inner-Sao"), 30).index = true entry({"admin","Sao", "Sao"}, cbi("admin_Sao/Sao"),_("BoardType"), 1) entry({"admin","Sao", "control"}, cbi("admin_Sao/control"),_("Control"), 2) end 说明: 1) lua单行注释使用“--”,类似于C语言的“//”,多行注释时,“--[[”类似C语言中的“/*”,“]]--”类似C语言中的“*/”。 2) 第1行定义了模块的入口。即“/usr/lib/lua/luci/controller/admin”所示的目录下建立一个Sao.lua文件。如果程序比较多,可能分为好几个模块,那么可以在controller下再建立一个子目录,比如controller/Saosix/,那么就可以写成“luci.controller.Saosix.Sao”。
3) 从第3行到10行即是function index函数,该函数定义了inner-Sao下各个选项卡。
function内: l entry表示添加一个新的模块入口,entry的定义如下,其中后两项都是可以为空: entry(path, target, title=nil, order=nil) “path”是访问的路径,路径是按字符串数组给定的,比如路径按如下方式写: “{"admin", "Sao", "control"}” 其中的“admin”表示为管理员添加脚本,“Sao”即为一级菜单名,“control”为 菜单项名。系统会自动在对应的菜单中生成菜单项。 比如想在“System”菜单下创建一个菜单项,那么一级菜单名可以写为 “system”。 换句话说,在Path中,顺序为用户项、一级菜单,二级菜单,。。。但是到后面具体为哪一级的菜单名称,它现实的title,是在_(“string”)国际化中定义的。 l “target”为调用目标,调用目标分为三种,分别是: 等同于别的链接(alias)执行指定方法(Action)、访问指定页面(Views)、调用CBI Module。 n 第零种Alias并不确定属不属于调用,它直接把这个entry指向别的entry,上级菜单到下级菜单需要用到这个。 n 第一种可以直接调用指定的函数,比如点击菜单项就直接重启路由器等等,比如写为“call("function_name")”,然后在该lua文件下编写名为function_name的函数就可以调用了。 n 第二种可以访问指定的页面,比如写为“template("myapp/mymodule")”就可以调用/usr/lib/lua/luci/view/myapp/mymodule.htm文件了。 n 第三种主要应用在配置界面,比如写为“cbi("myapp/mymodule")”就可以调用/usr/lib/lu a/luci/model/cbi/myapp/mymodule.lua文件了。
title和order是针对管理员菜单的,其中的title即是显示在网页上的内容。这里我们创建“/usr/lib/lua/luci/controller/Sao.lua”文件,定义我们的入口为“Sao”。 l 从上面的程序可以看出,在“inner-Sao”选项卡下共有两个分选项,名称分别为“BoardType”和“Control”。根据cbi指示的目录,在 /usr/lib/lua/luci/model/cbi/admin_Sao” 目录下有Sao.lua和control.lua两个文件,两个界面类似,我们选取"Control"界面讲述。
|