Chinaunix首页 | 论坛 | 博客
  • 博客访问: 851565
  • 博文数量: 290
  • 博客积分: 511
  • 博客等级: 下士
  • 技术积分: 1590
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-29 13:14
文章分类

全部博文(290)

文章存档

2018年(28)

2017年(19)

2016年(8)

2015年(1)

2014年(14)

2013年(12)

2012年(22)

2011年(186)

分类: 嵌入式

2018-01-24 16:16:34

原文地址:

以前都没听过openwrt和luci,只接触过简单的php语言。由于工作原因,要修改下luci的界面,竟然用了我2天的时间才简单的了解了luci的用法。这里简单的和大家分享下。(就接触2天,本人又是菜鸟级别,高手直接略过吧)大家发现有什么错误就和我说下大家共同学习。我主要是想修改下open后台界面网页的内容。 具体怎么安装已经有人介绍过来了,我就不详细说了。下面说配置好之后,修改UI的做法 在浏览器中输入:  会自动跳到  登陆默认root 密码是空 默认的几个一级菜单都是在modules\admin-full\luasrc\controller\admin\ 这个目录下 这个就类似于php的根目录了。/etc/config/这个目录下面的文件,个人观点是可以把它当做是php中的数据库连看待,这样反而更方便理解。 实际上luci界面提供的已经很全了,我们并没有多少必要要新建立页面,我们大多就是在已有的界面上添加一些内容。比如我们公司现在需要添加wifi的isolate和maxassoc这两项属性。就让我找了半天才找到首先要找到network-wifi对应的文件, 在找点击edit后页面对应的文件。

openwrt luci wifi edit

network.lua这个文件里面就定义了network下面有哪些二级目录。

比如我要改wifi,我就看到有

if has_wifi and has_wifi.size > 0 then page = entry({“admin”, “network”, “wireless”}, arcombine(template(“admin_network/wifi_overview”), cbi(“admin_network/wifi”)), _(“Wifi”), 15) page.leaf = true page.subindex = true 这里面有cbi(“admin_network/wifi”)这条语句。知道的人就知道,不知道也没关系,想知道可以自己查下。 这时我们到目录\modules\admin-full\luasrc\model\cbi\admin_network\下面可以发现一个wifi.lua的文件,cbi的语句就是指向的这个文件。我们打开wifi.lua后,在———————- Interface ———————–这个下面地方添加 isolate = s:taboption(“advanced”, Flag, “isolate”, translate(“Separate Clients”),translate(“Prevents client-to-client communication”)) maxassoc = s:taboption(“advanced”, Value, “maxassoc”, translate(“Connection Limi”),translate(“Specifies the maximum number of clients to connect.”))   这样两条语句就可以了。进入network-wifi   edit看下我们修改的效果 我们进入network-wifi之后选择一个无线网络点击edit后进入页面

添加isolate和maxassoc后的效果

在Interface Configuration下面的Advanced Settings下面可以进行修改之后点击Save & Apply

修改这两项是保存在什么地方呢?刚刚我说了,/etc/config/目录下相当于数据库的功能。 这时我们vi /etc/config/wireless可以查看到我们刚刚修改内容。可以看到已经修改为我们刚刚调整的77了。 有的人想要添加新的页面和功能,可以看下下面的内容。 下面内容来源于chaochaoblog 要完成一个新模块并用到里面需要两个东西, 第一个我们先找到usr/lib/lua/LuCI/controller在里面建立一个文件夹,也就是我们的模块名称,就叫smustar吧 在smustar下面再写我们模块的主文件就叫smumodule.lua吧 参考官网,我们的模块写法应该是这样子的 module(“LuCI.controller.smustar.smumodule”, package.seeall) function index() entry({“admin”, “network”, “802.1x“}, cbi(“smustar-smumodule/netifaces”), “Network interfaces”, 30).dependent=false end 第一句话是声明一下这个模块了,没什么可说的。 第二句话就是我们模块的主函数,其中呢要告诉它我们的入口,与其说入口,不如说就是告诉它是要admin登录才能用的,是在network这个菜单下,名字呢,叫做802.1x。模块执行的程序呢在smustar-smumodule/netifaces这里。 好了各位又郁闷了smustar-smumodule/netifaces是什么东西,这是我们要建立的另外一个文件,上面不是说要两个么 我们找到路径/usr/lib/lua/LuCI/module 在下面建立文件夹smustar-smmodule建立文件netfaces.lua 好了接下来就是要在netfaces.lua写我们的程序了,参考官网所说的这个什么LuCI最酷的地方,也就是修改config文件 不要说你不懂什么是config文件了,最简单的比如network。 我们在/etc/config下面建立一个配置文件叫smuset吧 那这就是一个config文件的写法 config  ‘interface’  ‘smustar’ option ‘user’ ‘youruser’ option ‘pass’ ‘yourpass’ ok这个config文件就是这样子了接下来写netfaces.lua m = Map(“smuset”, “smustar”) — We want to edit the uci config file /etc/config/smustar 这里是我们要配置的文件了,默认的路径它已经能够区别的,不用管了 s = m:section(TypedSection, “interface”, “smustar”) — Especially the “interface”-sections读出里面的interface区域来 s.addremove = true — Allow the user to create and remove the interfaces s:option(Value, “user”, “youruser”)这个能就是一个input即一个输入框了读取的是smuset中的user项。youruser是提示语罗 key=s:option(Value, “pass”, “your password”) key.password=true; 设置为星号的密码输入框 return m — Returns the map 好了文件就完成了,之后我们进入LuCI配置界面 在network下可以看到了802.1x选项 进入后有账号和密码输入框 改一下之后 save&apply一下,发现密码被修改了。我们的802.1x配置界面就做好了! 欢迎大家留言指教
因当时工作原因接触luci,现在已经不再从事相关工作,好久不接触,已经都忘记了,没有办法帮助到大家,抱歉!



阅读(2980) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~