LuCI作为“FFLuCI”诞生于2008年3月份,目的是为OpenWrt固件从Whiterussian 到 Kamikaze实现快速配置接口。
LuCI是OpenWrt上的Web管理界面,LuCI采用了MVC三层架构,使用lua脚本开发,所以开发LuCI的配置界面不需要编辑任何的html代码,除非想自己单独去创建网页(View层),否则我们基本上只需要修改Model层就可以了。
1、代码结构
在openwrt文件系统中,lua语言的代码不要编译,类似一种脚本语言被执行,还有一些uhttpd服务器的主目录,它们是:
/www/index.html
/cgi-bin/luci
/luci-static/xxx/xx.css、js、gif
/usr/lib/lua/nixio.so、uci.so
/luci/http.lua、dispatcher.lua、core…
/controller/xxx.lua
/model/xxx.lua
/view/xxx.lua
luci采用的是MVC架构的web框架,M是指module(有的源码包是module,配置模块代码),C指的是controller(定义模块的入口),V指的是view(创建网页)。
luci其实是Lua脚本语言和UCI统一配置接口的合称。就是说原本openwrt就提供里uci的api让你可以很方便的修改openwrt的配置文件,无论是创建、读取、修改、删除。而且uci命令可以植入shell脚本和c语言或者是lua脚本。在/usr/lib/lua/luci下大多数都是lua脚本,就是这些lua脚本生成我们所看见的web页面。
2、luci框架流程
①首次运行时,是以普通的file方式获得docroot/index.html,该文件中以meta的方式自动跳转到cgi的url,这是web服务器的一般做法。
http://192.168.1.1/ index.html会自动跳到http://192.168.1.1/cgi-bin/luci,登陆默认root。index.html对于OpenWrt源码路径为:
\package\ramips\ui\luci-mtk\src\modules\base\root\www\index.html源码: