summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-olsr/root/usr/libexec/rpcd/olsrinfo
blob: 831a964202a83d8353f0994c70ac5dfdd037cde6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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