Openwrt中luci配置页面cbi小记

时间:2023-12-13 11:16:38

先看看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在非常多情况下不安常理出牌,还有待研究