luci-base: rpcd: add getHostname and getTTYDevices calls
authorJo-Philipp Wich <jo@mein.io>
Tue, 20 Aug 2019 13:33:48 +0000 (15:33 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 10 Sep 2019 13:28:16 +0000 (15:28 +0200)
Also add IPv6 feature indication.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/root/usr/libexec/rpcd/luci
modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json

index b8950137368e6e58ef3620227e6d20a5df7b14f1..e27149127c7748ec81b1996c952de0dc449715fa 100755 (executable)
@@ -335,6 +335,7 @@ local methods = {
                        rv.odhcpd        = fs.access("/usr/sbin/odhcpd")
                        rv.zram          = fs.access("/sys/class/zram-control")
                        rv.sysntpd       = fs.readlink("/usr/sbin/ntpd") and true
+                       rv.ipv6          = fs.access("/proc/net/ipv6_route")
 
                        local wifi_features = { "eap", "11n", "11ac", "11r", "11w", "acs", "sae", "owe", "suiteb192" }
 
@@ -407,6 +408,51 @@ local methods = {
 
                        return rv
                end
+       },
+
+       getHostname = {
+               call = function()
+                       local fs = require "nixio.fs"
+                       local hostname, code, err = fs.readfile("/proc/sys/kernel/hostname")
+                       if err then
+                               return { error = err }, 1
+                       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
        }
 }
 
index 5ffcbdc2e6d70cf200228c7a36d86bf784ed5984..34183da6d8631705acf1036dd580aa3ad866745f 100644 (file)
@@ -22,7 +22,7 @@
                "read": {
                        "ubus": {
                                "iwinfo": [ "info" ],
-                               "luci": [ "getBoardJSON", "getDUIDHints", "getHostHints", "getIfaddrs", "getInitList", "getLocaltime", "getTimezones", "getDHCPLeases", "getLEDs", "getNetworkDevices", "getUSBDevices" ],
+                               "luci": [ "getBoardJSON", "getDUIDHints", "getHostHints", "getIfaddrs", "getInitList", "getLocaltime", "getTimezones", "getDHCPLeases", "getLEDs", "getNetworkDevices", "getUSBDevices", "getHostname", "getTTYDevices" ],
                                "network.device": [ "status" ],
                                "network.interface": [ "dump" ],
                                "network.wireless": [ "status" ],