From 39d147da8d726f7085128593e88f1e687ae38457 Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Fri, 3 Nov 2017 15:00:00 +0100 Subject: [PATCH] Rearrange fff config values into their own config file This moves the FFF configuration from /etc/config/system to a new file /etc/config/fff. Thus, this file can be copied as a whole during upgrade (with compatibility provided) and then resulting values in other files are re-set later. This also fixes the bandwidth settings not being persistent during upgrade. Other settings may join ... I tried to go through all the code and update all occurrences of the relevant system variables (looking for "system" both in GitHub and my local src folder). Note that a downgrade will result in loss of configuration! Signed-off-by: Adrian Schmutzler Tested-by: Adrian Schmutzler Reviewed-by: Tim Niemeyer - Rebased Signed-off-by: Tim Niemeyer --- src/packages/fff/fff-config/Makefile | 40 +++++++++++++++++++ .../files/etc/uci-defaults/98-configure-fff | 25 ++++++++++++ src/packages/fff/fff-hoods/Makefile | 2 +- .../fff-hoods/files/usr/sbin/configurehood | 4 +- src/packages/fff/fff-nodewatcher/Makefile | 6 +-- .../files/usr/sbin/nodewatcher | 21 +++++----- .../fff/fff-support/files/usr/sbin/show_info | 12 +++--- src/packages/fff/fff-sysupgrade/Makefile | 2 +- .../uci-defaults/05-config-system-migration | 36 ++++++++++------- .../files/etc/uci-defaults/99-fff-sysupgrade | 2 +- src/packages/fff/fff-web/Makefile | 4 +- .../files/www/public/cgi-bin/status.html | 12 +++--- .../fff/fff-web/files/www/ssl/cgi-bin/header | 2 +- .../files/www/ssl/cgi-bin/settings.html | 39 ++++++++++-------- src/packages/fff/fff/Makefile | 1 + 15 files changed, 144 insertions(+), 64 deletions(-) create mode 100644 src/packages/fff/fff-config/Makefile create mode 100644 src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff diff --git a/src/packages/fff/fff-config/Makefile b/src/packages/fff/fff-config/Makefile new file mode 100644 index 0000000..fe4f5df --- /dev/null +++ b/src/packages/fff/fff-config/Makefile @@ -0,0 +1,40 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=fff-config +PKG_VERSION:=1 +PKG_RELEASE:=1 + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=base + CATEGORY:=Freifunk + TITLE:=Freifunk-Franken Config + URL:=http://www.freifunk-franken.de + DEPENDS:=+fff-boardname +@BUSYBOX_CONFIG_WGET +endef + +define Package/$(PKG_NAME)/description + This is the Freifunk Franken Firmware Config package. + This packages provides utilities for a central FFF config file. +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-config/files/etc/uci-defaults/98-configure-fff b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff new file mode 100644 index 0000000..677da15 --- /dev/null +++ b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff @@ -0,0 +1,25 @@ +#!/bin/sh +# Copyright 2017 Adrian Schmutzler +# License GPLv3 + +touch /etc/config/fff + +if ! uci -q get fff.system > /dev/null ; then + uci -q set fff.system=fff + uci -q set "fff.system.hostname=FFF" +fi + +FFF_hostname=$(uci -q get "fff.system.hostname") +test -n "${FFF_hostname}" && uci -q set "system.@system[0].hostname=${FFF_hostname}" +test -n "${FFF_hostname}" && echo "${FFF_hostname}" > /proc/sys/kernel/hostname + +traffic_enabled=$(uci -q get "fff.trafficcontrol.enabled") +traffic_in=$(uci -q get "fff.trafficcontrol.limit_in") +traffic_out=$(uci -q get "fff.trafficcontrol.limit_out") + +test -n "${traffic_enabled}" && uci -q set "simple-tc.example.enabled=${traffic_enabled}" +uci -q set "simple-tc.example.ifname=wan" +uci -q set "simple-tc.example.limit_ingress=${traffic_in}" +uci -q set "simple-tc.example.limit_egress=${traffic_out}" + +uci -q commit diff --git a/src/packages/fff/fff-hoods/Makefile b/src/packages/fff/fff-hoods/Makefile index dd22df4..11ab6d1 100644 --- a/src/packages/fff/fff-hoods/Makefile +++ b/src/packages/fff/fff-hoods/Makefile @@ -13,7 +13,7 @@ define Package/$(PKG_NAME) CATEGORY:=Freifunk TITLE:= Freifunk-Franken hoods URL:=http://www.freifunk-franken.de - DEPENDS:=+fff-network + DEPENDS:=+fff-network +fff-config endef define Package/$(PKG_NAME)/description diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood index 7bb976e..75ec234 100755 --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood @@ -62,8 +62,8 @@ if [ -f "$hiddenapfile" ]; then fi fi -lat=$(uci -q get system.@system[0].latitude) -long=$(uci -q get system.@system[0].longitude) +lat=$(uci -q get fff.system.latitude) +long=$(uci -q get fff.system.longitude) # if we have Internet, we download the Hoodfile from the keyxchangev2 if hasInternet ; then diff --git a/src/packages/fff/fff-nodewatcher/Makefile b/src/packages/fff/fff-nodewatcher/Makefile index bdceffd..02ee78b 100644 --- a/src/packages/fff/fff-nodewatcher/Makefile +++ b/src/packages/fff/fff-nodewatcher/Makefile @@ -1,8 +1,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=fff-nodewatcher -PKG_VERSION:=41 -PKG_RELEASE:=2 +PKG_VERSION:=43 +PKG_RELEASE:=1 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) @@ -13,7 +13,7 @@ define Package/$(PKG_NAME) CATEGORY:=Freifunk TITLE:= Freifunk-Franken Nodewatcher URL:=http://www.freifunk-franken.de - DEPENDS:=+fff-alfred +micrond +fff-random +ip +ip-bridge + DEPENDS:=+fff-alfred +micrond +fff-config +fff-random +ip +ip-bridge endef define Package/$(PKG_NAME)/description diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher index 35adf91..e4a9bc9 100755 --- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher @@ -2,7 +2,7 @@ # Netmon Nodewatcher (C) 2010-2012 Freifunk Oldenburg # License; GPL v3 -SCRIPT_VERSION="41" +SCRIPT_VERSION="43" test -f /tmp/started || exit @@ -58,20 +58,21 @@ crawl() { hostname="$(cat /proc/sys/kernel/hostname)" mac=$(awk '{ mac=toupper($1); gsub(":", "", mac); print mac }' /sys/class/net/br-mesh/address 2>/dev/null) [ "$hostname" = "LEDE" ] && hostname="$mac" - description="$(uci get system.@system[0].description)" + [ "$hostname" = "FFF" ] && hostname="$mac" + description="$(uci -q get fff.system.description)" if [ -n "$description" ]; then description="" fi - latitude="$(uci get system.@system[0].latitude)" - longitude="$(uci get system.@system[0].longitude)" + latitude="$(uci -q get fff.system.latitude)" + longitude="$(uci -q get fff.system.longitude)" if [ -n "$longitude" -a -n "$latitude" ]; then geo="$latitude$longitude"; fi - position_comment="$(uci get system.@system[0].position_comment)" + position_comment="$(uci -q get fff.system.position_comment)" if [ -n "$position_comment" ]; then position_comment="" fi - contact="$(uci get system.@system[0].contact)" + contact="$(uci -q get fff.system.contact)" if [ -n "$contact" ]; then contact="$contact" fi @@ -137,10 +138,10 @@ crawl() { SYSTEM_DATA=$SYSTEM_DATA"${geo}" SYSTEM_DATA=$SYSTEM_DATA"${position_comment}" SYSTEM_DATA=$SYSTEM_DATA"${contact}" - if [ "$(uci -q get "system.@system[0].hood")" ] - then - SYSTEM_DATA=$SYSTEM_DATA"$(uci -q get "system.@system[0].hood")" - fi + if [ "$(uci -q get "system.@system[0].hood")" ] + then + SYSTEM_DATA=$SYSTEM_DATA"$(uci -q get "system.@system[0].hood")" + fi SYSTEM_DATA=$SYSTEM_DATA"$distname" SYSTEM_DATA=$SYSTEM_DATA"$distversion" SYSTEM_DATA=$SYSTEM_DATA"$cpu" diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info b/src/packages/fff/fff-support/files/usr/sbin/show_info index bde6b01..6baa428 100755 --- a/src/packages/fff/fff-support/files/usr/sbin/show_info +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info @@ -5,7 +5,7 @@ board_name=$(uci -q get board.model.name) -HOSTNAME=$(uci -q get 'system.@system[0].hostname') +HOSTNAME=$(uci -q get 'fff.system.hostname') hood="$(uci -q get "system.@system[0].hood")" human_bytes() { @@ -154,11 +154,11 @@ echo "IPv6 Adressen: $(addr 6 $wanif)" echo "" echo "-> EINSTELLUNGEN" echo "Knotenname: ${HOSTNAME}" -echo "Knotenbeschreibung: $(uci -q get 'system.@system[0].description')" -echo "GPS Breitengrad: $(uci -q get 'system.@system[0].latitude')" -echo "GPS Laengengrad: $(uci -q get 'system.@system[0].longitude')" -echo "Standortbeschreibung: $(uci -q get 'system.@system[0].position_comment')" -echo "E-Mail Adresse: $(uci -q get 'system.@system[0].contact')" +echo "Knotenbeschreibung: $(uci -q get 'fff.system.description')" +echo "GPS Breitengrad: $(uci -q get 'fff.system.latitude')" +echo "GPS Laengengrad: $(uci -q get 'fff.system.longitude')" +echo "Standortbeschreibung: $(uci -q get 'fff.system.position_comment')" +echo "E-Mail Adresse: $(uci -q get 'fff.system.contact')" echo "" echo "-> BITRATEN-BEGRENZUNG" diff --git a/src/packages/fff/fff-sysupgrade/Makefile b/src/packages/fff/fff-sysupgrade/Makefile index 246db80..4a03652 100644 --- a/src/packages/fff/fff-sysupgrade/Makefile +++ b/src/packages/fff/fff-sysupgrade/Makefile @@ -13,7 +13,7 @@ define Package/$(PKG_NAME) CATEGORY:=Freifunk TITLE:=Freifunk-Franken sysupgrade URL:=http://www.freifunk-franken.de - DEPENDS:=+fff-boardname +fff-hoods +@BUSYBOX_CONFIG_WGET + DEPENDS:=+fff-boardname +fff-config +fff-hoods +@BUSYBOX_CONFIG_WGET endef define Package/$(PKG_NAME)/description diff --git a/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/05-config-system-migration b/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/05-config-system-migration index 0e36587..fe4ad97 100644 --- a/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/05-config-system-migration +++ b/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/05-config-system-migration @@ -1,21 +1,27 @@ #!/bin/sh -UPGRADE_hostname=$(uci -q get "system.@system[0].hostname") -UPGRADE_description=$(uci -q get "system.@system[0].description") -UPGRADE_latitude=$(uci -q get "system.@system[0].latitude") -UPGRADE_longitude=$(uci -q get "system.@system[0].longitude") -UPGRADE_position_comment=$(uci -q get "system.@system[0].position_comment") -UPGRADE_contact=$(uci -q get "system.@system[0].contact") +if [ ! -s /etc/config/fff ] ; then -/bin/rm -rf /etc/config/system + UPGRADE_hostname=$(uci -q get "system.@system[0].hostname") + UPGRADE_description=$(uci -q get "system.@system[0].description") + UPGRADE_latitude=$(uci -q get "system.@system[0].latitude") + UPGRADE_longitude=$(uci -q get "system.@system[0].longitude") + UPGRADE_position_comment=$(uci -q get "system.@system[0].position_comment") + UPGRADE_contact=$(uci -q get "system.@system[0].contact") -/bin/config_generate + /bin/rm -rf /etc/config/system + + /bin/config_generate -test -n "${UPGRADE_hostname}" && uci -q set "system.@system[0].hostname=${UPGRADE_hostname}" -test -n "${UPGRADE_description}" && uci -q set "system.@system[0].description=${UPGRADE_description}" -test -n "${UPGRADE_latitude}" && uci -q set "system.@system[0].latitude=${UPGRADE_latitude}" -test -n "${UPGRADE_longitude}" && uci -q set "system.@system[0].longitude=${UPGRADE_longitude}" -test -n "${UPGRADE_position_comment}" && uci -q set "system.@system[0].position_comment=${UPGRADE_position_comment}" -test -n "${UPGRADE_contact}" && uci -q set "system.@system[0].contact=${UPGRADE_contact}" + touch /etc/config/fff -uci -q commit system + uci -q set fff.system=fff + test -n "${UPGRADE_hostname}" && uci -q set "fff.system.hostname=${UPGRADE_hostname}" + test -n "${UPGRADE_description}" && uci -q set "fff.system.description=${UPGRADE_description}" + test -n "${UPGRADE_latitude}" && uci -q set "fff.system.latitude=${UPGRADE_latitude}" + test -n "${UPGRADE_longitude}" && uci -q set "fff.system.longitude=${UPGRADE_longitude}" + test -n "${UPGRADE_position_comment}" && uci -q set "fff.system.position_comment=${UPGRADE_position_comment}" + test -n "${UPGRADE_contact}" && uci -q set "fff.system.contact=${UPGRADE_contact}" + + uci -q commit fff +fi diff --git a/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/99-fff-sysupgrade b/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/99-fff-sysupgrade index ab6f2de..847ce1e 100644 --- a/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/99-fff-sysupgrade +++ b/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/99-fff-sysupgrade @@ -8,5 +8,5 @@ cat > /etc/sysupgrade.conf <<-__EOF__ /etc/dropbear/dropbear_rsa_host_key /etc/dropbear/authorized_keys /etc/network.config -/etc/config/system +/etc/config/fff __EOF__ diff --git a/src/packages/fff/fff-web/Makefile b/src/packages/fff/fff-web/Makefile index 708dbb9..d7201e2 100644 --- a/src/packages/fff/fff-web/Makefile +++ b/src/packages/fff/fff-web/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=fff-web -PKG_VERSION:=0.0.4 +PKG_VERSION:=5 PKG_RELEASE:=2 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) @@ -13,7 +13,7 @@ define Package/$(PKG_NAME) CATEGORY:=Freifunk TITLE:= Freifunk-Franken Webinterface URL:=http://www.freifunk-franken.de - DEPENDS:=+uhttpd +libustream-mbedtls +haserl +px5g +simple-tc +fff-boardname +fff-network + DEPENDS:=+uhttpd +libustream-mbedtls +haserl +px5g +simple-tc +fff-boardname +fff-config +fff-network endef define Package/$(PKG_NAME)/description diff --git a/src/packages/fff/fff-web/files/www/public/cgi-bin/status.html b/src/packages/fff/fff-web/files/www/public/cgi-bin/status.html index f96846c..96d657b 100755 --- a/src/packages/fff/fff-web/files/www/public/cgi-bin/status.html +++ b/src/packages/fff/fff-web/files/www/public/cgi-bin/status.html @@ -2,13 +2,13 @@ <% echo -en "Content-Type: text/html\r\n\r\n" -HOSTNAME=$(uci -q get 'system.@system[0].hostname') +HOSTNAME="$(uci -q get "fff.system.hostname")" hood="$(uci -q get "system.@system[0].hood")" MAC="$(uci -q get network.mesh.macaddr)" -lat="$(uci -q get system.@system[0].latitude)" -lon="$(uci -q get system.@system[0].longitude)" -contact="$(uci -q get system.@system[0].contact)" +lat="$(uci -q get "fff.system.latitude")" +lon="$(uci -q get "fff.system.longitude")" +contact="$(uci -q get "fff.system.contact")" . /etc/firmware_release @@ -48,11 +48,11 @@ contact="$(uci -q get system.@system[0].contact)" MAC-Adresse:<%= $MAC %> Modell:<% cat /tmp/sysinfo/model 2>/dev/null %> Firmware:<%= ${FIRMWARE_VERSION} %> - Beschreibung:<% uci -q get 'system.@system[0].description' %> + Beschreibung:<% uci -q get 'fff.system.description' %> Position:<% if [ -n "$lat" -a -n "$lon" ]; then echo "${lat:0:8}N, ${lon:0:8}E" fi %> - Standort:<% uci -q get 'system.@system[0].position_comment' %> + Standort:<% uci -q get 'fff.system.position_comment' %> E-Mail Adresse:<%= $contact %> diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/header b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/header index c327013..f98a3f3 100755 --- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/header +++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/header @@ -12,7 +12,7 @@ nav_entry() { echo -ne "\t$2\n\t\t" } -HOSTNAME=$(uci -q get 'system.@system[0].hostname') +HOSTNAME="$(uci -q get "fff.system.hostname")" hood="$(uci -q get "system.@system[0].hood")" NOW=$(date +%s) diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html index e7bc3e9..b785aed 100755 --- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html +++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html @@ -13,25 +13,32 @@ if [ "$REQUEST_METHOD" == "POST" ] ; then MSG='Knotenname enthält ungültige Zeichen!' else # Allgemeine Einstellungen + uci -q set "fff.system.hostname=${POST_hostname}" + echo "$(uci -q get "fff.system.hostname")" > /proc/sys/kernel/hostname uci -q set "system.@system[0].hostname=${POST_hostname}" - echo "$(uci -q get "system.@system[0].hostname")" > /proc/sys/kernel/hostname - uci -q set "system.@system[0].description=${POST_description}" - uci -q set "system.@system[0].latitude=${POST_latitude}" - uci -q set "system.@system[0].longitude=${POST_longitude}" - uci -q set "system.@system[0].position_comment=${POST_position_comment}" - uci -q set "system.@system[0].contact=${POST_contact}" + uci -q set "fff.system.description=${POST_description}" + uci -q set "fff.system.latitude=${POST_latitude}" + uci -q set "fff.system.longitude=${POST_longitude}" + uci -q set "fff.system.position_comment=${POST_position_comment}" + uci -q set "fff.system.contact=${POST_contact}" # Bitratenbegrenzung + uci -q get "fff.trafficcontrol" > /dev/null || uci -q set fff.trafficcontrol=fff if [ "$POST_traffic_limit" == "on" ] ; then - uci -q set "simple-tc.example.ifname=wan" + uci -q set "fff.trafficcontrol.enabled=1" uci -q set "simple-tc.example.enabled=1" else + uci -q set "fff.trafficcontrol.enabled=0" uci -q set "simple-tc.example.enabled=0" fi + uci -q set "fff.trafficcontrol.limit_in=${POST_limit_ingress}" + uci -q set "fff.trafficcontrol.limit_out=${POST_limit_egress}" + + uci -q set "simple-tc.example.ifname=wan" uci -q set "simple-tc.example.limit_ingress=${POST_limit_ingress}" uci -q set "simple-tc.example.limit_egress=${POST_limit_egress}" - uci commit + uci -q commit MSG='Daten gespeichert! - Bitte Router neustarten.' fi @@ -41,7 +48,7 @@ fi <%in /www/ssl/cgi-bin/helpers %> <% # read -if [ "$(uci -q get 'simple-tc.example.enabled')" == "1" ] ; then +if [ "$(uci -q get 'fff.trafficcontrol.enabled')" == "1" ] ; then traffic_checked='checked="checked" ' else traffic_checked="" @@ -55,16 +62,16 @@ fi Allgemeine Einstellungen - + - + - - - + + +
Knotenname:
Knotenbeschreibung:
Knotenbeschreibung:
GPS Breitengrad:
GPS Längengrad:
Standortbeschreibung:
E-Mail Adresse:
GPS Längengrad:
Standortbeschreibung:
E-Mail Adresse:
@@ -74,8 +81,8 @@ fi Aktiviert: /> - Freifunk Download:kbit/s - Freifunk Upload:kbit/s + Freifunk Download:kbit/s + Freifunk Upload:kbit/s diff --git a/src/packages/fff/fff/Makefile b/src/packages/fff/fff/Makefile index 305ab8d..dce33f9 100644 --- a/src/packages/fff/fff/Makefile +++ b/src/packages/fff/fff/Makefile @@ -18,6 +18,7 @@ define Package/fff-base +ip6tables \ +odhcp6c \ +micrond \ + +fff-config \ +fff-nodewatcher \ +fff-web \ +fff-uradvd \