From c2312ec7fe68031ba1258c019381b8c5fa8980fc Mon Sep 17 00:00:00 2001 From: Ycarus Date: Wed, 21 Mar 2018 14:01:44 +0100 Subject: [PATCH] Add support for httping in omr-tracker --- .../luasrc/model/cbi/omr-tracker.lua | 6 +++-- omr-tracker/Makefile | 2 +- omr-tracker/files/bin/omr-tracker | 22 +++++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua b/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua index 15984470a..1dfb529e4 100644 --- a/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua +++ b/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua @@ -26,8 +26,9 @@ o.default = "2" o.datatype = "range(1, 100)" o.rmempty = false -o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping or dns. None mode only ping gateway.")) +o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway.")) o:value("ping","ping") +o:value("httping","httping") o:value("dns","dns") o:value("none","none") @@ -65,8 +66,9 @@ o.default = "2" o.datatype = "range(1, 100)" o.rmempty = false -o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping or dns. None mode only ping gateway.")) +o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway.")) o:value("ping","ping") +o:value("httping","httping") o:value("dns","dns") o:value("none","none") diff --git a/omr-tracker/Makefile b/omr-tracker/Makefile index 0bf89bc13..a541f72f4 100644 --- a/omr-tracker/Makefile +++ b/omr-tracker/Makefile @@ -19,7 +19,7 @@ define Package/$(PKG_NAME) CATEGORY:=Network TITLE:=OpenMPTCProuter tracker PKGARCH:=all - DEPENDS:=+bind-dig + DEPENDS:=+bind-dig +httping endef define Package/$(PKG_NAME)/description diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index 89c34c9fc..7c3ad9d9b 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -92,6 +92,25 @@ _ping() { false } +_httping() { + local host=$1 + local deviceip=$2 + local localip=$3 + ret=$(httping "${host}" \ + -y "${deviceip}" \ + -t "$OMR_TRACKER_TIMEOUT" \ + -c 1 \ + -q + ) && echo "$ret" | grep -sq "1 ok" && { + if [ "$localip" = "yes" ]; then + OMR_TRACKER_LATENCY=$(echo "$ret" | cut -d "/" -s -f5 | cut -d "." -f1) + _update_rto "$OMR_TRACKER_LATENCY" + fi + return + } + false +} + _dns() { local host=$1 local deviceip=$2 @@ -152,6 +171,9 @@ while true; do if [ "$OMR_TRACKER_TYPE" = "ping" ]; then _ping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes" status=$? + elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then + _httping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes" + status=$? elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then _dns "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes" status=$?