OpenWRT(十一)LuCi开发(三)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: OpenWRT教程

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是参数值

1.png

二、例子


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'

2.png

3.png

4.png

相关文章
|
Linux 编译器 开发工具
LINUX入门篇【4】开发篇--开发工具vim的使用
LINUX入门篇【4】开发篇--开发工具vim的使用
92 1
|
网络架构
OpenWRT(三)支持Web界面
我们买来的路由器在浏览器输入192.168.1.1(有些是其他地址)就能进入一个web的配置界面。OpenWRT也能添加默认的web界面。OpenWRT的web界面是使用LuCI来构造的。(LuCI自行百度)
|
JavaScript 前端开发 调度
|
监控 安全 网络协议
OpenWRT好用的插件
OpenWRT好用的插件:
4209 0
OpenWRT好用的插件
|
Ubuntu 开发工具 git
|
Web App开发 Linux 网络安全
|
Ubuntu Linux Windows
Windows安装Linux子系统--安装GUI界面
原文:Windows安装Linux子系统--安装GUI界面  前段时间发现Windows可以安装Linux子系统了,恰逢电脑换了固态,还没装Linux,不如趁机体验一番! 1、准备工作 1.1、打开Windows的子系统功能 1.2、打开Windows开发人员模式 打开设置–>更新和安全–>针对开发人员,选择开发人员模式–>确定  确认后,重启电脑,系统更新配置。
4049 0