大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
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=static
mtu = 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]+") -- 匹配正则表达式
end
gw = 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' #2
option 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' #3
option 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 switch
option name 'rt305x'
option reset '1'
option enable_vlan '1'
config switch_vlan
option device 'rt305x'
option vlan '1'
option ports '0 1 2 3 6t'
config switch_vlan
option device 'rt305x'
option vlan '2'
option ports '4 6t'
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/223425.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...