diff options
Diffstat (limited to 'applications/luci-app-olsr/root/usr/libexec/rpcd/olsrinfo')
-rwxr-xr-x | applications/luci-app-olsr/root/usr/libexec/rpcd/olsrinfo | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/applications/luci-app-olsr/root/usr/libexec/rpcd/olsrinfo b/applications/luci-app-olsr/root/usr/libexec/rpcd/olsrinfo new file mode 100755 index 0000000000..831a964202 --- /dev/null +++ b/applications/luci-app-olsr/root/usr/libexec/rpcd/olsrinfo @@ -0,0 +1,78 @@ +#!/bin/sh +. /usr/share/libubox/jshn.sh +. /lib/functions.sh + +HOSTSFILE="-1" + +find_hosts_config() { + local cfg="$1" + + config_get library "$cfg" library + if [ "$library" != "olsrd_nameservice" ]; then + return 1 + fi + config_get hosts_file "$cfg" hosts_file + HOSTSFILE=$hosts_file +} + +load_hosts() { + config_load olsrd + config_foreach find_hosts_config LoadPlugin + local hosts4=$(cat $HOSTSFILE) + HOSTSFILE="" + config_load olsrd6 + config_foreach find_hosts_config LoadPlugin + if [ -f "$HOSTSFILE" ]; then + local hosts6=$(cat "$HOSTSFILE") + else + local hosts6="" + fi + local hosts="$hosts4$hosts6" + json_init + json_add_string hosts "$hosts" + json_dump +} + +case "$1" in +list) + json_init + json_add_object "getjsondata" + json_add_string 'otable' 'String' + json_add_int 'v4_port' 'Integer' + json_add_int 'v6_port' 'Integer' + json_close_object + json_add_object "hasipip" + json_close_object + json_add_object "hosts" + json_close_object + json_dump + ;; +call) + case "$2" in + getjsondata) + json_init + json_load "$(cat)" + json_get_var otable otable + json_get_var v4_port v4_port + json_get_var v6_port v6_port + + jsonreq4=$(echo "/${otable}" | nc 127.0.0.1 "${v4_port}" | sed -n '/^[}{ ]/p' 2>/dev/null) + jsonreq6=$(echo "/${otable}" | nc ::1 "${v6_port}" | sed -n '/^[}{ ]/p' 2>/dev/null) + + json_init + json_add_string "jsonreq4" "$jsonreq4" + json_add_string "jsonreq6" "$jsonreq6" + json_dump + ;; + hasipip) + result=$(ls /etc/modules.d/ | grep -E "[0-9]*-ipip") + json_init + json_add_string "result" "$result" + json_dump + ;; + hosts) + load_hosts + ;; + esac + ;; +esac |