openwrt 配置luci

  • Post author:
  • Post category:其他


/*****************************************************************************************************************

Document Author : ELvins Fu

Digtal technology park, A3 -06 , shenzhen, China

*************************************************************************************************************/



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




)工作框架如下图所示:


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




配置时的数据交互:


  1. 首次运行时,是以普通的


    file


    方式获得


    docroot/index.html


    ,该文件中以


    meta


    的方式自动跳转到


    cgi





    url


    ,这是


    web


    服务器的一般做法。

  2. 然后第一次执行


    luci





    path_info=’/’


    ,会


    alise





    ‘/admin’





    ‘/’


    会索引到


    tree.rootnode


    ,并执行其


    target


    方法,即


    alise(‘/admin’)


    ,即重新去索引


    adminnode


    ,这在后面会详细描述),该节点需要认证,所以返回一个登录界面。




  3. 3


    次交互,过程同上一次的,只是这时已


    post


    来了登录信息,所以


    serv


    端会生成一个


    session


    值,然后执行


    ‘/admin’





    target


    (它的


    target





    firstchild


    ,即索引第一个子节点),最终返回


    /admin/status.html


    ,同时会把


    session


    值以


    cookie


    的形式发给


    client


    。这就是从原始状态到得到显示页面的过程,之后主要就是点击页面上的连接,产生新的


    request




  4. 每个链接的


    url


    中都会带有一个


    stok


    值(它是


    serv


    生成的,并放在


    html


    中的


    url


    里),并且每个新


    request


    都要带有


    session


    值,它和


    stok


    值一起供


    serv


    端联合认证。


初始阶段


http


报文,可以看到从第


2


次交互开始,所有


request


都是


cgi


方式(除一些


css





js





resource


文件外),且执行的


cgi


程序都是


luci


,只是带的参数不同,且即使所带参数相同(如都是



版权声明:本文为Tree_in_sea原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。