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: rpc.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 = "rpc.js.html" > Source: rpc.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
var rpcRequestID = 1,
rpcSessionID = L.env.sessionid || '00000000000000000000000000000000',
rpcBaseURL = L.url('admin/ubus'),
rpcInterceptorFns = [];
/**
* @class rpc
* @memberof LuCI
* @hideconstructor
* @classdesc
*
* The `LuCI.rpc` class provides high level ubus JSON-RPC abstractions
* and means for listing and invoking remove RPC methods.
*/
return L.Class.extend(/** @lends LuCI.rpc.prototype */ {
/* privates */
call: function(req, cb, nobatch) {
var q = '';
if (Array.isArray(req)) {
if (req.length == 0)
return Promise.resolve([]);
for (var i = 0; i < req.length; i++)
if (req[i].params)
q += '%s%s.%s'.format(
q ? ';' : '/',
req[i].params[1],
req[i].params[2]
);
}
else if (req.params) {
q += '/%s.%s'.format(req.params[1], req.params[2]);
}
return L.Request.post(rpcBaseURL + q, req, {
timeout: (L.env.rpctimeout || 20) * 1000,
nobatch: nobatch,
credentials: true
}).then(cb, cb);
},
parseCallReply: function(req, res) {
var msg = null;
if (res instanceof Error)
return req.reject(res);
try {
if (!res.ok)
L.raise('RPCError', 'RPC call to %s/%s failed with HTTP error %d: %s',
req.object, req.method, res.status, res.statusText || '?');
msg = res.json();
}
catch (e) {
return req.reject(e);
}
/*
* The interceptor args are intentionally swapped.
* Response is passed as first arg to align with Request class interceptors
*/
Promise.all(rpcInterceptorFns.map(function(fn) { return fn(msg, req) }))
.then(this.handleCallReply.bind(this, req, msg))
.catch(req.reject);
},
handleCallReply: function(req, msg) {
var type = Object.prototype.toString,
ret = null;
try {
/* verify message frame */
if (!L.isObject(msg) || msg.jsonrpc != '2.0')
L.raise('RPCError', 'RPC call to %s/%s returned invalid message frame',
req.object, req.method);
/* check error condition */
if (L.isObject(msg.error) & & msg.error.code & & msg.error.message)
L.raise('RPCError', 'RPC call to %s/%s failed with error %d: %s',
req.object, req.method, msg.error.code, msg.error.message || '?');
}
catch (e) {
return req.reject(e);
}
if (!req.object & & !req.method) {
ret = msg.result;
}
else if (Array.isArray(msg.result)) {
ret = (msg.result.length > 1) ? msg.result[1] : msg.result[0];
}
if (req.expect) {
for (var key in req.expect) {
if (ret != null & & key != '')
ret = ret[key];
if (ret == null || type.call(ret) != type.call(req.expect[key]))
ret = req.expect[key];
break;
}
}
/* apply filter */
if (typeof(req.filter) == 'function') {
req.priv[0] = ret;
req.priv[1] = req.params;
ret = req.filter.apply(this, req.priv);
}
req.resolve(ret);
},
/**
* Lists available remote ubus objects or the method signatures of
* specific objects.
*
* This function has two signatures and is sensitive to the number of
* arguments passed to it:
* - `list()` -
* Returns an array containing the names of all remote `ubus` objects
* - `list("objname", ...)`
* Returns method signatures for each given `ubus` object name.
*
* @param {...string} [objectNames]
* If any object names are given, this function will return the method
* signatures of each given object.
*
* @returns {Promise< Array< string>|Object< string, Object< string, Object< string, string>>>>}
* When invoked without arguments, this function will return a promise
* resolving to an array of `ubus` object names. When invoked with one or
* more arguments, a promise resolving to an object describing the method
* signatures of each requested `ubus` object name will be returned.
*/
list: function() {
var msg = {
jsonrpc: '2.0',
id: rpcRequestID++,
method: 'list',
params: arguments.length ? this.varargs(arguments) : undefined
};
return new Promise(L.bind(function(resolveFn, rejectFn) {
/* store request info */
var req = {
resolve: resolveFn,
reject: rejectFn
};
/* call rpc */
this.call(msg, this.parseCallReply.bind(this, req));
}, this));
},
/**
* @typedef {Object} DeclareOptions
* @memberof LuCI.rpc
*
* @property {string} object
* The name of the remote `ubus` object to invoke.
*
* @property {string} method
* The name of the remote `ubus` method to invoke.
*
* @property {string[]} [params]
* Lists the named parameters expected by the remote `ubus` RPC method.
* The arguments passed to the resulting generated method call function
* will be mapped to named parameters in the order they appear in this
* array.
*
* Extraneous parameters passed to the generated function will not be
* sent to the remote procedure but are passed to the
* {@link LuCI.rpc~filterFn filter function} if one is specified.
*
* Examples:
* - `params: [ "foo", "bar" ]` -
* When the resulting call function is invoked with `fn(true, false)`,
* the corresponding args object sent to the remote procedure will be
* `{ foo: true, bar: false }`.
* - `params: [ "test" ], filter: function(reply, args, extra) { ... }` -
* When the resultung generated function is invoked with
* `fn("foo", "bar", "baz")` then `{ "test": "foo" }` will be sent as
* argument to the remote procedure and the filter function will be
* invoked with `filterFn(reply, [ "foo" ], "bar", "baz")`
*
* @property {Object< string,*>} [expect]
* Describes the expected return data structure. The given object is
* supposed to contain a single key selecting the value to use from
* the returned `ubus` reply object. The value of the sole key within
* the `expect` object is used to infer the expected type of the received
* `ubus` reply data.
*
* If the received data does not contain `expect`'s key, or if the
* type of the data differs from the type of the value in the expect
* object, the expect object's value is returned as default instead.
*
* The key in the `expect` object may be an empty string (`''`) in which
* case the entire reply object is selected instead of one of its subkeys.
*
* If the `expect` option is omitted, the received reply will be returned
* as-is, regardless of its format or type.
*
* Examples:
* - `expect: { '': { error: 'Invalid response' } }` -
* This requires the entire `ubus` reply to be a plain JavaScript
* object. If the reply isn't an object but e.g. an array or a numeric
* error code instead, it will get replaced with
* `{ error: 'Invalid response' }` instead.
* - `expect: { results: [] }` -
* This requires the received `ubus` reply to be an object containing
* a key `results` with an array as value. If the received reply does
* not contain such a key, or if `reply.results` points to a non-array
* value, the empty array (`[]`) will be used instead.
* - `expect: { success: false }` -
* This requires the received `ubus` reply to be an object containing
* a key `success` with a boolean value. If the reply does not contain
* `success` or if `reply.success` is not a boolean value, `false` will
* be returned as default instead.
*
* @property {LuCI.rpc~filterFn} [filter]
* Specfies an optional filter function which is invoked to transform the
* received reply data before it is returned to the caller.
*
*/
/**
* The filter function is invoked to transform a received `ubus` RPC call
* reply before returning it to the caller.
*
* @callback LuCI.rpc~filterFn
*
* @param {*} data
* The received `ubus` reply data or a subset of it as described in the
* `expect` option of the RPC call declaration. In case of remote call
* errors, `data` is numeric `ubus` error code instead.
*
* @param {Array< *>} args
* The arguments the RPC method has been invoked with.
*
* @param {...*} extraArgs
* All extraneous arguments passed to the RPC method exceeding the number
* of arguments describes in the RPC call declaration.
*
* @return {*}
* The return value of the filter function will be returned to the caller
* of the RPC method as-is.
*/
/**
* The generated invocation function is returned by
* {@link LuCI.rpc#declare rpc.declare()} and encapsulates a single
* RPC method call.
*
* Calling this function will execute a remote `ubus` HTTP call request
* using the arguments passed to it as arguments and return a promise
* resolving to the received reply values.
*
* @callback LuCI.rpc~invokeFn
*
* @param {...*} params
* The parameters to pass to the remote procedure call. The given
* positional arguments will be named to named RPC parameters according
* to the names specified in the `params` array of the method declaration.
*
* Any additional parameters exceeding the amount of arguments in the
* `params` declaration are passed as private extra arguments to the
* declared filter function.
*
* @return {Promise< *>}
* Returns a promise resolving to the result data of the remote `ubus`
* RPC method invocation, optionally substituted and filtered according
* to the `expect` and `filter` declarations.
*/
/**
* Describes a remote RPC call procedure and returns a function
* implementing it.
*
* @param {LuCI.rpc.DeclareOptions} options
* If any object names are given, this function will return the method
* signatures of each given object.
*
* @returns {LuCI.rpc~invokeFn}
* Returns a new function implementing the method call described in
* `options`.
*/
declare: function(options) {
return Function.prototype.bind.call(function(rpc, options) {
var args = this.varargs(arguments, 2);
return new Promise(function(resolveFn, rejectFn) {
/* build parameter object */
var p_off = 0;
var params = { };
if (Array.isArray(options.params))
for (p_off = 0; p_off < options.params.length; p_off++)
params[options.params[p_off]] = args[p_off];
/* all remaining arguments are private args */
var priv = [ undefined, undefined ];
for (; p_off < args.length; p_off++)
priv.push(args[p_off]);
/* store request info */
var req = {
expect: options.expect,
filter: options.filter,
resolve: resolveFn,
reject: rejectFn,
params: params,
priv: priv,
object: options.object,
method: options.method
};
/* build message object */
var msg = {
jsonrpc: '2.0',
id: rpcRequestID++,
method: 'call',
params: [
rpcSessionID,
options.object,
options.method,
params
]
};
/* call rpc */
rpc.call(msg, rpc.parseCallReply.bind(rpc, req), options.nobatch);
});
}, this, this, options);
},
/**
* Returns the current RPC session id.
*
* @returns {string}
* Returns the 32 byte session ID string used for authenticating remote
* requests.
*/
getSessionID: function() {
return rpcSessionID;
},
/**
* Set the RPC session id to use.
*
* @param {string} sid
* Sets the 32 byte session ID string used for authenticating remote
* requests.
*/
setSessionID: function(sid) {
rpcSessionID = sid;
},
/**
* Returns the current RPC base URL.
*
* @returns {string}
* Returns the RPC URL endpoint to issue requests against.
*/
getBaseURL: function() {
return rpcBaseURL;
},
/**
* Set the RPC base URL to use.
*
* @param {string} sid
* Sets the RPC URL endpoint to issue requests against.
*/
setBaseURL: function(url) {
rpcBaseURL = url;
},
/**
* Translates a numeric `ubus` error code into a human readable
* description.
*
* @param {number} statusCode
* The numeric status code.
*
* @returns {string}
* Returns the textual description of the code.
*/
getStatusText: function(statusCode) {
switch (statusCode) {
case 0: return _('Command OK');
case 1: return _('Invalid command');
case 2: return _('Invalid argument');
case 3: return _('Method not found');
case 4: return _('Resource not found');
case 5: return _('No data received');
case 6: return _('Permission denied');
case 7: return _('Request timeout');
case 8: return _('Not supported');
case 9: return _('Unspecified error');
case 10: return _('Connection lost');
default: return _('Unknown error code');
}
},
/**
* Registered interceptor functions are invoked before the standard reply
* parsing and handling logic.
*
* By returning rejected promises, interceptor functions can cause the
* invocation function to fail, regardless of the received reply.
*
* Interceptors may also modify their message argument in-place to
* rewrite received replies before they're processed by the standard
* response handling code.
*
* A common use case for such functions is to detect failing RPC replies
* due to expired authentication in order to trigger a new login.
*
* @callback LuCI.rpc~interceptorFn
*
* @param {*} msg
* The unprocessed, JSON decoded remote RPC method call reply.
*
* Since interceptors run before the standard parsing logic, the reply
* data is not verified for correctness or filtered according to
* `expect` and `filter` specifications in the declarations.
*
* @param {Object} req
* The related request object which is an extended variant of the
* declaration object, allowing access to internals of the invocation
* function such as `filter`, `expect` or `params` values.
*
* @return {Promise< *>|*}
* Interceptor functions may return a promise to defer response
* processing until some delayed work completed. Any values the returned
* promise resolves to are ignored.
*
* When the returned promise rejects with an error, the invocation
* function will fail too, forwarding the error to the caller.
*/
/**
* Registers a new interceptor function.
*
* @param {LuCI.rpc~interceptorFn} interceptorFn
* The inteceptor function to register.
*
* @returns {LuCI.rpc~interceptorFn}
* Returns the given function value.
*/
addInterceptor: function(interceptorFn) {
if (typeof(interceptorFn) == 'function')
rpcInterceptorFns.push(interceptorFn);
return interceptorFn;
},
/**
* Removes a registered interceptor function.
*
* @param {LuCI.rpc~interceptorFn} interceptorFn
* The inteceptor function to remove.
*
* @returns {boolean}
* Returns `true` if the given function has been removed or `false`
* if it has not been found.
*/
removeInterceptor: function(interceptorFn) {
var oldlen = rpcInterceptorFns.length, i = oldlen;
while (i--)
if (rpcInterceptorFns[i] === interceptorFn)
rpcInterceptorFns.splice(i, 1);
return (rpcInterceptorFns.length < oldlen);
}
});
< / 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 >