先看看network的配置文件:

  1. config interface 'loopback'
  2. option ifname 'lo'
  3. option proto 'static'
  4. option ipaddr '127.0.0.1'
  5. option netmask '255.0.0.0'
  6. config interface 'lan'
  7. option ifname 'eth0 eth1'
  8. option type 'bridge'
  9. option proto 'static'
  10. option ipaddr '192.168.1.10'
  11. option netmask '255.255.255.0'
  12. config switch
  13. option name 'eth0'
  14. option reset '1'
  15. option enable_vlan '1'
  16. config switch_vlan
  17. option device 'eth0'
  18. option vlan '1'
  19. option ports '0 1 2 3 4'

首先绑定/etc/config下的一个配置文件,比方network:

  1. m = Map("network")

然后绑定network以下的一个部分,比方config interface 'lan' :

  1. n = m:section(NamedSection, "lan", translate("接口配置"))
  2. n.anonymous = true
  3. n.addremove = false --不添加移除的button
  4. 这里使用的是名字匹配。还有类型匹配。加如要config switch 这个时候我们能够使用 :
  1. n = m:section(TypedSection, "switch",translate("xx"))

假如上面的lan使用TypedSection interface的话  ,是能够同一时候匹配 config interface loopback 里面的字段的。

这个时候我们已经绑定了lanport的字段 ,就能够開始对里面的ipaddr,netmask等进行改动 :

  1. ip = n:option(Value,"ipaddr",translate("IP地址")

这个时候就会有一个IP地址 :                             。这种对话框,里面填写就可以,假设须要加入提示,能够这样:

  1. ip = n:option(Value,"ipaddr","IP地址","改动IP地址”)

这个时候下方就会显示一句提示。改动IP地址。

当中的Value还有几种别的属性,比方Listvalue,下拉选择框,假如说我要选择netmask,给几个选项,下拉选择:

  1. mask = s:option(ListValue,"netmask",translate("子网掩码"))
  2. mask.override_values = true
  3. mask:value("255.255.255.0",translate("255.255.255.0"))
  4. mask:value("xxx.xxx.xxx.x",translate("xxxxxx"))

这个时候就会出现一个子网掩码的下拉框供选择。详细更复杂的功能能够參考官方文档

Value另一个属性就勾选框,Flag,用法类似,介绍一点最简单的使用 :

  1. encryption = s:option(Flag,"encryption",translate("............"))
  2. encryption.default = encryption.enabled
  3. encryption.enabled = "wpa-psk2"
  4. encryption.disabled = "none"

这个是选择加不加密的,一般这个时候我们选择以后要出现一个key的password框。这个时候就要用到depends()这个函数了,比方:

  1. key = s:option(Value,"key",translate("Password"))
  2. key:depends({encryption="wpa-psk2"})

这里结合上面的勾选。假如勾选,就会出现一个password框,也能够和下拉框配合一起使用

最后通过改动帐号password来介绍几个參数 :

  1. username = s:option(Value,"username",".........")
  2. username.rmempty = false --不同意为空
  3. password = s:option(Value,"password",".........")
  4. password.password=true   --加密,也就是*号显示,往往后面会带一个button,能够即时显示密码
  5. password.rmempt =false

临时就这么多。以后再慢慢补充,近期在写机器人。挂在irc上面,结合曾经写的一些查询类程序。能够实现非常多功能嘿嘿,上班没事的时候写写

对了 ,改动完了记得rm -rf /tmp/luci-*来更新缓存,不然看不到变化的,还有浏览器删掉又一次输入地址!

新增button简单应用

button = modex:option(Button, "modename", "桥接模式")

button.inputtitle = translate("切换")

button.inputstyle = "apply"

function button.write(self, section, value)

    AbstractValue.write(self, section, value)

    luci.sys.call("uci set network.lan.ifname=\"eth0.1 eth0.2\" ;uci del network.wan")

    --self.inputtitle = translate("路由模式")

    return

end

DDummyValue 静态文本

depends在非常多情况下不安常理出牌,还有待研究

Openwrt中luci配置页面cbi小记的更多相关文章

  1. 转:openwrt中luci学习笔记

    原文地址:openwrt中luci学习笔记 最近在学习OpenWrt,需要在OpenWrt的WEB界面增加内容,本文将讲述修改OpenWrt的过程和其中遇到的问题. 一.WEB界面开发         ...

  2. openwrt 中route配置

    route配置项默认保存在文件 /etc/config/network 中. 配置route的接口“interface” 使用的协议需要为dhcp才可. config interface 'wan' ...

  3. OpenWrt 中安装配置Transmission

    参考文章https://wiki.openwrt.org/doc/uci/transmission 1. 安装包 必装的 transmission-daemon-openssl (后台服务)选装的 t ...

  4. NodeMCU之旅(四):实现Web配置页面

    引言 利用Web页面做配置可以轻松适应用户的多种设备,如Android, IOS等.本文将介绍如何在NodeMCU中实现配置页面. 接线图请参考NodeMCU之旅(三):响应配置按钮. 配置页面后端 ...

  5. openwrt开源系统LUCI配置界面

    转自:http://www.right.com.cn/forum/thread-131035-1-1.html 本人菜鸟,最近在学习这方面的知识,在参考资料的基础上总结如下内容.这篇文章针对如何对op ...

  6. 路由器开源系统openwrt配置页面定制

    1. 新建虚拟机,百度文库有一篇<使用VMware安装OpenWrt>,地址:http://wenku.baidu.com/link?url=NkvaQpTf2dR8FpYn7JD9A7- ...

  7. [转载]ASP.NET伪静态页面的实现和伪静态在IIS7.0中的配置

    ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置 最近在写一个CMS的内容管理系统,需要用到一个伪静态方面的方法,在网上找了一下这方面的资料,现将这方面的资源记录一下. 本机环境: ...

  8. 配置树莓派3的openwrt中的网络

    在上一篇中讲到openwrt的编译安装: http://www.cnblogs.com/yeqluofwupheng/p/7296218.html 但是烧写进去,启动系统后发现它的默认配置是路由器,所 ...

  9. 企业级监控软件Zabbix搭建部署之zabbix在WEB页面中的配置

    企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 关于安装请看 http://www.linuxidc.com ...

随机推荐

  1. 诡异之--map clear 之后可能导致size != 0的操作

    map<char, int>mp; charMp[; charMp['b'] ++; cout<<charMp['a']<<endl; cout<<ch ...

  2. mysql远程服务器访问数据库

    创建一个MySQL用户,并设置可以远程访问 grant usage on *.* to 'fred'@'localhost' identified by 'fred';//创建用户fred密码ferd ...

  3. CSS布局——三栏布局

    说到三栏布局,很多都会提到圣杯布局和双飞翼布局这两个经典的三栏布局方式.于是,我在网上搜了一些相关资料,阅读并跟着代码敲了一遍,发现在处理三栏布局上,他们采用的都是两边栏固定,中间栏自适应的策略.在处 ...

  4. Android开发之ThreadLocal原理深入理解

    [Android]ThreadLocal的定义和用途 ThreadLocal用于实现在不同的线程中存储线程私有数据的类.在多线程的环境中,当多个线程需要对某个变量进行频繁操作,同时各个线程间不需要同步 ...

  5. C#调用Win32 api时的内存操作

    一般情况下,C#与Win 32 Api的互操作都表现的很一致:值类型传递结构体,一维.二维指针传递IntPtr.在Win32 分配内存时,可以通过IntPtr以类似移动指针的方式读取内存.通过IntP ...

  6. zabbix配置邮件报警(第四篇)

    zabbix配置邮件报警(第四篇) 邮件报警可采用本地邮件服务,也可以自定义脚本,这里我采用本地邮件服务报警 添加收件人

  7. day08-字符编码

    目录 计算机基础 启动应用程序 写文本的流程 Python解释器执行文件的原理 Python解释器与文本编辑器的区别 字符编码 字符编码发生在哪三个阶段 字符编码发展史与分类 总结 Python2与P ...

  8. 非常好用的1款UI自动化测试工具:airTest

    网易团队开发的UI自动化测试神器airTest,下载地址:http://airtest.netease.com/tutorial/Tutorial.html Appium和airTest对比,我的看法 ...

  9. java 异常报错总结

    1.java.lang.ArithmeticException:这是算数异常 比如分母位0 2. java.lang.ArrayIndexOutOfBoundsException:数组下标越界异常 3 ...

  10. 安装低版本django1.11出错

    错误信息: File "C:\python3\lib\site-packages\django\utils\autoreload.py", line 227, in wrapper ...