luci-mod-admin-full: figure out diagnostics host in postinstall
authorJo-Philipp Wich <jo@mein.io>
Thu, 6 Oct 2016 15:13:23 +0000 (17:13 +0200)
committerJo-Philipp Wich <jo@mein.io>
Thu, 6 Oct 2016 15:13:23 +0000 (17:13 +0200)
Attempt to infer the default diagnostics host for nslookup / ping / traceroute
from the various URLs in /etc/os-release. Fall back to "openwrt.org" if no
host is found to preserve backwards compatibility.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full [new file with mode: 0755]

diff --git a/modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full b/modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full
new file mode 100755 (executable)
index 0000000..372eb15
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+if [ "$(uci -q get luci.diag)" != "internal" ]; then
+       host=""
+
+       if [ -s /etc/os-release ]; then
+               . /etc/os-release
+               host="${HOME_URL:-${BUG_URL:-$LEDE_DEVICE_MANUFACTURER_URL}}"
+               host="${host#*://}"
+               host="${host%%/*}"
+       fi
+
+       uci -q batch <<-EOF >/dev/null
+               set luci.diag=internal
+               set luci.diag.dns='${host:-openwrt.org}'
+               set luci.diag.ping='${host:-openwrt.org}'
+               set luci.diag.route='${host:-openwrt.org}'
+               commit luci
+       EOF
+fi
+
+exit 0