摘要: 在openwrt中,大部分都是使用get方式来进行数据交互,如:XHR.get,XHR.poll。我们可以通过查看xhr.js的源代码来看他的具体实现逻辑。通过查看源代码可以知道,get/poll都是XHR的静态方法,而具体的内部逻辑中,还是通过new XHR().get来进行的数据请求。因此我们也可以使用这种方式来调用他内部提供的post方法。在使用post方法来交互数据时,对于回调函数中仅有的一个参数是一个xhr对象,因此要获取返回的数据需要调用responseText属性。 1 <% 2 local h = require "luci.http" 3 4 if 阅读全文
posted @ 2012-04-20 13:57 AUOONG 阅读(5759) 评论(1) 推荐(0)
摘要: 对于像我这种英语直接不过关的,系统的日期显示为英文的月份还真不知道是啥。还是写成普通的格式看着顺眼。下面就修改下系统返回的这个时间。用firebug查看返回的数据是一个json格式,日期的Key为timestring。首先我们找到controller,位置在:/usr/lib/lua/luci/controller/admin/system.lua。找到action_clock_status函数。在函数的结尾有以下两行: luci.http.prepare_content("application/json") luci.http.write_json({ timestri 阅读全文
posted @ 2012-04-17 10:54 AUOONG 阅读(3135) 评论(0) 推荐(0)
摘要: 在OpenWrt中使用socket通信主要就是调用nixio.socket来完成。我们可以写一个模块,然后在需要使用的时候使用require来引入。具体的实现如下:core = {}local h = require "luci.http"local n = require "nixio"core.ip = "127.0.0.1"core.port = 61000core.uri = "/BYW_ASTEST"core.method = "POST"core.charset = "UT 阅读全文
posted @ 2012-04-16 11:48 AUOONG 阅读(5653) 评论(3) 推荐(1)
摘要: 上传功能的整体逻辑比较简单,主要是对luci.http.setfilehandler方法的使用。对于这个方法,有一个比较特殊的地方即这个方法一定要放在最前面(除声明语句)。 1 <% 2 local h = require "luci.http" 3 local io = require "nixio" 4 local flag = true 5 local run = true 6 local fd = nil 7 8 -- 在这之前是不能有任何语句,声明语句除外 9 h.setfilehandler(10 ... 阅读全文
posted @ 2012-04-05 13:54 AUOONG 阅读(11553) 评论(0) 推荐(2)
摘要: 有如下的config文件。config 'user' 'manager' option 'username' 'Ly' option 'password' '111' option 'pass' ''如果我们要读取pass,获取到的值应该是一个空字符串。但真正的使用如下来获取时,会得到一个nil值。local u = require "luci.model.uci".cursor()local config = u.get_all("ro 阅读全文
posted @ 2012-03-27 08:55 AUOONG 阅读(1479) 评论(0) 推荐(0)
摘要: 1、使用luci.model.uci来操作config文件。2、使用cursor:set(config, section, option, value)进行设置3、使用commit(config)来保存并更新config文件。PS:使用save也能保存,但不会更新到config文件中。 阅读全文
posted @ 2012-03-19 11:48 AUOONG 阅读(1285) 评论(0) 推荐(0)
摘要: 在Openwrt中我们无法直接通过输出url的方式来跳转,而对于页面中的链接又是必不可少的。因此在LuCI中也提供了一种即时生成URL的方式。可以通过调用build_url来生成我们想要的URL,build_url的使用依赖于在controller中注册的模块的path:entry(path, target, title=nil, order=nil)例如我们有如下的一个entry。 page = entry({"admin", "register"}, template("admin/system/register"), _(&qu 阅读全文
posted @ 2012-03-16 13:29 AUOONG 阅读(5055) 评论(0) 推荐(0)
摘要: 在开发OpenWrt界面的时候,我都是选择在windows平台下。自己使用的x86的虚拟机环境是没有问题的。昨天同事的那台虚拟机不知为何,只要一修改OpenWrt中的样式文件,此样式文件直接就无法访问,提示找不到文件或路径。备受折腾后,从文件的属性查起,发现被修改过的文件的属性都被加了一个x(可执行)属性。通过chmod -R 777 /www重新设置后即可访问。经过总结,如果在windows下编辑,最好还是使用samba的匿名用户方式。而他的正好又是使用的root来共享的。对需要编辑的文件所在的文件夹设置为777。根目录设置为777是无效的。添加共享:/etc/config/sambacon 阅读全文
posted @ 2012-03-14 13:55 AUOONG 阅读(2373) 评论(0) 推荐(0)
摘要: 在实际的开发中,有时候我们需要根据情况来创建一个隐藏的菜单,这个功能仅作为一个子功能存在于程序之中,而不表现在菜单中。这时候,我们可以在写module使用hidden属性来创建一个隐藏菜单。例如:创建一个/usr/lib/lua/luci/controller/admin/test.lua文件。module("luci.controller.admin.test", package.seeall)function index() local page page = entry({ "admin", "user", "list 阅读全文
posted @ 2012-03-12 15:06 AUOONG 阅读(3226) 评论(0) 推荐(0)
摘要: 由于我开发都是直接在vmware虚拟机下,当一个模块完工后更新至路由器时发现,竟然不起作用。不过有提示说是要清理/tmp/luci-indexcache文件。清理之。。。检查自己的虚拟机中发现并没有这个文件,看来x86下的OpenWrt不会创建这么一个缓存文件。看来开发环境与实际环境差别还是不小的。 阅读全文
posted @ 2012-03-11 15:02 AUOONG 阅读(405) 评论(0) 推荐(0)