[v13,6/6] Remove references to community.cfg

Submitted by Adrian Schmutzler on Oct. 3, 2017, 10:14 a.m.

Details

Message ID 1507025686-1944-1-git-send-email-freifunk@adrianschmutzler.de
State Superseded
Headers show

Commit Message

Adrian Schmutzler Oct. 3, 2017, 10:14 a.m.
This removes all references to community.cfg except in the
buildscript and except the file itself.

Changes in v13:
 - Fixed timeserver and upgrade path to be set by keyxchange

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---
 .../fff-fastd/files/etc/uci-defaults/55_fff-fastd  | 41 +++++++++++-----------
 .../fff-hoods/files/lib/functions/fff/keyxchange   | 15 ++++++++
 .../fff/fff-hoods/files/usr/sbin/configurehood     |  6 ++++
 .../fff/fff-support/files/usr/sbin/show_info       |  1 -
 src/packages/fff/fff-sysupgrade/Makefile           |  4 +--
 .../fff/fff-sysupgrade/files/etc/sysupgrade.sh     |  9 ++++-
 src/packages/fff/fff-timeserver/Makefile           |  2 +-
 .../files/etc/uci-defaults/51-fff-timeserver       |  3 +-
 8 files changed, 53 insertions(+), 28 deletions(-)
 create mode 100644 src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
 mode change 100755 => 100644 src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd b/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
index 8ce8425..72970bd 100644
--- a/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
+++ b/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
@@ -1,28 +1,27 @@ 
-/etc/init.d/fastd disable
+#!/bin/sh
 
-. /etc/community.cfg
-project="$VPN_PROJECT"
+/etc/init.d/fastd disable
 
 >/etc/config/fastd
 
 uci batch <<EOF
-  set fastd.${project}='fastd'
-  set fastd.${project}.enabled='1'
-  set fastd.${project}.config_peer_dir="/etc/fastd/${project}/peers"
-  set fastd.${project}.syslog_level='warn'
-  set fastd.${project}.method='null'
-  set fastd.${project}.mode='tap'
-  set fastd.${project}.interface="${project}VPN"
-  set fastd.${project}.mtu='1426'
-  set fastd.${project}.on_up="/etc/fastd/${project}/up.sh"
-  set fastd.${project}.secure_handshakes='0'
-  set fastd.${project}.secret="generate"
+  set fastd.fff='fastd'
+  set fastd.fff.enabled='1'
+  set fastd.fff.config_peer_dir="/etc/fastd/fff/peers"
+  set fastd.fff.syslog_level='warn'
+  set fastd.fff.method='null'
+  set fastd.fff.mode='tap'
+  set fastd.fff.interface="fffVPN"
+  set fastd.fff.mtu='1426'
+  set fastd.fff.on_up="/etc/fastd/fff/up.sh"
+  set fastd.fff.secure_handshakes='0'
+  set fastd.fff.secret="generate"
 EOF
 
