Forráskód Böngészése

protocols: replace luci/getTTYDevices calls with generic file/list ones

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Jo-Philipp Wich 4 éve
szülő
commit
9cae3b9e67

+ 0 - 34
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
 	}
 }
 

+ 1 - 1
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" ],

+ 19 - 10
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));
 		};

+ 15 - 11
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));
 		};

+ 19 - 10
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));
 		};

+ 15 - 11
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));
 		};