package/freifunk-common: neigh.sh: fix for missing .. as well as aligned headers
[project/luci.git] / contrib / package / freifunk-common / files / usr / bin / neigh.sh
index ec53a58..cf43424 100755 (executable)
@@ -1,4 +1,41 @@
 #!/bin/sh
 
-wget -q -O - http://localhost:2006/neighbours|sed -e's/LinkQuality/LQ/;s/Hysteresis/Hyst./;s/Willingness/Will./'
-[ -f /proc/net/ipv6_route ] && wget -q -O - http://[::1]:2006/neighbours|sed -e's/LinkQuality/LQ/;s/Hysteresis/Hyst./;s/Willingness/Will./'
+. /usr/share/libubox/jshn.sh
+
+VARS="localIP:Local remoteIP:Remote validityTime:vTime linkQuality:LQ neighborLinkQuality:NLQ linkCost:Cost"
+
+for HOST in 127.0.0.1 ::1;do
+       json_init
+       json_load "$(echo /links|nc ${HOST} 9090)"
+       if json_is_a links array;then
+               json_select links
+               for v in ${VARS};do
+                       eval _${v%:*}=0
+               done
+               for j in 0 1;do
+                       case ${j} in 1)
+                               for v in ${VARS};do
+                                       eval printf \"%-\${_${v%:*}}s \" ${v#*:}
+                               done
+                               echo
+                       ;;esac
+                       i=1;while json_is_a ${i} object;do
+                               json_select ${i}
+                               json_get_vars $(for v in ${VARS};do echo ${v%:*};done)
+                               case ${j} in 0)
+                                       for v in ${VARS};do
+                                               eval "test \${_${v%:*}} -lt \${#${v%:*}} && _${v%:*}=\${#${v%:*}}"
+                                       done
+                               ;;*)
+                                       for v in ${VARS};do
+                                               eval printf \"%-\${_${v%:*}}s \" \$${v%:*}
+                                       done
+                                       echo
+                               ;;esac
+                               json_select ..
+                               i=$(( i + 1 ))
+                       done
+               done
+       fi
+       echo
+done