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 --不增加移除的按鈕  
  4. 這裏使用的是名字匹配,還有類型匹配,加如要config switch 這個時候我們可以使用 :  
  1. n = m:section(TypedSection, "switch",translate("xx"))  
假如上面的lan使用TypedSection interface的話  ,是可以同時匹配 config interface loopback 裏面的字段的。

這個時候我們已經綁定了lan端口的字段 ,就可以開始對裏面的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的密碼框,這個時候就要用到depends()這個函數了,比如:
  1. key = s:option(Value,"key",translate("Password"))                                                            
  2. key:depends({encryption="wpa-psk2"})   
這裏結合上面的勾選,假如勾選,就會出現一個密碼框,也可以和下拉框配合一起使用

最後通過修改帳號密碼來介紹幾個參數 :

  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在很多情況下不安常理出牌,還有待研究
發佈了19 篇原創文章 · 獲贊 24 · 訪問量 205萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章