OpenWRT版本:17

一、CBI语法

CBI去修改UCI配置文件的值,CBI是通过web控件选择值去修改UCI文件。,所有的CBI文件都必须返回一个luci.cbi.Map类型的对象。

--translate()是因为字符串中有空格,如果没有空格就不用使用该函数
m = Map("cbi_file", translate("First Tab Form"), translate("Please fill out the form below")) -- cbi_file是要修改的UCI配置文件
d = m:section(TypedSection, "info", "Part A of the form")  -- 修改'info'类型选项
a = d:option(Value, "name", "Name");  --创建一个标准的文本框,该文本框中的值会对应修改info类型下的name选项的值。
a.optional=false;    --该选项不是可选值
a.rmempty = false;  -- 当用户输入一个空值时从配置文件中移除该选项
return m
config 'info' 'A'  --代表一类选项 , 'A'是description(说明)option 'name' 'OpenWRT'  --name是参数,OpenWRT是参数值

二、例子


m = Map("network", "Network") -- 编辑/etc/config/network文件s = m:section(TypedSection, "interface", "Interfaces") -- 指定"interface"类型章节
s.addremove = true -- 允许用户创建和移除interfaces章节
function s:filter(value)return value ~= "loopback" and value -- 过滤掉loopback
end
s:depends("proto", "static") -- 仅显示proto参数值为static和dhcp的章节
s:depends("proto", "dhcp")p = s:option(ListValue, "proto", "Protocol") -- 创建一个下拉列表,用于修改proto参数值
p:value("static", "static") -- 添加列表值
p:value("dhcp", "DHCP")
p.default = "static"    --列表默认值s:option(Value, "ifname", "interface", "the physical interface to be used") -- 文本框,用于修改ifname参数值s:option(Value, "ipaddr", translate("IP Address"))  -- 文本框,用于修改ipaddr参数s:option(Value, "netmask", "Netmask"):depends("proto", "static") -- 文本框,用于修改netmask参数,依赖于proto=staticmtu = s:option(Value, "mtu", "MTU")
mtu.optional = true -- 该选项是可选的,dns = s:option(Value, "dns", "DNS-Server")
dns:depends("proto", "static") --依赖于proto=static
dns.optional = true  -- 该选项是可选的
function dns:validate(value) -- 验证值的合法性return value:match("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") --  匹配正则表达式
endgw = s:option(Value, "gateway", "Gateway") --文本框,用于修改网关。依赖于proto=static
gw:depends("proto", "static")
gw.rmempty = true -- 如果为空则移除它return m

network文件

# 1 和 4是被过滤的,只留下了2和3
config interface 'loopback'  #1 loopback被过滤了option ifname 'lo'option proto 'static'option ipaddr '127.0.0.1'option netmask '255.0.0.0'config globals 'globals'option ula_prefix 'fdb4:3b78:9c20::/48'config interface 'lan'   #2option type 'bridge'option ifname 'eth0.1'option proto 'static'option ipaddr '192.168.1.1'option netmask '255.255.255.0'option ip6assign '60'config device 'lan_dev'option name 'eth0.1'option macaddr '7a:25:44:7f:3c:d4'config interface 'wan'  #3option ifname 'eth0.2'option proto 'dhcp'config device 'wan_dev'option name 'eth0.2'option macaddr '7a:25:44:7f:3c:d5'config interface 'wan6'  #4 因proto=dhcpv6所以被过滤option ifname 'eth0.2'option proto 'dhcpv6'  config switchoption name 'rt305x'option reset '1'option enable_vlan '1'config switch_vlanoption device 'rt305x'option vlan '1'option ports '0 1 2 3 6t'config switch_vlanoption device 'rt305x'option vlan '2'option ports '4 6t'



