主要目录的跳转如下:
1、/www/index.html
2、/luci/cgi
3、/www/cgi-bin/luci //注意此时的浏览器中的地址后缀与此相似
4、usr/lib/lua/luci/sgi/cgi.lua //run的方法,登陆界面由此产生
5、luci/dispatcher.lua中的 httpdispatch函数,协进程的处理函数是luci.dispatcher.httpdispatch
httpdispatch的主要功能是从环境变量PATH_INFO获取请求路径,像字串”
http://192.168.1.1/cgi-bin/luci/;stok=e10fa5c70fbb55d478eb8b8a2eaabc6f/admin/network/firewall/”,并把这个字符串解析成单个字符存放在table r{}中,最后再调用dispatch()这个函数,解析完后,关闭http连接。dispatch这个函数是整个LuCI中的核心。
然后介绍一下luci的MVC架构:
/usr/lib/lua/luci/,在底下主要有以下这些目录:model,controller,view解释如下:
LuCI是基于MVC的思想,基中M是model,是原来存取数据的地方, V就是view,原来向用户展示的页面, C就是controller, controller会从model中存取数据,并传给view,向用户展示配置结果。
在 luci 的官方网站说明了 luci 是一个 MVC 架构的框架,这个 MVC 做的可扩展性很好,可以完全的统一的写自己的 html 网页,而且他对 shell 的支持相当的到位, (因为 luci
是 lua 写的, lua 是 C 的儿子嘛, 与 shell 是兄弟) 。 在登录界面用户名的选择很重要,luci 是一个单用户框架,公用的模块放置在 */luci/controller/下面,各个用户的模块放置在*/luci/controller/下面对应的文件夹里面, 比如 admin 登录, 最终的页面只显示/luci/controller/admin 下面的菜单。这样既有效的管理了不同管理员的权限。