-[ ! -d /etc/fastd/${project} ] &&  mkdir -p /etc/fastd/${project}
-ln -s /tmp/fastd_${project}_peers /etc/fastd/${project}/peers
-echo "#!/bin/sh" > /etc/fastd/${project}/up.sh
-echo "ip link set up dev ${project}VPN" >> /etc/fastd/${project}/up.sh
-echo "echo enable > /sys/devices/virtual/net/${project}VPN/batman_adv/no_rebroadcast" >> /etc/fastd/${project}/up.sh
-echo "batctl if add ${project}VPN" >> /etc/fastd/${project}/up.sh
-chmod +x /etc/fastd/${project}/up.sh
+[ ! -d /etc/fastd/fff ] &&  mkdir -p /etc/fastd/fff
+ln -s /tmp/fastd_fff_peers /etc/fastd/fff/peers
+echo "#!/bin/sh" > /etc/fastd/fff/up.sh
+echo "ip link set up dev fffVPN" >> /etc/fastd/fff/up.sh
+echo "echo enable > /sys/devices/virtual/net/fffVPN/batman_adv/no_rebroadcast" >> /etc/fastd/fff/up.sh
+echo "batctl if add fffVPN" >> /etc/fastd/fff/up.sh
+chmod +x /etc/fastd/fff/up.sh
diff --git a/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
new file mode 100644
index 0000000..ddae6b3
--- /dev/null
+++ b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
@@ -0,0 +1,15 @@ 
+#!/bin/sh
+# Copyright 2017 Adrian Schmutzler
+# License GPLv3
+
+getUpgradePath() {
+	if [ -s /tmp/keyxchangev2data ]; then
+		json_load "$(cat /tmp/keyxchangev2data)"
+		json_select hood
+		json_get_var upath upgrade_path
+		echo "$upath"
+	else
+		return 1
+	fi
+	return 0
+}
diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
index ac800f4..3168eb1 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -2,6 +2,7 @@ 
 
 . /usr/share/libubox/jshn.sh
 . /lib/functions/fff/wireless
+. /lib/functions/fff/timeserver
 
 rm /tmp/keyxchangev2data
 
@@ -117,6 +118,7 @@  if [ -s /tmp/keyxchangev2data ]; then
 		json_get_var mesh_bssid mesh_bssid
 		json_get_var mesh_essid mesh_essid
 		json_get_var essid essid
+		json_get_var ntpip ntp_ip
 		# i think the next things we don't active this in the first version! we can do it later
 		#json_get_var channel2 channel2
 		#json_get_var mode2 mode2
@@ -171,6 +173,10 @@  if [ -s /tmp/keyxchangev2data ]; then
 		echo "Loading wifi"
 		wifi
 
+		oldntp="$(uci -q get system.ntp.server)"
+		newntp="${ntpip}%br-mesh"
+		[ "$newntp" = "$oldntp" ] || setTimeserver "${newntp}" # only rewrite if changed
+
 	else
 		echo "We have no new file. We do nothing. We try it again in 5 minutes...";
 		exit 0
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 fc7cffb..3914391 100755
--- a/src/packages/fff/fff-support/files/usr/sbin/show_info
+++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
@@ -1,6 +1,5 @@ 
 #!/bin/sh
 
-. /etc/community.cfg
 . /etc/firmware_release
 
 board_name=$(uci -q get board.model.name)
diff --git a/src/packages/fff/fff-sysupgrade/Makefile b/src/packages/fff/fff-sysupgrade/Makefile
index 3224662..f29cf73 100644
--- a/src/packages/fff/fff-sysupgrade/Makefile
+++ b/src/packages/fff/fff-sysupgrade/Makefile
@@ -1,7 +1,7 @@ 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fff-sysupgrade
-PKG_VERSION:=0.0.4
+PKG_VERSION:=5
 PKG_RELEASE:=4
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/fff-sysupgrade
@@ -13,7 +13,7 @@  define Package/fff-sysupgrade
     CATEGORY:=Freifunk
     TITLE:=Freifunk-Franken sysupgrade
     URL:=http://www.freifunk-franken.de
-    DEPENDS:=+fff-boardname +@BUSYBOX_CONFIG_WGET
+    DEPENDS:=+fff-boardname +fff-hoods +@BUSYBOX_CONFIG_WGET
 endef
 
 define Package/fff-sysupgrade/description
diff --git a/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh b/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
index df9d519..8aaa924 100755
--- a/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
+++ b/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
@@ -1,9 +1,16 @@ 
 #!/bin/sh
 cd /tmp/
 
+. /lib/functions/fff/keyxchange
 . /etc/firmware_release
 
-. /etc/community.cfg
+UPGRADE_PATH="$(getUpgradePath)"
+
+if [ -z "$UPGRADE_PATH" ]; then
+  echo "Upgrade path not set! Aborting."
+  echo ""
+  exit 1
+fi
 
 BOARD=$(uci get board.model.name)
 
