#!/bin/sh
# SPDX-License-Identifier: GPL-3.0-only
#
# Netmon Nodewatcher (C) 2010-2012 Freifunk Oldenburg
SCRIPT_STATUS_FILE=$(uci get nodewatcher.@script[0].status_text_file)
SCRIPT_VERSION=$(cat /etc/nodewatcher_version)
debug() {
(>&2 echo "nodewatcher: $1")
}
debug "Collecting basic system status data"
SYSTEM_DATA="online"
hostname="$(cat /proc/sys/kernel/hostname)"
mac=$(awk '{ mac=toupper($1); gsub(":", "", mac); print mac }' /sys/class/net/br-client/address 2>/dev/null)
[ "$hostname" = "OpenWrt" ] && hostname="$mac"
[ "$hostname" = "FFF" ] && hostname="$mac"
SYSTEM_DATA="$SYSTEM_DATA$hostname"
description="$(uci -q get fff.system.description)"
[ -n "$description" ] && SYSTEM_DATA="$SYSTEM_DATA"
latitude="$(uci -q get fff.system.latitude)"
longitude="$(uci -q get fff.system.longitude)"
if [ -n "$longitude" -a -n "$latitude" ]; then
SYSTEM_DATA="$SYSTEM_DATA$latitude$longitude"
fi
position_comment="$(uci -q get fff.system.position_comment)"
[ -n "$position_comment" ] && SYSTEM_DATA="$SYSTEM_DATA"
contact="$(uci -q get fff.system.contact)"
[ -n "$contact" ] && SYSTEM_DATA="$SYSTEM_DATA$contact"
uptime=$(awk '{ printf ""$1""$2"" }' /proc/uptime)
SYSTEM_DATA="$SYSTEM_DATA$uptime"
memory=$(awk '
/^MemTotal/ { printf ""$2"" }
/^MemAvail/ { printf ""$2"" }
/^Cached:/ { printf ""$2"" }
/^Buffers/ { printf ""$2"" }
/^MemFree/ { printf ""$2"" }
' /proc/meminfo)
SYSTEM_DATA="$SYSTEM_DATA$memory"
cpu=$(awk -F': ' '
/model/ { printf ""$2"" }
/system type/ { printf ""$2"" }
/platform/ { printf ""$2"" }
' /proc/cpuinfo)
SYSTEM_DATA="$SYSTEM_DATA$cpu"
SYSTEM_DATA="$SYSTEM_DATA$(cat /var/sysinfo/model)"
SYSTEM_DATA="$SYSTEM_DATA$(date +%s)"
load=$(awk '{ printf ""$3""$4"" }' /proc/loadavg)
SYSTEM_DATA="$SYSTEM_DATA$load"
debug "Collecting version information"
if [ -e /sys/module/batman_adv/version ]; then
SYSTEM_DATA="$SYSTEM_DATA$(cat /sys/module/batman_adv/version)"
fi
SYSTEM_DATA="$SYSTEM_DATA$(uname -r)"
SYSTEM_DATA="$SYSTEM_DATA$SCRIPT_VERSION"
if [ -x /usr/bin/fastd ]; then
SYSTEM_DATA="$SYSTEM_DATA$(/usr/bin/fastd -v | awk '{ print $2 }')"
fi
if [ -x /usr/sbin/babeld ]; then
SYSTEM_DATA="$SYSTEM_DATA$(/usr/sbin/babeld -V 2>&1)"
fi
# example for /etc/openwrt_release:
#DISTRIB_ID="OpenWrt"
#DISTRIB_RELEASE="Attitude Adjustment"
#DISTRIB_REVISION="r35298"
#DISTRIB_CODENAME="attitude_adjustment"
#DISTRIB_TARGET="atheros/generic"
#DISTRIB_DESCRIPTION="OpenWrt Attitude Adjustment 12.09-rc1"
. /etc/openwrt_release
SYSTEM_DATA="$SYSTEM_DATA$DISTRIB_ID"
SYSTEM_DATA="$SYSTEM_DATA$DISTRIB_RELEASE"
# example for /etc/firmware_release:
#FIRMWARE_VERSION="95f36685e7b6cbf423f02cf5c7f1e785fd4ccdae-dirty"
#BUILD_DATE="build date: Di 29. Jan 19:33:34 CET 2013"
#OPENWRT_CORE_REVISION="35298"
#OPENWRT_FEEDS_PACKAGES_REVISION="35298"
. /etc/firmware_release
SYSTEM_DATA="$SYSTEM_DATA$FIRMWARE_VERSION"
SYSTEM_DATA="$SYSTEM_DATA$BUILD_DATE"
SYSTEM_DATA="$SYSTEM_DATA$OPENWRT_CORE_REVISION"
SYSTEM_DATA="$SYSTEM_DATA$OPENWRT_FEEDS_PACKAGES_REVISION"
debug "Collecting hood information and additional status data"
SYSTEM_DATA="$SYSTEM_DATA$(uci -q get "system.@system[0].hood")"
SYSTEM_DATA="$SYSTEM_DATA$(uci -q get "system.@system[0].hoodid")"
if [ -s "$SCRIPT_STATUS_FILE" ]; then
SYSTEM_DATA="$SYSTEM_DATA$(cat "$SCRIPT_STATUS_FILE")"
fi
# Checks if fastd is running
vpn_active=0
pidof fastd >/dev/null && vpn_active=1
SYSTEM_DATA="$SYSTEM_DATA$vpn_active"
echo -n "$SYSTEM_DATA"
exit 0