openwrt LuCI2—CBI

在”www/luci2/cbi.js”中定义了一组读写”/etc/config/”目录下UCI配置文件的函数,通过这些函数可以方便地读取,或者修改支持UCI的程序的配置参数。

例如:

“cbi_class.Map = L.ui.AbstractWidget.extend({”

“cbi_class.NamedSection = cbi_class.TypedSection.extend({”

“cbi_class.SingleSection = cbi_class.NamedSection.extend({”

等等;

 

例如在openwrt上保存wifi参数设置的配置文件为”/etc/config/wireless”

 

# cat /etc/config/wireless

config wifi-device      mt7603e

        option type     mt7603e

        option vendor   ralink

        option band     2.4G

        option channel  1

 

config wifi-iface

        option device   mt7603e

        option ifname   ra0

        option network  lan

        option mode     ap

        option ssid     hp-24g-8D3A 

        option encryption psk2

        option key      hello-wf-8D3A 

 

config wifi-device      mt7612e

        option type     mt7612e

        option vendor   ralink

        option band     5G

        option channel  0

        option autoch   2

 

config wifi-iface

        option device   mt7612e

        option ifname   rai0

        option network  lan

        option mode     ap

        option ssid     hp-5g-8D3A 

        option encryption psk2

        option key      hello-wf-8D3A 

 

 

 

 

里面定义的函数有读取,添加/删除/应用修改等等;

 

2. CBI页面描述:

   Map(config, title, description)

   :section(sectionclass, ...)

   NamedSection

   TypedSection

   Value

   ListValue

   Flag

   MultiValue

   DummyValue

   TextValue

   Button

 

例如:处理wifi参数的view “www/luci2/view/network.wireless”

 

L.ui.view.extend({

         execute: function() {

                   var self = this;

 

                   var m = new L.cbi.Map('wireless', {

                            caption:   L.tr('Wireless configuration')

                   });

处理”/etc/config/wireless”文件

 

                   var s = m.section(L.cbi.TypedSection, 'wifi-device', {

                            caption:   L.tr('WiFi devices'),

                            collabsible:       true

                   });

处理“wifi-device”这一节的内容;

 

 

 

由于网上关于LUCI2-CBI的资料很少,所以更多的内容可以参考LUCI-CBI;虽然LUCI-CBI是用lua语言写的,但是LUCI2由LUCI修改而来,所以很多东西功能和做法是类似的;

 

 

你可能感兴趣的:(openwrt)