diff --git a/src/packages/fff/fff-timeserver/Makefile b/src/packages/fff/fff-timeserver/Makefile
index 4a2decd..d88d646 100644
--- a/src/packages/fff/fff-timeserver/Makefile
+++ b/src/packages/fff/fff-timeserver/Makefile
@@ -1,7 +1,7 @@ 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fff-timeserver
-PKG_VERSION:=0.0.1
+PKG_VERSION:=2
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/fff-timeserver
diff --git a/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver b/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
old mode 100755
new mode 100644
index aa485ab..fe5979d
--- a/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
+++ b/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
@@ -1,9 +1,8 @@ 
 #!/bin/sh
 
 . /lib/functions/fff/timeserver
-. /etc/community.cfg
 
-setTimeserver "${NTPD_IP}"
+# No initialization here, this is done in configurehood
 
 uci -q set "system.@system[0].timezone=CET-1CEST,M3.5.0,M10.5.0/3"
 

Comments

Tim Niemeyer Oct. 3, 2017, 11:01 a.m.
Hi Adrian

Der Umbau gefällt mir sehr sehr gut! Danke.

Unten trotzdem noch eine wichtige und eine nicht so wichtige Anmerkung.

Am Dienstag, den 03.10.2017, 12:14 +0200 schrieb Adrian Schmutzler:
> This removes all references to community.cfg except in the
> buildscript and except the file itself.
> 
> Changes in v13:
>  - Fixed timeserver and upgrade path to be set by keyxchange
> 
> > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> ---
>  .../fff-fastd/files/etc/uci-defaults/55_fff-fastd  | 41 +++++++++++-----------
>  .../fff-hoods/files/lib/functions/fff/keyxchange   | 15 ++++++++
>  .../fff/fff-hoods/files/usr/sbin/configurehood     |  6 ++++
>  .../fff/fff-support/files/usr/sbin/show_info       |  1 -
>  src/packages/fff/fff-sysupgrade/Makefile           |  4 +--
>  .../fff/fff-sysupgrade/files/etc/sysupgrade.sh     |  9 ++++-
>  src/packages/fff/fff-timeserver/Makefile           |  2 +-
>  .../files/etc/uci-defaults/51-fff-timeserver       |  3 +-
>  8 files changed, 53 insertions(+), 28 deletions(-)
>  create mode 100644 src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
>  mode change 100755 => 100644 src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
> 
> diff --git a/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd b/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
> index 8ce8425..72970bd 100644
> --- a/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
> +++ b/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
> @@ -1,28 +1,27 @@
> -/etc/init.d/fastd disable
> +#!/bin/sh
>  
> -. /etc/community.cfg
> -project="$VPN_PROJECT"
> +/etc/init.d/fastd disable
>  
>  >/etc/config/fastd
>  
>  uci batch <<EOF
> -  set fastd.${project}='fastd'
> -  set fastd.${project}.enabled='1'
> -  set fastd.${project}.config_peer_dir="/etc/fastd/${project}/peers"
> -  set fastd.${project}.syslog_level='warn'
> -  set fastd.${project}.method='null'
> -  set fastd.${project}.mode='tap'
> -  set fastd.${project}.interface="${project}VPN"
> -  set fastd.${project}.mtu='1426'
> -  set fastd.${project}.on_up="/etc/fastd/${project}/up.sh"
> -  set fastd.${project}.secure_handshakes='0'
> -  set fastd.${project}.secret="generate"
> +  set fastd.fff='fastd'
> +  set fastd.fff.enabled='1'
> +  set fastd.fff.config_peer_dir="/etc/fastd/fff/peers"
> +  set fastd.fff.syslog_level='warn'
> +  set fastd.fff.method='null'
> +  set fastd.fff.mode='tap'
> +  set fastd.fff.interface="fffVPN"
> +  set fastd.fff.mtu='1426'
> +  set fastd.fff.on_up="/etc/fastd/fff/up.sh"
> +  set fastd.fff.secure_handshakes='0'
> +  set fastd.fff.secret="generate"
>  EOF
>  
> -[ ! -d /etc/fastd/${project} ] &&  mkdir -p /etc/fastd/${project}
> -ln -s /tmp/fastd_${project}_peers /etc/fastd/${project}/peers
> -echo "#!/bin/sh" > /etc/fastd/${project}/up.sh
> -echo "ip link set up dev ${project}VPN" >> /etc/fastd/${project}/up.sh
> -echo "echo enable > /sys/devices/virtual/net/${project}VPN/batman_adv/no_rebroadcast" >> /etc/fastd/${project}/up.sh
> -echo "batctl if add ${project}VPN" >> /etc/fastd/${project}/up.sh
> -chmod +x /etc/fastd/${project}/up.sh
> +[ ! -d /etc/fastd/fff ] &&  mkdir -p /etc/fastd/fff
> +ln -s /tmp/fastd_fff_peers /etc/fastd/fff/peers
> +echo "#!/bin/sh" > /etc/fastd/fff/up.sh
> +echo "ip link set up dev fffVPN" >> /etc/fastd/fff/up.sh
> +echo "echo enable > /sys/devices/virtual/net/fffVPN/batman_adv/no_rebroadcast" >> /etc/fastd/fff/up.sh
> +echo "batctl if add fffVPN" >> /etc/fastd/fff/up.sh
> +chmod +x /etc/fastd/fff/up.sh
> diff --git a/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
> new file mode 100644
> index 0000000..ddae6b3
> --- /dev/null
> +++ b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
> @@ -0,0 +1,15 @@
> +#!/bin/sh
> +# Copyright 2017 Adrian Schmutzler
> +# License GPLv3
> +
> +getUpgradePath() {
> > +	if [ -s /tmp/keyxchangev2data ]; then
> > +		json_load "$(cat /tmp/keyxchangev2data)"
> > +		json_select hood
> > +		json_get_var upath upgrade_path
> > +		echo "$upath"
> > +	else
> > +		return 1
> > +	fi
> > +	return 0
> +}
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index ac800f4..3168eb1 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -2,6 +2,7 @@
>  
>  . /usr/share/libubox/jshn.sh
>  . /lib/functions/fff/wireless
> +. /lib/functions/fff/timeserver
>  
>  rm /tmp/keyxchangev2data
>  
> @@ -117,6 +118,7 @@ if [ -s /tmp/keyxchangev2data ]; then
> >  		json_get_var mesh_bssid mesh_bssid
> >  		json_get_var mesh_essid mesh_essid
> >  		json_get_var essid essid
> > +		json_get_var ntpip ntp_ip
> >  		# i think the next things we don't active this in the first version! we can do it later
> >  		#json_get_var channel2 channel2
> >  		#json_get_var mode2 mode2
> @@ -171,6 +173,10 @@ if [ -s /tmp/keyxchangev2data ]; then
> >  		echo "Loading wifi"
> >  		wifi
>  
> > +		oldntp="$(uci -q get system.ntp.server)"
> +		newntp="${ntpip}%br-mesh"
Wenn wir die Scope-ID ("%br-mesh") behalten, darf in dem Hoodfile nur
eine Link-Local IP drin sein. Wenn wir die weg lassen, darf nur noch
eine routebare IPv6 Adresse enthalten sein. Man könnte ein
Zwischenschritt machen und im Hoodfile die Scope-ID mitgeben, aber dann
muss jeder Knoten immer das br-mesh bereithalten und wir haben damit
eine sehr langkettige Abhängigkeit gebaut.

