openwrt做主路由_开发三问

openwrt做主路由_开发三问一、CBI语法CBI去修改UCI配置文件的值,CBI是通过web控件选择值去修改UCI文件。,所有的CBI文件都必须返回一个luci.cbi.Map类型的对象。–translate()是因为字符串中有空格,如果没有空格就不用使用该函数m=Map(“cbi_file”,translate(“FirstTabForm”),translate(“Pleasefilloutthefo

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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 			

Jetbrains全家桶1年46,售后保障稳定

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'


这里写图片描述
这里写图片描述
这里写图片描述

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BIRCH详解_Bilabial

    BIRCH详解_BilabialBIRCH(BalancedIterativeReducingandClusteringusingHierarchies)详解第三十次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇作为可伸缩聚类(ScalableClustering)算法的第三篇,主要是对BIRCH(BalancedIterativeReducingand…

    2025年6月16日
    0
  • 超详细MySQL安装及基本使用教程[通俗易懂]

    超详细MySQL安装及基本使用教程[通俗易懂]一、下载MySQL首先,去数据库的官网http://www.mysql.com下载MySQL。点击进入后的首页如下: 然后点击downloads,community,选择MySQLCommunityServer。如下图: 滑到下面,找到RecommendedDownload,然后点击gotodownloadpage。如下图: 点击download进入下载页面选择No…

    2022年4月27日
    50
  • C语言数组练习题目

    C语言数组练习题目C语言数组练习题目1、编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。#include<stdio.h>main(){ inta[10],i,j=0,k=0,l=0; printf(“请输入10个整数:”); for(i=0;i<10;i++) { scanf(“%d”,&a[i]); } for(i=0;i<10;i++) { if(a[i]>0) ++j; elseif(a[i]==0) ++k

    2022年7月11日
    14
  • vue beforeEach 跳转问题

    vue beforeEach 跳转问题我们直接在beforeEach函数里面判断用户是否登录然后跳转页面的时候会陷入一个死循环解决办法就是多加一层if判断首先判断用户是否有token或者时候登录然后再判断to参数里的path路径if(Lkcommon.getToken()){next()}else{if(to.path!==”/login”){next({path:”/lo…

    2022年6月29日
    59
  • 视觉显著性简介 Saliency Detection[通俗易懂]

    视觉显著性简介 Saliency Detection[通俗易懂]内容转移到博客文章系列:显著性检测1.简介视觉显著性包括从下而上和从上往下两种机制。从下而上也可以认为是数据驱动,即图像本身对人的吸引,从上而下则是在人意识控制下对图像进行注意。科研主要做的是从下

    2022年8月3日
    8
  • 大数据学习内容有哪些?大数据学习路线图

    大数据学习内容有哪些?大数据学习路线图很多人想学习大数据,但是都不清楚大数据学习应该怎么下手。大数据开发工程师简单整理了一下大数据学习路线图,希望对于学习大数据的朋友,有一定的帮助。 总的来说,如果是从零基础开始学习,总共分为八个阶段  第一阶段:HTML+css第二阶段:JAVASE学习第三阶段:javaweb第四阶段:企业级开发框架(JAVAEE)学完了java部门,就要开始大数据的技术学习…

    2022年5月24日
    41

发表回复

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

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