summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xmodules/luci-base/root/usr/libexec/rpcd/luci34
-rw-r--r--modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json2
-rw-r--r--protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js29
-rw-r--r--protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js26
-rw-r--r--protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js29
-rw-r--r--protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js26
6 files changed, 69 insertions, 77 deletions
diff --git a/modules/luci-base/root/usr/libexec/rpcd/luci b/modules/luci-base/root/usr/libexec/rpcd/luci
index ab6a7ecfe..b8243b827 100755
--- a/modules/luci-base/root/usr/libexec/rpcd/luci
+++ b/modules/luci-base/root/usr/libexec/rpcd/luci
@@ -479,40 +479,6 @@ local methods = {
end
return { result = hostname:gsub("\n$", "") }
end
- },
-
- getTTYDevices = {
- args = { with_cdc = false, with_tts = true },
- call = function(args)
- local fs = require "nixio.fs"
- local iter = fs.glob("/dev/tty[A-Z]*")
- local rv = {}
- if iter then
- local node
- for node in iter do
- rv[#rv+1] = node
- end
- end
- if args.with_tts then
- iter = fs.glob("/dev/tts/*")
- if iter then
- local node
- for node in iter do
- rv[#rv+1] = node
- end
- end
- end
- if args.with_cdc then
- iter = fs.glob("/dev/cdc-wdm*")
- if iter then
- local node
- for node in iter do
- rv[#rv+1] = node
- end
- end
- end
- return { result = rv }
- end
}
}
diff --git a/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json b/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json
index d05ba841e..417296a39 100644
--- a/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json
+++ b/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json
@@ -27,7 +27,7 @@
"ubus": {
"file": [ "list", "stat" ],
"iwinfo": [ "assoclist", "freqlist", "txpowerlist", "countrylist" ],
- "luci": [ "getBoardJSON", "getDUIDHints", "getHostHints", "getIfaddrs", "getInitList", "getLocaltime", "getTimezones", "getDHCPLeases", "getLEDs", "getNetworkDevices", "getUSBDevices", "getHostname", "getTTYDevices", "getWirelessDevices" ],
+ "luci": [ "getBoardJSON", "getDUIDHints", "getHostHints", "getIfaddrs", "getInitList", "getLocaltime", "getTimezones", "getDHCPLeases", "getLEDs", "getNetworkDevices", "getUSBDevices", "getHostname", "getWirelessDevices" ],
"network.device": [ "status" ],
"network.interface": [ "dump" ],
"network": [ "get_proto_handlers" ],
diff --git a/protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js b/protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js
index d1273ce56..07bed36c2 100644
--- a/protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js
+++ b/protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js
@@ -4,11 +4,18 @@
'require form';
'require network';
-var callTTYDevices = rpc.declare({
- object: 'luci',
- method: 'getTTYDevices',
- params: [ 'with_cdc', 'with_tts' ],
- expect: { result: [] }
+var callFileList = rpc.declare({
+ object: 'file',
+ method: 'list',
+ params: [ 'path' ],
+ expect: { entries: [] },
+ filter: function(list, params) {
+ var rv = [];
+ for (var i = 0; i < list.length; i++)
+ if (list[i].name.match(/^tty[A-Z]/) || list[i].name.match(/^cdc-wdm/) || list[i].name.match(/^[0-9]+$/))
+ rv.push(params.path + list[i].name);
+ return rv.sort();
+ }
});
network.registerPatternVirtual(/^3g-.+$/);
@@ -66,11 +73,13 @@ return network.registerProtocol('3g', {
o = s.taboption('general', form.Value, 'device', _('Modem device'));
o.rmempty = false;
o.load = function(section_id) {
- return callTTYDevices(false, true).then(L.bind(function(devices) {
- if (Array.isArray(devices))
- for (var i = 0; i < devices.length; i++)
- this.value(devices[i]);
-
+ return callFileList('/dev/').then(L.bind(function(devices) {
+ for (var i = 0; i < devices.length; i++)
+ this.value(devices[i]);
+ return callFileList('/dev/tts/');
+ }, this)).then(L.bind(function(devices) {
+ for (var i = 0; i < devices.length; i++)
+ this.value(devices[i]);
return form.Value.prototype.load.apply(this, [section_id]);
}, this));
};
diff --git a/protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js b/protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js
index ba673b4a0..3ab6c01d6 100644
--- a/protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js
+++ b/protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js
@@ -3,11 +3,18 @@
'require form';
'require network';
-var callTTYDevices = rpc.declare({
- object: 'luci',
- method: 'getTTYDevices',
- params: [ 'with_cdc', 'with_tts' ],
- expect: { result: [] }
+var callFileList = rpc.declare({
+ object: 'file',
+ method: 'list',
+ params: [ 'path' ],
+ expect: { entries: [] },
+ filter: function(list, params) {
+ var rv = [];
+ for (var i = 0; i < list.length; i++)
+ if (list[i].name.match(/^ttyUSB/) || list[i].name.match(/^cdc-wdm/))
+ rv.push(params.path + list[i].name);
+ return rv.sort();
+ }
});
network.registerPatternVirtual(/^ncm-.+$/);
@@ -54,12 +61,9 @@ return network.registerProtocol('ncm', {
o = s.taboption('general', form.Value, 'device', _('Modem device'));
o.rmempty = false;
o.load = function(section_id) {
- return callTTYDevices(true, false).then(L.bind(function(devices) {
- if (Array.isArray(devices))
- for (var i = 0; i < devices.length; i++)
- if (/(ttyUSB|cdc-wdm)/.test(devices[i]))
- this.value(devices[i]);
-
+ return callFileList('/dev/').then(L.bind(function(devices) {
+ for (var i = 0; i < devices.length; i++)
+ this.value(devices[i]);
return form.Value.prototype.load.apply(this, [section_id]);
}, this));
};
diff --git a/protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js b/protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js
index 133b472d1..57a7b6a0e 100644
--- a/protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js
+++ b/protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js
@@ -4,11 +4,18 @@
'require form';
'require network';
-var callTTYDevices = rpc.declare({
- object: 'luci',
- method: 'getTTYDevices',
- params: [ 'with_cdc', 'with_tts' ],
- expect: { result: [] }
+var callFileList = rpc.declare({
+ object: 'file',
+ method: 'list',
+ params: [ 'path' ],
+ expect: { entries: [] },
+ filter: function(list, params) {
+ var rv = [];
+ for (var i = 0; i < list.length; i++)
+ if (list[i].name.match(/^tty[A-Z]/) || list[i].name.match(/^cdc-wdm/) || list[i].name.match(/^[0-9]+$/))
+ rv.push(params.path + list[i].name);
+ return rv.sort();
+ }
});
network.registerPatternVirtual(/^ppp-.+$/);
@@ -66,11 +73,13 @@ return network.registerProtocol('ppp', {
o = s.taboption('general', form.Value, 'device', _('Modem device'));
o.rmempty = false;
o.load = function(section_id) {
- return callTTYDevices(true, true).then(L.bind(function(devices) {
- if (Array.isArray(devices))
- for (var i = 0; i < devices.length; i++)
- this.value(devices[i]);
-
+ return callFileList('/dev/').then(L.bind(function(devices) {
+ for (var i = 0; i < devices.length; i++)
+ this.value(devices[i]);
+ return callFileList('/dev/tts/');
+ }, this)).then(L.bind(function(devices) {
+ for (var i = 0; i < devices.length; i++)
+ this.value(devices[i]);
return form.Value.prototype.load.apply(this, [section_id]);
}, this));
};
diff --git a/protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js b/protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js
index 79b1fd3b2..eeda91f6e 100644
--- a/protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js
+++ b/protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js
@@ -3,11 +3,18 @@
'require form';
'require network';
-var callTTYDevices = rpc.declare({
- object: 'luci',
- method: 'getTTYDevices',
- params: [ 'with_cdc', 'with_tts' ],
- expect: { result: [] }
+var callFileList = rpc.declare({
+ object: 'file',
+ method: 'list',
+ params: [ 'path' ],
+ expect: { entries: [] },
+ filter: function(list, params) {
+ var rv = [];
+ for (var i = 0; i < list.length; i++)
+ if (list[i].name.match(/^cdc-wdm/))
+ rv.push(params.path + list[i].name);
+ return rv.sort();
+ }
});
network.registerPatternVirtual(/^qmi-.+$/);
@@ -50,12 +57,9 @@ return network.registerProtocol('qmi', {
o = s.taboption('general', form.Value, 'device', _('Modem device'));
o.rmempty = false;
o.load = function(section_id) {
- return callTTYDevices(true, false).then(L.bind(function(devices) {
- if (Array.isArray(devices))
- for (var i = 0; i < devices.length; i++)
- if (/cdc-wdm/.test(devices[i]))
- this.value(devices[i]);
-
+ return callFileList('/dev/').then(L.bind(function(devices) {
+ for (var i = 0; i < devices.length; i++)
+ this.value(devices[i]);
return form.Value.prototype.load.apply(this, [section_id]);
}, this));
};