Sofern sicher ist, dass wir routbare IPv6 Adressen kriegen, und ich
denke das ist sicher, dann sollten wir auch nur diese dafür verwenden.
Von daher würde ich die Scope-ID entfernen.

Wenn wir dann endlich die Link-Local Adressen für das NTP los sind,
dann könnten wir auch diesen Patch kicken:
build_patches/openwrt/0003-ntpd-host-as-string.patch
Der tut uns zwar nicht weh, ist dann aber auch nicht mehr nötig.

> +		[ "$newntp" = "$oldntp" ] || setTimeserver "${newntp}" # only rewrite if changed
> +
> >  	else
> >  		echo "We have no new file. We do nothing. We try it again in 5 minutes...";
> >  		exit 0
> 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 fc7cffb..3914391 100755
> --- a/src/packages/fff/fff-support/files/usr/sbin/show_info
> +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
> @@ -1,6 +1,5 @@
>  #!/bin/sh
>  
> -. /etc/community.cfg
>  . /etc/firmware_release
>  
>  board_name=$(uci -q get board.model.name)
> diff --git a/src/packages/fff/fff-sysupgrade/Makefile b/src/packages/fff/fff-sysupgrade/Makefile
> index 3224662..f29cf73 100644
> --- a/src/packages/fff/fff-sysupgrade/Makefile
> +++ b/src/packages/fff/fff-sysupgrade/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=fff-sysupgrade
> -PKG_VERSION:=0.0.4
> +PKG_VERSION:=5
>  PKG_RELEASE:=4
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/fff-sysupgrade
> @@ -13,7 +13,7 @@ define Package/fff-sysupgrade
>      CATEGORY:=Freifunk
>      TITLE:=Freifunk-Franken sysupgrade
>      URL:=http://www.freifunk-franken.de
> > -    DEPENDS:=+fff-boardname +@BUSYBOX_CONFIG_WGET
> > +    DEPENDS:=+fff-boardname +fff-hoods +@BUSYBOX_CONFIG_WGET
>  endef
>  
>  define Package/fff-sysupgrade/description
> diff --git a/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh b/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
> index df9d519..8aaa924 100755
> --- a/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
> +++ b/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
> @@ -1,9 +1,16 @@
>  #!/bin/sh
>  cd /tmp/
>  
> +. /lib/functions/fff/keyxchange
>  . /etc/firmware_release
>  
> -. /etc/community.cfg
> +UPGRADE_PATH="$(getUpgradePath)"

