api文档 luci_Luci介绍

api文档 luci_Luci介绍Lua 作为一门方便嵌入 其它应用程序 并可扩展的轻量级脚本语言来设计的 因此她一直遵从着简单 小巧 可移植 快速的原则 官方实现完全采用 ANSIC 编写 能以 C 程序库的形式嵌入到宿主程序中 Lua 的每个版本都保持着开放源码的传统 不过各版采用的许可协议并不相同 自 5 0 版 最新版是 5 1 开始她采用的是著名的 MIT 许可协议 正由于上述特点 所以 Lua 在游戏开发 机器人控制 分布式应用 图像处理 生

Lua作为一门方便嵌入(其它应用程序)并可扩展的轻量级脚本语言来设计的,因此她一直遵从着简单、小巧、可移植、快速的原则,官方实现完全采用ANSI C编写,能以C程序库的形式嵌入到宿主程序中。Lua的每个版本都保持着开放源码的传统,不过各版采用的许可协议并不相同,自5.0版(最新版是5.1)开始她采用的是著名的MIT许可协议。正由于上述特点,所以Lua在游戏开发、机器人控制、分布式应用、图像处理、生物信息学等各种各样的领域中得到了越来越广泛的应用。

Luci是 Lua ConfigurationInterface的简称,意在OpenWrt整个系统的配置集中化。见链接: http://wiki.openwrt.org/zh-cn/doc/uci

1. Luci 的启动–uhttpd

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

2. Luci 的启动–luci

在web server中的cgi-bin目录下,运行 luci 文件(权限一般是 755 ),luci的代码如下:

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

require”luci.cacheloader” –导入cacheloader包

require”luci.sgi.cgi” –导入sgi.cgi包

luci.dispatcher.indexcache= “/tmp/luci-indexcache” –cache缓存路径地址

luci.sgi.cgi.run()–执行run,此方法位于*/luci/sgi/cgi.lua中

3. Luci– Web

a.登录

输入: http://x.x.x.x/ 登录LuCI.

Calling /www/cgi-bin/luci.

b. 进入主菜单‘status’

输入: http://x.x.x.x/cgi-bin/luci/admin/status/即可访问status页面。Luci则会calling /luci/admin/目录下的status.lua脚本:

module(“luci.controller.admin.status”, package.seeall)/usr/lib/lua/luci/controller/admin/status.lua->index()

4. 以status模块为例进行说明

模块入口文件status.lua在目录lua\luci\controller\admin下在index()函数中,使用entry函数来完成每个模块函数的注册:

entry(path, target, title=nil, order=nil)

5. entry()函数

第一个参数是定义菜单的显示(Virtual path)。

第二个参数定义相应的处理方式(target)。

alias是指向别的entry的别名,from调用的某一个view,cbi调用某一个model,call直接调用函数。

第三个参数是菜单的文本,_(“string”),国际化。

第四个参数是是同级菜单下,此菜单项的位置,从大到小

6. target主要分为三类:call,template 和cbi。

a. call用来调用函数。即语句

entry({“admin”, “status”, “iptables”}, call(“action_iptables”), _(“Firewall”), 2)

Firewall模块调用了action_iptables函数

b. template调用

template用来调用已有的htm模版,模版目录在lua\luci\view目录下。即语句

entry({“admin”,”status”,”overview”},template(“admin_status/index”),_(“Overview”), 1)

调用lua\luci\view\admin_status\index.htm文件来显示。

7. cbi调用

a. CBI了解 –- Configuration Binding Interface

CBI模型是Lua文件描述UCI配置文件的结构和由此产生的HTML表单来评估CBI解析器,所有CBI  luci.cbi.Map类型的模型文件必须返回一个map对象,在cbi模块中定义各种控件,Luci系统会自动执行大部分处理工作。其链接目录在lua\luci\model\cbi下 entry({“admin”, “status”, “processes”}, cbi(“admin_status/processes”), _(“Processes”), 6),调用\lua\luci\model\cbi\admin_status\processes.lua来实现模块。

8. Luci API的使用

比如:luci.sys luci.sys.net等对应的解析,由Luci源码结构中的/luci-0.11/libs/sys/luasrc/sys.lua完成。

9. Uci的使用

Uci命令的使用

Uci show

Uci get /uci set /uci commit

Uci c API的使用

总结一下Luci、Lua、Uci、CBI的关系图,如下图:

api文档 luci_Luci介绍

以上为最近研究Luci开发的相关资料整理,同时自己也动手做了几个测试页面并通过luci.sys.call实现了脚本、系统程序的调用。

为了方便大家学习,顺便整理出了openwrt的build root的使用官方文档地址:http://wiki.openwrt.org/zh-cn/doc/howto/build 以及CBI模块的section属性设置,官方文档介绍:http://luci.subsignal.org/trac/wiki/Documentation/CBI。后续有时间会继续与大家分享openwrt的相关研究、笔记等等。也希望大家能多留言、多指导,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214689.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午3:40
下一篇 2026年3月18日 下午3:41


相关推荐

  • XGBoost简介

    XGBoost简介本文据此对XGBoost的原理做简单的介绍…XGBoost[1]是2014年2月诞生的专注于梯度提升算法的机器学习函数库,此函数库因其优良的学习效果以及高效的训练速度而获得广泛的关注。仅在2015年,在Kaggle[2]竞赛中获胜的29个算法中,有17个使用了XGBoost库,而作为对比,近年大热的深度神经网络方法,这一数据则是11个。在KDDCup2015[3]竞赛中,排

    2022年6月1日
    106
  • PyCharm配置pytorch环境

    PyCharm配置pytorch环境cuda 安装教程 cudnn 安装教程 sinat 的博客 CSDN 博客 cuda 安装面向 Windows 的 Pytorch 完整安装教程 冰海的博客 CSDN 博客 windows 安装 pytorchwindo 安装 cuda10 2 bingo liu 的博客 CSDN 博客 cuda10 2Windows pycharm 安装 pytorch HWQlet 的博客 CSDN 博客 pycharm 安装 pytorchNVIDI CUDA pytorch 三者版本的对应关系 丹妍同学的博客

    2026年3月18日
    2
  • matlab空间计量AIC准则,关于AIC准则

    matlab空间计量AIC准则,关于AIC准则AIC准则提出背景计量经济学研究对象:量化的社会经济问题研究目的:利用已有信息,通过模型发现内在机理,并对未知信息作出统计推断核心问题:保证模型反映数据所代表的主要信息,降低噪声干扰项的影响,保证模型的预测准确性模型包含的信息量能否尽可能大?不能。一是干扰信息无法避免;二是若模型包含了全部信息,则模型的复杂度也会相应提高,相应地会提高经济学成本;三是人无法对模型的准确性做出客观而科学的评断。信息论…

    2022年5月10日
    35
  • vite项目优化

    vite项目优化vite 项目按需引入优化 optimizeddep reloadingnew

    2026年3月18日
    2
  • 腾讯回应龙虾抄袭 SkillHub仅为镜像站摘要

    腾讯回应龙虾抄袭 SkillHub仅为镜像站摘要

    2026年3月15日
    2
  • Banana Slides终极教程:10个技巧让AI帮你制作完美演示文稿

    Banana Slides终极教程:10个技巧让AI帮你制作完美演示文稿

    2026年3月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号