Openwrt开发日志——建立一个界面

2017/6/29 重新拾回Openwrt 一下开始正确编辑教程,做相关记录,高效解决问题

Mission:

l  创建一个Luci界面

l  使用iptable对包进行截取

l  将两者结合

 

Mission 1

                                                                                                  ——创建一个Luci界面

Tools:

       WinSCP

Reference:

openwrtluci学习笔记

http://m.blog.chinaunix.net/uid-26824563-id-4591418.html

MVC框架 百度百科

http://baike.baidu.com/link?url=bIYf049oTLKasepRBDisT1yhYfOWFdkc5lF9jxEIgWDrAzqlF1Rx4sfiTBcmynORRL04Mki4Ral_WihBK4T3VQOQPyOwOv-gevW3eceQam3

 

Procedure

(1)    认识MVC框架:

MVCModelViewController

Controller实现ModelView的同步,一旦Model改变,View立即改变。

l  Model(模型):应用程序的核心(比如数据库记录列表);是应用程序中用于处理应用程序数据逻辑的部分。

l  View(视图):显示数据(数据库记录);应用程序中处理数据显示的部分,通常视图(View)是依据模型(Model)数据创建的。

l  Controller(控制器):处理输入(写入数据库记录);应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC 模式同时提供了对 HTMLCSS 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语言中的“”

        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"}”

那么就可以在浏览器里访问“http://192.168.1.1/cgi-bin/luci/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.luacontrol.lua两个文件,两个界面类似。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值