Die Lösung ist gut, aber nur mal als Überlegung.. Wenn wir
dev.freifunk-franken.de IPv6 fähig machen, dann könnten wir das einfach
nehmen, oder? Hm, ne, wir müssten den Knoten noch DNS beibringen..

Ach erstmal egal.. Lieber so lassen wir du das jetzt hier im Patch
hast.

> +
> +if [ -z "$UPGRADE_PATH" ]; then
> +  echo "Upgrade path not set! Aborting."
> +  echo ""
> +  exit 1
> +fi
>  
>  BOARD=$(uci get board.model.name)
>  
> diff --git a/src/packages/fff/fff-timeserver/Makefile b/src/packages/fff/fff-timeserver/Makefile
> index 4a2decd..d88d646 100644
> --- a/src/packages/fff/fff-timeserver/Makefile
> +++ b/src/packages/fff/fff-timeserver/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=fff-timeserver
> -PKG_VERSION:=0.0.1
> +PKG_VERSION:=2
>  PKG_RELEASE:=1
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/fff-timeserver
> diff --git a/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver b/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
> old mode 100755
> new mode 100644
> index aa485ab..fe5979d
> --- a/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
> +++ b/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
> @@ -1,9 +1,8 @@
>  #!/bin/sh
>  
>  . /lib/functions/fff/timeserver
Die wird nicht mehr benötigt.

Tim

> -. /etc/community.cfg
>  
> -setTimeserver "${NTPD_IP}"
> +# No initialization here, this is done in configurehood
>  
> >  uci -q set "system.@system[0].timezone=CET-1CEST,M3.5.0,M10.5.0/3"
>  
> -- 
> 2.7.4
>