luci html 页面,luci界面修改

本文详细解析了OpenWRT中LuCI的工作原理,包括多语言设置、uhttpd服务器的角色、CGI交互过程、lua脚本执行、节点树结构、用户认证、MVC架构以及界面生成。LuCI利用lua语言和coroutine实现动态配置和页面展示,通过controller、model、view目录下的文件来构建界面。此外,文章还介绍了启动和登录过程,以及如何添加和修改LuCI界面菜单。
摘要由CSDN通过智能技术生成

1. 多语言

1)检查:

opkg list | grep luci-i18n-

2)安装语言包:

opkg install luci-i18n-hungarian

2.uhttpd

这个是LuCI所在的Web Server。docroot在/www下边,index-html指向了/cgi-bin/luci,注意这是相对于docroot而言的路径。

openwrt中利用它作为web服务器,实现客户端web页面配置功能。对于request处理方式,采用的是cgi,而所用的cgi程序就是luci。

1)工作框架如下图所示:

98da2e801a20f460e075d109fea3670d.png

Client端和serv端采用cgi方式交互,uhttpd服务器的cgi方式中,fork出一个子进程,子进程利用execl替换为luci进

程空间,并通过setenv环境变量的方式,传递一些固定格式的数据(如PATH_INFO)给luci。另外一些非固定格式的数据(post-

data)则由父进程通过一个w_pipe写给luci的stdin,而luci的返回数据则写在stdout上,由父进程通过一个r_pipe读取。

2)luci 文件(权限一般是 755 ) , luci 的代码如下:

#!/usr/bin/lua -- 执行命令的路径

require"luci.cacheloader" -- 导入 cacheloader 包

require"luci.sgi.cgi" -- 导入 sgi.cgi 包

luci.dispatcher.indexcache = "/tmp/luci-indexcache" --cache 缓存路径地址

luci.sgi.cgi.run() -- 执 行 run 方法,此方法位于 /usr/lib/lua/luci/sgi/cgi.lua中

3)web配置时的数据交互:

4f486819718308ae2682bf89f15b1b04.png

首次运行时,是以普通的file方式获得docroot/index.html,该文件中以meta的方式自动跳转到cgi的url,这是web服务器的一般做法。

然后第一次执行luci,path_info='/',会alise到'/admin'('/'会索引到

tree.rootnode,并执行其target方法,即alise('/admin'),即重新去索引adminnode,这在后面会详细描述),该

节点需要认证,所以返回一个登录界面。

第3次交互,过程同上一次的,只是这时已post来了登录信息,所以serv端会生成一个session值,然后执行'/admin'的

target(它的target为firstchild,即索引第一个子节点),最终返回/admin/status.html,同时会把session

值以cookie的形式发给client。这就是从原始状态到得到显示页面的过程,之后主要就是点击页面上的连接,产生新的request。

每个链接的url中都会带有一个stok值(它是serv生成的,并放在html中的url里),并且每个新request都要带有session值,它和stok值一起供serv端联合认证。

初始阶段http报文,可以看到从第2次交互开始,所有request都是cgi方式(除一些css、js等resource文件外),且执行的cgi程序都是luci,只是带的参数不同,且即使所带参数相同(如都是'/'),由于需要认证,执行的过程也是不同的。

正是由于多种情况的存在,使得luci中需要多个判断分支,代码多少看起来有点乱,但openwrt还是把这些分支都糅合在了一个流程线中。下面首

先给出整体流程,首先介

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值