Openwrt中luci配置页面cbi小记

先看看network的配置文件:

[html]  view plain copy
  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.   
  7. config interface 'lan'  
  8.         option ifname 'eth0 eth1'  
  9.         option type 'bridge'  
  10.         option proto 'static'  
  11.         option ipaddr '192.168.1.10'  
  12.         option netmask '255.255.255.0'  
  13.   
  14. config switch  
  15.         option name 'eth0'  
  16.         option reset '1'  
  17.         option enable_vlan '1'  
  18.   
  19. config switch_vlan  
  20.         option device 'eth0'  
  21.         option vlan '1'  
  22.         option ports '0 1 2 3 4'  

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

[html]  view plain copy
  1. m = Map("network")  
然后绑定network下面的一个部分,比如config interface 'lan' :
[html]  view plain copy
  1. n = m:section(NamedSection, "lan", translate("接口配置"))  
  2. n.anonymous = true  
  3. n.addremove = false --不增加移除的按钮  
  4. 这里使用的是名字匹配,还有类型匹配,加如要config switch 这个时候我们可以使用 :  
[html]  view plain copy
  1. n = m:section(TypedSection, "switch",translate("xx"))  
假如上面的lan使用TypedSection interface的话  ,是可以同时匹配 config interface loopback 里面的字段的。

这个时候我们已经绑定了lan端口的字段 ,就可以开始对里面的ipaddr,netmask等进行修改 :

[html]  view plain copy
  1. ip = n:option(Value,"ipaddr",translate("IP地址")  
这个时候就会有一个IP地址 :                             ,这样的对话框,里面填写即可,如果需要添加提示,可以这样:
[html]  view plain copy
  1. ip = n:option(Value,"ipaddr","IP地址","修改IP地址”)  
这个时候下方就会显示一句提示,修改IP地址。

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

[html]  view plain copy
  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,使用方法类似,介绍一点最简单的使用 :

[html]  view plain copy
  1. encryption = s:option(Flag,"encryption",translate("............"))                                            
  2. encryption.default = encryption.enabled                                     
  3. encryption.enabled = "wpa-psk2"                                             
  4. encryption.disabled = "none"   
这个是选择加不加密的,一般这个时候我们选择以后要出现一个key的密码框,这个时候就要用到depends()这个函数了,比如:
[html]  view plain copy
  1. key = s:option(Value,"key",translate("Password"))                                                            
  2. key:depends({encryption="wpa-psk2"})   
这里结合上面的勾选,假如勾选,就会出现一个密码框,也可以和下拉框配合一起使用

最后通过修改帐号密码来介绍几个参数 :

[html]  view plain copy
  1. username = s:option(Value,"username",".........")                                                             
  2. username.rmempty = false --不允许为空                                
  3.                                                                                                                 
  4. password = s:option(Value,"password",".........")                                                            
  5. password.password=true   --加密,也就是*号显示,往往后面会带一个按钮,可以即时显示密码                                         
  6. 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)