Openwrt中luci配置頁面cbi小記


先看看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.   
  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:

  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.                                                                                                                 
  4. password = s:option(Value,"password",".........")                                                            
  5. password.password=true   --加密,也就是*號顯示,往往后面會帶一個button,能夠即時顯示密碼                                         
  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在非常多情況下不安常理出牌,還有待研究


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM