2019-11-05 08:33:40 +00:00
<!DOCTYPE html>
2019-11-07 11:39:24 +00:00
< html >
2019-11-05 08:33:40 +00:00
< head >
< meta charset = "utf-8" >
2019-11-07 11:39:24 +00:00
< title > Source: uci.js< / title >
< script src = "scripts/prettify/prettify.js" > < / script >
< script src = "scripts/prettify/lang-css.js" > < / script >
< script src = "scripts/jquery.min.js" > < / script >
2019-11-05 08:33:40 +00:00
<!-- [if lt IE 9]>
< script src = "//html5shiv.googlecode.com/svn/trunk/html5.js" > < / script >
<![endif]-->
< link type = "text/css" rel = "stylesheet" href = "styles/prettify-tomorrow.css" >
2019-11-07 11:39:24 +00:00
< link type = "text/css" rel = "stylesheet" href = "styles/bootstrap.min.css" >
< link type = "text/css" rel = "stylesheet" href = "styles/jaguar.css" >
< script >
var config = {"monospaceLinks":true,"cleverLinks":true,"default":{"outputSourceFiles":true}};
< / script >
2019-11-05 08:33:40 +00:00
2019-11-07 11:39:24 +00:00
< / head >
2019-11-05 08:33:40 +00:00
< body >
2019-11-07 11:39:24 +00:00
< div id = "wrap" class = "clearfix" >
2019-11-05 08:33:40 +00:00
2019-11-07 11:39:24 +00:00
< div class = "navigation" >
< h3 class = "applicationName" > < a href = "index.html" > < / a > < / h3 >
2019-11-05 08:33:40 +00:00
2019-11-07 11:39:24 +00:00
< div class = "search" >
< input id = "search" type = "text" class = "form-control input-sm" placeholder = "Search Documentations" >
< / div >
< ul class = "list" >
< li class = "item" data-name = "LuCI" >
< span class = "title" >
< a href = "LuCI.html" > LuCI< / a >
< / span >
< ul class = "members itemMembers" >
< span class = "subtitle" > Members< / span >
< li data-name = "LuCI#env" > < a href = "LuCI.html#env" > env< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< span class = "subtitle" > Typedefs< / span >
< li data-name = "LuCI.requestCallbackFn" > < a href = "LuCI.html#.requestCallbackFn" > requestCallbackFn< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI#bind" > < a href = "LuCI.html#bind" > bind< / a > < / li >
< li data-name = "LuCI#error" > < a href = "LuCI.html#error" > error< / a > < / li >
< li data-name = "LuCI#get" > < a href = "LuCI.html#get" > get< / a > < / li >
< li data-name = "LuCI#halt" > < a href = "LuCI.html#halt" > halt< / a > < / li >
< li data-name = "LuCI#hasSystemFeature" > < a href = "LuCI.html#hasSystemFeature" > hasSystemFeature< / a > < / li >
< li data-name = "LuCI#isObject" > < a href = "LuCI.html#isObject" > isObject< / a > < / li >
< li data-name = "LuCI#location" > < a href = "LuCI.html#location" > location< / a > < / li >
< li data-name = "LuCI#path" > < a href = "LuCI.html#path" > path< / a > < / li >
< li data-name = "LuCI#poll" > < a href = "LuCI.html#poll" > poll< / a > < / li >
< li data-name = "LuCI#post" > < a href = "LuCI.html#post" > post< / a > < / li >
< li data-name = "LuCI#raise" > < a href = "LuCI.html#raise" > raise< / a > < / li >
< li data-name = "LuCI#require" > < a href = "LuCI.html#require" > require< / a > < / li >
< li data-name = "LuCI#resolveDefault" > < a href = "LuCI.html#resolveDefault" > resolveDefault< / a > < / li >
< li data-name = "LuCI#resource" > < a href = "LuCI.html#resource" > resource< / a > < / li >
< li data-name = "LuCI#run" > < a href = "LuCI.html#run" > run< / a > < / li >
< li data-name = "LuCI#sortedKeys" > < a href = "LuCI.html#sortedKeys" > sortedKeys< / a > < / li >
< li data-name = "LuCI#stop" > < a href = "LuCI.html#stop" > stop< / a > < / li >
< li data-name = "LuCI#toArray" > < a href = "LuCI.html#toArray" > toArray< / a > < / li >
< li data-name = "LuCI#url" > < a href = "LuCI.html#url" > url< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Class" >
< span class = "title" >
< a href = "LuCI.Class.html" > LuCI.Class< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Class.extend" > < a href = "LuCI.Class.html#.extend" > extend< / a > < / li >
< li data-name = "LuCI.Class.instantiate" > < a href = "LuCI.Class.html#.instantiate" > instantiate< / a > < / li >
< li data-name = "LuCI.Class.isSubclass" > < a href = "LuCI.Class.html#.isSubclass" > isSubclass< / a > < / li >
< li data-name = "LuCI.Class.singleton" > < a href = "LuCI.Class.html#.singleton" > singleton< / a > < / li >
< li data-name = "LuCI.Class#super" > < a href = "LuCI.Class.html#super" > super< / a > < / li >
< li data-name = "LuCI.Class#varargs" > < a href = "LuCI.Class.html#varargs" > varargs< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.dom" >
< span class = "title" >
< a href = "LuCI.dom.html" > LuCI.dom< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< span class = "subtitle" > Typedefs< / span >
< li data-name = "LuCI.dom~ignoreCallbackFn" > < a href = "LuCI.dom.html#~ignoreCallbackFn" > ignoreCallbackFn< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.dom#append" > < a href = "LuCI.dom.html#append" > append< / a > < / li >
< li data-name = "LuCI.dom#attr" > < a href = "LuCI.dom.html#attr" > attr< / a > < / li >
< li data-name = "LuCI.dom#bindClassInstance" > < a href = "LuCI.dom.html#bindClassInstance" > bindClassInstance< / a > < / li >
< li data-name = "LuCI.dom#callClassMethod" > < a href = "LuCI.dom.html#callClassMethod" > callClassMethod< / a > < / li >
< li data-name = "LuCI.dom#content" > < a href = "LuCI.dom.html#content" > content< / a > < / li >
< li data-name = "LuCI.dom#create" > < a href = "LuCI.dom.html#create" > create< / a > < / li >
< li data-name = "LuCI.dom#data" > < a href = "LuCI.dom.html#data" > data< / a > < / li >
< li data-name = "LuCI.dom#elem" > < a href = "LuCI.dom.html#elem" > elem< / a > < / li >
< li data-name = "LuCI.dom#findClassInstance" > < a href = "LuCI.dom.html#findClassInstance" > findClassInstance< / a > < / li >
< li data-name = "LuCI.dom#isEmpty" > < a href = "LuCI.dom.html#isEmpty" > isEmpty< / a > < / li >
< li data-name = "LuCI.dom#matches" > < a href = "LuCI.dom.html#matches" > matches< / a > < / li >
< li data-name = "LuCI.dom#parent" > < a href = "LuCI.dom.html#parent" > parent< / a > < / li >
< li data-name = "LuCI.dom#parse" > < a href = "LuCI.dom.html#parse" > parse< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.fs" >
< span class = "title" >
< a href = "LuCI.fs.html" > LuCI.fs< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< span class = "subtitle" > Typedefs< / span >
< li data-name = "LuCI.fs.FileExecResult" > < a href = "LuCI.fs.html#.FileExecResult" > FileExecResult< / a > < / li >
< li data-name = "LuCI.fs.FileStatEntry" > < a href = "LuCI.fs.html#.FileStatEntry" > FileStatEntry< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.fs#exec" > < a href = "LuCI.fs.html#exec" > exec< / a > < / li >
< li data-name = "LuCI.fs#lines" > < a href = "LuCI.fs.html#lines" > lines< / a > < / li >
< li data-name = "LuCI.fs#list" > < a href = "LuCI.fs.html#list" > list< / a > < / li >
< li data-name = "LuCI.fs#read" > < a href = "LuCI.fs.html#read" > read< / a > < / li >
< li data-name = "LuCI.fs#remove" > < a href = "LuCI.fs.html#remove" > remove< / a > < / li >
< li data-name = "LuCI.fs#stat" > < a href = "LuCI.fs.html#stat" > stat< / a > < / li >
< li data-name = "LuCI.fs#trimmed" > < a href = "LuCI.fs.html#trimmed" > trimmed< / a > < / li >
< li data-name = "LuCI.fs#write" > < a href = "LuCI.fs.html#write" > write< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Headers" >
< span class = "title" >
< a href = "LuCI.Headers.html" > LuCI.Headers< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Headers#get" > < a href = "LuCI.Headers.html#get" > get< / a > < / li >
< li data-name = "LuCI.Headers#has" > < a href = "LuCI.Headers.html#has" > has< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Network" >
< span class = "title" >
< a href = "LuCI.Network.html" > LuCI.Network< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< span class = "subtitle" > Typedefs< / span >
< li data-name = "LuCI.Network.SwitchTopology" > < a href = "LuCI.Network.html#.SwitchTopology" > SwitchTopology< / a > < / li >
< li data-name = "LuCI.Network.WifiEncryption" > < a href = "LuCI.Network.html#.WifiEncryption" > WifiEncryption< / a > < / li >
< li data-name = "LuCI.Network.WifiPeerEntry" > < a href = "LuCI.Network.html#.WifiPeerEntry" > WifiPeerEntry< / a > < / li >
< li data-name = "LuCI.Network.WifiRateEntry" > < a href = "LuCI.Network.html#.WifiRateEntry" > WifiRateEntry< / a > < / li >
< li data-name = "LuCI.Network.WifiScanResult" > < a href = "LuCI.Network.html#.WifiScanResult" > WifiScanResult< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Network#addNetwork" > < a href = "LuCI.Network.html#addNetwork" > addNetwork< / a > < / li >
< li data-name = "LuCI.Network#addWifiNetwork" > < a href = "LuCI.Network.html#addWifiNetwork" > addWifiNetwork< / a > < / li >
< li data-name = "LuCI.Network#deleteNetwork" > < a href = "LuCI.Network.html#deleteNetwork" > deleteNetwork< / a > < / li >
< li data-name = "LuCI.Network#deleteWifiNetwork" > < a href = "LuCI.Network.html#deleteWifiNetwork" > deleteWifiNetwork< / a > < / li >
< li data-name = "LuCI.Network#flushCache" > < a href = "LuCI.Network.html#flushCache" > flushCache< / a > < / li >
< li data-name = "LuCI.Network#formatWifiEncryption" > < a href = "LuCI.Network.html#formatWifiEncryption" > formatWifiEncryption< / a > < / li >
< li data-name = "LuCI.Network#getDevice" > < a href = "LuCI.Network.html#getDevice" > getDevice< / a > < / li >
< li data-name = "LuCI.Network#getDevices" > < a href = "LuCI.Network.html#getDevices" > getDevices< / a > < / li >
< li data-name = "LuCI.Network#getDSLModemType" > < a href = "LuCI.Network.html#getDSLModemType" > getDSLModemType< / a > < / li >
< li data-name = "LuCI.Network#getHostHints" > < a href = "LuCI.Network.html#getHostHints" > getHostHints< / a > < / li >
< li data-name = "LuCI.Network#getIfnameOf" > < a href = "LuCI.Network.html#getIfnameOf" > getIfnameOf< / a > < / li >
< li data-name = "LuCI.Network#getNetwork" > < a href = "LuCI.Network.html#getNetwork" > getNetwork< / a > < / li >
< li data-name = "LuCI.Network#getNetworks" > < a href = "LuCI.Network.html#getNetworks" > getNetworks< / a > < / li >
< li data-name = "LuCI.Network#getProtocol" > < a href = "LuCI.Network.html#getProtocol" > getProtocol< / a > < / li >
< li data-name = "LuCI.Network#getProtocols" > < a href = "LuCI.Network.html#getProtocols" > getProtocols< / a > < / li >
< li data-name = "LuCI.Network#getSwitchTopologies" > < a href = "LuCI.Network.html#getSwitchTopologies" > getSwitchTopologies< / a > < / li >
< li data-name = "LuCI.Network#getWAN6Networks" > < a href = "LuCI.Network.html#getWAN6Networks" > getWAN6Networks< / a > < / li >
< li data-name = "LuCI.Network#getWANNetworks" > < a href = "LuCI.Network.html#getWANNetworks" > getWANNetworks< / a > < / li >
< li data-name = "LuCI.Network#getWifiDevice" > < a href = "LuCI.Network.html#getWifiDevice" > getWifiDevice< / a > < / li >
< li data-name = "LuCI.Network#getWifiDevices" > < a href = "LuCI.Network.html#getWifiDevices" > getWifiDevices< / a > < / li >
< li data-name = "LuCI.Network#getWifiNetwork" > < a href = "LuCI.Network.html#getWifiNetwork" > getWifiNetwork< / a > < / li >
< li data-name = "LuCI.Network#getWifiNetworks" > < a href = "LuCI.Network.html#getWifiNetworks" > getWifiNetworks< / a > < / li >
< li data-name = "LuCI.Network#isIgnoredDevice" > < a href = "LuCI.Network.html#isIgnoredDevice" > isIgnoredDevice< / a > < / li >
< li data-name = "LuCI.Network#maskToPrefix" > < a href = "LuCI.Network.html#maskToPrefix" > maskToPrefix< / a > < / li >
< li data-name = "LuCI.Network#prefixToMask" > < a href = "LuCI.Network.html#prefixToMask" > prefixToMask< / a > < / li >
< li data-name = "LuCI.Network#registerErrorCode" > < a href = "LuCI.Network.html#registerErrorCode" > registerErrorCode< / a > < / li >
< li data-name = "LuCI.Network#registerPatternVirtual" > < a href = "LuCI.Network.html#registerPatternVirtual" > registerPatternVirtual< / a > < / li >
< li data-name = "LuCI.Network#registerProtocol" > < a href = "LuCI.Network.html#registerProtocol" > registerProtocol< / a > < / li >
< li data-name = "LuCI.Network#renameNetwork" > < a href = "LuCI.Network.html#renameNetwork" > renameNetwork< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Network.Device" >
< span class = "title" >
< a href = "LuCI.Network.Device.html" > LuCI.Network.Device< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Network.Device#getBridgeID" > < a href = "LuCI.Network.Device.html#getBridgeID" > getBridgeID< / a > < / li >
< li data-name = "LuCI.Network.Device#getBridgeSTP" > < a href = "LuCI.Network.Device.html#getBridgeSTP" > getBridgeSTP< / a > < / li >
< li data-name = "LuCI.Network.Device#getI18n" > < a href = "LuCI.Network.Device.html#getI18n" > getI18n< / a > < / li >
< li data-name = "LuCI.Network.Device#getIP6Addrs" > < a href = "LuCI.Network.Device.html#getIP6Addrs" > getIP6Addrs< / a > < / li >
< li data-name = "LuCI.Network.Device#getIPAddrs" > < a href = "LuCI.Network.Device.html#getIPAddrs" > getIPAddrs< / a > < / li >
< li data-name = "LuCI.Network.Device#getMAC" > < a href = "LuCI.Network.Device.html#getMAC" > getMAC< / a > < / li >
< li data-name = "LuCI.Network.Device#getMTU" > < a href = "LuCI.Network.Device.html#getMTU" > getMTU< / a > < / li >
< li data-name = "LuCI.Network.Device#getName" > < a href = "LuCI.Network.Device.html#getName" > getName< / a > < / li >
< li data-name = "LuCI.Network.Device#getNetwork" > < a href = "LuCI.Network.Device.html#getNetwork" > getNetwork< / a > < / li >
< li data-name = "LuCI.Network.Device#getNetworks" > < a href = "LuCI.Network.Device.html#getNetworks" > getNetworks< / a > < / li >
< li data-name = "LuCI.Network.Device#getPorts" > < a href = "LuCI.Network.Device.html#getPorts" > getPorts< / a > < / li >
< li data-name = "LuCI.Network.Device#getRXBytes" > < a href = "LuCI.Network.Device.html#getRXBytes" > getRXBytes< / a > < / li >
< li data-name = "LuCI.Network.Device#getRXPackets" > < a href = "LuCI.Network.Device.html#getRXPackets" > getRXPackets< / a > < / li >
< li data-name = "LuCI.Network.Device#getShortName" > < a href = "LuCI.Network.Device.html#getShortName" > getShortName< / a > < / li >
< li data-name = "LuCI.Network.Device#getTXBytes" > < a href = "LuCI.Network.Device.html#getTXBytes" > getTXBytes< / a > < / li >
< li data-name = "LuCI.Network.Device#getTXPackets" > < a href = "LuCI.Network.Device.html#getTXPackets" > getTXPackets< / a > < / li >
< li data-name = "LuCI.Network.Device#getType" > < a href = "LuCI.Network.Device.html#getType" > getType< / a > < / li >
< li data-name = "LuCI.Network.Device#getTypeI18n" > < a href = "LuCI.Network.Device.html#getTypeI18n" > getTypeI18n< / a > < / li >
< li data-name = "LuCI.Network.Device#getWifiNetwork" > < a href = "LuCI.Network.Device.html#getWifiNetwork" > getWifiNetwork< / a > < / li >
< li data-name = "LuCI.Network.Device#isBridge" > < a href = "LuCI.Network.Device.html#isBridge" > isBridge< / a > < / li >
< li data-name = "LuCI.Network.Device#isBridgePort" > < a href = "LuCI.Network.Device.html#isBridgePort" > isBridgePort< / a > < / li >
< li data-name = "LuCI.Network.Device#isUp" > < a href = "LuCI.Network.Device.html#isUp" > isUp< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Network.Hosts" >
< span class = "title" >
< a href = "LuCI.Network.Hosts.html" > LuCI.Network.Hosts< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Network.Hosts#getHostnameByIP6Addr" > < a href = "LuCI.Network.Hosts.html#getHostnameByIP6Addr" > getHostnameByIP6Addr< / a > < / li >
< li data-name = "LuCI.Network.Hosts#getHostnameByIPAddr" > < a href = "LuCI.Network.Hosts.html#getHostnameByIPAddr" > getHostnameByIPAddr< / a > < / li >
< li data-name = "LuCI.Network.Hosts#getHostnameByMACAddr" > < a href = "LuCI.Network.Hosts.html#getHostnameByMACAddr" > getHostnameByMACAddr< / a > < / li >
< li data-name = "LuCI.Network.Hosts#getIP6AddrByMACAddr" > < a href = "LuCI.Network.Hosts.html#getIP6AddrByMACAddr" > getIP6AddrByMACAddr< / a > < / li >
< li data-name = "LuCI.Network.Hosts#getIPAddrByMACAddr" > < a href = "LuCI.Network.Hosts.html#getIPAddrByMACAddr" > getIPAddrByMACAddr< / a > < / li >
< li data-name = "LuCI.Network.Hosts#getMACAddrByIP6Addr" > < a href = "LuCI.Network.Hosts.html#getMACAddrByIP6Addr" > getMACAddrByIP6Addr< / a > < / li >
< li data-name = "LuCI.Network.Hosts#getMACAddrByIPAddr" > < a href = "LuCI.Network.Hosts.html#getMACAddrByIPAddr" > getMACAddrByIPAddr< / a > < / li >
< li data-name = "LuCI.Network.Hosts#getMACHints" > < a href = "LuCI.Network.Hosts.html#getMACHints" > getMACHints< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Network.Protocol" >
< span class = "title" >
< a href = "LuCI.Network.Protocol.html" > LuCI.Network.Protocol< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Network.Protocol#addDevice" > < a href = "LuCI.Network.Protocol.html#addDevice" > addDevice< / a > < / li >
< li data-name = "LuCI.Network.Protocol#containsDevice" > < a href = "LuCI.Network.Protocol.html#containsDevice" > containsDevice< / a > < / li >
< li data-name = "LuCI.Network.Protocol#deleteDevice" > < a href = "LuCI.Network.Protocol.html#deleteDevice" > deleteDevice< / a > < / li >
< li data-name = "LuCI.Network.Protocol#get" > < a href = "LuCI.Network.Protocol.html#get" > get< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getDevice" > < a href = "LuCI.Network.Protocol.html#getDevice" > getDevice< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getDevices" > < a href = "LuCI.Network.Protocol.html#getDevices" > getDevices< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getDNS6Addrs" > < a href = "LuCI.Network.Protocol.html#getDNS6Addrs" > getDNS6Addrs< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getDNSAddrs" > < a href = "LuCI.Network.Protocol.html#getDNSAddrs" > getDNSAddrs< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getErrors" > < a href = "LuCI.Network.Protocol.html#getErrors" > getErrors< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getExpiry" > < a href = "LuCI.Network.Protocol.html#getExpiry" > getExpiry< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getGateway6Addr" > < a href = "LuCI.Network.Protocol.html#getGateway6Addr" > getGateway6Addr< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getGatewayAddr" > < a href = "LuCI.Network.Protocol.html#getGatewayAddr" > getGatewayAddr< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getI18n" > < a href = "LuCI.Network.Protocol.html#getI18n" > getI18n< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getIfname" > < a href = "LuCI.Network.Protocol.html#getIfname" > getIfname< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getIP6Addr" > < a href = "LuCI.Network.Protocol.html#getIP6Addr" > getIP6Addr< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getIP6Addrs" > < a href = "LuCI.Network.Protocol.html#getIP6Addrs" > getIP6Addrs< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getIP6Prefix" > < a href = "LuCI.Network.Protocol.html#getIP6Prefix" > getIP6Prefix< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getIPAddr" > < a href = "LuCI.Network.Protocol.html#getIPAddr" > getIPAddr< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getIPAddrs" > < a href = "LuCI.Network.Protocol.html#getIPAddrs" > getIPAddrs< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getL2Device" > < a href = "LuCI.Network.Protocol.html#getL2Device" > getL2Device< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getL3Device" > < a href = "LuCI.Network.Protocol.html#getL3Device" > getL3Device< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getMetric" > < a href = "LuCI.Network.Protocol.html#getMetric" > getMetric< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getName" > < a href = "LuCI.Network.Protocol.html#getName" > getName< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getNetmask" > < a href = "LuCI.Network.Protocol.html#getNetmask" > getNetmask< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getOpkgPackage" > < a href = "LuCI.Network.Protocol.html#getOpkgPackage" > getOpkgPackage< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getProtocol" > < a href = "LuCI.Network.Protocol.html#getProtocol" > getProtocol< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getType" > < a href = "LuCI.Network.Protocol.html#getType" > getType< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getUptime" > < a href = "LuCI.Network.Protocol.html#getUptime" > getUptime< / a > < / li >
< li data-name = "LuCI.Network.Protocol#getZoneName" > < a href = "LuCI.Network.Protocol.html#getZoneName" > getZoneName< / a > < / li >
< li data-name = "LuCI.Network.Protocol#isAlias" > < a href = "LuCI.Network.Protocol.html#isAlias" > isAlias< / a > < / li >
< li data-name = "LuCI.Network.Protocol#isBridge" > < a href = "LuCI.Network.Protocol.html#isBridge" > isBridge< / a > < / li >
< li data-name = "LuCI.Network.Protocol#isDynamic" > < a href = "LuCI.Network.Protocol.html#isDynamic" > isDynamic< / a > < / li >
< li data-name = "LuCI.Network.Protocol#isEmpty" > < a href = "LuCI.Network.Protocol.html#isEmpty" > isEmpty< / a > < / li >
< li data-name = "LuCI.Network.Protocol#isFloating" > < a href = "LuCI.Network.Protocol.html#isFloating" > isFloating< / a > < / li >
< li data-name = "LuCI.Network.Protocol#isInstalled" > < a href = "LuCI.Network.Protocol.html#isInstalled" > isInstalled< / a > < / li >
< li data-name = "LuCI.Network.Protocol#isUp" > < a href = "LuCI.Network.Protocol.html#isUp" > isUp< / a > < / li >
< li data-name = "LuCI.Network.Protocol#isVirtual" > < a href = "LuCI.Network.Protocol.html#isVirtual" > isVirtual< / a > < / li >
< li data-name = "LuCI.Network.Protocol#set" > < a href = "LuCI.Network.Protocol.html#set" > set< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Network.WifiDevice" >
< span class = "title" >
< a href = "LuCI.Network.WifiDevice.html" > LuCI.Network.WifiDevice< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Network.WifiDevice#addWifiNetwork" > < a href = "LuCI.Network.WifiDevice.html#addWifiNetwork" > addWifiNetwork< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#deleteWifiNetwork" > < a href = "LuCI.Network.WifiDevice.html#deleteWifiNetwork" > deleteWifiNetwork< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#get" > < a href = "LuCI.Network.WifiDevice.html#get" > get< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#getHTModes" > < a href = "LuCI.Network.WifiDevice.html#getHTModes" > getHTModes< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#getHWModes" > < a href = "LuCI.Network.WifiDevice.html#getHWModes" > getHWModes< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#getI18n" > < a href = "LuCI.Network.WifiDevice.html#getI18n" > getI18n< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#getName" > < a href = "LuCI.Network.WifiDevice.html#getName" > getName< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#getScanList" > < a href = "LuCI.Network.WifiDevice.html#getScanList" > getScanList< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#getWifiNetwork" > < a href = "LuCI.Network.WifiDevice.html#getWifiNetwork" > getWifiNetwork< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#getWifiNetworks" > < a href = "LuCI.Network.WifiDevice.html#getWifiNetworks" > getWifiNetworks< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#isDisabled" > < a href = "LuCI.Network.WifiDevice.html#isDisabled" > isDisabled< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#isUp" > < a href = "LuCI.Network.WifiDevice.html#isUp" > isUp< / a > < / li >
< li data-name = "LuCI.Network.WifiDevice#set" > < a href = "LuCI.Network.WifiDevice.html#set" > set< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Network.WifiNetwork" >
< span class = "title" >
< a href = "LuCI.Network.WifiNetwork.html" > LuCI.Network.WifiNetwork< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Network.WifiNetwork#disconnectClient" > < a href = "LuCI.Network.WifiNetwork.html#disconnectClient" > disconnectClient< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#get" > < a href = "LuCI.Network.WifiNetwork.html#get" > get< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getActiveBSSID" > < a href = "LuCI.Network.WifiNetwork.html#getActiveBSSID" > getActiveBSSID< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getActiveEncryption" > < a href = "LuCI.Network.WifiNetwork.html#getActiveEncryption" > getActiveEncryption< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getActiveMode" > < a href = "LuCI.Network.WifiNetwork.html#getActiveMode" > getActiveMode< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getActiveModeI18n" > < a href = "LuCI.Network.WifiNetwork.html#getActiveModeI18n" > getActiveModeI18n< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getActiveSSID" > < a href = "LuCI.Network.WifiNetwork.html#getActiveSSID" > getActiveSSID< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getAssocList" > < a href = "LuCI.Network.WifiNetwork.html#getAssocList" > getAssocList< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getBitRate" > < a href = "LuCI.Network.WifiNetwork.html#getBitRate" > getBitRate< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getBSSID" > < a href = "LuCI.Network.WifiNetwork.html#getBSSID" > getBSSID< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getChannel" > < a href = "LuCI.Network.WifiNetwork.html#getChannel" > getChannel< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getCountryCode" > < a href = "LuCI.Network.WifiNetwork.html#getCountryCode" > getCountryCode< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getDevice" > < a href = "LuCI.Network.WifiNetwork.html#getDevice" > getDevice< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getFrequency" > < a href = "LuCI.Network.WifiNetwork.html#getFrequency" > getFrequency< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getI18n" > < a href = "LuCI.Network.WifiNetwork.html#getI18n" > getI18n< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getID" > < a href = "LuCI.Network.WifiNetwork.html#getID" > getID< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getIfname" > < a href = "LuCI.Network.WifiNetwork.html#getIfname" > getIfname< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getMeshID" > < a href = "LuCI.Network.WifiNetwork.html#getMeshID" > getMeshID< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getMode" > < a href = "LuCI.Network.WifiNetwork.html#getMode" > getMode< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getName" > < a href = "LuCI.Network.WifiNetwork.html#getName" > getName< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getNetwork" > < a href = "LuCI.Network.WifiNetwork.html#getNetwork" > getNetwork< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getNetworkNames" > < a href = "LuCI.Network.WifiNetwork.html#getNetworkNames" > getNetworkNames< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getNetworks" > < a href = "LuCI.Network.WifiNetwork.html#getNetworks" > getNetworks< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getNoise" > < a href = "LuCI.Network.WifiNetwork.html#getNoise" > getNoise< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getShortName" > < a href = "LuCI.Network.WifiNetwork.html#getShortName" > getShortName< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getSignal" > < a href = "LuCI.Network.WifiNetwork.html#getSignal" > getSignal< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getSignalLevel" > < a href = "LuCI.Network.WifiNetwork.html#getSignalLevel" > getSignalLevel< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getSignalPercent" > < a href = "LuCI.Network.WifiNetwork.html#getSignalPercent" > getSignalPercent< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getSSID" > < a href = "LuCI.Network.WifiNetwork.html#getSSID" > getSSID< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getTXPower" > < a href = "LuCI.Network.WifiNetwork.html#getTXPower" > getTXPower< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getTXPowerOffset" > < a href = "LuCI.Network.WifiNetwork.html#getTXPowerOffset" > getTXPowerOffset< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getWifiDevice" > < a href = "LuCI.Network.WifiNetwork.html#getWifiDevice" > getWifiDevice< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#getWifiDeviceName" > < a href = "LuCI.Network.WifiNetwork.html#getWifiDeviceName" > getWifiDeviceName< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#isClientDisconnectSupported" > < a href = "LuCI.Network.WifiNetwork.html#isClientDisconnectSupported" > isClientDisconnectSupported< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#isDisabled" > < a href = "LuCI.Network.WifiNetwork.html#isDisabled" > isDisabled< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#isUp" > < a href = "LuCI.Network.WifiNetwork.html#isUp" > isUp< / a > < / li >
< li data-name = "LuCI.Network.WifiNetwork#set" > < a href = "LuCI.Network.WifiNetwork.html#set" > set< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Poll" >
< span class = "title" >
< a href = "LuCI.Poll.html" > LuCI.Poll< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Poll#active" > < a href = "LuCI.Poll.html#active" > active< / a > < / li >
< li data-name = "LuCI.Poll#add" > < a href = "LuCI.Poll.html#add" > add< / a > < / li >
< li data-name = "LuCI.Poll#remove" > < a href = "LuCI.Poll.html#remove" > remove< / a > < / li >
< li data-name = "LuCI.Poll#start" > < a href = "LuCI.Poll.html#start" > start< / a > < / li >
< li data-name = "LuCI.Poll#stop" > < a href = "LuCI.Poll.html#stop" > stop< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Request" >
< span class = "title" >
< a href = "LuCI.Request.html" > LuCI.Request< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< span class = "subtitle" > Typedefs< / span >
< li data-name = "LuCI.Request.interceptorFn" > < a href = "LuCI.Request.html#.interceptorFn" > interceptorFn< / a > < / li >
< li data-name = "LuCI.Request.RequestOptions" > < a href = "LuCI.Request.html#.RequestOptions" > RequestOptions< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Request#addInterceptor" > < a href = "LuCI.Request.html#addInterceptor" > addInterceptor< / a > < / li >
< li data-name = "LuCI.Request#expandURL" > < a href = "LuCI.Request.html#expandURL" > expandURL< / a > < / li >
< li data-name = "LuCI.Request#get" > < a href = "LuCI.Request.html#get" > get< / a > < / li >
< li data-name = "LuCI.Request#post" > < a href = "LuCI.Request.html#post" > post< / a > < / li >
< li data-name = "LuCI.Request#removeInterceptor" > < a href = "LuCI.Request.html#removeInterceptor" > removeInterceptor< / a > < / li >
< li data-name = "LuCI.Request#request" > < a href = "LuCI.Request.html#request" > request< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Request.poll" >
< span class = "title" >
< a href = "LuCI.Request.poll.html" > LuCI.Request.poll< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< span class = "subtitle" > Typedefs< / span >
< li data-name = "LuCI.Request.poll~callbackFn" > < a href = "LuCI.Request.poll.html#~callbackFn" > callbackFn< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Request.poll#active" > < a href = "LuCI.Request.poll.html#active" > active< / a > < / li >
< li data-name = "LuCI.Request.poll#add" > < a href = "LuCI.Request.poll.html#add" > add< / a > < / li >
< li data-name = "LuCI.Request.poll#remove" > < a href = "LuCI.Request.poll.html#remove" > remove< / a > < / li >
< li data-name = "LuCI.Request.poll#start" > < a href = "LuCI.Request.poll.html#start" > start< / a > < / li >
< li data-name = "LuCI.Request.poll#stop" > < a href = "LuCI.Request.poll.html#stop" > stop< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.Response" >
< span class = "title" >
< a href = "LuCI.Response.html" > LuCI.Response< / a >
< / span >
< ul class = "members itemMembers" >
< span class = "subtitle" > Members< / span >
< li data-name = "LuCI.Response#duration" > < a href = "LuCI.Response.html#duration" > duration< / a > < / li >
< li data-name = "LuCI.Response#headers" > < a href = "LuCI.Response.html#headers" > headers< / a > < / li >
< li data-name = "LuCI.Response#ok" > < a href = "LuCI.Response.html#ok" > ok< / a > < / li >
< li data-name = "LuCI.Response#status" > < a href = "LuCI.Response.html#status" > status< / a > < / li >
< li data-name = "LuCI.Response#statusText" > < a href = "LuCI.Response.html#statusText" > statusText< / a > < / li >
< li data-name = "LuCI.Response#url" > < a href = "LuCI.Response.html#url" > url< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.Response#clone" > < a href = "LuCI.Response.html#clone" > clone< / a > < / li >
< li data-name = "LuCI.Response#json" > < a href = "LuCI.Response.html#json" > json< / a > < / li >
< li data-name = "LuCI.Response#text" > < a href = "LuCI.Response.html#text" > text< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.rpc" >
< span class = "title" >
< a href = "LuCI.rpc.html" > LuCI.rpc< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< span class = "subtitle" > Typedefs< / span >
< li data-name = "LuCI.rpc.DeclareOptions" > < a href = "LuCI.rpc.html#.DeclareOptions" > DeclareOptions< / a > < / li >
< li data-name = "LuCI.rpc~filterFn" > < a href = "LuCI.rpc.html#~filterFn" > filterFn< / a > < / li >
< li data-name = "LuCI.rpc~interceptorFn" > < a href = "LuCI.rpc.html#~interceptorFn" > interceptorFn< / a > < / li >
< li data-name = "LuCI.rpc~invokeFn" > < a href = "LuCI.rpc.html#~invokeFn" > invokeFn< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.rpc#addInterceptor" > < a href = "LuCI.rpc.html#addInterceptor" > addInterceptor< / a > < / li >
< li data-name = "LuCI.rpc#declare" > < a href = "LuCI.rpc.html#declare" > declare< / a > < / li >
< li data-name = "LuCI.rpc#getBaseURL" > < a href = "LuCI.rpc.html#getBaseURL" > getBaseURL< / a > < / li >
< li data-name = "LuCI.rpc#getSessionID" > < a href = "LuCI.rpc.html#getSessionID" > getSessionID< / a > < / li >
< li data-name = "LuCI.rpc#getStatusText" > < a href = "LuCI.rpc.html#getStatusText" > getStatusText< / a > < / li >
< li data-name = "LuCI.rpc#list" > < a href = "LuCI.rpc.html#list" > list< / a > < / li >
< li data-name = "LuCI.rpc#removeInterceptor" > < a href = "LuCI.rpc.html#removeInterceptor" > removeInterceptor< / a > < / li >
< li data-name = "LuCI.rpc#setBaseURL" > < a href = "LuCI.rpc.html#setBaseURL" > setBaseURL< / a > < / li >
< li data-name = "LuCI.rpc#setSessionID" > < a href = "LuCI.rpc.html#setSessionID" > setSessionID< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.uci" >
< span class = "title" >
< a href = "LuCI.uci.html" > LuCI.uci< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< span class = "subtitle" > Typedefs< / span >
< li data-name = "LuCI.uci.ChangeRecord" > < a href = "LuCI.uci.html#.ChangeRecord" > ChangeRecord< / a > < / li >
< li data-name = "LuCI.uci.SectionObject" > < a href = "LuCI.uci.html#.SectionObject" > SectionObject< / a > < / li >
< li data-name = "LuCI.uci~sectionsFn" > < a href = "LuCI.uci.html#~sectionsFn" > sectionsFn< / a > < / li >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.uci#add" > < a href = "LuCI.uci.html#add" > add< / a > < / li >
< li data-name = "LuCI.uci#apply" > < a href = "LuCI.uci.html#apply" > apply< / a > < / li >
< li data-name = "LuCI.uci#changes" > < a href = "LuCI.uci.html#changes" > changes< / a > < / li >
< li data-name = "LuCI.uci#createSID" > < a href = "LuCI.uci.html#createSID" > createSID< / a > < / li >
< li data-name = "LuCI.uci#get" > < a href = "LuCI.uci.html#get" > get< / a > < / li >
< li data-name = "LuCI.uci#get_first" > < a href = "LuCI.uci.html#get_first" > get_first< / a > < / li >
< li data-name = "LuCI.uci#load" > < a href = "LuCI.uci.html#load" > load< / a > < / li >
< li data-name = "LuCI.uci#move" > < a href = "LuCI.uci.html#move" > move< / a > < / li >
< li data-name = "LuCI.uci#remove" > < a href = "LuCI.uci.html#remove" > remove< / a > < / li >
< li data-name = "LuCI.uci#resolveSID" > < a href = "LuCI.uci.html#resolveSID" > resolveSID< / a > < / li >
< li data-name = "LuCI.uci#save" > < a href = "LuCI.uci.html#save" > save< / a > < / li >
< li data-name = "LuCI.uci#sections" > < a href = "LuCI.uci.html#sections" > sections< / a > < / li >
< li data-name = "LuCI.uci#set" > < a href = "LuCI.uci.html#set" > set< / a > < / li >
< li data-name = "LuCI.uci#set_first" > < a href = "LuCI.uci.html#set_first" > set_first< / a > < / li >
< li data-name = "LuCI.uci#unload" > < a href = "LuCI.uci.html#unload" > unload< / a > < / li >
< li data-name = "LuCI.uci#unset" > < a href = "LuCI.uci.html#unset" > unset< / a > < / li >
< li data-name = "LuCI.uci#unset_first" > < a href = "LuCI.uci.html#unset_first" > unset_first< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.view" >
< span class = "title" >
< a href = "LuCI.view.html" > LuCI.view< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.view#addFooter" > < a href = "LuCI.view.html#addFooter" > addFooter< / a > < / li >
< li data-name = "LuCI.view#handleReset" > < a href = "LuCI.view.html#handleReset" > handleReset< / a > < / li >
< li data-name = "LuCI.view#handleSave" > < a href = "LuCI.view.html#handleSave" > handleSave< / a > < / li >
< li data-name = "LuCI.view#handleSaveApply" > < a href = "LuCI.view.html#handleSaveApply" > handleSaveApply< / a > < / li >
< li data-name = "LuCI.view#load" > < a href = "LuCI.view.html#load" > load< / a > < / li >
< li data-name = "LuCI.view#render" > < a href = "LuCI.view.html#render" > render< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< li class = "item" data-name = "LuCI.XHR" >
< span class = "title" >
< a href = "LuCI.XHR.html" > LuCI.XHR< / a >
< / span >
< ul class = "members itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "typedefs itemMembers" >
< / ul >
< ul class = "methods itemMembers" >
< span class = "subtitle" > Methods< / span >
< li data-name = "LuCI.XHR#abort" > < a href = "LuCI.XHR.html#abort" > abort< / a > < / li >
< li data-name = "LuCI.XHR#busy" > < a href = "LuCI.XHR.html#busy" > busy< / a > < / li >
< li data-name = "LuCI.XHR#cancel" > < a href = "LuCI.XHR.html#cancel" > cancel< / a > < / li >
< li data-name = "LuCI.XHR#get" > < a href = "LuCI.XHR.html#get" > get< / a > < / li >
< li data-name = "LuCI.XHR#post" > < a href = "LuCI.XHR.html#post" > post< / a > < / li >
< li data-name = "LuCI.XHR#send_form" > < a href = "LuCI.XHR.html#send_form" > send_form< / a > < / li >
< / ul >
< ul class = "events itemMembers" >
< / ul >
< / li >
< / ul >
< / div >
< div class = "main" >
< h1 class = "page-title" data-filename = "uci.js.html" > Source: uci.js< / h1 >
2019-11-05 08:33:40 +00:00
< section >
< article >
2019-11-07 11:39:24 +00:00
< pre id = "source-code" class = "prettyprint source " > < code > 'use strict';
2019-11-05 08:33:40 +00:00
'require rpc';
/**
* @class uci
* @memberof LuCI
* @hideconstructor
* @classdesc
*
* The `LuCI.uci` class utilizes {@link LuCI.rpc} to declare low level
* remote UCI `ubus` procedures and implements a local caching and data
* manipulation layer on top to allow for synchroneous operations on
* UCI configuration data.
*/
return L.Class.extend(/** @lends LuCI.uci.prototype */ {
__init__: function() {
this.state = {
newidx: 0,
values: { },
creates: { },
changes: { },
deletes: { },
reorder: { }
};
this.loaded = {};
},
callLoad: rpc.declare({
object: 'uci',
method: 'get',
params: [ 'config' ],
expect: { values: { } }
}),
callOrder: rpc.declare({
object: 'uci',
method: 'order',
params: [ 'config', 'sections' ]
}),
callAdd: rpc.declare({
object: 'uci',
method: 'add',
params: [ 'config', 'type', 'name', 'values' ],
expect: { section: '' }
}),
callSet: rpc.declare({
object: 'uci',
method: 'set',
params: [ 'config', 'section', 'values' ]
}),
callDelete: rpc.declare({
object: 'uci',
method: 'delete',
params: [ 'config', 'section', 'options' ]
}),
callApply: rpc.declare({
object: 'uci',
method: 'apply',
params: [ 'timeout', 'rollback' ]
}),
callConfirm: rpc.declare({
object: 'uci',
method: 'confirm'
}),
/**
* Generates a new, unique section ID for the given configuration.
*
* Note that the generated ID is temporary, it will get replaced by an
* identifier in the form `cfgXXXXXX` once the configuration is saved
* by the remote `ubus` UCI api.
*
* @param {string} config
* The configuration to generate the new section ID for.
*
* @returns {string}
* A newly generated, unique section ID in the form `newXXXXXX`
* where `X` denotes a hexadecimal digit.
*/
createSID: function(conf) {
var v = this.state.values,
n = this.state.creates,
sid;
do {
sid = "new%06x".format(Math.random() * 0xFFFFFF);
} while ((n[conf] & & n[conf][sid]) || (v[conf] & & v[conf][sid]));
return sid;
},
/**
* Resolves a given section ID in extended notation to the internal
* section ID value.
*
* @param {string} config
* The configuration to resolve the section ID for.
*
* @param {string} sid
* The section ID to resolve. If the ID is in the form `@typename[#]`,
* it will get resolved to an internal anonymous ID in the forms
* `cfgXXXXXX`/`newXXXXXX` or to the name of a section in case it points
* to a named section. When the given ID is not in extended notation,
* it will be returned as-is.
*
* @returns {string|null}
* Returns the resolved section ID or the original given ID if it was
* not in extended notation. Returns `null` when an extended ID could
* not be resolved to existing section ID.
*/
resolveSID: function(conf, sid) {
if (typeof(sid) != 'string')
return sid;
var m = /^@([a-zA-Z0-9_-]+)\[(-?[0-9]+)\]$/.exec(sid);
if (m) {
var type = m[1],
pos = +m[2],
sections = this.sections(conf, type),
section = sections[pos >= 0 ? pos : sections.length + pos];
return section ? section['.name'] : null;
}
return sid;
},
/* private */
reorderSections: function() {
var v = this.state.values,
n = this.state.creates,
r = this.state.reorder,
tasks = [];
if (Object.keys(r).length === 0)
return Promise.resolve();
/*
gather all created and existing sections, sort them according
to their index value and issue an uci order call
*/
for (var c in r) {
var o = [ ];
if (n[c])
for (var s in n[c])
o.push(n[c][s]);
for (var s in v[c])
o.push(v[c][s]);
if (o.length > 0) {
o.sort(function(a, b) {
return (a['.index'] - b['.index']);
});
var sids = [ ];
for (var i = 0; i < o.length; i++)
sids.push(o[i]['.name']);
tasks.push(this.callOrder(c, sids));
}
}
this.state.reorder = { };
return Promise.all(tasks);
},
/* private */
loadPackage: function(packageName) {
if (this.loaded[packageName] == null)
return (this.loaded[packageName] = this.callLoad(packageName));
return Promise.resolve(this.loaded[packageName]);
},
/**
* Loads the given UCI configurations from the remote `ubus` api.
*
* Loaded configurations are cached and only loaded once. Subsequent
* load operations of the same configurations will return the cached
* data.
*
* To force reloading a configuration, it has to be unloaded with
* {@link LuCI.uci#unload uci.unload()} first.
*
* @param {string|string[]} config
* The name of the configuration or an array of configuration
* names to load.
*
* @returns {Promise< string[]>}
* Returns a promise resolving to the names of the configurations
* that have been successfully loaded.
*/
load: function(packages) {
var self = this,
pkgs = [ ],
tasks = [];
if (!Array.isArray(packages))
packages = [ packages ];
for (var i = 0; i < packages.length; i++)
if (!self.state.values[packages[i]]) {
pkgs.push(packages[i]);
tasks.push(self.loadPackage(packages[i]));
}
return Promise.all(tasks).then(function(responses) {
for (var i = 0; i < responses.length; i++)
self.state.values[pkgs[i]] = responses[i];
if (responses.length)
document.dispatchEvent(new CustomEvent('uci-loaded'));
return pkgs;
});
},
/**
* Unloads the given UCI configurations from the local cache.
*
* @param {string|string[]} config
* The name of the configuration or an array of configuration
* names to unload.
*/
unload: function(packages) {
if (!Array.isArray(packages))
packages = [ packages ];
for (var i = 0; i < packages.length; i++) {
delete this.state.values[packages[i]];
delete this.state.creates[packages[i]];
delete this.state.changes[packages[i]];
delete this.state.deletes[packages[i]];
delete this.loaded[packages[i]];
}
},
/**
* Adds a new section of the given type to the given configuration,
* optionally named according to the given name.
*
* @param {string} config
* The name of the configuration to add the section to.
*
* @param {string} type
* The type of the section to add.
*
* @param {string} [name]
* The name of the section to add. If the name is omitted, an anonymous
* section will be added instead.
*
* @returns {string}
* Returns the section ID of the newly added section which is equivalent
* to the given name for non-anonymous sections.
*/
add: function(conf, type, name) {
var n = this.state.creates,
sid = name || this.createSID(conf);
if (!n[conf])
n[conf] = { };
n[conf][sid] = {
'.type': type,
'.name': sid,
'.create': name,
'.anonymous': !name,
'.index': 1000 + this.state.newidx++
};
return sid;
},
/**
* Removes the section with the given ID from the given configuration.
*
* @param {string} config
* The name of the configuration to remove the section from.
*
* @param {string} sid
* The ID of the section to remove.
*/
remove: function(conf, sid) {
var n = this.state.creates,
c = this.state.changes,
d = this.state.deletes;
/* requested deletion of a just created section */
if (n[conf] & & n[conf][sid]) {
delete n[conf][sid];
}
else {
if (c[conf])
delete c[conf][sid];
if (!d[conf])
d[conf] = { };
d[conf][sid] = true;
}
},
/**
* A section object represents the options and their corresponding values
* enclosed within a configuration section, as well as some additional
* meta data such as sort indexes and internal ID.
*
* Any internal metadata fields are prefixed with a dot which is isn't
* an allowed character for normal option names.
*
* @typedef {Object< string, boolean|number|string|string[]>} SectionObject
* @memberof LuCI.uci
*
* @property {boolean} .anonymous
* The `.anonymous` property specifies whether the configuration is
* anonymous (`true`) or named (`false`).
*
* @property {number} .index
* The `.index` property specifes the sort order of the section.
*
* @property {string} .name
* The `.name` property holds the name of the section object. It may be
* either an anonymous ID in the form `cfgXXXXXX` or `newXXXXXX` with `X`
* being a hexadecimal digit or a string holding the name of the section.
*
* @property {string} .type
* The `.type` property contains the type of the corresponding uci
* section.
*
* @property {string|string[]} *
* A section object may contain an arbitrary number of further properties
* representing the uci option enclosed in the section.
*
* All option property names will be in the form `[A-Za-z0-9_]+` and
* either contain a string value or an array of strings, in case the
* underlying option is an UCI list.
*/
/**
* The sections callback is invoked for each section found within
* the given configuration and receives the section object and its
* associated name as arguments.
*
* @callback LuCI.uci~sectionsFn
*
* @param {LuCI.uci.SectionObject} section
* The section object.
*
* @param {string} sid
* The name or ID of the section.
*/
/**
* Enumerates the sections of the given configuration, optionally
* filtered by type.
*
* @param {string} config
* The name of the configuration to enumerate the sections for.
*
* @param {string} [type]
* Enumerate only sections of the given type. If omitted, enumerate
* all sections.
*
* @param {LuCI.uci~sectionsFn} [cb]
* An optional callback to invoke for each enumerated section.
*
* @returns {Array< LuCI.uci.SectionObject>}
* Returns a sorted array of the section objects within the given
* configuration, filtered by type of a type has been specified.
*/
sections: function(conf, type, cb) {
var sa = [ ],
v = this.state.values[conf],
n = this.state.creates[conf],
c = this.state.changes[conf],
d = this.state.deletes[conf];
if (!v)
return sa;
for (var s in v)
if (!d || d[s] !== true)
if (!type || v[s]['.type'] == type)
sa.push(Object.assign({ }, v[s], c ? c[s] : undefined));
if (n)
for (var s in n)
if (!type || n[s]['.type'] == type)
sa.push(Object.assign({ }, n[s]));
sa.sort(function(a, b) {
return a['.index'] - b['.index'];
});
for (var i = 0; i < sa.length; i++)
sa[i]['.index'] = i;
if (typeof(cb) == 'function')
for (var i = 0; i < sa.length; i++)
cb.call(this, sa[i], sa[i]['.name']);
return sa;
},
/**
* Gets the value of the given option within the specified section
* of the given configuration or the entire section object if the
* option name is omitted.
*
* @param {string} config
* The name of the configuration to read the value from.
*
* @param {string} sid
* The name or ID of the section to read.
*
* @param {string} [option]
* The option name to read the value from. If the option name is
* omitted or `null`, the entire section is returned instead.
*
* @returns {null|string|string[]|LuCI.uci.SectionObject}
* - Returns a string containing the option value in case of a
* plain UCI option.
* - Returns an array of strings containing the option values in
* case of `option` pointing to an UCI list.
* - Returns a {@link LuCI.uci.SectionObject section object} if
* the `option` argument has been omitted or is `null`.
* - Returns `null` if the config, section or option has not been
* found or if the corresponding configuration is not loaded.
*/
get: function(conf, sid, opt) {
var v = this.state.values,
n = this.state.creates,
c = this.state.changes,
d = this.state.deletes;
sid = this.resolveSID(conf, sid);
if (sid == null)
return null;
/* requested option in a just created section */
if (n[conf] & & n[conf][sid]) {
if (!n[conf])
return undefined;
if (opt == null)
return n[conf][sid];
return n[conf][sid][opt];
}
/* requested an option value */
if (opt != null) {
/* check whether option was deleted */
if (d[conf] & & d[conf][sid]) {
if (d[conf][sid] === true)
return undefined;
for (var i = 0; i < d[conf][sid].length; i++)
if (d[conf][sid][i] == opt)
return undefined;
}
/* check whether option was changed */
if (c[conf] & & c[conf][sid] & & c[conf][sid][opt] != null)
return c[conf][sid][opt];
/* return base value */
if (v[conf] & & v[conf][sid])
return v[conf][sid][opt];
return undefined;
}
/* requested an entire section */
if (v[conf])
return v[conf][sid];
return undefined;
},
/**
* Sets the value of the given option within the specified section
* of the given configuration.
*
* If either config, section or option is null, or if `option` begins
* with a dot, the function will do nothing.
*
* @param {string} config
* The name of the configuration to set the option value in.
*
* @param {string} sid
* The name or ID of the section to set the option value in.
*
* @param {string} option
* The option name to set the value for.
*
* @param {null|string|string[]} value
* The option value to set. If the value is `null` or an empty string,
* the option will be removed, otherwise it will be set or overwritten
* with the given value.
*/
set: function(conf, sid, opt, val) {
var v = this.state.values,
n = this.state.creates,
c = this.state.changes,
d = this.state.deletes;
sid = this.resolveSID(conf, sid);
if (sid == null || opt == null || opt.charAt(0) == '.')
return;
if (n[conf] & & n[conf][sid]) {
if (val != null)
n[conf][sid][opt] = val;
else
delete n[conf][sid][opt];
}
else if (val != null & & val !== '') {
/* do not set within deleted section */
if (d[conf] & & d[conf][sid] === true)
return;
/* only set in existing sections */
if (!v[conf] || !v[conf][sid])
return;
if (!c[conf])
c[conf] = {};
if (!c[conf][sid])
c[conf][sid] = {};
/* undelete option */
if (d[conf] & & d[conf][sid])
d[conf][sid] = d[conf][sid].filter(function(o) { return o !== opt });
c[conf][sid][opt] = val;
}
else {
/* only delete in existing sections */
if (!(v[conf] & & v[conf][sid] & & v[conf][sid].hasOwnProperty(opt)) & &
!(c[conf] & & c[conf][sid] & & c[conf][sid].hasOwnProperty(opt)))
return;
if (!d[conf])
d[conf] = { };
if (!d[conf][sid])
d[conf][sid] = [ ];
if (d[conf][sid] !== true)
d[conf][sid].push(opt);
}
},
/**
* Remove the given option within the specified section of the given
* configuration.
*
* This function is a convenience wrapper around
* `uci.set(config, section, option, null)`.
*
* @param {string} config
* The name of the configuration to remove the option from.
*
* @param {string} sid
* The name or ID of the section to remove the option from.
*
* @param {string} option
* The name of the option to remove.
*/
unset: function(conf, sid, opt) {
return this.set(conf, sid, opt, null);
},
/**
* Gets the value of the given option or the entire section object of
* the first found section of the specified type or the first found
* section of the entire configuration if no type is specfied.
*
* @param {string} config
* The name of the configuration to read the value from.
*
* @param {string} [type]
* The type of the first section to find. If it is `null`, the first
* section of the entire config is read, otherwise the first section
* matching the given type.
*
* @param {string} [option]
* The option name to read the value from. If the option name is
* omitted or `null`, the entire section is returned instead.
*
* @returns {null|string|string[]|LuCI.uci.SectionObject}
* - Returns a string containing the option value in case of a
* plain UCI option.
* - Returns an array of strings containing the option values in
* case of `option` pointing to an UCI list.
* - Returns a {@link LuCI.uci.SectionObject section object} if
* the `option` argument has been omitted or is `null`.
* - Returns `null` if the config, section or option has not been
* found or if the corresponding configuration is not loaded.
*/
get_first: function(conf, type, opt) {
var sid = null;
this.sections(conf, type, function(s) {
if (sid == null)
sid = s['.name'];
});
return this.get(conf, sid, opt);
},
/**
* Sets the value of the given option within the first found section
* of the given configuration matching the specified type or within
* the first section of the entire config when no type has is specified.
*
* If either config, type or option is null, or if `option` begins
* with a dot, the function will do nothing.
*
* @param {string} config
* The name of the configuration to set the option value in.
*
* @param {string} [type]
* The type of the first section to find. If it is `null`, the first
* section of the entire config is written to, otherwise the first
* section matching the given type is used.
*
* @param {string} option
* The option name to set the value for.
*
* @param {null|string|string[]} value
* The option value to set. If the value is `null` or an empty string,
* the option will be removed, otherwise it will be set or overwritten
* with the given value.
*/
set_first: function(conf, type, opt, val) {
var sid = null;
this.sections(conf, type, function(s) {
if (sid == null)
sid = s['.name'];
});
return this.set(conf, sid, opt, val);
},
/**
* Removes the given option within the first found section of the given
* configuration matching the specified type or within the first section
* of the entire config when no type has is specified.
*
* This function is a convenience wrapper around
* `uci.set_first(config, type, option, null)`.
*
* @param {string} config
* The name of the configuration to set the option value in.
*
* @param {string} [type]
* The type of the first section to find. If it is `null`, the first
* section of the entire config is written to, otherwise the first
* section matching the given type is used.
*
* @param {string} option
* The option name to set the value for.
*/
unset_first: function(conf, type, opt) {
return this.set_first(conf, type, opt, null);
},
/**
* Move the first specified section within the given configuration
* before or after the second specified section.
*
* @param {string} config
* The configuration to move the section within.
*
* @param {string} sid1
* The ID of the section to move within the configuration.
*
* @param {string} [sid2]
* The ID of the target section for the move operation. If the
* `after` argument is `false` or not specified, the section named by
* `sid1` will be moved before this target section, if the `after`
* argument is `true`, the `sid1` section will be moved after this
* section.
*
* When the `sid2` argument is `null`, the section specified by `sid1`
* is moved to the end of the configuration.
*
* @param {boolean} [after=false]
* When `true`, the section `sid1` is moved after the section `sid2`,
* when `false`, the section `sid1` is moved before `sid2`.
*
* If `sid2` is null, then this parameter has no effect and the section
* `sid1` is moved to the end of the configuration instead.
*
* @returns {boolean}
* Returns `true` when the section was successfully moved, or `false`
* when either the section specified by `sid1` or by `sid2` is not found.
*/
move: function(conf, sid1, sid2, after) {
var sa = this.sections(conf),
s1 = null, s2 = null;
sid1 = this.resolveSID(conf, sid1);
sid2 = this.resolveSID(conf, sid2);
for (var i = 0; i < sa.length; i++) {
if (sa[i]['.name'] != sid1)
continue;
s1 = sa[i];
sa.splice(i, 1);
break;
}
if (s1 == null)
return false;
if (sid2 == null) {
sa.push(s1);
}
else {
for (var i = 0; i < sa.length; i++) {
if (sa[i]['.name'] != sid2)
continue;
s2 = sa[i];
sa.splice(i + !!after, 0, s1);
break;
}
if (s2 == null)
return false;
}
for (var i = 0; i < sa.length; i++)
this.get(conf, sa[i]['.name'])['.index'] = i;
this.state.reorder[conf] = true;
return true;
},
/**
* Submits all local configuration changes to the remove `ubus` api,
* adds, removes and reorders remote sections as needed and reloads
* all loaded configurations to resynchronize the local state with
* the remote configuration values.
*
* @returns {string[]}
* Returns a promise resolving to an array of configuration names which
* have been reloaded by the save operation.
*/
save: function() {
var v = this.state.values,
n = this.state.creates,
c = this.state.changes,
d = this.state.deletes,
r = this.state.reorder,
self = this,
snew = [ ],
pkgs = { },
tasks = [];
if (n)
for (var conf in n) {
for (var sid in n[conf]) {
var r = {
config: conf,
values: { }
};
for (var k in n[conf][sid]) {
if (k == '.type')
r.type = n[conf][sid][k];
else if (k == '.create')
r.name = n[conf][sid][k];
else if (k.charAt(0) != '.')
r.values[k] = n[conf][sid][k];
}
snew.push(n[conf][sid]);
tasks.push(self.callAdd(r.config, r.type, r.name, r.values));
}
pkgs[conf] = true;
}
if (c)
for (var conf in c) {
for (var sid in c[conf])
tasks.push(self.callSet(conf, sid, c[conf][sid]));
pkgs[conf] = true;
}
if (d)
for (var conf in d) {
for (var sid in d[conf]) {
var o = d[conf][sid];
tasks.push(self.callDelete(conf, sid, (o === true) ? null : o));
}
pkgs[conf] = true;
}
if (r)
for (var conf in r)
pkgs[conf] = true;
return Promise.all(tasks).then(function(responses) {
/*
array "snew" holds references to the created uci sections,
use it to assign the returned names of the new sections
*/
for (var i = 0; i < snew.length; i++)
snew[i]['.name'] = responses[i];
return self.reorderSections();
}).then(function() {
pkgs = Object.keys(pkgs);
self.unload(pkgs);
return self.load(pkgs);
});
},
/**
* Instructs the remote `ubus` UCI api to commit all saved changes with
* rollback protection and attempts to confirm the pending commit
* operation to cancel the rollback timer.
*
* @param {number} [timeout=10]
* Override the confirmation timeout after which a rollback is triggered.
*
* @returns {Promise< number>}
* Returns a promise resolving/rejecting with the `ubus` RPC status code.
*/
apply: function(timeout) {
var self = this,
date = new Date();
if (typeof(timeout) != 'number' || timeout < 1)
timeout = 10;
return self.callApply(timeout, true).then(function(rv) {
if (rv != 0)
return Promise.reject(rv);
var try_deadline = date.getTime() + 1000 * timeout;
var try_confirm = function() {
return self.callConfirm().then(function(rv) {
if (rv != 0) {
if (date.getTime() < try_deadline)
window.setTimeout(try_confirm, 250);
else
return Promise.reject(rv);
}
return rv;
});
};
window.setTimeout(try_confirm, 1000);
});
},
/**
* An UCI change record is a plain array containing the change operation
* name as first element, the affected section ID as second argument
* and an optional third and fourth argument whose meanings depend on
* the operation.
*
* @typedef {string[]} ChangeRecord
* @memberof LuCI.uci
*
* @property {string} 0
* The operation name - may be one of `add`, `set`, `remove`, `order`,
* `list-add`, `list-del` or `rename`.
*
* @property {string} 1
* The section ID targeted by the operation.
*
* @property {string} 2
* The meaning of the third element depends on the operation.
* - For `add` it is type of the section that has been added
* - For `set` it either is the option name if a fourth element exists,
* or the type of a named section which has been added when the change
* entry only contains three elements.
* - For `remove` it contains the name of the option that has been
* removed.
* - For `order` it specifies the new sort index of the section.
* - For `list-add` it contains the name of the list option a new value
* has been added to.
* - For `list-del` it contains the name of the list option a value has
* been removed from.
* - For `rename` it contains the name of the option that has been
* renamed if a fourth element exists, else it contains the new name
* a section has been renamed to if the change entry only contains
* three elements.
*
* @property {string} 4
* The meaning of the fourth element depends on the operation.
* - For `set` it is the value an option has been set to.
* - For `list-add` it is the new value that has been added to a
* list option.
* - For `rename` it is the new name of an option that has been
* renamed.
*/
/**
* Fetches uncommitted UCI changes from the remote `ubus` RPC api.
*
* @method
* @returns {Promise< Object< string, Array< LuCI.uci.ChangeRecord>>>}
* Returns a promise resolving to an object containing the configuration
* names as keys and arrays of related change records as values.
*/
changes: rpc.declare({
object: 'uci',
method: 'changes',
expect: { changes: { } }
})
});
< / code > < / pre >
< / article >
< / section >
2019-11-07 11:39:24 +00:00
2019-11-05 08:33:40 +00:00
2019-11-07 11:39:24 +00:00
< footer >
Documentation generated by < a href = "https://github.com/jsdoc3/jsdoc" > JSDoc 3.6.3< / a > on Thu Nov 07 2019 12:36:05 GMT+0100 (Central European Standard Time)
< / footer >
< / div >
< / div >
< script > prettyPrint ( ) ; < / script >
< script src = "scripts/jaguar.js" > < / script >
2019-11-05 08:33:40 +00:00
< / body >
< / html >