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
}
}
"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" ],
'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-.+$/);
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));
};
'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-.+$/);
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));
};
'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-.+$/);
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));
};
'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-.+$/);
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));
};