OpenWRT(十一)LuCi开发(三)相关推荐

  1. 智能路由器-OpenWRT 系列三 (OpenWRT安装LuCI网络配置)

    OpenWRT 安装 LUCI 每次ssh登陆OpenWRT安装新软件时,都必须更新opkg opkg update 安装LUCI opkg install luci 安装luci中文语言包, 不同O ...

  2. OpenWrt HelloWorld程序开发入门 (三)

    OpenWrt   HelloWorld程序开发入门 1.首先编译生成开发环境,在上一节已经提到(点击这里) 2.首先使用git命令获取源代码并创建SDK目录 3.把现有的helloworld工程拷贝 ...

  3. OpenWRT - WEB界面开发思路和基本方法

    想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...

  4. SQL2K数据库开发三十之存储过程操作删除存储过程

            1.在要删除的存储过程上右击鼠标,在弹出的菜单中选择"删除"命令.         2.在"除去对象"对话框中显示了即将删除的对象,点击&quo ...

  5. TVM开发三个示例分析

    TVM开发三个示例分析 把自主生成的代码生成TVM 把自主生成的代码生成TVM 目录 简介 要生成C代码. 要生成任何其它图形表示. 实现一个C代码生成器 实现[CodegenC] 运算符代码生成 输 ...

  6. 展望二十一世纪第三个十年

    LiveVideoStack有幸生于二十一世纪的第二个十年,接下来聊聊下一个十年. 文 / 包研 距离2019年成为历史只有十几天了,十几天后我们将迎来二十一世纪第三个十年.2019对于LiveVid ...

  7. 从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件

    标题:从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/112 ...

  8. Python服务器开发三:Socket

    Python服务器开发三:Socket socket是操作系统中I/O的延续,它可以使进程和机器之间的通信成为可能.socket可以看成一个标准的文件描述符.不同的是文件需要用open()函数打开,而 ...

  9. CCNP-第十一篇-BGP(三)(精髓篇)

    CCNP-第十一篇-BGP(三) BGP十三条线路原则(大点) 能修改的前7条,後6条是无法修改的,所以实际上7条 跟ACL一样,从上往下执行,比如第一条比较出来了就不会继续往下了 工作中比较多用的, ...

  10. 抢饭碗?这位 05 后开发三款小程序!

    整理 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 2017 年 1 月 9 日,微信小程序横空出世.而后,支付宝小程序.百度小程序.12大厂商联盟的快应用等纷纷入局,在短短两年的时间里, ...

最新文章

  1. java 读取配置文件中的列表
  2. Python Xml类
  3. 使用钩子函数[3] - 建立一个全局的鼠标钩子
  4. react router 级联路由_前端路由原理解析和实现
  5. ehcache memcache redis 三大缓存
  6. Android5.1.1 - APK签名校验分析和修改源码绕过签名校验
  7. 电脑管理器地址栏 按右键会有的功能
  8. 聊聊从古至今都是如何加密的~
  9. CBOW(Continous Bag of Words)模型学习(2020-08-19)
  10. qt 设置进程优先级_如何设置最低优先级的进程?
  11. 联想微型计算机b540,联想B540一体机升级CPU 加内存
  12. (转)奴徒工匠师家圣
  13. 华为交换机-不同Vlan如何通信
  14. Oracle 常用工具和问题分析
  15. 西方哲学史 -- 赫拉克利特
  16. 高通骁龙855,麒麟980,A12,Exynos 9820芯片参数比较
  17. 基于Autosar的网络安全理解
  18. 头皮脂溢性皮炎推荐联合治疗:采乐50ml+希尔生100g(请看详情页)
  19. Cadstar格式导入功能
  20. Could not get JDBC Connection

热门文章

  1. java设置拨号界面_JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
  2. 基于单片机的超市储物柜设计_基于单片机的超市储物柜控制系统设计.docx
  3. ubuntu 下如何调节显卡风扇转速?
  4. Ubuntu下ATI显卡风扇转速调节脚本
  5. UVA 12304 (平面几何)
  6. 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 农场阳光(编程大题)
  7. win10连不上网,搜索不到WiFi,本地连接也断开
  8. html5 vue bootstrap学习报告
  9. 工资,一般讲税前还是税后?
  10. dying relu 和weight decay