[PATCH] procd: add info json output
Florian Eckert
fe at dev.tdt.de
Mon Dec 14 07:36:27 EST 2020
By adding the extra command `info` it is now possible to retrieve all
relevant data from a procd started service directly via the init script.
Until now, you have to query the ubus with the command:
ubus call service list '{"name":"<xxx>","verbose":true}'
With this change, the init script is now used with the command:
/etc/init.d/<xxx> info
Signed-off-by: Florian Eckert <fe at dev.tdt.de>
---
package/base-files/files/etc/rc.common | 5 +++++
package/system/procd/files/procd.sh | 14 ++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/package/base-files/files/etc/rc.common b/package/base-files/files/etc/rc.common
index f39b69464e..c7fde31d41 100755
--- a/package/base-files/files/etc/rc.common
+++ b/package/base-files/files/etc/rc.common
@@ -121,6 +121,7 @@ extra_command "enabled" "Check if service is started on boot"
extra_command "running" "Check if service is running"
extra_command "status" "Service status"
extra_command "trace" "Start with syscall trace"
+ extra_command "info" "Dump service info as json"
. $IPKG_INSTROOT/lib/functions/procd.sh
basescript=$(readlink "$initscript")
@@ -173,6 +174,10 @@ extra_command "enabled" "Check if service is started on boot"
_procd_status "$(basename ${basescript:-$initscript})" "$1"
fi
}
+
+ info() {
+ _procd_info "$(basename ${basescript:-$initscript})"
+ }
}
ALL_COMMANDS="${ALL_COMMANDS} ${EXTRA_COMMANDS}"
diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh
index d86b7219da..1969cdf973 100644
--- a/package/system/procd/files/procd.sh
+++ b/package/system/procd/files/procd.sh
@@ -474,6 +474,20 @@ _procd_status() {
fi
}
+_procd_info() {
+ local service="$1"
+ local data
+
+ data=$(_procd_ubus_call list | jsonfilter -e '@["'"$service"'"]')
+ [ -z "$data" ] && { echo "not found"; return 3; }
+
+ json_init
+ json_add_string name "$service"
+ json_add_boolean verbose "1"
+ json_add_string name "$service"
+ _procd_ubus_call list
+}
+
procd_open_data() {
local name="$1"
json_set_namespace procd __procd_old_cb
--
2.20.1
More information about the openwrt-devel
mailing list