[PATCH] packages/fff: Add fff-gwinfo

Tim Niemeyer tim at tn-x.org
Di Feb 12 16:23:40 CET 2019


Hi

Wenn du batctl raus wirfst könnte man es meinet wegen auch aktivieren.
Ehrlich gesagt kapiere ich das eh nicht so recht, was das da tut. Die
Variable im json scheint auf VPN hinzudeuten, aber dann werden da nur
"eth"s aus dem batman if gegreppt... ?

Von der Architektur her wäre es langfristig sicher sinnvoll die
einzelnen Schritte von dem gwinfo in separate Scripte zu werfen. z.B.
könnte es Gateways geben die kein dhcpd haben.. Vielleicht gibt es
welche die kein radvd kram haben.

Unten noch ne kleine Anmerkung.

On Sun, 2019-02-10 at 23:11 +0100, Adrian Schmutzler wrote:
> This package sends IP addresses and DNS ranges
> to the Monitoring.
> 
> The current code version for the main script is
> available at:
> https://github.com/FreifunkFranken/fff-monitoring/blob/master/gwinfo/
> gwinfofirmware.sh
> 
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> 
> ---
> 
> Ich würde auch diese Package gerne in die offizielle FW mit
> aufnehmen. Es gibt drei Möglichkeiten:
> - Default: Eintrag in fff-base und micrond aktiv
> - Optional/built-in: Die Package wird mit in die Firmware
>   kompiliert, aber der micrond fehlt, sodass by default keine
>   Daten gesendet werden. Wer möchte, kann gwinfo einfach
>   aktivieren, ohne selbst eine FW bauen zu müssen.
> - Optional/not selected: Die Package enthält den micrond, aber
>   wird nicht in fff-base als Dependency eintragen. Damit wird
>   sie in der offiziellen FW nicht mit einkompiliert, wer selbst
>   FW baut kann die Package aber mit reinnehmen (dies ist im
>   aktuellen Patch der Fall).
> 
> Ich bitte um Feedback, wie die Meinung zu gwinfo ist.
> ---
>  src/packages/fff/fff-gwinfo/Makefile               | 39
> +++++++++++++++
>  .../fff-gwinfo/files/usr/lib/micron.d/fff-gwinfo   |  1 +
>  src/packages/fff/fff-gwinfo/files/usr/sbin/gwinfo  | 55
> ++++++++++++++++++++++
>  3 files changed, 95 insertions(+)
>  create mode 100644 src/packages/fff/fff-gwinfo/Makefile
>  create mode 100644 src/packages/fff/fff-
> gwinfo/files/usr/lib/micron.d/fff-gwinfo
>  create mode 100755 src/packages/fff/fff-gwinfo/files/usr/sbin/gwinfo
> 
> diff --git a/src/packages/fff/fff-gwinfo/Makefile
> b/src/packages/fff/fff-gwinfo/Makefile
> new file mode 100644
> index 00000000..b4f01ee3
> --- /dev/null
> +++ b/src/packages/fff/fff-gwinfo/Makefile
> @@ -0,0 +1,39 @@
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=fff-gwinfo
> +PKG_VERSION:=1.4.6
> +PKG_RELEASE:=3
> +
> +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
> +
> +include $(INCLUDE_DIR)/package.mk
> +
> +define Package/$(PKG_NAME)
> +	SECTION:=base
> +	CATEGORY:=Freifunk
> +	TITLE:= Freifunk-Franken GWinfo
> +	URL:=https://github.com/FreifunkFranken/fff-monitoring/blob/
> master/gwinfo/gwinfofirmware.sh
> +	DEPENDS:=+fff-network +fff-dhcp
> +endef
> +
> +define Package/$(PKG_NAME)/description
> +	This package sends IP addresses and DHCP ranges to the
> Monitoring
> +endef
> +
> +define Build/Prepare
> +	echo "all: " > $(PKG_BUILD_DIR)/Makefile
> +endef
> +
> +define Build/Configure
> +	# nothing
> +endef
> +
> +define Build/Compile
> +	# nothing
> +endef
> +
> +define Package/$(PKG_NAME)/install
> +	$(CP) ./files/* $(1)/
> +endef
> +
> +$(eval $(call BuildPackage,$(PKG_NAME)))
> diff --git a/src/packages/fff/fff-gwinfo/files/usr/lib/micron.d/fff-
> gwinfo b/src/packages/fff/fff-gwinfo/files/usr/lib/micron.d/fff-
> gwinfo
> new file mode 100644
> index 00000000..aaaeca3f
> --- /dev/null
> +++ b/src/packages/fff/fff-gwinfo/files/usr/lib/micron.d/fff-gwinfo
> @@ -0,0 +1 @@
> +3-59/5 * * * * /usr/sbin/gwinfo
> diff --git a/src/packages/fff/fff-gwinfo/files/usr/sbin/gwinfo
> b/src/packages/fff/fff-gwinfo/files/usr/sbin/gwinfo
> new file mode 100755
> index 00000000..566951a7
> --- /dev/null
> +++ b/src/packages/fff/fff-gwinfo/files/usr/sbin/gwinfo
> @@ -0,0 +1,55 @@
> +#!/bin/sh
> +#
> +# Gateway data script for FFF Monitoring
> +# Copyright Adrian Schmutzler, 2018.
> +# License GPLv3
> +#
> +# Gateway-Firmware Version 1.4.6
> +#
> +
> +# Config
> +api_urls="https://monitoring.freifunk-franken.de/api/gwinfo" #
> space-separated list of addresses (api_urls="url1 url2")
> +batctlpath=/usr/sbin/batctl
> +hostname="$(uci -q get system. at system[0].hostname)"
> +statslink="$(uci -q get gateway. at gateway[0].statslink)"
> +
> +# Code
> +tmp=$(/bin/mktemp)
> +echo
> "{\"version\":\"1.4.6\",\"hostname\":\"$hostname\",\"stats_page\":\"$
> statslink\",\"netifs\":[" > $tmp
> +
> +comma=""
> +for netif in $(ls /sys/class/net); do
> +	if [ "$netif" = "lo" ] || echo "$netif" | grep -q "w" ; then
> # remove wXap, wXmesh, etc.
> +		continue
> +	fi
> +	mac="$(cat "/sys/class/net/$netif/address")"
> +	batctl="$("$batctlpath" -m "$netif" if | grep "eth" | sed -n
> 's/:.*//p')"
> +
> +	ipv4=""
> +	ipv6=""
> +	dhcpstart=""
> +	dhcpend=""
> +	if [ "$netif" = "bat0" ]; then
> +		ipv4="$(ip -4 addr show dev br-mesh | grep " 10\." |
> sed 's/.* \(10\.[^ ]*\/[^ ]*\) .*/\1/')"
> +		ipv6="$(ip -6 addr show dev br-mesh | grep " fd43" |
> grep '::' | sed 's/.* \(fd43[^ ]*\) .*/\1/')"
> +		[ "$(echo "$ipv6" | wc -l)" = "1" ] || ipv6=""
> +		dhcpstart="$(uci -q get dhcp.mesh.start)"
Fehlt hier dhcpend?

> +	fi
> +
> +	echo
> "$comma{\"mac\":\"$mac\",\"netif\":\"$netif\",\"vpnif\":\"$batctl\",\
> "ipv4\":\"$ipv4\",\"ipv6\":\"$ipv6\",\"dhcpstart\":\"$dhcpstart\",\"d
> hcpend\":\"$dhcpend\"}" >> $tmp
> +	comma=","
> +done
> +
> +echo "],\"admins\":[" >> $tmp
> +
> +comma=""
> +for admin in $(uci -q get gateway. at gateway[0].admin); do
> +	echo "$comma\"$admin\"" >> $tmp && comma=","
> +done
> +
> +echo "]}" >> $tmp
> +
> +for api_url in $api_urls; do
> +	/usr/bin/curl -k -v -H "Content-type: application/json;
> charset=UTF-8" --data-binary @$tmp "$api_url"

Hab das jetzt nicht sicher auf dem Schirm.. Sollte das nicht alles curl
auf wget portiert werden? Oder war es jetzt genau anders rum?

Grüße
Tim


> +done
> +/bin/rm "$tmp"
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20190212/6205cbf0/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev